<?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>222288</bug_id>
          
          <creation_ts>2021-02-22 14:45:30 -0800</creation_ts>
          <short_desc>Use adoptNS() as soon as we [[ObjcClass alloc] init] to avoid leaks in Tools/</short_desc>
          <delta_ts>2021-02-23 11:25:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222237</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1732311</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 14:45:30 -0800</bug_when>
    <thetext>Use adoptNS() as soon as we [[ObjcClass alloc] init] to avoid leaks in Tools/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732315</commentid>
    <comment_count>1</comment_count>
      <attachid>421242</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 14:49:11 -0800</bug_when>
    <thetext>Created attachment 421242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732317</commentid>
    <comment_count>2</comment_count>
      <attachid>421243</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 14:57:15 -0800</bug_when>
    <thetext>Created attachment 421243
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732322</commentid>
    <comment_count>3</comment_count>
      <attachid>421245</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 15:09:15 -0800</bug_when>
    <thetext>Created attachment 421245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732378</commentid>
    <comment_count>4</comment_count>
      <attachid>421263</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 16:44:23 -0800</bug_when>
    <thetext>Created attachment 421263
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732386</commentid>
    <comment_count>5</comment_count>
      <attachid>421269</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 16:59:02 -0800</bug_when>
    <thetext>Created attachment 421269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732388</commentid>
    <comment_count>6</comment_count>
      <attachid>421270</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-02-22 17:09:14 -0800</bug_when>
    <thetext>Created attachment 421270
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732538</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-23 08:21:53 -0800</bug_when>
    <thetext>Committed r273308: &lt;https://commits.webkit.org/r273308&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 421270.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1732539</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-23 08:22:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/74642678&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421242</attachid>
            <date>2021-02-22 14:49:11 -0800</date>
            <delta_ts>2021-02-22 15:05:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222288-20210222144910.patch</filename>
            <type>text/plain</type>
            <size>150008</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFlZDY5YjRkNTc2MTZhYThmMzVlZTgwOWJkZjcyOTgz
ZGM2MzM4OS4uOTZkMDJiMTVjOWFjMWIxNjk2OTQzMWI3YTc0ODVlYTQ5ODQ0NDYxZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NyBAQAorMjAyMS0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBbW09iamNDbGFzcyBhbGxvY10gaW5pdF0g
dG8gYXZvaWQgbGVha3MgaW4gVG9vbHMvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9T
Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzY3JvbGxUb09mZnNldCk6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlU2Nyb2xsVG9P
ZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1pbmltdW1ab29t
U2NhbGUgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1heGlt
dW1ab29tU2NhbGUgY29uc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbToKKyAgICAgICAgKGZvbnRBbGxvd0xpc3QpOgorICAgICAgICAoYWRqdXN0V2Vi
RG9jdW1lbnRGb3JGbGV4aWJsZVZpZXdwb3J0KToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycyk6Cisg
ICAgICAgIChyZWxlYXNlR2xvYmFsQ29udHJvbGxlcnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAgICAgKCtbRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkIF9wYXN0ZWJvYXJkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW0R1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAo
ZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3VyY2Up
OgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgYmVnaW5EcmFnV2l0aEZpbGVQcm9taXNlczpd
KToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhNb2RpZmll
cnM6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3ZlVG9YOlk6
XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSBkaWRDbGVhcldpbmRvd09iamVjdEluU3RhbmRh
cmRXb3JsZEZvckZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRl
IHdlYlZpZXc6ZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlk
ZUJhY2s6Zm9yVmlldzpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJv
bXB0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9y
d2FyZC5tbToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldzo6
U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50
V2ViVmlld1RpbWVvdXQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9u
Lm1tOgorICAgICAgICAoLVtUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgd2ViVmlldzpjcmVh
dGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0
dXJlczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJJ
bml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgIChVc2VySW5pdGlh
dGVkQWN0aW9uVGVzdDo6VVJMV2l0aEZyYWdtZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tp
ZVN0b3JlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVn
YXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW06CisgICAgICAgICgrW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNl
dFVwV2l0aEZyYW1lOnRlc3RQYWdlOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5p
dGlhbGl6YXRpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW06CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMv
Q3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50
SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVu
dFRlc3QubW06CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRlc3RpbmdXZWJWaWV3IGxl
YWRpbmdJdGVtc0ZvcldlYlZpZXc6XSk6CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRl
c3RpbmdXZWJWaWV3IHRyYWlsaW5nSXRlbXNGb3JXZWJWaWV3Ol0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2Fu
ZGlkYXRlVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgorICAgICAgICAoK1tUZXN0
Rm9udE9wdGlvbnMgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9tYWluTWFjLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAg
IChXVFI6Omdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCk6CisgICAgICAgIChX
VFI6OmluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQWRqdXN0Q29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
b2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldEFsbG93U3RvcmFnZVF1b3RhSW5jcmVhc2UpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbToK
KyAgICAgICAgKCtbR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93IHNoYXJlZEdlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvd10pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoK1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURF
dmVudEdlbmVyYXRvcl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29u
dGVudEV4dGVuc2lvbkZvclRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tXZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorCiAyMDIxLTAyLTIy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMo
KSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1Mu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRl
eCBkNzA5YTJlOTE2YTUxMWI3MDYxOGU5MTJhNDZkNzZiYjgwNzliZTE0Li4xZmViNGFkNDQ5ZGNk
NzM4MGRmZmU0YzhhMmI3MTJjNzA1NDI2NjEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQpAQCAtNDksOCArNDksOCBAQAogI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1leHRlcm4gRHVtcFJl
bmRlclRyZWVXaW5kb3cgKmdEcnRXaW5kb3c7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVCcm93c2Vy
VmlldyAqZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdp
bmRvdz4gZ0RydFdpbmRvdzsKK2V4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2Vy
Vmlldz4gZ1dlYkJyb3dzZXJWaWV3OwogCiBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0
bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZW50YWxSZXBh
aW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdTZWxlY3Rpb25SZWN0KQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggMjExZjg2MGZiMWM2NWY1MTg0NzZjOTkxNzU1MzBlZWU3NjJiMGI0MS4uYTFlZjJlZDA5
NzkwMTIxNDdmNjllMDk0NTNmNmVlY2U4MGEzZjRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zNSw4ICszNSw4IEBACiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7Ci1leHRlcm4g
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmlldzsKK2V4dGVybiBSZXRh
aW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2VyVmlldz4gZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJu
IFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3Owog
CiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
CiBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVySU9TOjp6b29tU2NhbGUoKSBjb25zdAogewotICAg
IHJldHVybiBnV2ViU2Nyb2xsVmlldy56b29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xs
VmlldyB6b29tU2NhbGVdOwogfQogCiBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgbG9uZyB4LCBsb25nIHksIFNj
cm9sbFRvT3B0aW9ucyogb3B0aW9ucykKQEAgLTEwOCwxMyArMTA4LDEzIEBAIGRvdWJsZSBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09w
dGlvbnMqIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBvZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBhdXRvIG9m
ZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3NhcnkoZ1dlYlNjcm9sbFZpZXcuZ2V0
KCksIHgsIHksIG9wdGlvbnMpOwogICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0
Om9mZnNldCBhbmltYXRlZDpZRVNdOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6
aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyog
b3B0aW9ucykKIHsKLSAgICBhdXRvIG9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNl
c3NhcnkoZ1dlYlNjcm9sbFZpZXcsIHgsIHksIG9wdGlvbnMpOworICAgIGF1dG8gb2Zmc2V0ID0g
Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeShnV2ViU2Nyb2xsVmlldy5nZXQoKSwgeCwg
eSwgb3B0aW9ucyk7CiAgICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0
IGFuaW1hdGVkOk5PXTsKIH0KIApAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkKIAogZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6bWluaW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGdXZWJTY3JvbGxWaWV3Lm1pbmltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2Vi
U2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXTsKIH0KIAogZG91YmxlIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdXZWJTY3Jv
bGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBtYXhp
bXVtWm9vbVNjYWxlXTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVySU9TOjpj
b250ZW50VmlzaWJsZVJlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDM3OWQ1MjBkNzM5NzkyN2JmZThhOGY5ODYwODU5ZjZlYzgxMzUy
YTUuLjc4NjA2MzU0YjgzZDg3ZGI4YzI0OWZiMGU1Y2E2NjRmNGUwNTc2ZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJMKTsKIAogdm9sYXRp
bGUgYm9vbCBkb25lOwogCi1OYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyID0gbnVsbHB0cjsKK1JldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOwogUmVmUHRyPFRlc3RSdW5uZXI+IGdUZXN0UnVubmVyOwogCiBPcHRpb25h
bDxXVFI6OlRlc3RPcHRpb25zPiBtYWluRnJhbWVUZXN0T3B0aW9uczsKQEAgLTIwNSw3ICsyMDUs
NyBAQCBXZWJGcmFtZSAqbWFpbkZyYW1lID0gbmlsOwogV2ViRnJhbWUgKnRvcExvYWRpbmdGcmFt
ZSA9IG5pbDsgLy8gIW5pbCBpZmYgYSBsb2FkIGlzIGluIHByb2dyZXNzCiAKICNpZiBQTEFURk9S
TShNQUMpCi1OU1dpbmRvdyAqbWFpbldpbmRvdyA9IG5pbDsKK1JldGFpblB0cjxOU1dpbmRvdz4g
bWFpbldpbmRvdzsKICNlbmRpZgogCiBDRk11dGFibGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM9IG51
bGxwdHI7CkBAIC0yMTgsMTUgKzIxOCwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYlZpZXc+JiBn
bG9iYWxXZWJWaWV3KCkKIH0KIAogLy8gRGVsZWdhdGVzCi1zdGF0aWMgRnJhbWVMb2FkRGVsZWdh
dGUgKmZyYW1lTG9hZERlbGVnYXRlOwotc3RhdGljIFVJRGVsZWdhdGUgKnVpRGVsZWdhdGU7Ci1z
dGF0aWMgRWRpdGluZ0RlbGVnYXRlICplZGl0aW5nRGVsZWdhdGU7Ci1zdGF0aWMgUmVzb3VyY2VM
b2FkRGVsZWdhdGUgKnJlc291cmNlTG9hZERlbGVnYXRlOwotc3RhdGljIEhpc3RvcnlEZWxlZ2F0
ZSAqaGlzdG9yeURlbGVnYXRlOwotUG9saWN5RGVsZWdhdGUgKnBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKLURlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVsdFBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKK3N0YXRpYyBSZXRhaW5QdHI8RnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVn
YXRlOworc3RhdGljIFJldGFpblB0cjxVSURlbGVnYXRlPiB1aURlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxFZGl0aW5nRGVsZWdhdGU+IGVkaXRpbmdEZWxlZ2F0ZTsKK3N0YXRpYyBSZXRhaW5Q
dHI8UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKK1JldGFpblB0cjxQb2xp
Y3lEZWxlZ2F0ZT4gcG9saWN5RGVsZWdhdGU7CitSZXRhaW5QdHI8RGVmYXVsdFBvbGljeURlbGVn
YXRlPiBkZWZhdWx0UG9saWN5RGVsZWdhdGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0
YXRpYyBTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlICpzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRl
Oworc3RhdGljIFJldGFpblB0cjxTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlPiBzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlOwogI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckFsbFRl
c3RzOwpAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+
JiBwcmV2VGVzdEJGSXRlbSgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY29uc3QgQ0dS
ZWN0IGxheW91dFRlc3RWaWV3cG9ydFJlY3QgPSB7IHswLCAwfSwge3N0YXRpY19jYXN0PENHRmxv
YXQ+KFRlc3RSdW5uZXI6OnZpZXdXaWR0aCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5u
ZXI6OnZpZXdIZWlnaHQpfSB9OwotRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyAqZ1dlYkJyb3dz
ZXJWaWV3ID0gbmlsOwotRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmll
dyA9IG5pbDsKLUR1bXBSZW5kZXJUcmVlV2luZG93ICpnRHJ0V2luZG93ID0gbmlsOworUmV0YWlu
UHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKK1JldGFpblB0
cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3OworUmV0YWluUHRy
PER1bXBSZW5kZXJUcmVlV2luZG93PiBnRHJ0V2luZG93OwogI2VuZGlmCiAKIHZvaWQgc2V0UGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oQ0ZTdHJpbmdSZWYgdXJsKQpAQCAtNDE3LDIy
ICs0MTcsMTkgQEAgc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRp
YyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqYXZhaWxh
YmxlRm9udHM7Ci0gICAgaWYgKGF2YWlsYWJsZUZvbnRzKQotICAgICAgICByZXR1cm4gYXZhaWxh
YmxlRm9udHM7Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXZhaWxhYmxlRm9udExpc3QgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBmb3IgKE5TU3RyaW5nICpmb250RmFtaWx5
IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKLSAgICAgICAgTlNBcnJheSogZm9udHNGb3JG
YW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJl
cnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07Ci0gICAgICAgIFthdmFpbGFibGVGb250TGlzdCBh
ZGRPYmplY3Q6Zm9udEZhbWlseV07Ci0gICAgICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4g
Zm9udHNGb3JGYW1pbHkpIHsKLSAgICAgICAgICAgIC8vIEZvbnQgbmFtZSBpcyB0aGUgZmlyc3Qg
ZW50cnkgaW4gdGhlIGFycmF5LgotICAgICAgICAgICAgW2F2YWlsYWJsZUZvbnRMaXN0IGFkZE9i
amVjdDpbZm9udEluZm8gb2JqZWN0QXRJbmRleDowXV07CisgICAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBhdmFpbGFibGVGb250cyA9IFtdIHsKKyAgICAgICAgYXV0byBhdmFpbGFibGVGb250
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3Ig
KE5TU3RyaW5nICpmb250RmFtaWx5IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKKyAgICAg
ICAgICAgIE5TQXJyYXkqIGZvbnRzRm9yRmFtaWx5ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmZvbnRGYW1pbHldOworICAg
ICAgICAgICAgW2F2YWlsYWJsZUZvbnRzIGFkZE9iamVjdDpmb250RmFtaWx5XTsKKyAgICAgICAg
ICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4gZm9udHNGb3JGYW1pbHkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGb250IG5hbWUgaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBhcnJheS4KKyAg
ICAgICAgICAgICAgICBbYXZhaWxhYmxlRm9udHMgYWRkT2JqZWN0Oltmb250SW5mbyBvYmplY3RB
dEluZGV4OjBdXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLQotICAgIGF2YWls
YWJsZUZvbnRzID0gYXZhaWxhYmxlRm9udExpc3Q7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRz
OworICAgICAgICByZXR1cm4gYXZhaWxhYmxlRm9udHM7CisgICAgfSgpOworICAgIHJldHVybiBh
dmFpbGFibGVGb250cy5nZXQoKTsKIH0KIAogLy8gQWN0aXZhdGluZyBzeXN0ZW0gY29waWVzIG9m
IHRoZXNlIGZvbnRzIG92ZXJyaWRlcyBhbnkgb3RoZXJzIHRoYXQgY291bGQgYmUgcHJlZmVycmVk
LCBzdWNoIGFzIG9uZXMKQEAgLTU3Niw3ICs1NzMsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RXZWJE
b2N1bWVudEZvckZsZXhpYmxlVmlld3BvcnQoVUlXZWJCcm93c2VyVmlldyAqd2ViQnJvd3NlclZp
ZQogICAgIC8vIEFkanVzdCB0aGUgdmlld3BvcnQgdmlldyBhbmQgdmlld3BvcnQgdG8gaGF2ZSBz
aW1pbGFyIGJlaGF2aW9yCiAgICAgLy8gYXMgdGhlIGJyb3dzZXIuCiAgICAgWyhEdW1wUmVuZGVy
VHJlZUJyb3dzZXJWaWV3ICopd2ViQnJvd3NlclZpZXcgc2V0U2Nyb2xsaW5nVXNlc1VJV2ViU2Ny
b2xsVmlldzpZRVNdOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXREZWxlZ2F0ZTpzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlXTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0RGVsZWdhdGU6c2Nyb2xs
Vmlld1Jlc2l6ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBDR1JlY3Qgc2NyZWVuQm91bmRzID0g
W1VJU2NyZWVuIG1haW5TY3JlZW5dLmJvdW5kczsKICAgICBDR1JlY3Qgdmlld3BvcnRSZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCBzY3JlZW5Cb3VuZHMuc2l6ZS53aWR0aCwgc2NyZWVuQm91bmRzLnNp
emUuaGVpZ2h0KTsKQEAgLTY4NywxMCArNjg0LDEwIEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6
QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAotICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdh
dGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTpl
ZGl0aW5nRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJl
c291cmNlTG9hZERlbGVnYXRlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0Rl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNv
dXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgX3NldEdlb2xvY2F0aW9uUHJv
dmlkZXI6W01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF1dOwogICAgIFt3ZWJWaWV3IF9z
ZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOltXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jayBzaGFyZWRdXTsKICAgICBbd2ViVmlldyBfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6W01v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBzaGFyZWRdXTsKQEAgLTcyMiwyMyArNzE5LDIyIEBA
IFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAg
ICAvLyBQdXQgaXQgYXQgLTEwMDAwLCAtMTAwMDAgaW4gImZsaXBwZWQgY29vcmRpbmF0ZXMiLCBz
aW5jZSBXZWJDb3JlIGFuZCB0aGUgRE9NIHVzZSBmbGlwcGVkIGNvb3JkaW5hdGVzLgogICAgIE5T
U2NyZWVuICpmaXJzdFNjcmVlbiA9IFtbTlNTY3JlZW4gc2NyZWVuc10gZmlyc3RPYmplY3RdOwog
ICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gKHNob3dXZWJWaWV3KSA/IE5TT2Zmc2V0UmVjdChyZWN0
LCAxMDAsIDEwMCkgOiBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbZmlyc3RTY3JlZW4gZnJh
bWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKLSAgICBEdW1wUmVu
ZGVyVHJlZVdpbmRvdyAqd2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgIG1haW5X
aW5kb3cgPSB3aW5kb3c7CisgICAgbWFpbldpbmRvdyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJl
ZVdpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpZRVNdKTsKIAotICAgIFt3aW5kb3cgc2V0Q29sb3JTcGFjZTpbZmlyc3RTY3JlZW4gY29sb3JT
cGFjZV1dOwotICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOk5TV2luZG93Q29sbGVj
dGlvbkJlaGF2aW9yU3RhdGlvbmFyeV07Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6d2ViVmlldy5nZXQoKV07CisgICAgW21haW5XaW5kb3cgc2V0Q29sb3JTcGFjZTpbZmly
c3RTY3JlZW4gY29sb3JTcGFjZV1dOworICAgIFttYWluV2luZG93IHNldENvbGxlY3Rpb25CZWhh
dmlvcjpOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvclN0YXRpb25hcnldOworICAgIFtbbWFpbldp
bmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKICAgICBpZiAoc2hv
d1dlYlZpZXcpCi0gICAgICAgIFt3aW5kb3cgb3JkZXJGcm9udDpuaWxdOworICAgICAgICBbbWFp
bldpbmRvdyBvcmRlckZyb250Om5pbF07CiAgICAgZWxzZQotICAgICAgICBbd2luZG93IG9yZGVy
QmFjazpuaWxdOwotICAgIFt3aW5kb3cgc2V0QXV0b2Rpc3BsYXk6Tk9dOworICAgICAgICBbbWFp
bldpbmRvdyBvcmRlckJhY2s6bmlsXTsKKyAgICBbbWFpbldpbmRvdyBzZXRBdXRvZGlzcGxheTpO
T107CiAKLSAgICBbd2luZG93IHN0YXJ0TGlzdGVuaW5nRm9yQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NoYW5nZXNdOworICAgIFsoRHVtcFJlbmRlclRyZWVXaW5kb3cgKiltYWluV2luZG93LmdldCgp
IHN0YXJ0TGlzdGVuaW5nRm9yQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NoYW5nZXNdOwogI2Vsc2UK
LSAgICBEdW1wUmVuZGVyVHJlZVdpbmRvdyAqZHJ0V2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdp
bmRvdyBhbGxvY10gaW5pdFdpdGhMYXllcjpbd2ViQnJvd3NlclZpZXcgbGF5ZXJdXTsKKyAgICBh
dXRvIGRydFdpbmRvdyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhMYXllcjpbd2ViQnJvd3NlclZpZXcgbGF5ZXJdXSk7CiAgICAgW2RydFdpbmRvdyBzZXRD
b250ZW50Vmlldzp3ZWJWaWV3LmdldCgpXTsKLSAgICBbd2ViQnJvd3NlclZpZXcgc2V0V0FLV2lu
ZG93OmRydFdpbmRvd107CisgICAgW3dlYkJyb3dzZXJWaWV3IHNldFdBS1dpbmRvdzpkcnRXaW5k
b3cuZ2V0KCldOwogCiAgICAgW1t3ZWJWaWV3IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOltb
W3dlYlZpZXcgbWFpbkZyYW1lXSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld11dOwogCkBAIC03NTAs
OCArNzQ2LDggQEAgUmV0YWluUHRyPFdlYlZpZXc+IGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5X
aW5kb3coKQogICAgIFt1aVdpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xs
ZXIuZ2V0KCldOwogCiAgICAgLy8gVGhlIFVJV2luZG93IGFuZCBVSVdlYkJyb3dzZXJWaWV3IGFy
ZSByZWxlYXNlZCB3aGVuIHRoZSBEdW1wUmVuZGVyVHJlZVdpbmRvdyBpcyBjbG9zZWQuCi0gICAg
ZHJ0V2luZG93LnVpV2luZG93ID0gdWlXaW5kb3cuZ2V0KCk7Ci0gICAgZHJ0V2luZG93LmJyb3dz
ZXJWaWV3ID0gd2ViQnJvd3NlclZpZXcuZ2V0KCk7CisgICAgZHJ0V2luZG93LmdldCgpLnVpV2lu
ZG93ID0gdWlXaW5kb3cuZ2V0KCk7CisgICAgZHJ0V2luZG93LmdldCgpLmJyb3dzZXJWaWV3ID0g
d2ViQnJvd3NlclZpZXcuZ2V0KCk7CiAKICAgICBhdXRvIHNjcm9sbFZpZXcgPSBhZG9wdE5TKFtb
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmxheW91dFRl
c3RWaWV3cG9ydFJlY3RdKTsKICAgICBbc2Nyb2xsVmlldyBhZGRTdWJ2aWV3OndlYkJyb3dzZXJW
aWV3LmdldCgpXTsKQEAgLTc2OSw5ICs3NjUsOSBAQCBSZXRhaW5QdHI8V2ViVmlldz4gY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAjZWxzZQogICAgIC8vIEluaXRpYWxpemUgdGhl
IGdsb2JhbCBVSVZpZXdzLCBhbmQgc2V0IHRoZSBrZXkgVUlXaW5kb3cgdG8gYmUgcGFpbnRlZC4K
ICAgICBpZiAoIWdXZWJCcm93c2VyVmlldykgewotICAgICAgICBnV2ViQnJvd3NlclZpZXcgPSBb
d2ViQnJvd3NlclZpZXcgcmV0YWluXTsKLSAgICAgICAgZ1dlYlNjcm9sbFZpZXcgPSBbc2Nyb2xs
VmlldyByZXRhaW5dOwotICAgICAgICBnRHJ0V2luZG93ID0gW2RydFdpbmRvdyByZXRhaW5dOwor
ICAgICAgICBnV2ViQnJvd3NlclZpZXcgPSBXVEZNb3ZlKHdlYkJyb3dzZXJWaWV3KTsKKyAgICAg
ICAgZ1dlYlNjcm9sbFZpZXcgPSBXVEZNb3ZlKHNjcm9sbFZpZXcpOworICAgICAgICBnRHJ0V2lu
ZG93ID0gV1RGTW92ZShkcnRXaW5kb3cpOwogICAgICAgICBbdWlXaW5kb3cgbWFrZUtleUFuZFZp
c2libGVdOwogICAgICAgICBbdWlXaW5kb3cgcmV0YWluXTsKICAgICB9CkBAIC05OTIsMzYgKzk4
OCwzMSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3Rp
bmcoKQogc3RhdGljIHZvaWQgYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycygpCiB7CiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlc2UgYW5kIG1vdmUgdG8gdGhlIE9iakMgc3RhbmRh
cmQgW0ZvbyBzaGFyZWRJbnN0YW5jZV0gbW9kZWwKLSAgICBnTmF2aWdhdGlvbkNvbnRyb2xsZXIg
PSBbW05hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XTsKLSAgICBmcmFtZUxvYWREZWxl
Z2F0ZSA9IFtbRnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIHVpRGVsZWdhdGUg
PSBbW1VJRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGVkaXRpbmdEZWxlZ2F0ZSA9IFtbRWRp
dGluZ0RlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IFtb
UmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIHBvbGljeURlbGVnYXRlID0g
W1tQb2xpY3lEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgaGlzdG9yeURlbGVnYXRlID0gW1tI
aXN0b3J5RGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSA9
IFtbRGVmYXVsdFBvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICBnTmF2aWdhdGlvbkNv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbTmF2aWdhdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBmcmFtZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tGcmFtZUxvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbVUlEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIGVkaXRpbmdEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tFZGl0aW5nRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZXNv
dXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHBvbGljeURlbGVnYXRlID0gYWRv
cHROUyhbW1BvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgaGlzdG9yeURlbGVnYXRl
ID0gYWRvcHROUyhbW0hpc3RvcnlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGRlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEZWZhdWx0UG9saWN5RGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHNjcm9sbFZpZXdSZXNpemVyRGVs
ZWdhdGUgPSBbW1Njcm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgIHNj
cm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2Nyb2xsVmlld1Jlc2l6ZXJEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOwogI2VuZGlmCiB9CiAKLS8vIE9iakMrKyBkb2Vzbid0IHNlZW0g
dG8gbGV0IG1lIHBhc3MgTlNPYmplY3QqJiBzYWRseS4KLXN0YXRpYyBpbmxpbmUgdm9pZCByZWxl
YXNlQW5kWmVybyhOU09iamVjdCoqIG9iamVjdCkKLXsKLSAgICBhdXRvIG9sZE9iamVjdCA9IGFk
b3B0TlMoKm9iamVjdCk7Ci0gICAgKm9iamVjdCA9IG5pbDsKLX0KLQogc3RhdGljIHZvaWQgcmVs
ZWFzZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKLSAgICByZWxlYXNlQW5kWmVybygmZ05hdmlnYXRp
b25Db250cm9sbGVyKTsKLSAgICByZWxlYXNlQW5kWmVybygmZnJhbWVMb2FkRGVsZWdhdGUpOwot
ICAgIHJlbGVhc2VBbmRaZXJvKCZlZGl0aW5nRGVsZWdhdGUpOwotICAgIHJlbGVhc2VBbmRaZXJv
KCZyZXNvdXJjZUxvYWREZWxlZ2F0ZSk7Ci0gICAgcmVsZWFzZUFuZFplcm8oJnVpRGVsZWdhdGUp
OwotICAgIHJlbGVhc2VBbmRaZXJvKCZwb2xpY3lEZWxlZ2F0ZSk7CisgICAgZ05hdmlnYXRpb25D
b250cm9sbGVyID0gbmlsOworICAgIGZyYW1lTG9hZERlbGVnYXRlID0gbmlsOworICAgIGVkaXRp
bmdEZWxlZ2F0ZSA9IG5pbDsKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IG5pbDsKKyAgICB1
aURlbGVnYXRlID0gbmlsOworICAgIGhpc3RvcnlEZWxlZ2F0ZSA9IG5pbDsKKyAgICBwb2xpY3lE
ZWxlZ2F0ZSA9IG5pbDsKKyAgICBkZWZhdWx0UG9saWN5RGVsZWdhdGUgPSBuaWw7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZWxlYXNlQW5kWmVybygmc2Nyb2xsVmlld1Jlc2l6ZXJE
ZWxlZ2F0ZSk7CisgICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9IG5pbDsKICNlbmRpZgog
fQogCkBAIC0xNzU4LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQoZ1dlYkJy
b3dzZXJWaWV3LCBnV2ViU2Nyb2xsVmlldyk7CisgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFu
ZGFyZFZpZXdwb3J0KGdXZWJCcm93c2VyVmlldy5nZXQoKSwgZ1dlYlNjcm9sbFZpZXcuZ2V0KCkp
OwogICAgIFt3ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdpbmc6WUVTXTsKICNlbmRpZgogICAgIFt3
ZWJWaWV3IHNldEVkaXRhYmxlOk5PXTsKQEAgLTE3NzAsNyArMTc2MSw3IEBAIHN0YXRpYyB2b2lk
IHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9w
dGlvbnMsIFJlc2V0CiAgICAgW3dlYlZpZXcgX3NldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3Rvcjow
XTsKICNlbmRpZgogICAgIFt3ZWJWaWV3IHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50czpZ
RVNdOwotICAgIFt3ZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOmRlZmF1bHRQb2xpY3lEZWxlZ2F0
ZV07CisgICAgW3dlYlZpZXcgc2V0UG9saWN5RGVsZWdhdGU6ZGVmYXVsdFBvbGljeURlbGVnYXRl
LmdldCgpXTsKICAgICBbcG9saWN5RGVsZWdhdGUgc2V0UGVybWlzc2l2ZTpOT107CiAgICAgW3Bv
bGljeURlbGVnYXRlIHNldENvbnRyb2xsZXJUb05vdGlmeURvbmU6MF07CiAgICAgW3VpRGVsZWdh
dGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6b3B0aW9uc107CkBAIC0xOTQz
LDcgKzE5MzQsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1
dExpbmUpCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbmlsOwogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIEFTU0VSVCghZHJhZ2dpbmdJbmZvKTsgLy8gdGhlIHByZXZpb3VzIHRlc3Qgc2hv
dWxkIGhhdmUgY2FsbGVkIGV2ZW50U2VuZGVyLm1vdXNlVXAgdG8gZHJvcCEKLSAgICByZWxlYXNl
QW5kWmVybygmZHJhZ2dpbmdJbmZvKTsKKyAgICBkcmFnZ2luZ0luZm8gPSBuaWw7CiAjZW5kaWYK
ICAgICBkb25lID0gTk87CiAKQEAgLTE5NTksNyArMTk1MCw3IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGluZSkKICAgICAgICAgZ1Rlc3RSdW5uZXItPnNl
dER1bXBGcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7CiAKICAgICBpZiAoc2hvdWxkTG9nSGlzdG9y
eURlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCi0gICAgICAgIFtbbWFpbkZyYW1lIHdlYlZp
ZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVsZWdhdGVdOworICAgICAgICBbW21haW5G
cmFtZSB3ZWJWaWV3XSBzZXRIaXN0b3J5RGVsZWdhdGU6aGlzdG9yeURlbGVnYXRlLmdldCgpXTsK
ICAgICBlbHNlCiAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0
ZTpuaWxdOwogCkBAIC0xOTcwLDcgKzE5NjEsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBpbnB1dExpbmUpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRoT3JVUkwuY19zdHIoKSkpCi0gICAg
ICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9ydChnV2ViQnJvd3NlclZpZXcs
IGdXZWJTY3JvbGxWaWV3KTsKKyAgICAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JGbGV4aWJsZVZp
ZXdwb3J0KGdXZWJCcm93c2VyVmlldy5nZXQoKSwgZ1dlYlNjcm9sbFZpZXcuZ2V0KCkpOwogI2Vu
ZGlmCiAKICAgICBpZiAoc2hvdWxkVXNlRXBoZW1lcmFsU2Vzc2lvbihwYXRoT3JVUkwuY19zdHIo
KSkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVN
YWMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCmluZGV4
IDQzNDdkYmU1MGVmZWUxZTQ0Nzc5OTA1N2ViOTNiMmE2MzY3ZGJjYjUuLjNkNDFiNWI3NGJiNzI4
YTUxMmRlOTY3ZDk5NThmMDY4ODJkODU2M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZU1hYy5oCkBAIC00NywxNyArNDcsMTkgQEAgZXh0ZXJuIENGTXV0YWJs
ZUFycmF5UmVmIG9wZW5XaW5kb3dzUmVmOwogZXh0ZXJuIENGTXV0YWJsZVNldFJlZiBkaXNhbGxv
d2VkVVJMczsKIGV4dGVybiBXZWJGcmFtZSogbWFpbkZyYW1lOwogZXh0ZXJuIFdlYkZyYW1lKiB0
b3BMb2FkaW5nRnJhbWU7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gKmRyYWdn
aW5nSW5mbzsKLWV4dGVybiBOYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyOwotZXh0ZXJuIFBvbGljeURlbGVnYXRlKiBwb2xpY3lEZWxlZ2F0ZTsKLWV4dGVybiBEZWZh
dWx0UG9saWN5RGVsZWdhdGUgKmRlZmF1bHRQb2xpY3lEZWxlZ2F0ZTsKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbz4gZHJhZ2dp
bmdJbmZvOworZXh0ZXJuIFJldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOworZXh0ZXJuIFJldGFpblB0cjxQb2xpY3lEZWxlZ2F0ZT4gcG9saWN5RGVs
ZWdhdGU7CitleHRlcm4gUmV0YWluUHRyPERlZmF1bHRQb2xpY3lEZWxlZ2F0ZT4gZGVmYXVsdFBv
bGljeURlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlX
aW5kb3c7Ci1leHRlcm4gVUlXaW5kb3cgKm1haW5XaW5kb3c7CitleHRlcm4gUmV0YWluUHRyPFVJ
V2luZG93PiBtYWluV2luZG93OwogI2Vsc2UKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7Ci1leHRlcm4g
TlNXaW5kb3cgKm1haW5XaW5kb3c7CitleHRlcm4gUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2lu
ZG93OworI2VuZGlmCiAjZW5kaWYKIAogdm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZSdW5M
b29wVGltZXJSZWYpOwpAQCAtODEsOCArODMsMTAgQEAgQGludGVyZmFjZSBEdW1wUmVuZGVyVHJl
ZSA6IFVJQXBwbGljYXRpb24gewogLSAodm9pZClfd2FpdEZvcldlYlRocmVhZDsKIEBlbmQKIAor
I2lmZGVmIF9fY3BsdXNwbHVzCiBAY2xhc3MgRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldzsKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7CitleHRlcm4g
UmV0YWluUHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKKyNl
bmRpZgogI2VuZGlmCiAKIGludCBEdW1wUmVuZGVyVHJlZU1haW4oaW50LCBjb25zdCBjaGFyICpb
XSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQ
YXN0ZWJvYXJkLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5tbQppbmRleCBlOTQ0YjQxN2RiZjU3ZmY2ZDk3ODJhOThiNDU0MGQ5OTMzZjBiZDk1
Li41Y2YyOWFjNjY2ODgxYWYyZGI2NzBkMjFhOThmMTBlYzJlYmRjOWY3IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KQEAg
LTU2LDcgKzU2LDcgQEAgQGludGVyZmFjZSBMb2NhbFBhc3RlYm9hcmQgOiBOU1Bhc3RlYm9hcmQg
ewogLShpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKIEBlbmQKIAotc3RhdGljIE5T
TXV0YWJsZURpY3Rpb25hcnkgKmxvY2FsUGFzdGVib2FyZHM7CitzdGF0aWMgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IGxvY2FsUGFzdGVib2FyZHM7CiAKIEBpbXBsZW1lbnRhdGlvbiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQKIApAQCAtNjcsNyArNjcsNyBAQCArIChOU1Bhc3RlYm9h
cmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUp
CiAgICAgICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkxvY2FsUGFzdGVi
b2FyZCVkIiwgKytudW1iZXJdOwogICAgIGlmICghbG9jYWxQYXN0ZWJvYXJkcykKLSAgICAgICAg
bG9jYWxQYXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Cisg
ICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOwogICAgIGlmIChMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbbG9j
YWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV0pCiAgICAgICAgIHJldHVybiBwYXN0ZWJv
YXJkOwogICAgIGF1dG8gcGFzdGVib2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQgYWxs
b2NdIGluaXRXaXRoTmFtZTpuYW1lXSk7CkBAIC03Nyw3ICs3Nyw3IEBAICsgKE5TUGFzdGVib2Fy
ZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQogCiArICh2b2lkKXJlbGVh
c2VMb2NhbFBhc3RlYm9hcmRzCiB7Ci0gICAgYXV0byBvbGRQYXN0ZWJvYWRzID0gYWRvcHROUyhz
dGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVib2FyZHMsIG5pbCkpOworICAgIGxvY2FsUGFzdGVib2Fy
ZHMgPSBuaWw7CiB9CiAKIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgSlMgc28gdGhhdCBpdCBk
b2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBjcmVhdGUgYSBOU0FycmF5IG9uIHRoZSBvYmpjIHNpZGUg
aW5zdGVhZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQppbmRleCA1MjY2NzA1OWRjOGE5ZjdjMGEwNzk2MjA4ZjAwZmIwYjk0MmY0ZTA5
Li4xNmE2MDUxYmI3ZmI2NGI5ZGYwYWE5ZTM3MzIyYjg5YjAxMWQ3NTcwIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtOTEs
NyArOTEsNyBAQCBzdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKIE5TUG9pbnQgbGFzdE1vdXNlUG9z
aXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bvc2l0aW9uOwogaW50IGxhc3RDbGlja0J1dHRvbiA9
IE5vTW91c2VCdXR0b247Ci1OU0FycmF5ICp3ZWJraXREb21FdmVudE5hbWVzOworc3RhdGljIFJl
dGFpblB0cjxOU0FycmF5PiB3ZWJraXREb21FdmVudE5hbWVzOwogQk9PTCByZXBsYXlpbmdTYXZl
ZEV2ZW50czsKIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24gPSAwOwogCkBAIC0x
NjksOCArMTY5LDggQEAgc3RhdGljIE5TRHJhZ2dpbmdTZXNzaW9uICpkcnRfV2ViSFRNTFZpZXdf
YmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNFdmVudFNvdXIKICAgICBmb3IgKE5TRHJhZ2dp
bmdJdGVtICppdGVtIGluIGl0ZW1zKQogICAgICAgICBbcGFzdGVib2FyZCB3cml0ZU9iamVjdHM6
QFsgaXRlbS5pdGVtIF1dOwogCi0gICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURy
YWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFz
dGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VdOwotICAgIFt3ZWJWaWV3IGRyYWdnaW5n
VXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5T
WmVyb1NpemUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VdKTsKKyAgICBbd2Vi
VmlldyBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvLmdldCgpXTsKICAgICBbRXZlbnRTZW5k
aW5nQ29udHJvbGxlciByZXBsYXlTYXZlZEV2ZW50c107CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgTlNEcmFnZ2luZ1Nlc3Npb24gKmRydF9XZWJIVE1M
Vmlld19iZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtc0V2ZW50U291cgogCiArICh2b2lkKWlu
aXRpYWxpemUKIHsKLSAgICB3ZWJraXREb21FdmVudE5hbWVzID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6CisgICAgd2Via2l0RG9tRXZlbnROYW1lcyA9IEBbCiAgICAgICAgIEAi
YWJvcnQiLAogICAgICAgICBAImJlZm9yZWNvcHkiLAogICAgICAgICBAImJlZm9yZWN1dCIsCkBA
IC0yMjYsNyArMjI2LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAidGV4dHpvb21v
dXQiLAogICAgICAgICBAInVubG9hZCIsCiAgICAgICAgIEAiem9vbSIsCi0gICAgICAgIG5pbF07
CisgICAgXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBBZGQgYW4gaW1wbGVtZW50YXRp
b24gb2YgLVtXZWJIVE1MVmlldyBiZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtczpldmVudDpz
b3VyY2U6XS4KQEAgLTQ2Myw4ICs0NjMsOCBAQCAtICh2b2lkKWJlZ2luRHJhZ1dpdGhGaWxlczoo
V2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogCiAgICAgLy8gUHJvdmlkZSBhIHNvdXJjZSwg
b3RoZXJ3aXNlIFtEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tdIGRlZmF1bHRzIHRvIE5TRHJhZ09wZXJhdGlvbk5vbmUKICAgICBhdXRvIHNvdXJj
ZSA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZSBhbGxvY10gaW5p
dF0pOwotICAgIGRyYWdnaW5nSW5mbyA9IFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxs
b2NdIGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGJvYXJk
IHNvdXJjZTpzb3VyY2UuZ2V0KCldOwotICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIGRyYWdnaW5n
RW50ZXJlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5T
WmVyb1NpemUgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZS5nZXQoKV0pOworICAgIFtb
bWFpbkZyYW1lIHdlYlZpZXddIGRyYWdnaW5nRW50ZXJlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwog
CiAgICAgZHJhZ01vZGUgPSBOTzsgLy8gZHJhZ01vZGUgc2F2ZXMgZXZlbnRzIGFuZCB0aGVuIHJl
cGxheXMgdGhlbSBsYXRlci4gIFdlIGRvbid0IG5lZWQvd2FudCB0aGF0LgogICAgIGxlZnRNb3Vz
ZUJ1dHRvbkRvd24gPSBZRVM7IC8vIE1ha2UgdGhlIHJlc3Qgb2YgZXZlbnRTZW5kZXIgdGhpbmsg
YSBkcmFnIGlzIGluIHByb2dyZXNzCkBAIC01MDMsOCArNTAzLDggQEAgLSAodm9pZCliZWdpbkRy
YWdXaXRoRmlsZVByb21pc2VzOihXZWJTY3JpcHRPYmplY3QgKilmaWxlUGF0aHMKICAgICBhc3Nl
cnQoW3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVd
KTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlRmlsZURyYWdn
aW5nU291cmNlIGFsbG9jXSBpbml0V2l0aFByb21pc2VkRmlsZVVSTHM6ZmlsZVVSTHNdKTsKLSAg
ICBkcmFnZ2luZ0luZm8gPSBbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0
V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291
cmNlOnNvdXJjZS5nZXQoKV07Ci0gICAgW21haW5GcmFtZS53ZWJWaWV3IGRyYWdnaW5nRW50ZXJl
ZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVy
VHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1Np
emUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCldKTsKKyAgICBbbWFp
bkZyYW1lLndlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOmRyYWdnaW5nSW5mby5nZXQoKV07CiAKICAg
ICBkcmFnTW9kZSA9IE5POwogICAgIGxlZnRNb3VzZUJ1dHRvbkRvd24gPSBZRVM7CkBAIC03MTks
MTYgKzcxOSwxNCBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIgd2l0aE1vZGlm
aWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICBpZiAoZHJhZ2dpbmdJbmZvKSB7
CiAgICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogICAgICAg
ICAKLSAgICAgICAgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBbd2ViVmlldyBkcmFn
Z2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvXTsKLSAgICAgICAgCisgICAgICAgIE5TRHJhZ09wZXJh
dGlvbiBkcmFnT3BlcmF0aW9uID0gW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5m
by5nZXQoKV07CiAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uICE9IE5TRHJhZ09wZXJhdGlvbk5v
bmUpCi0gICAgICAgICAgICBbd2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpkcmFnZ2luZ0lu
Zm9dOworICAgICAgICAgICAgW3dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246ZHJhZ2dpbmdJ
bmZvLmdldCgpXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW3dlYlZpZXcgZHJhZ2dpbmdF
eGl0ZWQ6ZHJhZ2dpbmdJbmZvXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3IGRyYWdnaW5nRXhpdGVk
OmRyYWdnaW5nSW5mby5nZXQoKV07CiAgICAgICAgIC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdn
aW5nU291cmNlcyBtYXkgbm90IGltcGxlbWVudCBkcmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVyYXRp
b246CiAgICAgICAgIGlmIChbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihkcmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVyYXRpb246KV0pCiAg
ICAgICAgICAgICBbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gZHJhZ2dlZEltYWdlOltk
cmFnZ2luZ0luZm8gZHJhZ2dlZEltYWdlXSBlbmRlZEF0Omxhc3RNb3VzZVBvc2l0aW9uIG9wZXJh
dGlvbjpkcmFnT3BlcmF0aW9uXTsKLSAgICAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKICAg
ICAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogICAgIH0KICNlbmRpZgpAQCAtNzg3LDcgKzc4NSw3
IEBAIC0gKHZvaWQpbW91c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQpeQogICAgICAgICAgICAgICAg
IC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdnaW5nU291cmNlcyBtYXkgbm90IGltcGxlbWVudCBk
cmFnZ2VkSW1hZ2U6bW92ZWRUbzoKICAgICAgICAgICAgICAgICBpZiAoW1tkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdTb3VyY2VdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZHJhZ2dlZEltYWdl
Om1vdmVkVG86KV0pCiAgICAgICAgICAgICAgICAgICAgIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
U291cmNlXSBkcmFnZ2VkSW1hZ2U6W2RyYWdnaW5nSW5mbyBkcmFnZ2VkSW1hZ2VdIG1vdmVkVG86
bGFzdE1vdXNlUG9zaXRpb25dOwotICAgICAgICAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXdd
IGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgICAgICAgICAgICAgIFtbbWFpbkZy
YW1lIHdlYlZpZXddIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgICAg
ICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2VkTW91
c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCmluZGV4IDM0
MmIzYTAxZGM3ZWE4NzlhZjFiNTRiMGVlMjczZDY4MTJmOGY3YTcuLjFhYmE4MTIwODI3NzE5YTlm
MjI1ZTk2ODY2NjBlOGY5M2FiZmRkMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RnJhbWVMb2FkRGVsZWdhdGUubW0KQEAgLTMyNiw3ICszMjYsNyBAQCAtICh2b2lkKWRpZENsZWFy
V2luZG93T2JqZWN0SW5TdGFuZGFyZFdvcmxkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKICNl
bmRpZgogCiAgICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTphZG9wdE5TKFtbRXZlbnRTZW5kaW5n
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAImV2ZW50U2VuZGVyIl07Ci0g
ICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTpnTmF2aWdhdGlvbkNvbnRyb2xsZXIgZm9yS2V5OkAi
bmF2aWdhdGlvbkNvbnRyb2xsZXIiXTsKKyAgICBbd2luZG93T2JqZWN0IHNldFZhbHVlOmdOYXZp
Z2F0aW9uQ29udHJvbGxlci5nZXQoKSBmb3JLZXk6QCJuYXZpZ2F0aW9uQ29udHJvbGxlciJdOwog
ICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHROUyhbW09iakNDb250cm9sbGVyIGFsbG9j
XSBpbml0XSkuZ2V0KCkgZm9yS2V5OkAib2JqQ0NvbnRyb2xsZXIiXTsKICAgICBbd2luZG93T2Jq
ZWN0IHNldFZhbHVlOmFkb3B0TlMoW1tPYmpDUGx1Z2luIGFsbG9jXSBpbml0XSkuZ2V0KCkgZm9y
S2V5OkAib2JqQ1BsdWdpbiJdOwogICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHROUyhb
W09iakNQbHVnaW5GdW5jdGlvbiBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAIm9iakNQbHVn
aW5GdW5jdGlvbiJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpp
bmRleCBjNThkNTQ2NWZhMDNkYmRiYWUwOTU4ZGE5NTU5YjdiNjYwMmIzYTVjLi4yNGNlMjJmN2Zk
YTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJiYThlYzJiNjBmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNDAwLDEyICs0MDAsMTIgQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKQogdm9pZCBU
ZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29s
IHBlcm1pc3NpdmUpCiB7CiAgICAgaWYgKCFzZXREZWxlZ2F0ZSkgewotICAgICAgICBbW21haW5G
cmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0UG9saWN5RGVsZWdhdGVdOwor
ICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0UG9s
aWN5RGVsZWdhdGUuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgW3BvbGlj
eURlbGVnYXRlIHNldFBlcm1pc3NpdmU6cGVybWlzc2l2ZV07Ci0gICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGVdOworICAgIFtbbWFpbkZyYW1l
IHdlYlZpZXddIHNldFBvbGljeURlbGVnYXRlOnBvbGljeURlbGVnYXRlLmdldCgpXTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90
YSkKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxl
Z2F0ZSgpCiB7CiAgICAgc2V0V2FpdFRvRHVtcCh0cnVlKTsKICAgICBbcG9saWN5RGVsZWdhdGUg
c2V0Q29udHJvbGxlclRvTm90aWZ5RG9uZTp0aGlzXTsKLSAgICBbW21haW5GcmFtZSB3ZWJWaWV3
XSBzZXRQb2xpY3lEZWxlZ2F0ZTpwb2xpY3lEZWxlZ2F0ZV07CisgICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGUuZ2V0KCldOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNv
dXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQpAQCAtOTE0
LDggKzkxNCw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFz
ZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSCiAgICAgLy8gYW5kIGNsb3NlcyBh
IFdlYlZpZXcsIGl0IHNob3VsZCBiZSBydW4gb24gdGhlIG1haW4gdGhyZWFkLiBNYWtlIHRoZSBz
d2l0Y2gKICAgICAvLyBmcm9tIHRoZSB3ZWIgdGhyZWFkIHRvIHRoZSBtYWluIHRocmVhZCBhbmQg
bWFrZSB0aGUgdGVzdCBhc3luY2hyb25vdXMuCiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgp
KSB7Ci0gICAgICAgIEFQSVRlc3REZWxlZ2F0ZUlQaG9uZSAqZGlzcGF0Y2hlciA9IFtbQVBJVGVz
dERlbGVnYXRlSVBob25lIGFsbG9jXSBpbml0V2l0aFRlc3RSdW5uZXI6dGhpcyB1dGY4RGF0YTp1
dGY4RGF0YSBiYXNlVVJMOmJhc2VVUkxdOwotICAgICAgICBOU0ludm9jYXRpb24gKmludm9jYXRp
b24gPSBXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGRpc3BhdGNoZXIsIEBzZWxlY3RvcihydW4p
KTsKKyAgICAgICAgYXV0byBkaXNwYXRjaGVyID0gYWRvcHROUyhbW0FQSVRlc3REZWxlZ2F0ZUlQ
aG9uZSBhbGxvY10gaW5pdFdpdGhUZXN0UnVubmVyOnRoaXMgdXRmOERhdGE6dXRmOERhdGEgYmFz
ZVVSTDpiYXNlVVJMXSk7CisgICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFdlYlRo
cmVhZE1ha2VOU0ludm9jYXRpb24oZGlzcGF0Y2hlci5nZXQoKSwgQHNlbGVjdG9yKHJ1bikpOwog
ICAgICAgICBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoaW52b2NhdGlvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmluZGV4IDEyZjVh
YTc5MDMxYTgxNzExNWRkZWQwMjZhYjY4YjFhZjhiZDFiNGMuLmJiYTUzYmRiZjk0ZTE5YjNmNzU3
MDBlY2FiYWExYzg3ZWY0ZmMyZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tCkBAIC00OCw3ICs0OCw3IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8g
KmRyYWdnaW5nSW5mbyA9IG5pbDsKK1JldGFpblB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5m
bz4gZHJhZ2dpbmdJbmZvOwogI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBVSURlbGVnYXRlCkBA
IC0xNTMsMTAgKzE1MywxMCBAQCAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKiljIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKQogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRyYWdJbWFn
ZTooTlNJbWFnZSAqKWFuSW1hZ2UgYXQ6KE5TUG9pbnQpdmlld0xvY2F0aW9uIG9mZnNldDooTlNT
aXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNrOihCT09MKXNs
aWRlRmxhZyBmb3JWaWV3OihOU1ZpZXcgKil2aWV3CiB7Ci0gICAgIGFzc2VydCghZHJhZ2dpbmdJ
bmZvKTsKLSAgICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBh
bGxvY10gaW5pdFdpdGhJbWFnZTphbkltYWdlIG9mZnNldDppbml0aWFsT2Zmc2V0IHBhc3RlYm9h
cmQ6cGJvYXJkIHNvdXJjZTpzb3VyY2VPYmpdOwotICAgICBbc2VuZGVyIGRyYWdnaW5nVXBkYXRl
ZDpkcmFnZ2luZ0luZm9dOwotICAgICBbRXZlbnRTZW5kaW5nQ29udHJvbGxlciByZXBsYXlTYXZl
ZEV2ZW50c107CisgICAgYXNzZXJ0KCFkcmFnZ2luZ0luZm8pOworICAgIGRyYWdnaW5nSW5mbyA9
IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFn
ZTphbkltYWdlIG9mZnNldDppbml0aWFsT2Zmc2V0IHBhc3RlYm9hcmQ6cGJvYXJkIHNvdXJjZTpz
b3VyY2VPYmpdKTsKKyAgICBbc2VuZGVyIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8uZ2V0
KCldOworICAgIFtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJlcGxheVNhdmVkRXZlbnRzXTsKIH0K
ICNlbmRpZgogCkBAIC00MzMsNyArNDMzLDYgQEAgLSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmYKIC0g
KHZvaWQpZGVhbGxvYwogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtkcmFnZ2lu
Z0luZm8gcmVsZWFzZV07CiAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbQppbmRleCA5NDc1NTM3ZjZmNjkxYWZmNzZjYTUzODkyMDcxNTM0ZjMzMmQ3Y2QwLi4xNTM5
NDQ1OTAzMDViOGI1YTIxMmI3Mjg0NTIwNjBmYzZiOWIzY2ZlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0z
NSw3ICszNSw3IEBACiAKIHVzaW5nIFRleHRDaGVja2luZ0NvbXBsZXRpb25IYW5kbGVyID0gdm9p
ZCheKShOU0ludGVnZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKiwgTlNPcnRo
b2dyYXBoeSAqLCBOU0ludGVnZXIpOwogCi1zdGF0aWMgTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciAq
Z2xvYmFsU3BlbGxDaGVja2VyID0gbmlsOworc3RhdGljIFJldGFpblB0cjxMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyPiBnbG9iYWxTcGVsbENoZWNrZXI7CiBzdGF0aWMgQk9PTCBoYXNTd2l6emxlZExh
eW91dFRlc3RTcGVsbENoZWNrZXIgPSBOTzsKIHN0YXRpYyBJTVAgZ2xvYmFsbHlTd2l6emxlZFNo
YXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uOwogc3RhdGljIE1ldGhvZCBvcmlnaW5hbFNo
YXJlZFNwZWxsQ2hlY2tlck1ldGhvZDsKQEAgLTQ0LDkgKzQ0LDkgQEAgc3RhdGljIExheW91dFRl
c3RTcGVsbENoZWNrZXIgKmVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2VUb2tlbiwgXnsKLSAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyID0gW1tMYXlvdXRUZXN0
U3BlbGxDaGVja2VyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyID0g
YWRvcHROUyhbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgYWxsb2NdIGluaXRdKTsKICAgICB9KTsK
LSAgICByZXR1cm4gZ2xvYmFsU3BlbGxDaGVja2VyOworICAgIHJldHVybiBnbG9iYWxTcGVsbENo
ZWNrZXIuZ2V0KCk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpzdHJpbmdGb3JDb3JyZWN0aW9u
UmVzcG9uc2UoTlNDb3JyZWN0aW9uUmVzcG9uc2UgY29ycmVjdGlvblJlc3BvbnNlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCmluZGV4IDQ0
NGMwNjdiZTczMDJhMzVhNzdkYzIzZWUwZjM5MTFlYzBkMzMxNjguLmI3YmM3ODNlOWI0YTk5NDZi
OGYwZmEwMzRkMjkxYjUwNzc1MWVhMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KQEAgLTEwNiw0NSArMTA2LDQ1IEBAIFRFU1QoV2Vi
S2l0MiwgQ2FwdHVyZU11dGUpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVz
U2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2Fw
dHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRp
YUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAKLSAgICB3ZWJWaWV3Ll9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3Rp
bmcgPSAwOworICAgIFt3ZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRl
c3Rpbmc6MF07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRp
YSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFDYXB0dXJlRGV2
aWNlc011dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmll
dywgX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZENhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdh
aXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11
dGVkQ2FtZXJhKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFOb25lTXV0
ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0
b3AoKSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBf
V0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0
dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAKICAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvKCki
XTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVu
dGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
TWljcm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2FwdHVy
ZURldmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdl
YlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CisgICAgRVhQRUNU
X1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVy
ZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dL
TWVkaWFOb25lTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3
ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZU1pY3JvcGhvbmUpKTsKKyAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0
dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAKICAgICBbd2ViVmlldyBfc2V0UGFnZU11dGVk
OiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9u
ZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgp
LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9uZSkpOwogCiAgICAgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0b3AoKSJdOwotICAgIEVYUEVDVF9UUlVF
KHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUp
KTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwg
X1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8oKSJdOwotICAgIEVYUEVDVF9U
UlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFj
dGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWljcm9waG9uZSkpOworICAg
IEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRp
YUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWlj
cm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2FwdHVyZURl
dmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZp
ZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEgfCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkTWljcm9waG9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0
ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkQ2FtZXJhIHwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVNdXRlZE1pY3JvcGhvbmUpKTsKICAgICBbd2ViVmlldyBfc2V0UGFnZU11
dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVy
ZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhIHwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVu
dGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
Q2FtZXJhIHwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAKICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic3RvcCgpIl07Ci0gICAgRVhQ
RUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0
YXRlTm9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3
LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKIH0KIAogVEVTVChXZWJLaXQyLCBD
YXB0dXJlU3RvcCkKQEAgLTE1OSwxOSArMTU5LDE5IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZVN0
b3ApCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVk
aWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEi
XTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxD
YXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1l
cmEpKTsKIAogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKICAgICBbd2ViVmll
dyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVD
VF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdl
YlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEpKTsKICAgICBbd2Vi
VmlldyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUo
d2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
Q2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcu
Z2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibm90aWZ5RW5kZWRFdmVudCgpIl07CiAg
ICAgW3dlYlZpZXcgX3N0b3BNZWRpYUNhcHR1cmVdOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFRFU1Qo
V2ViS2l0MiwgQ2FwdHVyZVN0b3ApCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJl
U3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CisgICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0
YXRlTm9uZSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InByb21wdEZvckNhcHR1cmUoKSJdOwogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07
CkBAIC0xOTcsMTQgKzE5NywxNCBAQCBURVNUKFdlYktpdDIsIENhcHR1cmVJbmRpY2F0b3JEZWxh
eSkKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW0dVTU1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uLmdldCgpIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAImd1bSJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWcuZ2V0KCldOwotICAgIHdlYlZpZXcuX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVz
dGluZyA9IDI7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZy5nZXQoKV0pOworICAgIFt3ZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdE
ZWxheUZvclRlc3Rpbmc6Ml07CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJN
ZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRp
YSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKIApAQCAtMjE1LDcg
KzIxNSw3IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZUluZGljYXRvckRlbGF5KQogICAgIEVYUEVD
VF9FUShbd2ViVmlldyBfbWVkaWFDYXB0dXJlU3RhdGVdLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFj
dGl2ZUNhbWVyYSk7CiAKICAgICAvLyBPbmUgYWRkaXRpb25hbCBzZWNvbmQgc2hvdWxkIGFsbG93
IHVzIHRvIGdvIGJhY2sgdG8gbm8gY2FwdHVyZSBiZWluZyByZXBvcnRlZC4KLSAgICBFWFBFQ1Rf
VFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVO
b25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0
KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkpOwogfQogCiBURVNUKFdlYktpdDIsIENhcHR1
cmVJbmRpY2F0b3JEZWxheVdoZW5DbG9zZWQpCkBAIC0yMzAsMTQgKzIzMCwxNCBAQCBURVNUKFdl
YktpdDIsIENhcHR1cmVJbmRpY2F0b3JEZWxheVdoZW5DbG9zZWQpCiAgICAgYXV0byBtZXNzYWdl
SGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJndW0iXTsKIAotICAgIGF1
dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKLSAgICB3ZWJW
aWV3Ll9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3RpbmcgPSAyOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKKyAg
ICBbd2ViVmlldyBfc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nOjJdOwog
CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKLSAgICBFWFBFQ1RfVFJV
RSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3Rp
dmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmll
dy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKIAogICAgIFtkZWxl
Z2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKQEAgLTI1OCwxMiArMjU4LDEyIEBAIFRFU1QoV2Vi
S2l0MiwgR2V0Q2FwYWJpbGl0aWVzKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24u
Z2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAg
ICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAiZ2V0VXNlck1lZGlhIl07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0
YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CisgICAgRVhQ
RUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2Fw
dHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJvbXB0
ZWRdOwogCkBAIC0zMzEsMTAgKzMzMSwxMCBAQCBURVNUKFdlYktpdCwgV2ViQXVkaW9BbmRHZXRV
c2VyTWVkaWEpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgYXV0byB1cmwgPSBhZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJnZXRVc2VyTWVkaWEtd2ViYXVkaW8iLCAiaHRt
bCIpKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYS13ZWJh
dWRpbyJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0
VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KaW5kZXggOWJmZmRhYzY1Nzk5NmUwOWIxNTc2YzE3
MmRhZTcwODdjZGE4MGI1My4uMTc4YzQ0Nzc2MGY1M2U2ODQ4NmYwZTUxODIwZWY3MTQzYWE0ZDBi
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9H
ZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCkBAIC03NSw5ICs3NSw5IEBAIFRFU1QoV2ViS2l0LCBO
YXZpZ2F0ZUR1cmluZ0dldFVzZXJNZWRpYVByb21wdCkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFD
YXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpw
cm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbTmF2aWdhdGlvbldoaWxlR2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgc2hv
dWxkUmVsZWFzZUluRW51bWVyYXRlID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKQEAgLTkyLDkgKzkyLDkgQEAgVEVTVChXZWJLaXQsIE5h
dmlnYXRlRHVyaW5nRGV2aWNlRW51bWVyYXRpb24pCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2Fw
dHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIHNob3Vs
ZFJlbGVhc2VJbkVudW1lcmF0ZSA9IHRydWU7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKQEAgLTEyMSw5ICsxMjEsOSBAQCBURVNUKFdl
YktpdCwgRGVmYXVsdERldmljZUlkSGFzaFNhbHRzRGlyZWN0b3J5KQogICAgIHByZWZlcmVuY2Vz
Ll9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1
cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVTOwogICAgIHByZWZlcmVuY2Vz
Ll9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRV
SURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdh
dGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAK
ICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImVudW1lcmF0ZU1lZGlhRGV2aWNlcyJd
OwogCkBAIC0xNTEsOSArMTUxLDkgQEAgVEVTVChXZWJLaXQsIERldmljZUlkSGFzaFNhbHRzRGly
ZWN0b3J5KQogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5l
Y3Rpb24gPSBOTzsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVk
ID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVT
OwotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdl
dCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRV
c2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2Vi
Vmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KaW5kZXgg
ZDA2Mjc2NWZjMjBhYTc4NGFlNWNmMWZlNjVlZjYxMDBhZmQ2NjMxOS4uOTQxNTE0MGRjMGFkZDIz
YjM2ZDUzNGFiMDkxNDJjZjIyMGFhYTQ4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KQEAgLTY4LDkgKzY4
LDkgQEAgVEVTVChXZWJLaXQyLCBHZXRVc2VyTWVkaWFSZXByb21wdCkKICAgICBwcmVmZXJlbmNl
cy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNl
cy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBb
W0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2Fw
dHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CiAg
ICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKQEAgLTEwNCwxMSArMTA0LDExIEBAIFRF
U1QoV2ViS2l0MiwgR2V0VXNlck1lZGlhUmVwcm9tcHRBZnRlckF1ZGlvVmlkZW9CZWluZ0Rlbmll
ZCkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9u
ID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlF
UzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAg
ICBhdXRvIHdlYlZpZXcgPSBbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Zy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJv
bXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbZGVs
ZWdhdGUgc2V0QXVkaW9EZWNpc2lvbjpfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudF07CiAgICAg
W2RlbGVnYXRlIHNldFZpZGVvRGVjaXNpb246X1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueV07Ci0g
ICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAImdldFVzZXJNZWRpYUF1ZGlvVmlkZW9DYXB0dXJlIl07CiAgICAgW2RlbGVnYXRlIHdh
aXRVbnRpbFByb21wdGVkXTsKQEAgLTEyNyw5ICsxMjcsOSBAQCBURVNUKFdlYktpdDIsIE11bHRp
cGxlR2V0VXNlck1lZGlhU3luY2hyb25vdXNseSkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0
dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW0dldFVzZXJNZWRp
YVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0p
OwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CiAgICAgW2RlbGVnYXRl
IHdhaXRVbnRpbFByb21wdGVkXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tCmluZGV4IDNkM2M2
MTYyZDM5NWU2NmVkNWQ1N2VhNzgwYTU5NDY2OWU3OTc1NGYuLjk1NmMxNzc0YzY1M2QwODI4ODg2
MTIzZDJiOTE5NWRlMjRkYTFjM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbQpAQCAtNjAs
OCArNjAsOCBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZQogICAgIC8vIEF0dGVtcHQgdG8gc2V0
IGEgcGFyYW1ldGVyIHVzaW5nIHRoZSBPYmplY3RpdmUgQyBBUEk6CiAgICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCi0gICAgQ3VzdG9tQnVuZGxlT2JqZWN0ICpj
dXN0b21PYmplY3QgPSBbW0N1c3RvbUJ1bmRsZU9iamVjdCBhbGxvY10gaW5pdFdpdGhWYWx1ZTox
MjM0XTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmplY3Q6Y3VzdG9t
T2JqZWN0IGZvckJ1bmRsZVBhcmFtZXRlcjpAIlRlc3RQYXJhbWV0ZXIxIl07CisgICAgYXV0byBj
dXN0b21PYmplY3QgPSBhZG9wdE5TKFtbQ3VzdG9tQnVuZGxlT2JqZWN0IGFsbG9jXSBpbml0V2l0
aFZhbHVlOjEyMzRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmpl
Y3Q6Y3VzdG9tT2JqZWN0LmdldCgpIGZvckJ1bmRsZVBhcmFtZXRlcjpAIlRlc3RQYXJhbWV0ZXIx
Il07CiAKICAgICBpZiAobG9hZERvbmUpCiAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0Zvcndh
cmQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNr
Rm9yd2FyZC5tbQppbmRleCA2N2JhZWViYTZkYzZmOTZmZjFmMjdhMzUzYzczMzU2OTYxNjdmYmQ3
Li4yOGIxODMxNjU5MDMwY2E0ZjhlMjcyNTI5Yjc1OTA1Y2ZkMzhjNmVkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNr
Rm9yd2FyZC5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdl
Q29uZmlndXJhdGlvbkNyZWF0ZSgpKTsgICAgICAgIAogICAgICAgICBXS1BhZ2VDb25maWd1cmF0
aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0LmdldCgpKTsKIAotICAg
ICAgICB3ZWJWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9uLmdldCgpXTsKKyAg
ICAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxvYWRlckNsaWVudDsK
ICAgICAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CmluZGV4IGIxYWYxNWFjYjQzYjZkYmFkN2Y3NWRiYjkwNGI5NzA2NmEzNjIxNjkuLjQ0YWI4NGJm
Yjk3Y2Y5ODNkNTc4ZDMzOGExODE1YWYyNDhiMTZkZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzYwLDcgKzM2MCw4IEBA
IFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGlyZWN0RG93bmxv
YWRXaXRoTG9hZGVkQ29udGVudCkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAg
ICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkxOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbW1t3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpb
W0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRPcmlnaW5hbFVSTDpzb3VyY2VVUkxdXTsKKyAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhFeHBlY3RlZE9yaWdpbmFsVVJMOnNvdXJjZVVSTF0pOworICAgIFtbW3dlYlZpZXcgY29uZmln
dXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdh
dGUuZ2V0KCldOwogCiAgICAgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAg
ICBOU1VSTCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA0YjM2NWU4
YmI5MzdlZWQxNWU0YWZiY2I1NjRmYmM4Yjc3OGU1NGU4Li5mMGI4YWQ5OTg2ZWY3MTEwOGJjODZi
OTc4NTc2ZWU1NThkNDNkNmNmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMTIzLDEx
ICsxMTIzLDExIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSW5qZWN0U2NyaXB0SW5Ob25B
cHBCb3VuZFN1YmZyYW1lQXBwQm91bmRNYWluZnJhbWVGYWlsCiAgICAgY2xlYW5VcEluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIAotc3RhdGljIE5TTXV0YWJsZVNldDxXS0Zy
YW1lSW5mbyAqPiAqYWxsRnJhbWVzOworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVTZXQ8V0tG
cmFtZUluZm8gKj4+IGFsbEZyYW1lczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZh
U2NyaXB0SW5Ob25BcHBCb3VuZEZyYW1lRmFpbHMpCiB7Ci0gICAgYWxsRnJhbWVzID0gW1tOU011
dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOworICAgIGFsbEZyYW1lcyA9IGFk
b3B0TlMoW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdKTsKIAogICAg
IGlzRG9uZSA9IGZhbHNlOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNl
dHRpbmdzKCk7CkBAIC0xMTY0LDEyICsxMTY0LDEyIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgSmF2YVNjcmlwdEluTm9uQXBwQm91bmRGcmFtZUZhaWxzKQogCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKIAotICAgIEVYUEVDVF9FUShhbGxG
cmFtZXMuY291bnQsIDN1KTsKKyAgICBFWFBFQ1RfRVEoW2FsbEZyYW1lcyBjb3VudF0sIDN1KTsK
IAogICAgIHN0YXRpYyBzaXplX3QgZmluaXNoZWRGcmFtZXMgPSAwOwogICAgIHN0YXRpYyBib29s
IGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJh
bWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7
CiAgICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZS5pc01haW5GcmFtZTsKICAgICAgICAg
W3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlvbi5ocmVmOyIgYXJn
dW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRl
ZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJhbWVdIChpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBpZiAoaXNNYWluRnJhbWUpIHsKQEAg
LTExODEsNyArMTE4MSw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSmF2YVNjcmlwdElu
Tm9uQXBwQm91bmRGcmFtZUZhaWxzKQogICAgICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9tYWluKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxsRnJhbWVzLmNvdW50ICogMikK
KyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdICog
MikKICAgICAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9XTsKIApAQCAtMTE5
Niw3ICsxMTk2LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZhU2NyaXB0SW5Ob25B
cHBCb3VuZEZyYW1lRmFpbHMpCiAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IFdLRXJyb3JKYXZhU2NyaXB0QXBwQm91bmREb21haW4pOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAg
ICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQog
ICAgICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH0KQEAgLTEz
NTEsNyArMTM1MSw3IEBAIHN0YXRpYyB2b2lkIGxvYWRSZXF1ZXN0KFJldGFpblB0cjxUZXN0V0tX
ZWJWaWV3PiB3ZWJWaWV3LCBOU1N0cmluZyAqdXJsKQogCiBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogewotICAgIGFs
bEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XTsKKyAg
ICBhbGxGcmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9j
XSBpbml0XSk7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3Mo
KTsKIAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05h
bWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGlu
ZzpZRVNdOwpAQCAtMTM2MywxMiArMTM2MywxMiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogICAgIE5TU3RyaW5n
ICp1cmwgPSBAImluLWFwcC1icm93c2VyOi8vYXBwbGUuY29tL2luLWFwcC1icm93c2VyLXByaXZh
Y3ktdGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSI7CiAgICAgbG9hZFJlcXVlc3Qod2ViVmlldywg
dXJsKTsKICAgICAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQ
RUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpbmlz
aGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZv
ciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUlu
Zm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZyYW1l
ID0gZnJhbWUuaXNNYWluRnJhbWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3Jp
cHQ6QCJyZXR1cm4gbG9jYXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBp
bkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlv
bkhhbmRsZXI6W2lzTWFpbkZyYW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKTsKQEAgLTEzODAsNyArMTM4MCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJv
dXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lQXBwQm91bmQpCiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJh
Ym91dDpibGFuayJdKTsKIAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxs
RnJhbWVzLmNvdW50KQorICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZy
YW1lcyBjb3VudF0pCiAgICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07
CiAgICAgfQpAQCAtMTM4OSw3ICsxMzg5LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBB
Ym91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVBcHBCb3VuZCkKIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3Vu
ZCkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxv
Y10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1l
SW5mbyAqPiBhbGxvY10gaW5pdF0pOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CiAKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKQEAgLTE0MDAsMTUgKzE0MDAsMTUgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3Vu
ZCkKICAgICBOU1N0cmluZyAqdXJsID0gQCJpbi1hcHAtYnJvd3NlcjovL2FwcGxlLmNvbS9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtYWJvdXQtYmxhbmstc3ViZnJhbWUiOwogICAgIGxvYWRS
ZXF1ZXN0KHdlYlZpZXcsIHVybCk7CiAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAy
dSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMg
c2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxz
ZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZv
ciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBbd2Vi
VmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1bWVu
dHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVs
dENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVy
cm9yKSB7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKLSAgICAgICAgICAgIGlm
ICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCkKKyAgICAgICAgICAgIGlmICgr
K2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdKQogICAgICAgICAgICAgICAgIGlz
RG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9sc1Rl
c3RzLm1tCmluZGV4IGY3YjgxZjBhYmQ1ZWY1M2E3NTc2YTAzZDg3NTczY2FmNTQ3YTViZDEuLjZk
ZjIwN2IyZjIwNzljMDBhZTBmMmEyZjJjMWE4ODhlZmZmODkwNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5n
Q29udHJvbHNUZXN0cy5tbQpAQCAtOTIsOSArOTIsOSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAjaWYgUExBVEZPUk0oTUFDKQogVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93
UGxheWluZ0NvbnRyb2xzRG9Ob3RTaG93Rm9yRm9yZWdyb3VuZFBhZ2UpCiB7Ci0gICAgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNl
ckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1lZGlhVHlw
ZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5v
bmVdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgd2FpdEZv
ck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAKQEAgLTExMyw5ICsxMTMsOSBAQCBURVNUKE5vd1BsYXlp
bmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNEb05vdFNob3dGb3JGb3JlZ3JvdW5k
UGFnZSkKIAogVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xz
U2hvd0ZvckJhY2tncm91bmRQYWdlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9
IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlv
bkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVz
dC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJd
OwogCkBAIC0xMzAsOSArMTMwLDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93
UGxheWluZ0NvbnRyb2xzU2hvd0ZvckJhY2tncm91bmRQYWdlKQogCiBURVNUKE5vd1BsYXlpbmdD
b250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNIaWRlQWZ0ZXJTaG93aW5nS2VlcHNTZXNz
aW9uQWN0aXZlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24g
PSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5n
VGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
OldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWlu
ZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0xNTMs
OSArMTUzLDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRy
b2xzSGlkZUFmdGVyU2hvd2luZ0tlZXBzU2Vzc2lvbkFjdGkKIAogVEVTVChOb3dQbGF5aW5nQ29u
dHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2xlYXJJbmZvQWZ0ZXJTZXNzaW9uSXNOb0xv
bmdlclZhbGlkKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24g
PSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5n
VGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMy
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
OldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgNDgwLCAzMjApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWlu
ZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0xOTQs
OSArMTk0LDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRy
b2xzQ2xlYXJJbmZvQWZ0ZXJTZXNzaW9uSXNOb0xvbmdlclYKIAogVEVTVChOb3dQbGF5aW5nQ29u
dHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2hlY2tSZWdpc3RlcmVkKQogewotICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5
cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHNldFdpbmRvd1Zpc2libGU6
Tk9dOwpAQCAtMjIyLDkgKzIyMiw5IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5v
d1BsYXlpbmdDb250cm9sc0NoZWNrUmVnaXN0ZXJlZCkKIC8vIEZJWE1FOiBSZS1lbmFibGUgdGhp
cyB0ZXN0IG9uY2UgPHdlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIHJlc29sdmVkLgogVEVTVChOb3dQ
bGF5aW5nQ29udHJvbHNUZXN0cywgRElTQUJMRURfTm93UGxheWluZ0NvbnRyb2xzSU9TKQogewot
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1Jl
cXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25l
OwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMyMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxN
ZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rl
c3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAzMjAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJW
aWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbQppbmRl
eCAwM2UwZTcwZWQzN2Y5Nzg4OTAyZmU2ZGE5MDVlNGIwY2FhOTZmMDM3Li44YWVmNjI4ZmM2MzQw
NGViOWVlYzY1Nzk5YzhlZTQwNmZlNjg3NGZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KQEAgLTE1
Miw4ICsxNTIsOCBAQCBURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJbWFnZUZpbGVBbmRSVEYpCiB7
CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CiAgICAgYXV0byB0ZXh0ID0gYWRv
cHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKLSAgICBbdGV4
dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpAImxpbmsgdG8gIl1dOwotICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJp
bmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiYXBwbGUiIGF0
dHJpYnV0ZXM6QHsgTlNMaW5rQXR0cmlidXRlTmFtZTogW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3d3dy5hcHBsZS5jb20vIl0gfV1dOworICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRT
dHJpbmc6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCJsaW5rIHRvICJdKS5nZXQoKV07CisgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzph
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImFwcGxl
IiBhdHRyaWJ1dGVzOkB7IE5TTGlua0F0dHJpYnV0ZU5hbWU6IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyJdIH1dKS5nZXQoKV07CiAgICAgTlNEYXRhICpydGZE
YXRhID0gW3RleHQgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0IGxlbmd0aF0pIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XTsKICAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2Fy
ZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgpIF0sIE5TUGFzdGVib2FyZFR5
cGVSVEYsIHJ0ZkRhdGEsIG5pbCk7CiAgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3
VGltZW91dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJl
bnRXZWJWaWV3VGltZW91dC5tbQppbmRleCBjNTU0MjVjMDAyMGQ4N2YwNzFjMGQyNTBjODAzYTFm
OTM3ZGQ4MTU1Li5hMmU0MzAyMjRlOWNjZWY5YmFkZWRmZGU3NzRkYWQ4ODFjMTM3NjlmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2Vi
Vmlld1RpbWVvdXQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tCkBAIC0zNCw3ICszNCw3IEBACiAKIFRFU1QoV2Vi
S2l0LCBSZXBhcmVudFdlYlZpZXdUaW1lb3V0KQogewotICAgIFJldGFpblB0cjxfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldElnbm9yZVN5bmNocm9u
b3VzTWVzc2FnaW5nVGltZW91dHNGb3JUZXN0aW5nOllFU107CiAKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TY2hlbWVSZWdpc3RyeS5tbQppbmRleCAyYzhhODQxNWFj
ZjhlNTk2YjMwOGE1YzRjNzU3MGQ3MTMxOTJiZmFmLi4yMTA4MjA2ZmE3OTQzZDMyYzU4MGNlMjlj
YzZmYjgyZGFiMTE4NzhhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVnaXN0cnkubW0KQEAgLTE2OSw3ICsxNjksOCBAQCBURVNU
KFdlYktpdCwgV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0X1NhbWVPcmlnaW5MbwogICAgICAgICBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSyhlY2hv
U2NoZW1lLlVURjhTdHJpbmcpLmdldCgpKTsKIAogICAgICAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
VmlldyB7IGNvbnRleHQuZ2V0KCkgfTsKLSAgICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbV0tDb250ZXh0UmVnaXN0
ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0XTsKKyAgICAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tDb250ZXh0
UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAg
ICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9h
ZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48Ym9keT48c2NyaXB0IHNyYz0nZWNobzovL0Ev
QV8xJz48L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJlY2hvOi8vQSJd
XTsKICAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKICAgICAgICAgZGlkRmluaXNo
TG9hZCA9IGZhbHNlOwpAQCAtMTkyLDcgKzE5Myw4IEBAIFRFU1QoV2ViS2l0LCBXS0NvbnRleHRS
ZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RfQ3Jvc3NPcmlnaW5M
CiAgICAgICAgIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdChjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKGVjaG9TY2hlbWUuVVRGOFN0cmluZyku
Z2V0KCkpOwogCiAgICAgICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3IHsgY29udGV4dC5nZXQo
KSB9OwotICAgICAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlz
cGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBh
dXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxv
YWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcucGxhdGZv
cm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjwhRE9D
VFlQRSBodG1sPjxib2R5PjxzY3JpcHQgc3JjPSdlY2hvOi8vQS9BXzEnPjwvc2NyaXB0PiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImVjaG86Ly9CIl1dOwogICAgICAgICBVdGlsOjpy
dW4oJmRpZEZpbmlzaExvYWQpOwogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZp
ZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZp
ZXcubW0KaW5kZXggOGJjNjUzY2E5MDY1YjI3ZGRiYzJhY2ZmNmQ4NmJkMmM5NzdhMjU3Yy4uYmQ0
YjM1ZjIwMDAwMTEwZThiNWUwNDZkYzA3YjMwYmQzODA2ODllYyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TeXN0ZW1QcmV2aWV3Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbQpAQCAt
NjgsNyArNjgsNyBAQCBURVNUKFdlYktpdCwgU3lzdGVtUHJldmlld1RyaWdnZXJlZCkKICAgICBh
dXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RTeXN0ZW1QcmV2aWV3VHJpZ2dlcmVk
SGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJ0ZXN0U3lzdGVtUHJldmlldyJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInN5c3Rl
bS1wcmV2aWV3LXRyaWdnZXIiXTsKICAgICBVdGlsOjpydW4oJmhhc1RyaWdnZXJJbmZvKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09B
dXRob3JpemF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
ZXN0U09BdXRob3JpemF0aW9uLm1tCmluZGV4IDg2ZGQxMWUxNjdlYWMzYTFkMTcxZGIyYjZlYzBm
MDJlZGMzMGViOWQuLjMzMjZkNTc2MjRiZGEwMGE4ODBhZTFjZjEwMjVlZmYzMGNlM2Q4ZDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0
aG9yaXphdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KQEAgLTE4NCw3ICsxODQsNyBAQCAtIChXS1dlYlZpZXcg
Kil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJh
dGlvbjooV0tXZQogewogICAgIEVYUEVDVF9GQUxTRShuZXdXaW5kb3dDcmVhdGVkKTsKICAgICBu
ZXdXaW5kb3dDcmVhdGVkID0gdHJ1ZTsKLSAgICBnTmV3V2luZG93ID0gW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
OworICAgIGdOZXdXaW5kb3cgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW2dOZXdX
aW5kb3cgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOnNlbGZdOwogICAgIHJldHVybiBnTmV3V2luZG93
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0aW9uQWN0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0
aW9uQWN0aW9uLm1tCmluZGV4IGM4NmZjNGNiMzYzYjM1MTlkY2U4ZGQxOTJkYzAxODhjZWZhYTMx
ZjAuLmI5ZTMxMDhlYjczN2U3Njk2ZGI4ZmJmYTNlYWNmMjM5ZTc0MWIwZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckluaXRpYXRlZEFjdGlv
bkluTmF2aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1VzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTgx
LDkgKzgxLDkgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKlVSTFdpdGhGcmFnbWVudChOU1N0cmlu
ZyAqZnJhZ21lbnQpCiAgICAgewotICAgICAgICBOU1VSTENvbXBvbmVudHMgKlVSTENvbXBvbmVu
dHMgPSBbW05TVVJMQ29tcG9uZW50cyBhbGxvY10gaW5pdFdpdGhVUkw6VVJMLmdldCgpIHJlc29s
dmluZ0FnYWluc3RCYXNlVVJMOk5PXTsKLSAgICAgICAgVVJMQ29tcG9uZW50cy5mcmFnbWVudCA9
IGZyYWdtZW50OwotICAgICAgICByZXR1cm4gVVJMQ29tcG9uZW50cy5VUkw7CisgICAgICAgIGF1
dG8gdXJsQ29tcG9uZW50cyA9IGFkb3B0TlMoW1tOU1VSTENvbXBvbmVudHMgYWxsb2NdIGluaXRX
aXRoVVJMOlVSTC5nZXQoKSByZXNvbHZpbmdBZ2FpbnN0QmFzZVVSTDpOT10pOworICAgICAgICBb
dXJsQ29tcG9uZW50cyBzZXRGcmFnbWVudDpmcmFnbWVudF07CisgICAgICAgIHJldHVybiBbdXJs
Q29tcG9uZW50cyBVUkxdOwogICAgIH0KIAogICAgIHZvaWQgbG9hZFRlc3QoTlNTdHJpbmcgKnRl
c3QpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJNZWRpYURpc2FibGVkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Vc2VyTWVkaWFEaXNhYmxlZC5tbQppbmRleCBjYzU0NWI0OTFlMDI4OTRhNzYzZjViOTI4MWEw
ZDdlODYwNGQ3YWJkLi41MWUzNGEyZTY1NDRlNzZmZTZlMTAzMWE2ZjJlOWI5OTQ1NGM0MTY5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRp
YURpc2FibGVkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VXNlck1lZGlhRGlzYWJsZWQubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCBURVNUX0YoTWVkaWFDYXB0
dXJlRGlzYWJsZWRUZXN0LCBVbnNlY3VyZUNvbnRleHQpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlh
Q2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IFlFUzsKIAogICAgIHJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIFttX3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aHRt
bD48Ym9keT48c2NyaXB0PndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKE5hdmlnYXRvci5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ21lZGlhRGV2
aWNlcycpID8gJ2hhcycgOiAnbm9uZScpOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiBiYXNlVVJM
OiBbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImh0dHA6Ly90ZXN0Lm9yZyJdXTsKKyAg
ICBbbV93ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+PHNjcmlwdD53aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShOYXZpZ2F0b3Iu
cHJvdG90eXBlLmhhc093blByb3BlcnR5KCdtZWRpYURldmljZXMnKSA/ICdoYXMnIDogJ25vbmUn
KTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIgYmFzZVVSTDphZG9wdE5TKFtbTlNVUkwgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOkAiaHR0cDovL3Rlc3Qub3JnIl0pLmdldCgpXTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICBFWFBFQ1Rf
U1RSRVEoWyhOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSBVVEY4U3RyaW5nXSwg
Im5vbmUiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDg3YTg1MDQzMmQ0YmZkNWYwZTU4NTZm
NDQwN2ZkMDFlYTI3YmVkNDMuLmQ0OTgwY2ZkNDcwMmViM2IzMmExODNkNTllMmM5MDM0MmYyZTNi
MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMjU3LDE3ICsyNTcsMTcgQEAgVEVTVChXS0hU
VFBDb29raWVTdG9yZSwgSHR0cE9ubHkpCiAgICAgZ290RmxhZyA9IGZhbHNlOwogICAgIEFTU0VS
VF9FUShbY29va2llcyBjb3VudF0sIDB1KTsKIAotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmNv
b2tpZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAg
IGF1dG8gY29va2llUHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XSk7CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llTmFt
ZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9i
amVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwogICAgIFtjb29r
aWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5Ok5TSFRUUENv
b2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiL3BhdGgiIGZv
cktleTpOU0hUVFBDb29raWVQYXRoXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6
QFlFUyBmb3JLZXk6QCJIdHRwT25seSJdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGh0
dHBPbmx5Q29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQ
cm9wZXJ0aWVzXTsKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBodHRwT25seUNvb2tpZSA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQo
KV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llVmFsdWUyIiBmb3JL
ZXk6TlNIVFRQQ29va2llVmFsdWVdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGh0dHBP
bmx5Q29va2llMiA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJv
cGVydGllc107CisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gaHR0cE9ubHlDb29raWUyID0g
W05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzLmdldCgp
XTsKICAgICBbY29va2llUHJvcGVydGllcyByZW1vdmVPYmplY3RGb3JLZXk6QCJIdHRwT25seSJd
OwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IG5vdEh0dHBPbmx5Q29va2llID0gW05TSFRU
UENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzXTsKKyAgICBSZXRh
aW5QdHI8TlNIVFRQQ29va2llPiBub3RIdHRwT25seUNvb2tpZSA9IFtOU0hUVFBDb29raWUgY29v
a2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQoKV07CiAKICAgICBFWFBFQ1Rf
VFJVRShodHRwT25seUNvb2tpZS5nZXQoKS5IVFRQT25seSk7CiAgICAgRVhQRUNUX0ZBTFNFKG5v
dEh0dHBPbmx5Q29va2llLmdldCgpLkhUVFBPbmx5KTsKQEAgLTM2MiwxNCArMzYyLDE0IEBAIFRF
U1QoV0tIVFRQQ29va2llU3RvcmUsIENyZWF0aW9uVGltZSkKIAogICAgIGdsb2JhbENvb2tpZVN0
b3JlID0gZGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZTsKIAotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKmNvb2tpZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
OworICAgIGF1dG8gY29va2llUHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29v
a2llTmFtZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwogICAgIFtjb29raWVQcm9wZXJ0aWVz
IHNldE9iamVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwogICAg
IFtjb29raWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5Ok5T
SFRUUENvb2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiL3Bh
dGgiIGZvcktleTpOU0hUVFBDb29raWVQYXRoXTsKICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGNy
ZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6
Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpAIkNyZWF0ZWQiXTsKLSAgICBSZXRhaW5QdHI8TlNI
VFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOmNv
b2tpZVByb3BlcnRpZXNdOworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGNvb2tpZSA9IFtO
U0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQoKV07
CiAKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOmNvb2tpZS5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpbXSgpIHsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVs
ZWdhdGUubW0KaW5kZXggNWEwNDY0MmVmYTQyMjRjM2IyMTdmMGEyMTI0ODFlMGY0ZTAwN2NkOC4u
OWRlYTYzY2Q4NmE3YjdmMTJkOTA4NTliZjQwMmMyMTFiZDIyNDljZSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbQpAQCAtMTI0LDcgKzEyNCw3IEBAIC0gKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9jCiAg
ICAgc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUgPSBbSW5zcGVjdG9yRGVsZWdhdGUgbmV3XTsKICAg
ICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJlZEluc3BlY3RvckRlbGVnYXRlLmdldCgpXTsK
IAotICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBbW1NpbXBsZVVSTFNjaGVtZUhhbmRsZXIg
YWxsb2NdIGluaXRdOworICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbU2lt
cGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gaW5zcGVjdG9yQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpz
aGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3RpbmciXTsKICAg
ICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQppbmRleCBl
NzJlNjBmNzQzYjFiM2RjNGQzY2YyZGExY2QxNWJmMDUxMDgyZmI4Li5lMjMwYjA5NGNhNTk2MTc0
ZTYzMDVmN2U4N2E1N2I0YjJiYmNmYzg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQpAQCAtNDE0LDE0ICs0MTQsMTQgQEAgQGVu
ZAogCiBURVNUKFBERiwgUHJpbnRTaXplKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHNjaGVt
ZUhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlciBmb3JVUkxT
Y2hlbWU6QCJ0ZXN0Il07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tQcmlu
dFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0KLSAgICBzY2hlbWVIYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIg
PSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAg
IGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10p
OworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1ByaW50VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIHNjaGVtZUhhbmRsZXIuZ2V0KCkuc3Rh
cnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFz
az4gdGFzaykgewogICAgICAgICBhdXRvIHVybCA9IHRhc2sucmVxdWVzdC5VUkw7CiAgICAgICAg
IE5TRGF0YSAqZGF0YTsKICAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlOwpAQCAtNDM3LDggKzQz
Nyw4IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgICAgICAgICBtaW1lVHlwZSA9IEAiYXBw
bGljYXRpb24vcGRmIjsKICAgICAgICAgICAgIGRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdF9wcmlu
dCIgd2l0aEV4dGVuc2lvbjpAInBkZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV07CiAgICAgICAgIH0KLSAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBb
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmwgTUlNRVR5cGU6bWltZVR5cGUg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBh
dXRvcmVsZWFzZV07Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07
CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOm1pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpk
YXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRSZWNl
aXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0
YTpkYXRhXTsKICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICB9OwpAQCAtNDQ5LDcgKzQ0
OSw3IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgRVhQRUNUX0VRKHNpemUud2lkdGgsIDYx
Mi4wKTsKIAogICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFNpemUgPSBmYWxzZTsKLSAgICBbd2Vi
VmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6d2ViVmlldy5fbWFpbkZyYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOl4oQ0dTaXplIHJlcXVlc3RlZFNpemUpIHsKKyAgICBbd2ViVmlldyBfZ2V0
UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6W3dlYlZpZXcgX21haW5GcmFtZV0gY29tcGxldGlvbkhh
bmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgewogICAgICAgICBFWFBFQ1RfRVEocmVxdWVz
dGVkU2l6ZS5oZWlnaHQsIDc5Mi4wKTsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNpemUu
d2lkdGgsIDYxMi4wKTsKICAgICAgICAgcmVjZWl2ZWRTaXplID0gdHJ1ZTsKQEAgLTQ2NCw3ICs0
NjQsNyBAQCBURVNUKFBERiwgUHJpbnRTaXplKQogICAgIEVYUEVDVF9FUShtYWluRnJhbWVTaXpl
LndpZHRoLCAwLjApOwogICAgIAogICAgIHJlY2VpdmVkU2l6ZSA9IGZhbHNlOwotICAgIFt3ZWJW
aWV3IF9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFtZTp3ZWJWaWV3Ll9tYWluRnJhbWUgY29tcGxl
dGlvbkhhbmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgeworICAgIFt3ZWJWaWV3IF9nZXRQ
REZGaXJzdFBhZ2VTaXplSW5GcmFtZTpbd2ViVmlldyBfbWFpbkZyYW1lXSBjb21wbGV0aW9uSGFu
ZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CiAgICAgICAgIEVYUEVDVF9FUShyZXF1ZXN0
ZWRTaXplLmhlaWdodCwgMC4wKTsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNpemUud2lk
dGgsIDAuMCk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRydWU7CkBAIC00NzcsNyArNDc3LDcg
QEAgVEVTVChQREYsIFByaW50U2l6ZSkKICAgICBFWFBFQ1RfTkVBUihwZGZGcmFtZVNpemUud2lk
dGgsIDEyOS42MDAwMDYsIC4wMDAwMSk7CiAKICAgICByZWNlaXZlZFNpemUgPSBmYWxzZTsKLSAg
ICBbd2ViVmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6ZGVsZWdhdGUubGFzdFByaW50
ZWRGcmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CisgICAg
W3dlYlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOltkZWxlZ2F0ZSBsYXN0UHJpbnRl
ZEZyYW1lXSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CiAgICAg
ICAgIEVYUEVDVF9ORUFSKHJlcXVlc3RlZFNpemUuaGVpZ2h0LCAyOC43OTk5OTksIC4wMDAwMSk7
CiAgICAgICAgIEVYUEVDVF9ORUFSKHJlcXVlc3RlZFNpemUud2lkdGgsIDEyOS42MDAwMDYsIC4w
MDAwMSk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDYW5kaWRh
dGVUZXN0cy5tbQppbmRleCAwZTdhZTk2ZTFiNmExMzc4YTBlY2YyNzZmZDNkODZjZDFkY2JiYzc3
Li43N2QyNGZhMDVmMzBmMTQzYzkxNDAzOTNkMzJlOGMyNzgyMDEzNWQ5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRl
c3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW0KQEAgLTEyNSw5ICsxMjUsOSBAQCAtICh2b2lkKXR5cGVTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIGlucHV0TWVzc2FnZTooTlNTdHJpbmcgKilpbnB1dE1lc3Nh
Z2UKICAgICB9CiB9CiAKLSsgKGluc3RhbmNldHlwZSlzZXRVcFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIHRlc3RQYWdlOihOU1N0cmluZyAqKXRlc3RQYWdlTmFtZQorKyAoUmV0YWluUHRyPENhbmRp
ZGF0ZVRlc3RXZWJWaWV3PilzZXRVcFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHRlc3RQYWdlOihO
U1N0cmluZyAqKXRlc3RQYWdlTmFtZQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dl
YlZpZXcgPSBbW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1l
XTsKKyAgICBhdXRvIHdrV2ViVmlldyA9IGFkb3B0TlMoW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0pOwogCiAgICAgW3drV2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDp0ZXN0UGFnZU5hbWVdOwogICAgIFt3a1dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJm
b2N1c2VkIl07CkBAIC0xNDEsNyArMTQxLDcgQEAgQGVuZAogCiBURVNUKFdLV2ViVmlld0NhbmRp
ZGF0ZVRlc3RzLCBTb2Z0U3BhY2VSZXBsYWNlbWVudEFmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0
aG91dFJlcGxhY2VtZW50KQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dlYlZpZXcg
PSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Il07
CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1z
Y3JvbGxhYmxlLWRvY3VtZW50Il07CiAKICAgICBbd2tXZWJWaWV3IGluc2VydENhbmRpZGF0ZXNB
bmRXYWl0Rm9yUmVzcG9uc2U6QCJhcHBsZSAiIHJhbmdlOk5TTWFrZVJhbmdlKDAsIDApXTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxlICIsIFt3a1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpHZXRJbnB1dFZhbHVlSlNFeHByZXNzaW9uXSk7CkBAIC0xNTYsNyArMTU2LDcg
QEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU29mdFNwYWNlUmVwbGFjZW1lbnRBZnRl
ckNhbmRpZGF0ZUluc2VydGlvbldpdGhvdXQKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0
cywgSW5zZXJ0Q2hhcmFjdGVyc0FmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0aFNvZnRTcGFjZSkK
IHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RX
ZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdl
OkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJW
aWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVu
dCJdOwogCiAgICAgW3drV2ViVmlldyBpbnNlcnRDYW5kaWRhdGVzQW5kV2FpdEZvclJlc3BvbnNl
OkAiZm9vICIgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMCldOwogICAgIEVYUEVDVF9XS19TVFJFUSgi
Zm9vICIsIFt3a1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpHZXRJbnB1dFZh
bHVlSlNFeHByZXNzaW9uXSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgVEVTVChXS1dlYlZpZXdDYW5k
aWRhdGVUZXN0cywgSW5zZXJ0Q2hhcmFjdGVyc0FmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0aFNv
ZnRTcGEKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgSW5zZXJ0Q2FuZGlkYXRlRnJv
bVBhcnRpYWxseVR5cGVkUGhyYXNlV2l0aFNvZnRTcGFjZSkKIHsKLSAgICBDYW5kaWRhdGVUZXN0
V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Ny
b2xsYWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RX
ZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdl
OkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogCiAgICAgW3drV2ViVmll
dyB0eXBlU3RyaW5nOkAiaGVsIiBpbnB1dE1lc3NhZ2U6QCJpbnB1dCJdOwogICAgIFt3a1dlYlZp
ZXcgaW5zZXJ0Q2FuZGlkYXRlc0FuZFdhaXRGb3JSZXNwb25zZTpAImhlbGxvICIgcmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgMyldOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlk
YXRlVGVzdHMsIEluc2VydENhbmRpZGF0ZUZyb21QYXJ0aWFsbHlUeXBlZFBocmFzZVdpdGhTb2Z0
U3BhCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIENsaWNraW5nSW5UZXh0RmllbGRE
b2VzTm90VGhyYXNoQ2FuZGlkYXRlVmlzaWJpbGl0eSkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2Vi
VmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAibGFyZ2UtaW5wdXQtZmllbGQtZm9j
dXMtb25sb2FkIl07CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcg
c2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJsYXJn
ZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQiXTsKIAogICAgIFt3a1dlYlZpZXcgdHlwZVN0cmlu
ZzpAInRlc3QiIGlucHV0TWVzc2FnZTpAImlucHV0Il07CiAgICAgW3drV2ViVmlldyBleHBlY3RD
YW5kaWRhdGVMaXN0VmlzaWJpbGl0eVVwZGF0ZXM6MCB3aGVuUGVyZm9ybWluZ0FjdGlvbnM6Xigp
CkBAIC0yMDMsNyArMjAzLDcgQEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgQ2xpY2tp
bmdJblRleHRGaWVsZERvZXNOb3RUaHJhc2hDYW5kaWRhdGVWaXNpYmlsaXQKIAogVEVTVChXS1dl
YlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkTm90UmVxdWVzdENhbmRpZGF0ZXNJblBhc3N3b3Jk
RmllbGQpCiB7Ci0gICAgQ2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtbQ2FuZGlk
YXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCldOworICAgIGF1dG8gd2tXZWJWaWV3ID0gYWRvcHROUyhbW0NhbmRpZGF0ZVRlc3RXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAg
ICAgW3drV2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHQtYW5kLXBhc3N3b3JkLWlucHV0
cyJdOwogICAgIFt3a1dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKICAgICBbd2tX
ZWJWaWV3IF9mb3JjZVJlcXVlc3RDYW5kaWRhdGVzXTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBURVNU
KFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBTaG91bGROb3RSZXF1ZXN0Q2FuZGlkYXRlc0luUGFz
c3dvcmRGaWVsZCkKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkUmVxdWVz
dENhbmRpZGF0ZXNJblRleHRGaWVsZCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmlldyAqd2tX
ZWJWaWV3ID0gW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV07CisgICAgYXV0byB3a1dlYlZpZXcgPSBhZG9wdE5TKFtb
Q2FuZGlkYXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKICAgICBbd2tXZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dC1h
bmQtcGFzc3dvcmQtaW5wdXRzIl07CiAgICAgW3drV2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImxv
YWRlZCJdOwogICAgIFt3a1dlYlZpZXcgX2ZvcmNlUmVxdWVzdENhbmRpZGF0ZXNdOwpAQCAtMjQ3
LDcgKzI0Nyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIFNob3VsZFJlcXVlc3RD
YW5kaWRhdGVzSW5UZXh0RmllbGQpCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIENh
bmRpZGF0ZVJlY3RGb3JFbXB0eVBhcmFncmFwaCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmll
dyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJs
ZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3
IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5w
dXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogICAgIE5TUmVjdCBjYW5kaWRhdGVS
ZWN0ID0gW3drV2ViVmlldyBfY2FuZGlkYXRlUmVjdF07CiAgICAgRVhQRUNUX05FKDAsIGNhbmRp
ZGF0ZVJlY3Qub3JpZ2luLnkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0RvZXNO
b3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbQppbmRleCA4ODcxNjkzNDYwN2Y0Y2FjY2QzOWMz
ZmIzNWQ0NGExODg2YTExZmJiLi4yNmNhNDU3YzRiNzZiNTEyZmZhZTRmYjQ5N2JiM2ZiYzViMTJh
MzA0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
V2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0
aWFsaXphdGlvbi5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8ZmNudGwuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogVEVTVChXS1dlYlZpZXcs
IEluaXRpYWxpemluZ1dlYlZpZXdXaXRoRXBoZW1lcmFsU3RvcmFnZURvZXNOb3RMb2cpCiB7CkBA
IC00MSwxMiArNDIsMTIgQEAgVEVTVChXS1dlYlZpZXcsIEluaXRpYWxpemluZ1dlYlZpZXdXaXRo
RXBoZW1lcmFsU3RvcmFnZURvZXNOb3RMb2cpCiAgICAgZHVwMihwWzFdLCBTVERFUlJfRklMRU5P
KTsKICAgICBjbG9zZShwWzFdKTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZp
Z3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIF9X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2wgPSBbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uXTsKLSAgICBjb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVd
OworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSkuZ2V0KCldOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vi
c2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CiAKLSAgICBbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgRklMRSAqc3RkZXJyRmlsZUhhbmRsZSA9IGZkb3BlbihwWzBdLCAiciIpOwogICAg
IGNoYXIgYnVmZmVyWzEwMjRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5t
bQppbmRleCAxMDMwNTE1N2U1MjMyZTFmNDk2MDMyYjVmOGUwMjdhZmZmNjA2NGVkLi41NmIxMjFi
YzlhODA0MjM3MjQ0YzRiOWE1YzIwNDk3OGQzN2M1OTE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2
YWx1YXRlSmF2YVNjcmlwdC5tbQpAQCAtNDczLDcgKzQ3Myw4IEBAIFRFU1QoV2ViS2l0LCBTUElK
YXZhc2NyaXB0TWFya3VwVnNBUElDb250ZW50SmF2YVNjcmlwdCkKIAogfQogCi1zdGF0aWMgTlNN
dXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+ICphbGxGcmFtZXM7CitzdGF0aWMgUmV0YWluUHRyPE5T
TXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPj4gYWxsRnJhbWVzOworCiBAaW50ZXJmYWNlIEZyYW1l
c01lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5k
CiAKQEAgLTQ5OSw3ICs1MDAsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnVzZXJTY3JpcHRTb3VyY2Ug
PSBAIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmZyYW1lc1Rlc3RlcgogLy8gYW5kIGNh
bGxBc3luY0phdmFTY3JpcHQgdG8gY29uZmlybSB0aGF0IGl0IGNhbiBleGVjdXRlIEpTIGRpcmVj
dGx5IGluIGVhY2ggb2YgdGhvc2UgZnJhbWVzLgogVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEph
dmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05T
TXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0g
YWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRnJhbWVzTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0
IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6V0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5P
IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZF0pOwogCkBA
IC01MjcsMTIgKzUyOCwxMiBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdElu
RnJhbWVzRnJvbVBvc3RNZXNzYWdlKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiZnJhbWVzdGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdXV07CiAKLSAgICBF
WFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMg
Y291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsKICAg
ICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8gKmZy
YW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZy
YW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJh
bWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gbG9jYXRp
b24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBpbkNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6W2lzTWFpbkZy
YW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgRVhQRUNUX05V
TEwoZXJyb3IpOwpAQCAtNTQzLDcgKzU0NCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBK
YXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3NhZ2UpCiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnBy
b3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pOwogCi0gICAgICAgICAgICBpZiAoKytmaW5pc2hl
ZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAgICAgICAgICAgaWYgKCsrZmluaXNo
ZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQogICAgICAgICAgICAgICAgIGlzRG9u
ZSA9IHRydWU7CiAgICAgICAgIH1dOwogCkBAIC01NTcsNyArNTU4LDcgQEAgVEVTVChFdmFsdWF0
ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0
cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAgICAg
IGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAgICAg
ICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAg
ICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtNTcyLDcgKzU3
Myw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9z
dE1lc3NhZ2UpCiAvLyBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdCB0byBjb25maXJtIHRoYXQgaXQg
Y2FuIGV4ZWN1dGUgSlMgZGlyZWN0bHkgaW4gZWFjaCBvZiB0aG9zZSBmcmFtZXMuCiBURVNUKEV2
YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0
ZSkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxv
Y10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1l
SW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rl
c3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRV
UkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4g
dGFzaykgewpAQCAtNjE1LDEyICs2MTYsMTIgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEph
dmFTY3JpcHRJbkZyYW1lc0Zyb21OYXZpZ2F0aW9uRGVsZWdhdGUpCiAKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwogCi0gICAgRVhQRUNUX0VRKGFs
bEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJhbWVzIGNvdW50XSwgMnUp
OwogCiAgICAgc3RhdGljIHNpemVfdCBmaW5pc2hlZEZyYW1lcyA9IDA7CiAgICAgc3RhdGljIGJv
b2wgaXNEb25lID0gZmFsc2U7CiAKLSAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxG
cmFtZXMpIHsKKyAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0KCkp
IHsKICAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lOwogICAgICAg
ICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBh
cmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQu
ZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5GcmFtZV0gKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
QEAgLTYzMSw3ICs2MzIsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdElu
RnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIm90aGVycHJvdG9j
b2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJh
bWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZy
YW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAgICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKICAgICAgICAgfV07CiAKQEAgLTY0NSw3ICs2NDYsNyBAQCBURVNUKEV2YWx1YXRlSmF2
YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxU
b1N0cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAg
ICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAg
ICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAg
ICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtNjU3LDcg
KzY1OCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9t
TmF2aWdhdGlvbkRlbGVnYXRlKQogLy8gZHVlIHRvIHJlbW92YWwgZnJvbSB0aGUgRE9NIHJlc3Vs
dHMgaW4gYW4gYXBwcm9wcmlhdGUgZXJyb3IKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZh
U2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJs
ZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAgYXV0
byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3
ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtNzAwLDcgKzcwMSw3IEBAIFRFU1Qo
RXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIAogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CiAKLSAgICBF
WFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMg
Y291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGhlRnJhbWUnKTsgZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZSk7IiBp
bkZyYW1lOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6W10gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKQEAg
LTcxMCw3ICs3MTEsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlz
c2luZ0ZyYW1lRXJyb3IpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwog
ICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxs
RnJhbWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgp
KSB7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC03MjgsNyArNzI5LDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3Jp
cHRJbk1pc3NpbmdGcmFtZUVycm9yKQogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgZXZhbHVh
dGluZyBKYXZhU2NyaXB0IGluIGEgZnJhbWUgZnJvbSB0aGUgcHJldmlvdXMgbWFpbiBuYXZpZ2F0
aW9uIHJlc3VsdHMgaW4gYW4gZXJyb3IKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2Ny
aXB0SW5NaXNzaW5nRnJhbWVBZnRlck5hdmlnYXRpb25FcnJvcikKIHsKLSAgICBhbGxGcmFtZXMg
PSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJh
bWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0p
OwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpb
Jl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtNzc3LDEwICs3
NzgsMTAgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbk1pc3NpbmdGcmFt
ZUFmdGVyTmF2aWdhdGlvbkVycm9yKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlk
RmluaXNoTmF2aWdhdGlvbik7CiAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOwogCi0g
ICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJh
bWVzIGNvdW50XSwgMnUpOwogCiAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBpZnJhbWU7Ci0g
ICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzKSB7CisgICAgZm9yIChXS0Zy
YW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS5p
c01haW5GcmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZnJhbWUgPSBmcmFt
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggMjgxYWMxYmEy
MjEwZGM2NWM2OGI1MGQ3OTdjOThlYTMxMjliMDRiYS4uZjYxNmE3NGI0MTdmNjFlOWFhM2RkMjVj
OGJlODZjOWUyYTJmZDI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgc2hvdWxkRQogICAgIFJldGFp
blB0cjxOU1VSTD4gZmlsZUlEQlBhdGggPSBbW2lkYlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAidjEiXSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJmaWxlX18wIl07CiAg
ICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOmZpbGVJREJQYXRoLmdldCgpLnBhdGhdKTsKIAotICAgIFJldGFpblB0cjxXS1dlYnNp
dGVEYXRhU3RvcmU+IGRhdGFTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXTsK
KyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBSZXRhaW5QdHI8TlNTZXQ+IHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIG5p
bF0pOwogCiAgICAgLy8gU3ViZnJhbWUgb2YgZGlmZmVyZW50IG9yaWdpbnMgbWF5IGFsc28gY3Jl
YXRlIEluZGV4ZWREQiBmaWxlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KaW5kZXggMDQxNzRjOTlkMGQ2YzM1
Zjg5MjI5YjM5MDNiMDA3YzBhNDcyODA4NC4uZjA0MzMyYTIwZjk5ZTFkYWUzMDcyNDZmNGQ2NmJl
NWFhYTJiMzZhYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAgLTE2NTcsNyArMTY1Nyw3IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxX
S1VSTFNjaGVtZVRhc2s+KXRhCiAgICAgTlNVUkwgKnVybCA9IHRhc2sucmVxdWVzdC5VUkw7CiAg
ICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tTdG9yYWdlIl0pIHsKICAg
ICAgICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+dmFyIG9sZFZhbHVlID0gd2luZG93LnNl
c3Npb25TdG9yYWdlWydzdG9yYWdlS2V5J107IHdpbmRvdy5zZXNzaW9uU3RvcmFnZVsnc3RvcmFn
ZUtleSddID0gJ3ZhbHVlJzsgYWxlcnQoJ29sZCB2YWx1ZTogPCcgKyAob2xkVmFsdWUgPyAnZmFp
bCcgOiAnJykgKyAnPicpOzwvc2NyaXB0PiI7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybCBNSU1FVHlwZTpAInRl
eHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0bWwubGVuZ3RoIHRleHRFbmNvZGluZ05h
bWU6bmlsXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOkAidGV4dC9odG1sIiBl
eHBlY3RlZENvbnRlbnRMZW5ndGg6aHRtbC5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5n
ZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltodG1sIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kv
bWFjL0Nsb3NpbmdXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRM
ZWdhY3kvbWFjL0Nsb3NpbmdXZWJWaWV3Lm1tCmluZGV4IDRiM2QzNWVhMzk2ZmIzOGU3MDJjNWVl
MDc4ODlkMmUyNGIyYzQyNTIuLjhkNWY5ZjczOWEyYmQ4ZmU4OWIwMDRiOGNhY2UwMThkYmU5N2Nl
ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L21h
Yy9DbG9zaW5nV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW0KQEAgLTc5LDcgKzc5LDggQEAgVEVTVChXZWJL
aXRMZWdhY3ksIENsb3NpbmdXZWJWaWV3VGhlblNlbmRpbmdJdEFLZXlEb3duRXZlbnQpCiAgICAg
VXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAogICAgIC8vIEZpcnN0LCBhZGQgYSBuYXRpdmUg
ZXZlbnQgbGlzdGVuZXIgdGhhdCBjbG9zZXMgdGhlIFdlYlZpZXcuCi0gICAgW1tbd2ViVmlldyBt
YWluRnJhbWVEb2N1bWVudF0gYm9keV0gYWRkRXZlbnRMaXN0ZW5lcjpAImtleXByZXNzIiBsaXN0
ZW5lcjpbW0tleWJvYXJkRXZlbnRMaXN0ZW5lciBhbGxvY10gaW5pdF0gdXNlQ2FwdHVyZTpOT107
CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tLZXlib2FyZEV2ZW50TGlzdGVuZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbW1t3ZWJWaWV3IG1haW5GcmFtZURvY3VtZW50XSBib2R5XSBhZGRF
dmVudExpc3RlbmVyOkAia2V5cHJlc3MiIGxpc3RlbmVyOmxpc3RlbmVyLmdldCgpIHVzZUNhcHR1
cmU6Tk9dOwogCiAgICAgLy8gU2Vjb25kLCBhZGQgYSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXIg
dGhhdCBjb25zdW1lcyB0aGUgZXZlbnQuCiAgICAgW1tbd2ViVmlldyBtYWluRnJhbWVdIGphdmFT
Y3JpcHRDb250ZXh0XSBldmFsdWF0ZVNjcmlwdDpAImFkZEtleVByZXNzSGFuZGxlcigpIl07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9tUHJv
dG9jb2xzSW52YWxpZFNjaGVtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCmluZGV4IDQyZTRjY2YwY2MzOWI3
YzRmMzhhYmUxNjJhYzcyYTM4OGYzYzhiZDcuLjliODcyZTM3NDE4NmNiYzAzMmRiZjFjMjkyNGM0
MjM5ZGZkZGMzODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCkBA
IC02MCw3ICs2MCw4IEBAIFRFU1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIExvYWRJbnZh
bGlkU2NoZW1lKQogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiQ3VzdG9tUHJvdG9j
b2xJbnZhbGlkU2NoZW1lVGVzdCIpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250
ZXh0LmdldCgpKTsKIAotICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW0xvYWRJbnZhbGlkU2NoZW1lRGVsZWdhdGUgYWxs
b2NdIGluaXRdOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0xvYWRJbnZhbGlk
U2NoZW1lRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygp
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdl
dCgpOwogICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0J3RwOi8vd3d3LndlYmtpdC5vcmciXV1dOwogICAgIAogICAgIFV0aWw6OnJ1
bigmdGVzdEZpbmlzaGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNp
emluZy5tbQppbmRleCAyOTZhYmIwYzJiMDgwM2U5MDY4ODg2NTJiYjcyYjk4NzVkOTZjYWYzLi5l
MTI2MThjYTdjODM5M2RhYjk1NDc0OGJiZDUwMjdiYjExOGJjMzI1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRv
UmVzaXppbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1By
ZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogCkBA
IC00NCw5ICs0NSwxMCBAQCBURVNUKFdlYktpdCwgUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVz
aXppbmdUZXN0KQogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQgPSBO
U01ha2VTaXplKDQwMCwgMzAwKTsKLSAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tU
b1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAgICAg
ICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgfV07CisgICAgfV0pOworICAgIHdlYlZpZXcu
cGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBs
b2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgW3dlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5IHN0eWxlPSdiYWNr
Z3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNV
aEVVZ0FBQUFvQUFBQUtDQVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNC
SmJXRm5aVkpsWVdSNWNjbGxQQUFBQUZaSlJFRlVlRjU5ejRFSkFERUlRMUYzNms3dTVFN1pLWGVV
UVBBQ0ozd0s3VU5va1Z4Vms5a0huUUg3Ylk5aGJEeURoTlhnanBSTHFGbG80TTJHZ2Z5SkhoanE4
VjRhZ2ZyZ1BRWDNKdEpRR2JvZm1DSGdBL25BS2tzK0pBakZBQUFBQUVsRlRrU3VRbUNDKTsnPjwv
Ym9keT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6Ymxhbmsi
XV07CiAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250ZW50VGVzdC5tbQppbmRleCAy
ZDBiMTczZmRhNTZkN2I4YTg1MGIzNzhjN2I4ZWM5MmM4ZjFlNGMzLi5hMjQyMjZlZjI0YWM1ZWZm
NGY2YjY2NTNmYzQwZGJkZWNhODllZDEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVudFRlc3QubW0KQEAgLTEyMCwxNyArMTIw
LDE3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5bGVTaGVldEJl
Zm9yZUNyZWF0aW5nVmlldykKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBbYnJvd3Np
bmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpu
aWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJp
bmdzOm5pbCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBb
W1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBw
cm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dz
aW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JR
dWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlw
dCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0g
W1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9S
dW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAgICAg
ICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xv
clF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNz
R3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29u
dGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KSk7
CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKFt3a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBl
cnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3JRdWVyeSk7CiAgICAgICAg
IH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAKLSAgICBbd2tW
aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBi
YXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9h
ZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMTM5LDE5ICsxMzksMTkgQEAg
VEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0ZXJDcmVh
dGluZ1ZpZXcpCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgCi0gICAgV0tWaWV3
ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4
dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBiYWNr
Z3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91
bmRDb2xvclNjcmlwdCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9h
ZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRl
cikgewotICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJh
Y2tncm91bmRDb2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRv
cHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3Vw
OmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3JR
dWVyeSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENv
bG9yU2NyaXB0KSk7CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dz
aW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4o
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5Lmdl
dCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
V0tFcnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmlu
ZyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZp
bmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3JRdWVy
eSk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5bGVTaGVl
dCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNo
UGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBbd2tWaWV3
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNl
VVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhU
TUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0xNjEsMTkgKzE2MSwxOSBAQCBURVNUX0Yo
V2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQogICAgIHRl
c3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5
bGVTaGVldDp1c2VyU3R5bGVTaGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3Ry
aW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVT
XTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAu
Z2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldOwot
ICAgIFdLU3RyaW5nUmVmIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KTsKLSAgICB3a1ZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZSh3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnksIF4oV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7Cisg
ICAgYXV0byB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkg
YnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBh
dXRvIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikg
eworICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgYmFj
a2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAgICAgICAgICBleHBl
Y3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgcmVkSW5SR0IpOwog
ICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShi
YWNrZ3JvdW5kQ29sb3JRdWVyeSk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAg
ICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWRE
ZWxlZ2F0ZS5nZXQoKTsKICAgICAKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgcmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzXTsKICAgICAKLSAgICBbd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CisgICAgW1t3a1Zp
ZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBi
YXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0Rmlu
aXNoZWQpOwogfQpAQCAtMTgzLDE3ICsxODMsMTcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVu
dFRlc3QsIEFkZFVzZXJTY3JpcHRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgdGVzdEZpbmlzaGVk
ID0gZmFsc2U7CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTY3JpcHQ6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyA9IHRydWU7IiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0
eV0gYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRj
aFBhdHRlcm5TdHJpbmdzOm5pbCBpbmplY3Rpb25UaW1lOmtXS0luamVjdEF0RG9jdW1lbnRTdGFy
dCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNz
R3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29u
dGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0VGVzdFByb3BlcnR5
U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQcm9w
ZXJ0eSk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRl
ID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2Nr
VG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAg
ICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIHVzZXJTY3JpcHRU
ZXN0UHJvcGVydHlTdHJpbmcsIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0byB3a1ZpZXcgPSBhZG9w
dE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6
YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBhdXRvIHVzZXJTY3JpcHRUZXN0UHJv
cGVydHlTdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVzZXJT
Y3JpcHRUZXN0UHJvcGVydHkpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5P
bkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgICAgICBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgdXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eVN0cmluZy5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNj
cmlwdFZhbHVlSXNCb29sZWFuKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdHJ1ZSk7CiAgICAgICAg
ICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgV0tSZWxlYXNlKHVzZXJTY3Jp
cHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsKLSAgICB9XTsKKyAgICB9XSk7Cisg
ICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2FkRGVsZWdhdGUgPSBsb2Fk
RGVsZWdhdGUuZ2V0KCk7CiAgICAgCi0gICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKICAg
ICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0y
MDIsMTkgKzIwMiwxOSBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclNj
cmlwdEFmdGVyQ3JlYXRpbmdWaWV3KQogewogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAg
IAotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBi
cm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tT
dHJpbmdSZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBl
cnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dy
b3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgp
XSk7CisgICAgYXV0byB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7CisgICAg
YXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3
a1ZpZXcgcGFnZVJlZl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVm
IGVycm9yKSB7CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzQm9vbGVhbihzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIHRydWUpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsK
LSAgICAgICAgICAgIFdLUmVsZWFzZSh1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nKTsKICAg
ICAgICAgfSk7Ci0gICAgfV07CisgICAgfV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlcl0ubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAogICAg
IFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJXMgPSB0cnVlOyIsIHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmls
IGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5n
czpuaWwgaW5qZWN0aW9uVGltZTprV0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25s
eTpZRVNdOwogICAgIAotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2Fk
SFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJdIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMjI0LDE5ICsy
MjQsMTkgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIFJlbW92ZUFsbFVzZXJTY3Jp
cHRzKQogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91
cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMgPSB0cnVlOyIs
IHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5T
dHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgaW5qZWN0aW9uVGltZTpr
V0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFdL
VmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0Nv
bnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tTdHJpbmdSZWYg
dXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRD
b250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmll
dy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewor
ICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgp
IGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAg
YXV0byB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7CisgICAgYXV0byBsb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFn
ZVJlZl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7
CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzVW5kZWZpbmVkKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAg
V0tSZWxlYXNlKHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsKLSAg
ICB9XTsKKyAgICB9XSk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5s
b2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCiAgICAgW2Jyb3dzaW5nQ29u
dGV4dEdyb3VwIHJlbW92ZUFsbFVzZXJTY3JpcHRzXTsKICAgICAKLSAgICBbd2tWaWV3LmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5p
bF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJp
bmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggNWU2NzM2MTEwMzNmMTFjNmEy
ODU0YjJlMjJiZjhhZGM5OTg0ZDI2Mi4uOGI0MGFhMDA1NzZiNzE0NDliOWFhY2FiMmQ5OWFmZmFh
NWM1MzQwMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0Fu
ZERyb3BUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFn
QW5kRHJvcFRlc3RzSU9TLm1tCkBAIC04NzksOCArODc5LDggQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBFeHRlcm5hbFNvdXJjZUJvbGRTeXN0ZW1BdHRyaWJ1dGVkU3RyaW5nVG9Db250ZW50RWRp
dGFibGUKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIE5TRGljdGlv
bmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250IGJv
bGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmljaFRl
eHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJUaGlzIGlz
IGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107Ci0gICAgYXV0byBpdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hU
ZXh0XSk7CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhpcyBpcyBhIHRlc3QiIGF0dHJpYnV0ZXM6dGV4dEF0
dHJpYnV0ZXNdKTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6cmljaFRleHQuZ2V0KCldKTsKICAgICBbc2ltdWxh
dG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CiAg
ICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50TWFr
ZSgxMDAsIDMwMCldOwogCkBAIC04OTUsOCArODk1LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBFeHRlcm5hbFNvdXJjZUNvbG9yZWRBdHRyaWJ1dGVkU3RyaW5nVG9Db250ZW50RWRpdGFibGUp
CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBOU0RpY3Rpb25hcnkg
KnRleHRBdHRyaWJ1dGVzID0gQHsgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiBbVUlD
b2xvciByZWRDb2xvcl0gfTsKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnJpY2hUZXh0ID0gW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhpcyBpcyBhIHRlc3Qi
IGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRv
cHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDpyaWNoVGV4dF0pOwor
ICAgIGF1dG8gcmljaFRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpAIlRoaXMgaXMgYSB0ZXN0IiBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVz
XSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxs
b2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0LmdldCgpXSk7CiAgICAgW3NpbXVsYXRvciBzZXRF
eHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdldCgpIF1dOwogICAgIFtzaW11
bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAz
MDApXTsKIApAQCAtMTg3Miw4ICsxODcyLDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRh
VHJhbnNmZXJHZXREYXRhUmVhZFBsYWluQW5kUmljaFRleHQpCiAKICAgICBhdXRvIGl0ZW1Qcm92
aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5TRGlj
dGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250
IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmlj
aFRleHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJXZWJL
aXQiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0
ZXJPYmplY3Q6cmljaFRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9u
VmlzaWJpbGl0eUFsbF07CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiV2ViS2l0IiBhdHRyaWJ1dGVzOnRleHRB
dHRyaWJ1dGVzXSk7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpyaWNoVGV4dC5n
ZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxs
XTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2Jq
ZWN0OkAiV2ViS2l0IiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNp
YmlsaXR5QWxsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCmluZGV4IDI1ZDc4MjQ1MWVhNmMyMDQ0YWYyZGQxYTJh
ODY3NWIyOTk2ZjY5YWEuLjdlYTdiZGNkYjM2YTc3YjgyYTU1YzVhZjgzMDQwZDdjNDUxYzc5YTUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRU
ZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElu
cHV0VGVzdHNJT1MubW0KQEAgLTcxLDIzICs3MSwyMyBAQCArIChVSUltYWdlICopYmFyQnV0dG9u
SWNvbgogKyAoVUlCYXJCdXR0b25JdGVtR3JvdXAgKilsZWFkaW5nSXRlbXNGb3JXZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47Ci0gICAgc3RhdGljIFVJQmFyQnV0dG9uSXRlbUdyb3VwICpzaGFyZWRJdGVtczsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFVJQmFyQnV0dG9uSXRlbUdyb3VwPj4gc2hh
cmVkSXRlbXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBhdXRv
IGxlYWRpbmdJdGVtID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhJ
bWFnZTpzZWxmLmJhckJ1dHRvbkljb24gc3R5bGU6VUlCYXJCdXR0b25JdGVtU3R5bGVQbGFpbiB0
YXJnZXQ6d2ViVmlldyBhY3Rpb246QHNlbGVjdG9yKGZha2VMZWFkaW5nQmFyQnV0dG9uSXRlbUFj
dGlvbildKTsKLSAgICAgICAgc2hhcmVkSXRlbXMgPSBbW1VJQmFyQnV0dG9uSXRlbUdyb3VwIGFs
bG9jXSBpbml0V2l0aEJhckJ1dHRvbkl0ZW1zOkBbIGxlYWRpbmdJdGVtLmdldCgpIF0gcmVwcmVz
ZW50YXRpdmVJdGVtOm5pbF07CisgICAgICAgIHNoYXJlZEl0ZW1zLmdldCgpID0gYWRvcHROUyhb
W1VJQmFyQnV0dG9uSXRlbUdyb3VwIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRvbkl0ZW1zOkBbIGxl
YWRpbmdJdGVtLmdldCgpIF0gcmVwcmVzZW50YXRpdmVJdGVtOm5pbF0pOwogICAgIH0pOwotICAg
IHJldHVybiBzaGFyZWRJdGVtczsKKyAgICByZXR1cm4gc2hhcmVkSXRlbXMuZ2V0KCkuZ2V0KCk7
CiB9CiAKICsgKFVJQmFyQnV0dG9uSXRlbUdyb3VwICopdHJhaWxpbmdJdGVtc0ZvcldlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKLSAgICBzdGF0aWMgVUlCYXJCdXR0b25JdGVtR3JvdXAgKnNoYXJlZEl0ZW1zOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVtR3JvdXA+PiBz
aGFyZWRJdGVtczsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIGF1
dG8gdHJhaWxpbmdJdGVtID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdp
dGhJbWFnZTpzZWxmLmJhckJ1dHRvbkljb24gc3R5bGU6VUlCYXJCdXR0b25JdGVtU3R5bGVQbGFp
biB0YXJnZXQ6d2ViVmlldyBhY3Rpb246QHNlbGVjdG9yKGZha2VUcmFpbGluZ0JhckJ1dHRvbkl0
ZW1BY3Rpb24pXSk7Ci0gICAgICAgIHNoYXJlZEl0ZW1zID0gW1tVSUJhckJ1dHRvbkl0ZW1Hcm91
cCBhbGxvY10gaW5pdFdpdGhCYXJCdXR0b25JdGVtczpAWyB0cmFpbGluZ0l0ZW0uZ2V0KCkgXSBy
ZXByZXNlbnRhdGl2ZUl0ZW06bmlsXTsKKyAgICAgICAgc2hhcmVkSXRlbXMuZ2V0KCkgPSBhZG9w
dE5TKFtbVUlCYXJCdXR0b25JdGVtR3JvdXAgYWxsb2NdIGluaXRXaXRoQmFyQnV0dG9uSXRlbXM6
QFsgdHJhaWxpbmdJdGVtLmdldCgpIF0gcmVwcmVzZW50YXRpdmVJdGVtOm5pbF0pOwogICAgIH0p
OwotICAgIHJldHVybiBzaGFyZWRJdGVtczsKKyAgICByZXR1cm4gc2hhcmVkSXRlbXMuZ2V0KCku
Z2V0KCk7CiB9CiAKIC0gKFVJVGV4dElucHV0QXNzaXN0YW50SXRlbSAqKWlucHV0QXNzaXN0YW50
SXRlbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxW
aWV3RGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZp
ZXdEZWxlZ2F0ZS5tbQppbmRleCBkMjI4YzIzZDFkZTNhZTRkMDE0NjY4NTYxZTgxODI2NGY2NmU2
YWVlLi4yNTQ4ZjE3ZmU3YTM3NTJhODA1N2YyMjYzMDYzYjY4OWIzNGMwMWIyIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5t
bQpAQCAtNTQsMTYgKzU0LDE2IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChX
S1dlYlZpZXcsIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gpCiB7Ci0gICAgV0tXZWJWaWV3ICp3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRdOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIGRlbGVnYXRlRm9yU2Ny
b2xsVmlldyA9IGFkb3B0TlMoW1tUZXN0RGVsZWdhdGVGb3JTY3JvbGxWaWV3IGFsbG9jXSBpbml0
XSk7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIHdlYlZpZXcuc2Nyb2xsVmlldy5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlRm9yU2Nyb2xsVmlldy5nZXQoKTsKKyAgICAgICAgW3dlYlZpZXcg
c2Nyb2xsVmlld10uZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcuZ2V0KCk7CiAgICAg
fQogICAgIGRlbGVnYXRlSXNEZWFsbG9jYXRlZCA9IGZhbHNlOwogICAgIGRlbGVnYXRlRm9yU2Ny
b2xsVmlldyA9IG5pbDsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRlbGVnYXRlSXNE
ZWFsbG9jYXRlZCk7CiAKLSAgICBFWFBFQ1RfTlVMTCh3ZWJWaWV3LnNjcm9sbFZpZXcuZGVsZWdh
dGUpOworICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmRlbGVnYXRlKTsKIH0K
IAogfQpAQCAtOTMsMjMgKzkzLDIzIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVT
VChXS1dlYlZpZXcsIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ2Fubm90T3ZlcnJpZGVWaWV3Rm9yWm9v
bWluZykKIHsKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0XTsKLSAgICBXS1Njcm9sbFZpZXdEZWxlZ2F0ZVdpdGhWaWV3Rm9yWm9vbWluZ092
ZXJyaWRkZW4gKmRlbGVnYXRlRm9yU2Nyb2xsVmlldyA9IFtbV0tTY3JvbGxWaWV3RGVsZWdhdGVX
aXRoVmlld0Zvclpvb21pbmdPdmVycmlkZGVuIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGVs
ZWdhdGVGb3JTY3JvbGxWaWV3ID0gYWRvcHROUyhbW1dLU2Nyb2xsVmlld0RlbGVnYXRlV2l0aFZp
ZXdGb3Jab29taW5nT3ZlcnJpZGRlbiBhbGxvY10gaW5pdF0pOwogICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICB3ZWJWaWV3LnNjcm9sbFZpZXcuZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNj
cm9sbFZpZXc7CisgICAgICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmRlbGVnYXRlID0gZGVsZWdh
dGVGb3JTY3JvbGxWaWV3LmdldCgpOwogICAgIH0KIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSdpbml0aWFs
LXNjYWxlPTEnPiJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKIAogICAgIC8vIEhhdmUgV0tTY3JvbGxWaWV3J3MgZXh0ZXJuYWwgZGVsZWdhdGUgcmV0dXJu
IGEgdmlldyB3aXRoIHNjYWxlPTIgZnJvbSB2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldy4KLSAg
ICBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcub3ZlcnJpZGVTY2FsZSA9IDI7CisgICAgW2RlbGVnYXRl
Rm9yU2Nyb2xsVmlldyBzZXRPdmVycmlkZVNjYWxlOjJdOwogCiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J2lu
aXRpYWwtc2NhbGU9Mic+Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOwogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIHdlYlZpZXcuc2Nyb2xs
Vmlldy5kZWxlZ2F0ZSA9IG5pbDsKKyAgICAgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uZGVsZWdh
dGUgPSBuaWw7CiAgICAgfQogCiAgICAgRVhQRUNUX0ZBTFNFKGRpZENhbGxWaWV3Rm9yWm9vbWlu
Z0luU2Nyb2xsVmlldyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9DYW5kaWRhdGVUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRp
ZGF0ZVRlc3RzLm1tCmluZGV4IGFiZmNjYTIxMTAxZTBmMTA3Y2ZhZmNlODdmZTU0OWU3NDFhMjA1
Y2UuLmM1ODFjNTMwNTFkYTg4NTMxNjc4NmY5NTM1ZGVlOTA3OWQ4MTk3ZWMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tCkBAIC05MCw4ICs5
MCw4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoQ2FuZGlkYXRlVGVzdHMsIERJ
U0FCTEVEX0RvTm90TGVha1ZpZXdUaGF0TG9hZHNFZGl0YWJsZUFyZWEpCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW0RvTm90TGVha1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKLSAgICBEb05vdExlYWtGcmFtZUxvYWREZWxl
Z2F0ZSAqZGVsZWdhdGUgPSBbW0RvTm90TGVha0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
XTsKLSAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb05vdExlYWtGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKICAgICAKICAgICBOU1VSTCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJhdXRvZm9jdXNlZC10ZXh0LWlucHV0IiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBbW3dl
YlZpZXcgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OmNvbnRlbnRVUkxdXTsKQEAgLTEwNyw4ICsxMDcsOCBAQCBURVNUKENhbmRpZGF0ZVRlc3RzLCBE
SVNBQkxFRF9SZXF1ZXN0Q2FuZGlkYXRlc0ZvclRleHRJbnB1dCkKIHsKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDEwMCwgMTAwKV0pOwogICAgIFt3ZWJWaWV3IGZvcmNlUmVxdWVzdENhbmRpZGF0ZXNGb3JU
ZXN0aW5nXTsKLSAgICBDYW5kaWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgKmRlbGVnYXRl
ID0gW1tDYW5kaWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAg
IFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW0NhbmRpZGF0ZVJlcXVlc3RGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKICAgICAKICAgICBOU1VSTCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJmb2N1cy1pbnB1dHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIFtbd2ViVmlldyBtYWlu
RnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6Y29udGVudFVS
TF1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2Fj
aGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1t
CmluZGV4IDAxZTc0NGY0OGIwNGFhYWNlYjY0N2I4ZjEyYjY5NjI1NmQ1ZTUzM2UuLjA0Njc2M2M4
MTc3M2U3MTRjOGRiNzFkZmY2ZjI3NzdkZWFiNDY2ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBy
dW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTc4LDE0ICs3OCwxNCBAQCBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdlYktpdExlZ2FjeSwgRElTQUJMRURfTWVtb3J5
Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlKQogewogICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzEgPSBhZG9wdE5TKFtb
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBm
cmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+
IHdlYlZpZXcyID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAg
ICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxd
KTsKKyAgICAgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBO
YW1lOm5pbF0pOwogCi0gICAgICAgIE5TV2luZG93KiB3aW5kb3cgPSBbW05TV2luZG93IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRSZWN0OndlYlZpZXcyLmdldCgpLmZyYW1lIHN0eWxlTWFzazpOU0Jv
cmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZ
RVNdOwotICAgICAgICBbd2luZG93LmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6d2ViVmlldzIuZ2V0
KCldOworICAgICAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp3ZWJWaWV3Mi5nZXQoKS5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJs
ZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7
CisgICAgICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcyLmdldCgp
XTsKIAotICAgICAgICBSZXRhaW5QdHI8TWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVtb3J5Q2FjaGVQcnVu
ZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgICAgICByZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5nZXQoKS0+X3dpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgYXV0byByZXNv
dXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNl
TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJlc291cmNlTG9hZERlbGVnYXRl
LmdldCgpLT5fd2luZG93ID0gd2luZG93LmdldCgpOwogICAgICAgICB3ZWJWaWV3MS5nZXQoKS5y
ZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAg
ICAgIFtbd2ViVmlldzEuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJN
ZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvbWFpbklPUy5tbQppbmRleCAyMzg5MTIzN2VjYzZkYTZhMGY5ODFjMzk5ZmRm
NDI2N2RlNjU5OTNjLi5mNzllZTBkNDc3YzVkYmNhMWYzMDgyNTJiYjQwMGQ4M2E5ODc2YzJlIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW0KQEAgLTM1LDExICszNSwxMSBAQCBpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHJlbW92ZVBlcnNpc3RlbnREb21haW5Gb3JOYW1lOkAiVGVzdFdlYktp
dEFQSSJdOwogCiAgICAgICAgIC8vIFNldCB1cCB1c2VyIGRlZmF1bHRzLgotICAgICAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0g
bXV0YWJsZUNvcHldOworICAgICAgICBhdXRvIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1l
Ok5TQXJndW1lbnREb21haW5dIG11dGFibGVDb3B5XSk7CiAgICAgICAgIGlmICghYXJndW1lbnRE
b21haW4pCi0gICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKLSAgICAgICAgW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21h
aW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4uZ2V0
KCkgZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBCVUlMRElOR19URVNUX1dU
RgogICAgICAgICBbV0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0Zv
clRlc3RpbmddOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRP
cHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCmlu
ZGV4IDkzNTc2YjkxNGYyYTY5ZDI1ZTVmNDgwOWRlN2NiNjA4MWJkY2YzZjEuLjgzYjkwY2E1NGU0
NzIwMDYzNTNjNWRiNDdlODIxODc2ZWFjOWY0YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9UZXN0Rm9udE9wdGlvbnMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkFwcEtpdFNQ
SS5oIgogI2ltcG9ydCAiQ2xhc3NNZXRob2RTd2l6emxlci5oIgogI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02NSwxMyArNjYsMTMg
QEAgQHN5bnRoZXNpemUgaGFzTXVsdGlwbGVGb250cyA9IF9oYXNNdWx0aXBsZUZvbnRzOwogCiAr
IChpbnN0YW5jZXR5cGUpc2hhcmVkSW5zdGFuY2UKIHsKLSAgICBzdGF0aWMgVGVzdEZvbnRPcHRp
b25zICpzaGFyZWRJbnN0YW5jZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PFRlc3RGb250T3B0aW9ucz4+IHNoYXJlZEluc3RhbmNlOwogICAgIHN0YXRpYyBkaXNwYXRjaF9v
bmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAg
ICAgTlNGb250T3B0aW9ucyAqc2hhcmVkRm9udE9wdGlvbnMgPSBbTlNDbGFzc0Zyb21TdHJpbmco
QCJOU0ZvbnRPcHRpb25zIikgc2hhcmVkRm9udE9wdGlvbnNdOwotICAgICAgICBzaGFyZWRJbnN0
YW5jZSA9IFtbVGVzdEZvbnRPcHRpb25zIGFsbG9jXSBpbml0V2l0aEZvbnRPcHRpb25zOnNoYXJl
ZEZvbnRPcHRpb25zXTsKKyAgICAgICAgc2hhcmVkSW5zdGFuY2UuZ2V0KCkgPSBhZG9wdE5TKFtb
VGVzdEZvbnRPcHRpb25zIGFsbG9jXSBpbml0V2l0aEZvbnRPcHRpb25zOnNoYXJlZEZvbnRPcHRp
b25zXSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOworICAgIHJldHVybiBz
aGFyZWRJbnN0YW5jZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Rm9udE9wdGlvbnM6KE5TRm9udE9wdGlvbnMgKilmb250T3B0aW9ucwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFj
L21haW5NYWMubW0KaW5kZXggZDlkNmM2MThjMjIyMzU0YjllYTVmODQ0ODI2NzUwYmM1MTIyODdh
Zi4uNzBiMWZkZWM4OGFiZjRhZmQ3OTU5M2FjMGIyNWFlMGU0Y2M3M2Y2ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9tYWluTWFjLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJUZXN0c0NvbnRy
b2xsZXIuaCIKIAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGV4dGVybiAiQyIgdm9pZCBfQmVnaW5FdmVudFJlY2Vp
cHRPblRocmVhZCh2b2lkKTsKIApAQCAtMzcsOSArMzgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHJlbW92ZVBlcnNpc3RlbnREb21haW5Gb3JOYW1lOkAiVGVzdFdlYktpdEFQSSJdOwogCiAg
ICAgICAgIC8vIFNldCBhIHVzZXIgZGVmYXVsdCBmb3IgVGVzdFdlYktpdEFQSSB0byBieXBhc3Mg
YWxsIGxpbmtlZC1vbi1vci1hZnRlciBjaGVja3MgaW4gV2ViS2l0Ci0gICAgICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0gW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRh
YmxlQ29weV07CisgICAgICAgIGF1dG8gYXJndW1lbnREb21haW4gPSBhZG9wdE5TKFtbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNB
cmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldKTsKICAgICAgICAgaWYgKCFhcmd1bWVudERvbWFp
bikKLSAgICAgICAgICAgIGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKKyAgICAgICAgICAgIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgICAgICAvLyBDQVVUSU9OOiBEZWZh
dWx0cyBzZXQgaGVyZSBhcmUgbm90IGF1dG9tYXRpY2FsbHkgcHJvcGFnYXRlZCB0byB0aGUKICAg
ICAgICAgLy8gV2ViIENvbnRlbnQgcHJvY2Vzcy4gVGhvc2UgbGlzdGVkIGJlbG93IGFyZSBwcm9w
YWdhdGVkIG1hbnVhbGx5LgpAQCAtNTIsNyArNTMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCiAgICAgICAgIH07CiAKICAgICAgICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJp
ZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpO
U0FyZ3VtZW50RG9tYWluXTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4uZ2V0KCkgZm9yTmFtZTpO
U0FyZ3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBCVUlMRElOR19URVNUX1dURgogICAgICAgICBb
V0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0ZvclRlc3RpbmddOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbQppbmRleCBjNDE4MjMw
ZjNiNGZkZTcxOWFjNmNjYzg0Yjc0MmRiZWNhMTRkMjRhLi5jOThiOWU5OTZjZDFjOGRlOTg5Zjhl
ZWNhZmZjYWY2Y2Q0NWNiOGIxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcklPUy5tbQpAQCAtNDcsNyArNDcsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhYwogICAg
IC8vIE90aGVyIHBsYXRmb3JtcyBtYXkgYmUgZGlmZmVyZW50LgogICAgIGlmIChtX2dsb2JhbE5v
dGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2dsb2JhbE5v
dGlmaWNhdGlvbkhhbmRsZXIgPSBbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFs
bG9jXSBpbml0XTsKKworICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IGFkb3B0TlMo
W1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtt
X2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6ZnVuY3Rpb25DYWxsYmFja107
CiAgICAgW21fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciBzdGFydE9ic2VydmluZ107CiAgICAg
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KaW5kZXggY2UzNmZiYTJkNGJiMTUxZjg3OWUzMWExNTQyZDRkMDZlOWUyOWRlNi4uM2Jm
NTBmYmQ2YmE5MDg5NTU0MWZhZjk3OWYxMWQyZjQwNzA5MzFkZSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNTksMzYg
KzU5LDQ2IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb247Ci1zdGF0aWMgVGVzdFdlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZSAqZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50Oworc3Rh
dGljIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiYgZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4+IGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOworICAgIHJldHVy
biBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbjsKK30KKworc3RhdGljIFJldGFpblB0cjxUZXN0
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiYgZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
Q2xpZW50KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFRlc3RXZWJz
aXRlRGF0YVN0b3JlRGVsZWdhdGU+PiBnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGll
bnQ7CisgICAgcmV0dXJuIGdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudDsKK30K
IAogdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGlicmFy
eVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGVkQnVuZGxlUGF0aCwgV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCiB7Ci0g
ICAgYXV0byBvbGRHbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24pOwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uID0gW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBnbG9iYWxXZWJWaWV3Q29u
ZmlndXJhdGlvbigpID0gWyZdIHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAotICAgIGdsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKF9fYnJpZGdlIFdLUHJvY2Vzc1Bvb2wg
Kiljb250ZXh0OwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgPSAoX19icmlkZ2UgV0tXZWJzaXRlRGF0YVN0b3JlICopVGVzdENvbnRyb2xsZXI6OmRlZmF1
bHRXZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2Fs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gWUVTOwotICAgIGdsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uLl9hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gWUVTOwotICAgIGds
b2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9hcHBsZVBheUVuYWJsZWQgPSBZRVM7CisgICAgICAg
IFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihfX2JyaWRnZSBXS1Byb2Nlc3NQb29sICop
Y29udGV4dF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6KF9f
YnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZSAqKVRlc3RDb250cm9sbGVyOjpkZWZhdWx0V2Vic2l0
ZURhdGFTdG9yZSgpXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzOllFU107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRBbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOllFU107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9z
ZXRBcHBsZVBheUVuYWJsZWQ6WUVTXTsKIAotICAgIGF1dG8gb2xkR2xvYmFsV2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlQ2xpZW50ID0gYWRvcHROUyhnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGVDbGllbnQpOwotICAgIGdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCA9IFtb
VGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgc2V0X2RlbGVnYXRlOmdsb2JhbFdl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudF07CisgICAgICAgIGdsb2JhbFdlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZUNsaWVudCgpID0gYWRvcHROUyhbW1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRh
U3RvcmVdIHNldF9kZWxlZ2F0ZTpnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQo
KS5nZXQoKV07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGdsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7Ci0gICAgZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24uX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5s
aW5lQXR0cmlidXRlID0gTk87Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2ludmlz
aWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkID0gTk87Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24uX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSA9IFlFUzsKLSAgICBnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi5yZXF1aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrID0gTk87
CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldEFsbG93c0lubGluZU1lZGlhUGxheWJhY2s6WUVT
XTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJl
c1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldElu
dmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkOk5PXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24g
X3NldE1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseTpZRVNdOworICAgICAgICBbY29uZmlndXJh
dGlvbiBzZXRSZXF1aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrOk5PXTsKICNlbmRpZgot
ICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0
aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAgICAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjazpX
S0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZV07CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0g
ICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX3N5c3RlbVByZXZpZXdFbmFibGVkID0gWUVT
OworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2N5c3RlbVByZXZpZXdFbmFibGVkOllFU107
CiAjZW5kaWYKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgfSgpOwogfQogCiB2
b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSgpCkBAIC0xMDcsMTIg
KzExNywxMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSgp
CiAKIFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKIHsKLSAg
ICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
bi5wcm9jZXNzUG9vbDsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24oKSBwcm9jZXNzUG9vbF07CiB9CiAKIFdLUHJlZmVyZW5jZXNS
ZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUHJlZmVyZW5jZXMoKQogewotICAgIHJldHVybiAo
X19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5wcmVm
ZXJlbmNlczsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uKCkgcHJlZmVyZW5jZXNdOwogfQogCiBUZXN0RmVhdHVyZXMgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtU3BlY2lmaWNGZWF0dXJlT3ZlcnJpZGVzRGVmYXVsdHNGb3JU
ZXN0KGNvbnN0IFRlc3RDb21tYW5kJikgY29uc3QKQEAgLTE0MywxMiArMTUzLDEyIEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1
cmF0aW9uUmVmLCBjb25zdCBUCiAjZW5kaWYKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0g
KF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWcu
Z2V0KCldKS5nZXQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0g
KF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
bi53ZWJzaXRlRGF0YVN0b3JlOworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlk
Z2UgV0tXZWJzaXRlRGF0YVN0b3JlUmVmKVtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdl
YnNpdGVEYXRhU3RvcmVdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0
ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlv
bnMpCiB7Ci0gICAgYXV0byBjb3BpZWRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gY29weV0pOworICAgIGF1dG8gY29waWVkQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgY29weV0pOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAob3B0aW9ucy51c2VEYXRhRGV0ZWN0aW9uKCkpCkBA
IC0xOTEsNyArMjAxLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJW
aWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKIAogUGxhdGZvcm1XZWJW
aWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJW
aWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIG5ld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5XSk7CisgICAgYXV0byBuZXdDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBjb3B5XSk7CiAgICAgW25l
d0NvbmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2ViVmlldyo+
KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKV07CiAgICAgaWYgKFtuZXdDb25maWd1cmF0aW9u
IF9yZWxhdGVkV2ViVmlld10pCiAgICAgICAgIFtuZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVE
YXRhU3RvcmU6W25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XS5jb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmVdOwpAQCAtMjE0LDcgKzIyNCw3IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmZpbmlzaENyZWF0aW5nUGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogdmlldywg
Y29uc3QKIFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGp1c3RDb250ZXh0
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRD
b25maWd1cmF0aW9uKQogewogICAgIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihsaWJy
YXJ5UGF0aEZvclRlc3RpbmcoKSwgaW5qZWN0ZWRCdW5kbGVQYXRoKCksIGNvbnRleHQsIGNvbnRl
eHRDb25maWd1cmF0aW9uKTsKLSAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbDsKKyAgICByZXR1cm4gKF9fYnJpZGdl
IFdLQ29udGV4dFJlZilbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBwcm9jZXNzUG9vbF07
CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgZG9uZSwg
V1RGOjpTZWNvbmRzIHRpbWVvdXQpCkBAIC0yOTMsNyArMzAzLDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6Y29jb2FSZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb24KICAgICAgICAgW3BsYXRmb3JtVmlldy5jb25maWd1cmF0aW9uLnByZWZlcmVuY2Vz
IHNldFRleHRJbnRlcmFjdGlvbkVuYWJsZWQ6b3B0aW9ucy50ZXh0SW50ZXJhY3Rpb25FbmFibGVk
KCldOwogICAgIH0KIAotICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQg
c2V0QWxsb3dSYWlzaW5nUXVvdGE6WUVTXTsKKyAgICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlQ2xpZW50KCkgc2V0QWxsb3dSYWlzaW5nUXVvdGE6WUVTXTsKIAogICAgIFdlYkNvcmVU
ZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9w
dGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpKTsKIH0KQEAgLTMz
Nyw3ICszNDcsNyBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuZXJh
bFBhc3RlYm9hcmQoKSBjb25zdAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCkKIHsKICAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMsIG5pbF0pOwot
ICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURh
dGFPZlR5cGVzOnR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0g
Y29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
KCkgd2Vic2l0ZURhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgbW9kaWZp
ZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAg
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMo
KTsKICAgICB9XTsKIH0KQEAgLTM0OCw3ICszNTgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpn
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1W
aWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7
CisgICAgW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdlYnNpdGVEYXRhU3RvcmVdIF9n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKICAgICAg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KG1ha2VWZWN0b3I8U3RyaW5nPihkb21haW5zKSk7CiAgICAgfV07CiB9CkBAIC0zNTksNyArMzY5
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6bG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCkKICAg
ICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfbG9hZGVkU3VicmVzb3VyY2VEb21h
aW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNB
cnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24oKSB3ZWJzaXRlRGF0YVN0b3JlXSBfbG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0
cmluZyAqPiAqZG9tYWlucykgewogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNl
aXZlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKG1ha2VWZWN0b3I8U3RyaW5nPihkb21haW5zKSk7
CiAgICAgfV07CiB9CkBAIC0zNzAsMTQgKzM4MCwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpj
bGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxh
dGZvcm1WaWV3KCldOworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRl
RGF0YVN0b3JlXSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+
cGxhdGZvcm1WaWV3KCldOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2Ny
aXB0KFdLU3RyaW5nUmVmIHNjcmlwdCkKIHsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5T
KFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0
KSBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQg
Zm9yTWFpbkZyYW1lT25seTpOT10pOwogCi0gICAgW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3JpcHQ6IHVzZXJTY3JpcHQuZ2V0KCld
OworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFVzZXJTY3JpcHQ6IHVzZXJTY3JpcHQuZ2V0KCldOwogfQogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNl
NjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFn
QmFzZTY0KQpAQCAtNDQ5LDE0ICs0NTksMTQgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhp
c3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJgogCiB2
b2lkIFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1N0b3JhZ2VRdW90YUluY3JlYXNlKGJvb2wgdmFs
dWUpCiB7Ci0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCBzZXRBbGxv
d1JhaXNpbmdRdW90YTogdmFsdWVdOworICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGVDbGllbnQoKSBzZXRBbGxvd1JhaXNpbmdRdW90YTogdmFsdWVdOwogfQogCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sIGFsbG93cykKIHsKICAg
ICBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlID0gYWxsb3dzOwogICAgIFdLV2Vic2l0ZURhdGFT
dG9yZVNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyh3ZWJzaXRl
RGF0YVN0b3JlKCksIGFsbG93cyk7Ci0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZUNsaWVudCBzZXRBbGxvd0FueVNTTENlcnRpZmljYXRlOiBhbGxvd3NdOworICAgIFtnbG9iYWxX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQoKSBzZXRBbGxvd0FueVNTTENlcnRpZmljYXRl
OiBhbGxvd3NdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFj
dGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQXV0b21hdGljYWxseSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1
Z1dpbmRvdy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNE
ZWJ1Z1dpbmRvdy5tbQppbmRleCA3ZDYzZjMzODU5ZDZkODNjNjE2MzhlZWM1NDRiOGI0OWI5NDcx
MzViLi4zMmExMmY0NmJlYWE1MmNiM2IzNzhlOTk1OTUwMWYwYjVmMGNhZDMzIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvR2VuZXJhdGVkVG91Y2hlc0RlYnVn
V2luZG93Lm1tCkBAIC00MywxMSArNDMsMTEgQEAgQGltcGxlbWVudGF0aW9uIEdlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvdwogKyAoR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93ICopc2hhcmVk
R2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdyAqdG91
Y2hXaW5kb3cgPSBuaWw7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxHZW5l
cmF0ZWRUb3VjaGVzRGVidWdXaW5kb3c+PiB0b3VjaFdpbmRvdzsKICAgICBkaXNwYXRjaF9vbmNl
KCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIHRvdWNoV2luZG93ID0gW1tHZW5lcmF0ZWRUb3VjaGVz
RGVidWdXaW5kb3cgYWxsb2NdIGluaXRdOworICAgICAgICB0b3VjaFdpbmRvdy5nZXQoKSA9IGFk
b3B0TlMoW1tHZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cgYWxsb2NdIGluaXRdKTsKICAgICB9
KTsKLSAgICByZXR1cm4gdG91Y2hXaW5kb3c7CisgICAgcmV0dXJuIHRvdWNoV2luZG93LmdldCgp
LmdldCgpOwogfQogCiAtICh2b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5kZXggMTJiMzU2MTczMmE3ZTQzM2UzNzAyN2Yx
MzJlZjQzZDgxZjkwMGRkNS4uMzFiNDY1MGUzNTYxMTljMDI0MDE2NjRjZTAyNzY5NDhkYTAzNWVk
OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0
b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
bW0KQEAgLTE2MCwxMSArMTYwLDggQEAgQGltcGxlbWVudGF0aW9uIEhJREV2ZW50R2VuZXJhdG9y
IHsKIAogKyAoSElERXZlbnRHZW5lcmF0b3IgKilzaGFyZWRISURFdmVudEdlbmVyYXRvcgogewot
ICAgIHN0YXRpYyBISURFdmVudEdlbmVyYXRvciAqZXZlbnRHZW5lcmF0b3IgPSBuaWw7Ci0gICAg
aWYgKCFldmVudEdlbmVyYXRvcikKLSAgICAgICAgZXZlbnRHZW5lcmF0b3IgPSBbW0hJREV2ZW50
R2VuZXJhdG9yIGFsbG9jXSBpbml0XTsKLQotICAgIHJldHVybiBldmVudEdlbmVyYXRvcjsKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPEhJREV2ZW50R2VuZXJhdG9yPj4gZXZl
bnRHZW5lcmF0b3IgPSBhZG9wdE5TKFtbSElERXZlbnRHZW5lcmF0b3IgYWxsb2NdIGluaXRdKTsK
KyAgICByZXR1cm4gZXZlbnRHZW5lcmF0b3IuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKENGSW5kZXgp
bmV4dEV2ZW50Q2FsbGJhY2tJRApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9t
YWMvVGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0
Q29udHJvbGxlck1hYy5tbQppbmRleCA0ZGI1MTM5ZGJlODk2ZWZhMGY3NWQ3MzMxMjM4NmU5YzVi
Y2UzY2E3Li44NWEyYzc0ZDJkOGI3MGFjZWI4ZTFmMTI3YWZlZWE4ZDUyZTI3N2E5IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQorKysg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMTg3
LDcgKzE4Nyw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbmZpZ3VyZUNvbnRlbnRFeHRlbnNp
b25Gb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0CiAgICAgYXV0byB0ZXN0VVJMID0g
YWRvcHRDRihXS1VSTENvcHlDRlVSTChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0LnVybCgpKSk7
CiAgICAgTlNVUkwgKmZpbHRlclVSTCA9IFsoX19icmlkZ2UgTlNVUkwgKil0ZXN0VVJMLmdldCgp
IFVSTEJ5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpAImpzb24iXTsKIAotICAgIF9fYmxvY2sgTlNT
dHJpbmcgKmNvbnRlbnRFeHRlbnNpb25TdHJpbmc7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNT
dHJpbmc+IGNvbnRlbnRFeHRlbnNpb25TdHJpbmc7CiAgICAgX19ibG9jayBib29sIGRvbmVGZXRj
aGluZ0NvbnRlbnRFeHRlbnNpb24gPSBmYWxzZTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbV0tUUlNlc3Npb25EZWxlZ2F0ZSBuZXddKTsKICAgICBOU1VSTFNlc3Npb24gKnNlc3Npb24g
PSBbTlNVUkxTZXNzaW9uIHNlc3Npb25XaXRoQ29uZmlndXJhdGlvbjpbTlNVUkxTZXNzaW9uQ29u
ZmlndXJhdGlvbiBlcGhlbWVyYWxTZXNzaW9uQ29uZmlndXJhdGlvbl0gZGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCkgZGVsZWdhdGVRdWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKQEAg
LTE5NSw3ICsxOTUsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVDb250ZW50RXh0
ZW5zaW9uRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdAogICAgICAgICBBU1NFUlQo
ZGF0YSk7CiAgICAgICAgIEFTU0VSVChyZXNwb25zZSk7CiAgICAgICAgIEFTU0VSVCghZXJyb3Ip
OwotICAgICAgICBjb250ZW50RXh0ZW5zaW9uU3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgICAgICBj
b250ZW50RXh0ZW5zaW9uU3RyaW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0
aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICBkb25l
RmV0Y2hpbmdDb250ZW50RXh0ZW5zaW9uID0gdHJ1ZTsKICAgICB9XTsKICAgICBbdGFzayByZXN1
bWVdOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbmZpZ3VyZUNv
bnRlbnRFeHRlbnNpb25Gb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0CiAgICAgfSBl
bHNlCiAgICAgICAgIHRlbXBEaXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFy
eURpcmVjdG9yeSgpIHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRl
bnNpb25zIl0gaXNEaXJlY3Rvcnk6WUVTXTsKIAotICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNp
b25TdG9yZSBzdG9yZVdpdGhVUkw6dGVtcERpcl0gY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJ
ZGVudGlmaWVyOkAiVGVzdENvbnRlbnRFeHRlbnNpb25zIiBlbmNvZGVkQ29udGVudEV4dGVuc2lv
bjpjb250ZW50RXh0ZW5zaW9uU3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLVXNlckNvbnRl
bnRGaWx0ZXIgKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpCisgICAgW1tfV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlIHN0b3JlV2l0aFVSTDp0ZW1wRGlyXSBjb21waWxlQ29udGVudEV4dGVuc2lv
bkZvcklkZW50aWZpZXI6QCJUZXN0Q29udGVudEV4dGVuc2lvbnMiIGVuY29kZWRDb250ZW50RXh0
ZW5zaW9uOmNvbnRlbnRFeHRlbnNpb25TdHJpbmcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6Xihf
V0tVc2VyQ29udGVudEZpbHRlciAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikKICAgICB7CiAgICAg
ICAgIGlmICghZXJyb3IpCiAgICAgICAgICAgICBbbWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3
KCkuY29uZmlndXJhdGlvbi51c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJDb250ZW50Rmls
dGVyOmZpbHRlcl07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJL
aXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCmluZGV4IDEzMTk5ZDI0ZjU0OTViOGMyMjIwNmY4
MzBlY2UyNzNmODNmZGVmOTAuLjVlMzE2MzI3MjY1YzU0NmI4ZmJiOTA4NzdmNWE5NzFhZGUyMzhk
N2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5u
ZXJQYXN0ZWJvYXJkLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRl
c3RSdW5uZXJQYXN0ZWJvYXJkLm1tCkBAIC00NSw3ICs0NSw3IEBAIEBpbnRlcmZhY2UgTG9jYWxQ
YXN0ZWJvYXJkIDogTlNQYXN0ZWJvYXJkCiAtKGlkKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKilu
YW1lOwogQGVuZAogCi1zdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqbG9jYWxQYXN0ZWJvYXJk
czsKK3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbG9jYWxQYXN0ZWJvYXJk
czsKIAogQGltcGxlbWVudGF0aW9uIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkCiAKQEAgLTU2
LDEyICs1NiwxMiBAQCArIChOU1Bhc3RlYm9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0
cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIG5hbWUgPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aEZvcm1hdDpAIkxvY2FsUGFzdGVib2FyZCVkIiwgKytudW1iZXJdOwogICAgIGlmICgh
bG9jYWxQYXN0ZWJvYXJkcykKLSAgICAgICAgbG9jYWxQYXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxl
RGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIGlmIChMb2NhbFBh
c3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbbG9jYWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFt
ZV0pCiAgICAgICAgIHJldHVybiBwYXN0ZWJvYXJkOwogICAgIGF1dG8gcGFzdGVib2FyZCA9IGFk
b3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpuYW1lXSk7CiAgICAg
W2xvY2FsUGFzdGVib2FyZHMgc2V0T2JqZWN0OnBhc3RlYm9hcmQuZ2V0KCkgZm9yS2V5Om5hbWVd
OwotICAgIHJldHVybiBwYXN0ZWJvYXJkLmdldCgpOworICAgIHJldHVybiBwYXN0ZWJvYXJkLmF1
dG9yZWxlYXNlKCk7CiB9CiAKIC8vIFRoaXMgbWV0aG9kIGNyYXNoZXMgd2hlbiBjYWxsZWQgb24g
TG9jYWxQYXN0ZWJvYXJkLgpAQCAtNzIsNyArNzIsNyBAQCAtICh2b2lkKV91cGRhdGVUeXBlQ2Fj
aGVJZk5lZWRlZAogCiArICh2b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiB7Ci0gICAgYXV0
byBvbGRMb2NhbFBhc3RlQm9hcmRzID0gYWRvcHROUyhzdGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVi
b2FyZHMsIG5pbCkpOworICAgIGxvY2FsUGFzdGVib2FyZHMgPSBuaWw7CiB9CiAKIC8vIENvbnZl
bmllbmNlIG1ldGhvZCBmb3IgSlMgc28gdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBj
cmVhdGUgYSBOU0FycmF5IG9uIHRoZSBvYmpjIHNpZGUgaW5zdGVhZAo=
</data>
<flag name="commit-queue"
          id="440047"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421243</attachid>
            <date>2021-02-22 14:57:15 -0800</date>
            <delta_ts>2021-02-22 15:20:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222288-20210222145714.patch</filename>
            <type>text/plain</type>
            <size>149980</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFlZDY5YjRkNTc2MTZhYThmMzVlZTgwOWJkZjcyOTgz
ZGM2MzM4OS4uOTZkMDJiMTVjOWFjMWIxNjk2OTQzMWI3YTc0ODVlYTQ5ODQ0NDYxZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NyBAQAorMjAyMS0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBbW09iamNDbGFzcyBhbGxvY10gaW5pdF0g
dG8gYXZvaWQgbGVha3MgaW4gVG9vbHMvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9T
Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzY3JvbGxUb09mZnNldCk6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlU2Nyb2xsVG9P
ZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1pbmltdW1ab29t
U2NhbGUgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1heGlt
dW1ab29tU2NhbGUgY29uc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbToKKyAgICAgICAgKGZvbnRBbGxvd0xpc3QpOgorICAgICAgICAoYWRqdXN0V2Vi
RG9jdW1lbnRGb3JGbGV4aWJsZVZpZXdwb3J0KToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycyk6Cisg
ICAgICAgIChyZWxlYXNlR2xvYmFsQ29udHJvbGxlcnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAgICAgKCtbRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkIF9wYXN0ZWJvYXJkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW0R1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAo
ZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3VyY2Up
OgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgYmVnaW5EcmFnV2l0aEZpbGVQcm9taXNlczpd
KToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhNb2RpZmll
cnM6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3ZlVG9YOlk6
XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSBkaWRDbGVhcldpbmRvd09iamVjdEluU3RhbmRh
cmRXb3JsZEZvckZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRl
IHdlYlZpZXc6ZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlk
ZUJhY2s6Zm9yVmlldzpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJv
bXB0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9y
d2FyZC5tbToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldzo6
U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50
V2ViVmlld1RpbWVvdXQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9u
Lm1tOgorICAgICAgICAoLVtUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgd2ViVmlldzpjcmVh
dGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0
dXJlczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJJ
bml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgIChVc2VySW5pdGlh
dGVkQWN0aW9uVGVzdDo6VVJMV2l0aEZyYWdtZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tp
ZVN0b3JlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVn
YXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW06CisgICAgICAgICgrW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNl
dFVwV2l0aEZyYW1lOnRlc3RQYWdlOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5p
dGlhbGl6YXRpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW06CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMv
Q3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50
SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVu
dFRlc3QubW06CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRlc3RpbmdXZWJWaWV3IGxl
YWRpbmdJdGVtc0ZvcldlYlZpZXc6XSk6CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRl
c3RpbmdXZWJWaWV3IHRyYWlsaW5nSXRlbXNGb3JXZWJWaWV3Ol0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2Fu
ZGlkYXRlVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgorICAgICAgICAoK1tUZXN0
Rm9udE9wdGlvbnMgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9tYWluTWFjLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAg
IChXVFI6Omdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCk6CisgICAgICAgIChX
VFI6OmluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQWRqdXN0Q29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
b2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldEFsbG93U3RvcmFnZVF1b3RhSW5jcmVhc2UpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbToK
KyAgICAgICAgKCtbR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93IHNoYXJlZEdlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvd10pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoK1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURF
dmVudEdlbmVyYXRvcl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29u
dGVudEV4dGVuc2lvbkZvclRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tXZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorCiAyMDIxLTAyLTIy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMo
KSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1Mu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRl
eCBkNzA5YTJlOTE2YTUxMWI3MDYxOGU5MTJhNDZkNzZiYjgwNzliZTE0Li4xZmViNGFkNDQ5ZGNk
NzM4MGRmZmU0YzhhMmI3MTJjNzA1NDI2NjEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQpAQCAtNDksOCArNDksOCBAQAogI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1leHRlcm4gRHVtcFJl
bmRlclRyZWVXaW5kb3cgKmdEcnRXaW5kb3c7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVCcm93c2Vy
VmlldyAqZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdp
bmRvdz4gZ0RydFdpbmRvdzsKK2V4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2Vy
Vmlldz4gZ1dlYkJyb3dzZXJWaWV3OwogCiBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0
bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZW50YWxSZXBh
aW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdTZWxlY3Rpb25SZWN0KQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggMjExZjg2MGZiMWM2NWY1MTg0NzZjOTkxNzU1MzBlZWU3NjJiMGI0MS4uYTFlZjJlZDA5
NzkwMTIxNDdmNjllMDk0NTNmNmVlY2U4MGEzZjRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zNSw4ICszNSw4IEBACiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7Ci1leHRlcm4g
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmlldzsKK2V4dGVybiBSZXRh
aW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2VyVmlldz4gZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJu
IFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3Owog
CiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
CiBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVySU9TOjp6b29tU2NhbGUoKSBjb25zdAogewotICAg
IHJldHVybiBnV2ViU2Nyb2xsVmlldy56b29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xs
VmlldyB6b29tU2NhbGVdOwogfQogCiBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgbG9uZyB4LCBsb25nIHksIFNj
cm9sbFRvT3B0aW9ucyogb3B0aW9ucykKQEAgLTEwOCwxMyArMTA4LDEzIEBAIGRvdWJsZSBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09w
dGlvbnMqIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBvZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBhdXRvIG9m
ZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3NhcnkoZ1dlYlNjcm9sbFZpZXcuZ2V0
KCksIHgsIHksIG9wdGlvbnMpOwogICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0
Om9mZnNldCBhbmltYXRlZDpZRVNdOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6
aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyog
b3B0aW9ucykKIHsKLSAgICBhdXRvIG9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNl
c3NhcnkoZ1dlYlNjcm9sbFZpZXcsIHgsIHksIG9wdGlvbnMpOworICAgIGF1dG8gb2Zmc2V0ID0g
Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeShnV2ViU2Nyb2xsVmlldy5nZXQoKSwgeCwg
eSwgb3B0aW9ucyk7CiAgICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0
IGFuaW1hdGVkOk5PXTsKIH0KIApAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkKIAogZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6bWluaW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGdXZWJTY3JvbGxWaWV3Lm1pbmltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2Vi
U2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXTsKIH0KIAogZG91YmxlIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdXZWJTY3Jv
bGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBtYXhp
bXVtWm9vbVNjYWxlXTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVySU9TOjpj
b250ZW50VmlzaWJsZVJlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDM3OWQ1MjBkNzM5NzkyN2JmZThhOGY5ODYwODU5ZjZlYzgxMzUy
YTUuLjc4NjA2MzU0YjgzZDg3ZGI4YzI0OWZiMGU1Y2E2NjRmNGUwNTc2ZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJMKTsKIAogdm9sYXRp
bGUgYm9vbCBkb25lOwogCi1OYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyID0gbnVsbHB0cjsKK1JldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOwogUmVmUHRyPFRlc3RSdW5uZXI+IGdUZXN0UnVubmVyOwogCiBPcHRpb25h
bDxXVFI6OlRlc3RPcHRpb25zPiBtYWluRnJhbWVUZXN0T3B0aW9uczsKQEAgLTIwNSw3ICsyMDUs
NyBAQCBXZWJGcmFtZSAqbWFpbkZyYW1lID0gbmlsOwogV2ViRnJhbWUgKnRvcExvYWRpbmdGcmFt
ZSA9IG5pbDsgLy8gIW5pbCBpZmYgYSBsb2FkIGlzIGluIHByb2dyZXNzCiAKICNpZiBQTEFURk9S
TShNQUMpCi1OU1dpbmRvdyAqbWFpbldpbmRvdyA9IG5pbDsKK1JldGFpblB0cjxOU1dpbmRvdz4g
bWFpbldpbmRvdzsKICNlbmRpZgogCiBDRk11dGFibGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM9IG51
bGxwdHI7CkBAIC0yMTgsMTUgKzIxOCwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYlZpZXc+JiBn
bG9iYWxXZWJWaWV3KCkKIH0KIAogLy8gRGVsZWdhdGVzCi1zdGF0aWMgRnJhbWVMb2FkRGVsZWdh
dGUgKmZyYW1lTG9hZERlbGVnYXRlOwotc3RhdGljIFVJRGVsZWdhdGUgKnVpRGVsZWdhdGU7Ci1z
dGF0aWMgRWRpdGluZ0RlbGVnYXRlICplZGl0aW5nRGVsZWdhdGU7Ci1zdGF0aWMgUmVzb3VyY2VM
b2FkRGVsZWdhdGUgKnJlc291cmNlTG9hZERlbGVnYXRlOwotc3RhdGljIEhpc3RvcnlEZWxlZ2F0
ZSAqaGlzdG9yeURlbGVnYXRlOwotUG9saWN5RGVsZWdhdGUgKnBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKLURlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVsdFBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKK3N0YXRpYyBSZXRhaW5QdHI8RnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVn
YXRlOworc3RhdGljIFJldGFpblB0cjxVSURlbGVnYXRlPiB1aURlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxFZGl0aW5nRGVsZWdhdGU+IGVkaXRpbmdEZWxlZ2F0ZTsKK3N0YXRpYyBSZXRhaW5Q
dHI8UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKK1JldGFpblB0cjxQb2xp
Y3lEZWxlZ2F0ZT4gcG9saWN5RGVsZWdhdGU7CitSZXRhaW5QdHI8RGVmYXVsdFBvbGljeURlbGVn
YXRlPiBkZWZhdWx0UG9saWN5RGVsZWdhdGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0
YXRpYyBTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlICpzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRl
Oworc3RhdGljIFJldGFpblB0cjxTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlPiBzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlOwogI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckFsbFRl
c3RzOwpAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+
JiBwcmV2VGVzdEJGSXRlbSgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY29uc3QgQ0dS
ZWN0IGxheW91dFRlc3RWaWV3cG9ydFJlY3QgPSB7IHswLCAwfSwge3N0YXRpY19jYXN0PENHRmxv
YXQ+KFRlc3RSdW5uZXI6OnZpZXdXaWR0aCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5u
ZXI6OnZpZXdIZWlnaHQpfSB9OwotRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyAqZ1dlYkJyb3dz
ZXJWaWV3ID0gbmlsOwotRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmll
dyA9IG5pbDsKLUR1bXBSZW5kZXJUcmVlV2luZG93ICpnRHJ0V2luZG93ID0gbmlsOworUmV0YWlu
UHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKK1JldGFpblB0
cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3OworUmV0YWluUHRy
PER1bXBSZW5kZXJUcmVlV2luZG93PiBnRHJ0V2luZG93OwogI2VuZGlmCiAKIHZvaWQgc2V0UGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oQ0ZTdHJpbmdSZWYgdXJsKQpAQCAtNDE3LDIy
ICs0MTcsMTkgQEAgc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRp
YyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqYXZhaWxh
YmxlRm9udHM7Ci0gICAgaWYgKGF2YWlsYWJsZUZvbnRzKQotICAgICAgICByZXR1cm4gYXZhaWxh
YmxlRm9udHM7Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXZhaWxhYmxlRm9udExpc3QgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBmb3IgKE5TU3RyaW5nICpmb250RmFtaWx5
IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKLSAgICAgICAgTlNBcnJheSogZm9udHNGb3JG
YW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJl
cnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07Ci0gICAgICAgIFthdmFpbGFibGVGb250TGlzdCBh
ZGRPYmplY3Q6Zm9udEZhbWlseV07Ci0gICAgICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4g
Zm9udHNGb3JGYW1pbHkpIHsKLSAgICAgICAgICAgIC8vIEZvbnQgbmFtZSBpcyB0aGUgZmlyc3Qg
ZW50cnkgaW4gdGhlIGFycmF5LgotICAgICAgICAgICAgW2F2YWlsYWJsZUZvbnRMaXN0IGFkZE9i
amVjdDpbZm9udEluZm8gb2JqZWN0QXRJbmRleDowXV07CisgICAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBhdmFpbGFibGVGb250cyA9IFtdIHsKKyAgICAgICAgYXV0byBhdmFpbGFibGVGb250
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3Ig
KE5TU3RyaW5nICpmb250RmFtaWx5IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKKyAgICAg
ICAgICAgIE5TQXJyYXkqIGZvbnRzRm9yRmFtaWx5ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmZvbnRGYW1pbHldOworICAg
ICAgICAgICAgW2F2YWlsYWJsZUZvbnRzIGFkZE9iamVjdDpmb250RmFtaWx5XTsKKyAgICAgICAg
ICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4gZm9udHNGb3JGYW1pbHkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGb250IG5hbWUgaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBhcnJheS4KKyAg
ICAgICAgICAgICAgICBbYXZhaWxhYmxlRm9udHMgYWRkT2JqZWN0Oltmb250SW5mbyBvYmplY3RB
dEluZGV4OjBdXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLQotICAgIGF2YWls
YWJsZUZvbnRzID0gYXZhaWxhYmxlRm9udExpc3Q7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRz
OworICAgICAgICByZXR1cm4gYXZhaWxhYmxlRm9udHM7CisgICAgfSgpOworICAgIHJldHVybiBh
dmFpbGFibGVGb250cy5nZXQoKTsKIH0KIAogLy8gQWN0aXZhdGluZyBzeXN0ZW0gY29waWVzIG9m
IHRoZXNlIGZvbnRzIG92ZXJyaWRlcyBhbnkgb3RoZXJzIHRoYXQgY291bGQgYmUgcHJlZmVycmVk
LCBzdWNoIGFzIG9uZXMKQEAgLTU3Niw3ICs1NzMsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RXZWJE
b2N1bWVudEZvckZsZXhpYmxlVmlld3BvcnQoVUlXZWJCcm93c2VyVmlldyAqd2ViQnJvd3NlclZp
ZQogICAgIC8vIEFkanVzdCB0aGUgdmlld3BvcnQgdmlldyBhbmQgdmlld3BvcnQgdG8gaGF2ZSBz
aW1pbGFyIGJlaGF2aW9yCiAgICAgLy8gYXMgdGhlIGJyb3dzZXIuCiAgICAgWyhEdW1wUmVuZGVy
VHJlZUJyb3dzZXJWaWV3ICopd2ViQnJvd3NlclZpZXcgc2V0U2Nyb2xsaW5nVXNlc1VJV2ViU2Ny
b2xsVmlldzpZRVNdOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXREZWxlZ2F0ZTpzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlXTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0RGVsZWdhdGU6c2Nyb2xs
Vmlld1Jlc2l6ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBDR1JlY3Qgc2NyZWVuQm91bmRzID0g
W1VJU2NyZWVuIG1haW5TY3JlZW5dLmJvdW5kczsKICAgICBDR1JlY3Qgdmlld3BvcnRSZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCBzY3JlZW5Cb3VuZHMuc2l6ZS53aWR0aCwgc2NyZWVuQm91bmRzLnNp
emUuaGVpZ2h0KTsKQEAgLTY4NywxMCArNjg0LDEwIEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6
QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAotICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdh
dGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTpl
ZGl0aW5nRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJl
c291cmNlTG9hZERlbGVnYXRlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0Rl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNv
dXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgX3NldEdlb2xvY2F0aW9uUHJv
dmlkZXI6W01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF1dOwogICAgIFt3ZWJWaWV3IF9z
ZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOltXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jayBzaGFyZWRdXTsKICAgICBbd2ViVmlldyBfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6W01v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBzaGFyZWRdXTsKQEAgLTcyMiwyMyArNzE5LDIyIEBA
IFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAg
ICAvLyBQdXQgaXQgYXQgLTEwMDAwLCAtMTAwMDAgaW4gImZsaXBwZWQgY29vcmRpbmF0ZXMiLCBz
aW5jZSBXZWJDb3JlIGFuZCB0aGUgRE9NIHVzZSBmbGlwcGVkIGNvb3JkaW5hdGVzLgogICAgIE5T
U2NyZWVuICpmaXJzdFNjcmVlbiA9IFtbTlNTY3JlZW4gc2NyZWVuc10gZmlyc3RPYmplY3RdOwog
ICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gKHNob3dXZWJWaWV3KSA/IE5TT2Zmc2V0UmVjdChyZWN0
LCAxMDAsIDEwMCkgOiBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbZmlyc3RTY3JlZW4gZnJh
bWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKLSAgICBEdW1wUmVu
ZGVyVHJlZVdpbmRvdyAqd2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgIG1haW5X
aW5kb3cgPSB3aW5kb3c7CisgICAgbWFpbldpbmRvdyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJl
ZVdpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpZRVNdKTsKIAotICAgIFt3aW5kb3cgc2V0Q29sb3JTcGFjZTpbZmlyc3RTY3JlZW4gY29sb3JT
cGFjZV1dOwotICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOk5TV2luZG93Q29sbGVj
dGlvbkJlaGF2aW9yU3RhdGlvbmFyeV07Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6d2ViVmlldy5nZXQoKV07CisgICAgW21haW5XaW5kb3cgc2V0Q29sb3JTcGFjZTpbZmly
c3RTY3JlZW4gY29sb3JTcGFjZV1dOworICAgIFttYWluV2luZG93IHNldENvbGxlY3Rpb25CZWhh
dmlvcjpOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvclN0YXRpb25hcnldOworICAgIFtbbWFpbldp
bmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKICAgICBpZiAoc2hv
d1dlYlZpZXcpCi0gICAgICAgIFt3aW5kb3cgb3JkZXJGcm9udDpuaWxdOworICAgICAgICBbbWFp
bldpbmRvdyBvcmRlckZyb250Om5pbF07CiAgICAgZWxzZQotICAgICAgICBbd2luZG93IG9yZGVy
QmFjazpuaWxdOwotICAgIFt3aW5kb3cgc2V0QXV0b2Rpc3BsYXk6Tk9dOworICAgICAgICBbbWFp
bldpbmRvdyBvcmRlckJhY2s6bmlsXTsKKyAgICBbbWFpbldpbmRvdyBzZXRBdXRvZGlzcGxheTpO
T107CiAKLSAgICBbd2luZG93IHN0YXJ0TGlzdGVuaW5nRm9yQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NoYW5nZXNdOworICAgIFsoRHVtcFJlbmRlclRyZWVXaW5kb3cgKiltYWluV2luZG93LmdldCgp
IHN0YXJ0TGlzdGVuaW5nRm9yQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NoYW5nZXNdOwogI2Vsc2UK
LSAgICBEdW1wUmVuZGVyVHJlZVdpbmRvdyAqZHJ0V2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdp
bmRvdyBhbGxvY10gaW5pdFdpdGhMYXllcjpbd2ViQnJvd3NlclZpZXcgbGF5ZXJdXTsKKyAgICBh
dXRvIGRydFdpbmRvdyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhMYXllcjpbd2ViQnJvd3NlclZpZXcgbGF5ZXJdXSk7CiAgICAgW2RydFdpbmRvdyBzZXRD
b250ZW50Vmlldzp3ZWJWaWV3LmdldCgpXTsKLSAgICBbd2ViQnJvd3NlclZpZXcgc2V0V0FLV2lu
ZG93OmRydFdpbmRvd107CisgICAgW3dlYkJyb3dzZXJWaWV3IHNldFdBS1dpbmRvdzpkcnRXaW5k
b3cuZ2V0KCldOwogCiAgICAgW1t3ZWJWaWV3IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOltb
W3dlYlZpZXcgbWFpbkZyYW1lXSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld11dOwogCkBAIC03NTAs
OCArNzQ2LDggQEAgUmV0YWluUHRyPFdlYlZpZXc+IGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5X
aW5kb3coKQogICAgIFt1aVdpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xs
ZXIuZ2V0KCldOwogCiAgICAgLy8gVGhlIFVJV2luZG93IGFuZCBVSVdlYkJyb3dzZXJWaWV3IGFy
ZSByZWxlYXNlZCB3aGVuIHRoZSBEdW1wUmVuZGVyVHJlZVdpbmRvdyBpcyBjbG9zZWQuCi0gICAg
ZHJ0V2luZG93LnVpV2luZG93ID0gdWlXaW5kb3cuZ2V0KCk7Ci0gICAgZHJ0V2luZG93LmJyb3dz
ZXJWaWV3ID0gd2ViQnJvd3NlclZpZXcuZ2V0KCk7CisgICAgZHJ0V2luZG93LmdldCgpLnVpV2lu
ZG93ID0gdWlXaW5kb3cuZ2V0KCk7CisgICAgZHJ0V2luZG93LmdldCgpLmJyb3dzZXJWaWV3ID0g
d2ViQnJvd3NlclZpZXcuZ2V0KCk7CiAKICAgICBhdXRvIHNjcm9sbFZpZXcgPSBhZG9wdE5TKFtb
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmxheW91dFRl
c3RWaWV3cG9ydFJlY3RdKTsKICAgICBbc2Nyb2xsVmlldyBhZGRTdWJ2aWV3OndlYkJyb3dzZXJW
aWV3LmdldCgpXTsKQEAgLTc2OSw5ICs3NjUsOSBAQCBSZXRhaW5QdHI8V2ViVmlldz4gY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAjZWxzZQogICAgIC8vIEluaXRpYWxpemUgdGhl
IGdsb2JhbCBVSVZpZXdzLCBhbmQgc2V0IHRoZSBrZXkgVUlXaW5kb3cgdG8gYmUgcGFpbnRlZC4K
ICAgICBpZiAoIWdXZWJCcm93c2VyVmlldykgewotICAgICAgICBnV2ViQnJvd3NlclZpZXcgPSBb
d2ViQnJvd3NlclZpZXcgcmV0YWluXTsKLSAgICAgICAgZ1dlYlNjcm9sbFZpZXcgPSBbc2Nyb2xs
VmlldyByZXRhaW5dOwotICAgICAgICBnRHJ0V2luZG93ID0gW2RydFdpbmRvdyByZXRhaW5dOwor
ICAgICAgICBnV2ViQnJvd3NlclZpZXcgPSBXVEZNb3ZlKHdlYkJyb3dzZXJWaWV3KTsKKyAgICAg
ICAgZ1dlYlNjcm9sbFZpZXcgPSBXVEZNb3ZlKHNjcm9sbFZpZXcpOworICAgICAgICBnRHJ0V2lu
ZG93ID0gV1RGTW92ZShkcnRXaW5kb3cpOwogICAgICAgICBbdWlXaW5kb3cgbWFrZUtleUFuZFZp
c2libGVdOwogICAgICAgICBbdWlXaW5kb3cgcmV0YWluXTsKICAgICB9CkBAIC05OTIsMzYgKzk4
OCwzMSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3Rp
bmcoKQogc3RhdGljIHZvaWQgYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycygpCiB7CiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlc2UgYW5kIG1vdmUgdG8gdGhlIE9iakMgc3RhbmRh
cmQgW0ZvbyBzaGFyZWRJbnN0YW5jZV0gbW9kZWwKLSAgICBnTmF2aWdhdGlvbkNvbnRyb2xsZXIg
PSBbW05hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XTsKLSAgICBmcmFtZUxvYWREZWxl
Z2F0ZSA9IFtbRnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIHVpRGVsZWdhdGUg
PSBbW1VJRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGVkaXRpbmdEZWxlZ2F0ZSA9IFtbRWRp
dGluZ0RlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IFtb
UmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIHBvbGljeURlbGVnYXRlID0g
W1tQb2xpY3lEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgaGlzdG9yeURlbGVnYXRlID0gW1tI
aXN0b3J5RGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSA9
IFtbRGVmYXVsdFBvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICBnTmF2aWdhdGlvbkNv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbTmF2aWdhdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBmcmFtZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tGcmFtZUxvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbVUlEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIGVkaXRpbmdEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tFZGl0aW5nRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZXNv
dXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHBvbGljeURlbGVnYXRlID0gYWRv
cHROUyhbW1BvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgaGlzdG9yeURlbGVnYXRl
ID0gYWRvcHROUyhbW0hpc3RvcnlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGRlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEZWZhdWx0UG9saWN5RGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHNjcm9sbFZpZXdSZXNpemVyRGVs
ZWdhdGUgPSBbW1Njcm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgIHNj
cm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2Nyb2xsVmlld1Jlc2l6ZXJEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOwogI2VuZGlmCiB9CiAKLS8vIE9iakMrKyBkb2Vzbid0IHNlZW0g
dG8gbGV0IG1lIHBhc3MgTlNPYmplY3QqJiBzYWRseS4KLXN0YXRpYyBpbmxpbmUgdm9pZCByZWxl
YXNlQW5kWmVybyhOU09iamVjdCoqIG9iamVjdCkKLXsKLSAgICBhdXRvIG9sZE9iamVjdCA9IGFk
b3B0TlMoKm9iamVjdCk7Ci0gICAgKm9iamVjdCA9IG5pbDsKLX0KLQogc3RhdGljIHZvaWQgcmVs
ZWFzZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKLSAgICByZWxlYXNlQW5kWmVybygmZ05hdmlnYXRp
b25Db250cm9sbGVyKTsKLSAgICByZWxlYXNlQW5kWmVybygmZnJhbWVMb2FkRGVsZWdhdGUpOwot
ICAgIHJlbGVhc2VBbmRaZXJvKCZlZGl0aW5nRGVsZWdhdGUpOwotICAgIHJlbGVhc2VBbmRaZXJv
KCZyZXNvdXJjZUxvYWREZWxlZ2F0ZSk7Ci0gICAgcmVsZWFzZUFuZFplcm8oJnVpRGVsZWdhdGUp
OwotICAgIHJlbGVhc2VBbmRaZXJvKCZwb2xpY3lEZWxlZ2F0ZSk7CisgICAgZ05hdmlnYXRpb25D
b250cm9sbGVyID0gbmlsOworICAgIGZyYW1lTG9hZERlbGVnYXRlID0gbmlsOworICAgIGVkaXRp
bmdEZWxlZ2F0ZSA9IG5pbDsKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IG5pbDsKKyAgICB1
aURlbGVnYXRlID0gbmlsOworICAgIGhpc3RvcnlEZWxlZ2F0ZSA9IG5pbDsKKyAgICBwb2xpY3lE
ZWxlZ2F0ZSA9IG5pbDsKKyAgICBkZWZhdWx0UG9saWN5RGVsZWdhdGUgPSBuaWw7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZWxlYXNlQW5kWmVybygmc2Nyb2xsVmlld1Jlc2l6ZXJE
ZWxlZ2F0ZSk7CisgICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9IG5pbDsKICNlbmRpZgog
fQogCkBAIC0xNzU4LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQoZ1dlYkJy
b3dzZXJWaWV3LCBnV2ViU2Nyb2xsVmlldyk7CisgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFu
ZGFyZFZpZXdwb3J0KGdXZWJCcm93c2VyVmlldy5nZXQoKSwgZ1dlYlNjcm9sbFZpZXcuZ2V0KCkp
OwogICAgIFt3ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdpbmc6WUVTXTsKICNlbmRpZgogICAgIFt3
ZWJWaWV3IHNldEVkaXRhYmxlOk5PXTsKQEAgLTE3NzAsNyArMTc2MSw3IEBAIHN0YXRpYyB2b2lk
IHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9w
dGlvbnMsIFJlc2V0CiAgICAgW3dlYlZpZXcgX3NldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3Rvcjow
XTsKICNlbmRpZgogICAgIFt3ZWJWaWV3IHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50czpZ
RVNdOwotICAgIFt3ZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOmRlZmF1bHRQb2xpY3lEZWxlZ2F0
ZV07CisgICAgW3dlYlZpZXcgc2V0UG9saWN5RGVsZWdhdGU6ZGVmYXVsdFBvbGljeURlbGVnYXRl
LmdldCgpXTsKICAgICBbcG9saWN5RGVsZWdhdGUgc2V0UGVybWlzc2l2ZTpOT107CiAgICAgW3Bv
bGljeURlbGVnYXRlIHNldENvbnRyb2xsZXJUb05vdGlmeURvbmU6MF07CiAgICAgW3VpRGVsZWdh
dGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6b3B0aW9uc107CkBAIC0xOTQz
LDcgKzE5MzQsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1
dExpbmUpCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbmlsOwogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIEFTU0VSVCghZHJhZ2dpbmdJbmZvKTsgLy8gdGhlIHByZXZpb3VzIHRlc3Qgc2hv
dWxkIGhhdmUgY2FsbGVkIGV2ZW50U2VuZGVyLm1vdXNlVXAgdG8gZHJvcCEKLSAgICByZWxlYXNl
QW5kWmVybygmZHJhZ2dpbmdJbmZvKTsKKyAgICBkcmFnZ2luZ0luZm8gPSBuaWw7CiAjZW5kaWYK
ICAgICBkb25lID0gTk87CiAKQEAgLTE5NTksNyArMTk1MCw3IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGluZSkKICAgICAgICAgZ1Rlc3RSdW5uZXItPnNl
dER1bXBGcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7CiAKICAgICBpZiAoc2hvdWxkTG9nSGlzdG9y
eURlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCi0gICAgICAgIFtbbWFpbkZyYW1lIHdlYlZp
ZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVsZWdhdGVdOworICAgICAgICBbW21haW5G
cmFtZSB3ZWJWaWV3XSBzZXRIaXN0b3J5RGVsZWdhdGU6aGlzdG9yeURlbGVnYXRlLmdldCgpXTsK
ICAgICBlbHNlCiAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0
ZTpuaWxdOwogCkBAIC0xOTcwLDcgKzE5NjEsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBpbnB1dExpbmUpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRoT3JVUkwuY19zdHIoKSkpCi0gICAg
ICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9ydChnV2ViQnJvd3NlclZpZXcs
IGdXZWJTY3JvbGxWaWV3KTsKKyAgICAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JGbGV4aWJsZVZp
ZXdwb3J0KGdXZWJCcm93c2VyVmlldy5nZXQoKSwgZ1dlYlNjcm9sbFZpZXcuZ2V0KCkpOwogI2Vu
ZGlmCiAKICAgICBpZiAoc2hvdWxkVXNlRXBoZW1lcmFsU2Vzc2lvbihwYXRoT3JVUkwuY19zdHIo
KSkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVN
YWMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCmluZGV4
IDQzNDdkYmU1MGVmZWUxZTQ0Nzc5OTA1N2ViOTNiMmE2MzY3ZGJjYjUuLjNkNDFiNWI3NGJiNzI4
YTUxMmRlOTY3ZDk5NThmMDY4ODJkODU2M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZU1hYy5oCkBAIC00NywxNyArNDcsMTkgQEAgZXh0ZXJuIENGTXV0YWJs
ZUFycmF5UmVmIG9wZW5XaW5kb3dzUmVmOwogZXh0ZXJuIENGTXV0YWJsZVNldFJlZiBkaXNhbGxv
d2VkVVJMczsKIGV4dGVybiBXZWJGcmFtZSogbWFpbkZyYW1lOwogZXh0ZXJuIFdlYkZyYW1lKiB0
b3BMb2FkaW5nRnJhbWU7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gKmRyYWdn
aW5nSW5mbzsKLWV4dGVybiBOYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyOwotZXh0ZXJuIFBvbGljeURlbGVnYXRlKiBwb2xpY3lEZWxlZ2F0ZTsKLWV4dGVybiBEZWZh
dWx0UG9saWN5RGVsZWdhdGUgKmRlZmF1bHRQb2xpY3lEZWxlZ2F0ZTsKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbz4gZHJhZ2dp
bmdJbmZvOworZXh0ZXJuIFJldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOworZXh0ZXJuIFJldGFpblB0cjxQb2xpY3lEZWxlZ2F0ZT4gcG9saWN5RGVs
ZWdhdGU7CitleHRlcm4gUmV0YWluUHRyPERlZmF1bHRQb2xpY3lEZWxlZ2F0ZT4gZGVmYXVsdFBv
bGljeURlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlX
aW5kb3c7Ci1leHRlcm4gVUlXaW5kb3cgKm1haW5XaW5kb3c7CitleHRlcm4gUmV0YWluUHRyPFVJ
V2luZG93PiBtYWluV2luZG93OwogI2Vsc2UKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7Ci1leHRlcm4g
TlNXaW5kb3cgKm1haW5XaW5kb3c7CitleHRlcm4gUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2lu
ZG93OworI2VuZGlmCiAjZW5kaWYKIAogdm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZSdW5M
b29wVGltZXJSZWYpOwpAQCAtODEsOCArODMsMTAgQEAgQGludGVyZmFjZSBEdW1wUmVuZGVyVHJl
ZSA6IFVJQXBwbGljYXRpb24gewogLSAodm9pZClfd2FpdEZvcldlYlRocmVhZDsKIEBlbmQKIAor
I2lmZGVmIF9fY3BsdXNwbHVzCiBAY2xhc3MgRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldzsKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7CitleHRlcm4g
UmV0YWluUHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKKyNl
bmRpZgogI2VuZGlmCiAKIGludCBEdW1wUmVuZGVyVHJlZU1haW4oaW50LCBjb25zdCBjaGFyICpb
XSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQ
YXN0ZWJvYXJkLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5tbQppbmRleCBlOTQ0YjQxN2RiZjU3ZmY2ZDk3ODJhOThiNDU0MGQ5OTMzZjBiZDk1
Li41Y2YyOWFjNjY2ODgxYWYyZGI2NzBkMjFhOThmMTBlYzJlYmRjOWY3IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KQEAg
LTU2LDcgKzU2LDcgQEAgQGludGVyZmFjZSBMb2NhbFBhc3RlYm9hcmQgOiBOU1Bhc3RlYm9hcmQg
ewogLShpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKIEBlbmQKIAotc3RhdGljIE5T
TXV0YWJsZURpY3Rpb25hcnkgKmxvY2FsUGFzdGVib2FyZHM7CitzdGF0aWMgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IGxvY2FsUGFzdGVib2FyZHM7CiAKIEBpbXBsZW1lbnRhdGlvbiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQKIApAQCAtNjcsNyArNjcsNyBAQCArIChOU1Bhc3RlYm9h
cmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUp
CiAgICAgICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkxvY2FsUGFzdGVi
b2FyZCVkIiwgKytudW1iZXJdOwogICAgIGlmICghbG9jYWxQYXN0ZWJvYXJkcykKLSAgICAgICAg
bG9jYWxQYXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Cisg
ICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOwogICAgIGlmIChMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbbG9j
YWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV0pCiAgICAgICAgIHJldHVybiBwYXN0ZWJv
YXJkOwogICAgIGF1dG8gcGFzdGVib2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQgYWxs
b2NdIGluaXRXaXRoTmFtZTpuYW1lXSk7CkBAIC03Nyw3ICs3Nyw3IEBAICsgKE5TUGFzdGVib2Fy
ZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQogCiArICh2b2lkKXJlbGVh
c2VMb2NhbFBhc3RlYm9hcmRzCiB7Ci0gICAgYXV0byBvbGRQYXN0ZWJvYWRzID0gYWRvcHROUyhz
dGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVib2FyZHMsIG5pbCkpOworICAgIGxvY2FsUGFzdGVib2Fy
ZHMgPSBuaWw7CiB9CiAKIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgSlMgc28gdGhhdCBpdCBk
b2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBjcmVhdGUgYSBOU0FycmF5IG9uIHRoZSBvYmpjIHNpZGUg
aW5zdGVhZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQppbmRleCA1MjY2NzA1OWRjOGE5ZjdjMGEwNzk2MjA4ZjAwZmIwYjk0MmY0ZTA5
Li4xNmE2MDUxYmI3ZmI2NGI5ZGYwYWE5ZTM3MzIyYjg5YjAxMWQ3NTcwIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtOTEs
NyArOTEsNyBAQCBzdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKIE5TUG9pbnQgbGFzdE1vdXNlUG9z
aXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bvc2l0aW9uOwogaW50IGxhc3RDbGlja0J1dHRvbiA9
IE5vTW91c2VCdXR0b247Ci1OU0FycmF5ICp3ZWJraXREb21FdmVudE5hbWVzOworc3RhdGljIFJl
dGFpblB0cjxOU0FycmF5PiB3ZWJraXREb21FdmVudE5hbWVzOwogQk9PTCByZXBsYXlpbmdTYXZl
ZEV2ZW50czsKIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24gPSAwOwogCkBAIC0x
NjksOCArMTY5LDggQEAgc3RhdGljIE5TRHJhZ2dpbmdTZXNzaW9uICpkcnRfV2ViSFRNTFZpZXdf
YmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNFdmVudFNvdXIKICAgICBmb3IgKE5TRHJhZ2dp
bmdJdGVtICppdGVtIGluIGl0ZW1zKQogICAgICAgICBbcGFzdGVib2FyZCB3cml0ZU9iamVjdHM6
QFsgaXRlbS5pdGVtIF1dOwogCi0gICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURy
YWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFz
dGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VdOwotICAgIFt3ZWJWaWV3IGRyYWdnaW5n
VXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5T
WmVyb1NpemUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VdKTsKKyAgICBbd2Vi
VmlldyBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvLmdldCgpXTsKICAgICBbRXZlbnRTZW5k
aW5nQ29udHJvbGxlciByZXBsYXlTYXZlZEV2ZW50c107CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgTlNEcmFnZ2luZ1Nlc3Npb24gKmRydF9XZWJIVE1M
Vmlld19iZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtc0V2ZW50U291cgogCiArICh2b2lkKWlu
aXRpYWxpemUKIHsKLSAgICB3ZWJraXREb21FdmVudE5hbWVzID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6CisgICAgd2Via2l0RG9tRXZlbnROYW1lcyA9IEBbCiAgICAgICAgIEAi
YWJvcnQiLAogICAgICAgICBAImJlZm9yZWNvcHkiLAogICAgICAgICBAImJlZm9yZWN1dCIsCkBA
IC0yMjYsNyArMjI2LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAidGV4dHpvb21v
dXQiLAogICAgICAgICBAInVubG9hZCIsCiAgICAgICAgIEAiem9vbSIsCi0gICAgICAgIG5pbF07
CisgICAgXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBBZGQgYW4gaW1wbGVtZW50YXRp
b24gb2YgLVtXZWJIVE1MVmlldyBiZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtczpldmVudDpz
b3VyY2U6XS4KQEAgLTQ2Myw4ICs0NjMsOCBAQCAtICh2b2lkKWJlZ2luRHJhZ1dpdGhGaWxlczoo
V2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogCiAgICAgLy8gUHJvdmlkZSBhIHNvdXJjZSwg
b3RoZXJ3aXNlIFtEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tdIGRlZmF1bHRzIHRvIE5TRHJhZ09wZXJhdGlvbk5vbmUKICAgICBhdXRvIHNvdXJj
ZSA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZSBhbGxvY10gaW5p
dF0pOwotICAgIGRyYWdnaW5nSW5mbyA9IFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxs
b2NdIGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGJvYXJk
IHNvdXJjZTpzb3VyY2UuZ2V0KCldOwotICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIGRyYWdnaW5n
RW50ZXJlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5T
WmVyb1NpemUgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZS5nZXQoKV0pOworICAgIFtb
bWFpbkZyYW1lIHdlYlZpZXddIGRyYWdnaW5nRW50ZXJlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwog
CiAgICAgZHJhZ01vZGUgPSBOTzsgLy8gZHJhZ01vZGUgc2F2ZXMgZXZlbnRzIGFuZCB0aGVuIHJl
cGxheXMgdGhlbSBsYXRlci4gIFdlIGRvbid0IG5lZWQvd2FudCB0aGF0LgogICAgIGxlZnRNb3Vz
ZUJ1dHRvbkRvd24gPSBZRVM7IC8vIE1ha2UgdGhlIHJlc3Qgb2YgZXZlbnRTZW5kZXIgdGhpbmsg
YSBkcmFnIGlzIGluIHByb2dyZXNzCkBAIC01MDMsOCArNTAzLDggQEAgLSAodm9pZCliZWdpbkRy
YWdXaXRoRmlsZVByb21pc2VzOihXZWJTY3JpcHRPYmplY3QgKilmaWxlUGF0aHMKICAgICBhc3Nl
cnQoW3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVd
KTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlRmlsZURyYWdn
aW5nU291cmNlIGFsbG9jXSBpbml0V2l0aFByb21pc2VkRmlsZVVSTHM6ZmlsZVVSTHNdKTsKLSAg
ICBkcmFnZ2luZ0luZm8gPSBbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0
V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291
cmNlOnNvdXJjZS5nZXQoKV07Ci0gICAgW21haW5GcmFtZS53ZWJWaWV3IGRyYWdnaW5nRW50ZXJl
ZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVy
VHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1Np
emUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCldKTsKKyAgICBbbWFp
bkZyYW1lLndlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOmRyYWdnaW5nSW5mby5nZXQoKV07CiAKICAg
ICBkcmFnTW9kZSA9IE5POwogICAgIGxlZnRNb3VzZUJ1dHRvbkRvd24gPSBZRVM7CkBAIC03MTks
MTYgKzcxOSwxNCBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIgd2l0aE1vZGlm
aWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICBpZiAoZHJhZ2dpbmdJbmZvKSB7
CiAgICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogICAgICAg
ICAKLSAgICAgICAgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBbd2ViVmlldyBkcmFn
Z2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvXTsKLSAgICAgICAgCisgICAgICAgIE5TRHJhZ09wZXJh
dGlvbiBkcmFnT3BlcmF0aW9uID0gW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5m
by5nZXQoKV07CiAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uICE9IE5TRHJhZ09wZXJhdGlvbk5v
bmUpCi0gICAgICAgICAgICBbd2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpkcmFnZ2luZ0lu
Zm9dOworICAgICAgICAgICAgW3dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246ZHJhZ2dpbmdJ
bmZvLmdldCgpXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW3dlYlZpZXcgZHJhZ2dpbmdF
eGl0ZWQ6ZHJhZ2dpbmdJbmZvXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3IGRyYWdnaW5nRXhpdGVk
OmRyYWdnaW5nSW5mby5nZXQoKV07CiAgICAgICAgIC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdn
aW5nU291cmNlcyBtYXkgbm90IGltcGxlbWVudCBkcmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVyYXRp
b246CiAgICAgICAgIGlmIChbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihkcmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVyYXRpb246KV0pCiAg
ICAgICAgICAgICBbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gZHJhZ2dlZEltYWdlOltk
cmFnZ2luZ0luZm8gZHJhZ2dlZEltYWdlXSBlbmRlZEF0Omxhc3RNb3VzZVBvc2l0aW9uIG9wZXJh
dGlvbjpkcmFnT3BlcmF0aW9uXTsKLSAgICAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKICAg
ICAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogICAgIH0KICNlbmRpZgpAQCAtNzg3LDcgKzc4NSw3
IEBAIC0gKHZvaWQpbW91c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQpeQogICAgICAgICAgICAgICAg
IC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdnaW5nU291cmNlcyBtYXkgbm90IGltcGxlbWVudCBk
cmFnZ2VkSW1hZ2U6bW92ZWRUbzoKICAgICAgICAgICAgICAgICBpZiAoW1tkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdTb3VyY2VdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZHJhZ2dlZEltYWdl
Om1vdmVkVG86KV0pCiAgICAgICAgICAgICAgICAgICAgIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
U291cmNlXSBkcmFnZ2VkSW1hZ2U6W2RyYWdnaW5nSW5mbyBkcmFnZ2VkSW1hZ2VdIG1vdmVkVG86
bGFzdE1vdXNlUG9zaXRpb25dOwotICAgICAgICAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXdd
IGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgICAgICAgICAgICAgIFtbbWFpbkZy
YW1lIHdlYlZpZXddIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgICAg
ICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2VkTW91
c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCmluZGV4IDM0
MmIzYTAxZGM3ZWE4NzlhZjFiNTRiMGVlMjczZDY4MTJmOGY3YTcuLjFhYmE4MTIwODI3NzE5YTlm
MjI1ZTk2ODY2NjBlOGY5M2FiZmRkMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RnJhbWVMb2FkRGVsZWdhdGUubW0KQEAgLTMyNiw3ICszMjYsNyBAQCAtICh2b2lkKWRpZENsZWFy
V2luZG93T2JqZWN0SW5TdGFuZGFyZFdvcmxkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKICNl
bmRpZgogCiAgICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTphZG9wdE5TKFtbRXZlbnRTZW5kaW5n
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAImV2ZW50U2VuZGVyIl07Ci0g
ICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTpnTmF2aWdhdGlvbkNvbnRyb2xsZXIgZm9yS2V5OkAi
bmF2aWdhdGlvbkNvbnRyb2xsZXIiXTsKKyAgICBbd2luZG93T2JqZWN0IHNldFZhbHVlOmdOYXZp
Z2F0aW9uQ29udHJvbGxlci5nZXQoKSBmb3JLZXk6QCJuYXZpZ2F0aW9uQ29udHJvbGxlciJdOwog
ICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHROUyhbW09iakNDb250cm9sbGVyIGFsbG9j
XSBpbml0XSkuZ2V0KCkgZm9yS2V5OkAib2JqQ0NvbnRyb2xsZXIiXTsKICAgICBbd2luZG93T2Jq
ZWN0IHNldFZhbHVlOmFkb3B0TlMoW1tPYmpDUGx1Z2luIGFsbG9jXSBpbml0XSkuZ2V0KCkgZm9y
S2V5OkAib2JqQ1BsdWdpbiJdOwogICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHROUyhb
W09iakNQbHVnaW5GdW5jdGlvbiBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAIm9iakNQbHVn
aW5GdW5jdGlvbiJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpp
bmRleCBjNThkNTQ2NWZhMDNkYmRiYWUwOTU4ZGE5NTU5YjdiNjYwMmIzYTVjLi4yNGNlMjJmN2Zk
YTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJiYThlYzJiNjBmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNDAwLDEyICs0MDAsMTIgQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKQogdm9pZCBU
ZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29s
IHBlcm1pc3NpdmUpCiB7CiAgICAgaWYgKCFzZXREZWxlZ2F0ZSkgewotICAgICAgICBbW21haW5G
cmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0UG9saWN5RGVsZWdhdGVdOwor
ICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0UG9s
aWN5RGVsZWdhdGUuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgW3BvbGlj
eURlbGVnYXRlIHNldFBlcm1pc3NpdmU6cGVybWlzc2l2ZV07Ci0gICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGVdOworICAgIFtbbWFpbkZyYW1l
IHdlYlZpZXddIHNldFBvbGljeURlbGVnYXRlOnBvbGljeURlbGVnYXRlLmdldCgpXTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90
YSkKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxl
Z2F0ZSgpCiB7CiAgICAgc2V0V2FpdFRvRHVtcCh0cnVlKTsKICAgICBbcG9saWN5RGVsZWdhdGUg
c2V0Q29udHJvbGxlclRvTm90aWZ5RG9uZTp0aGlzXTsKLSAgICBbW21haW5GcmFtZSB3ZWJWaWV3
XSBzZXRQb2xpY3lEZWxlZ2F0ZTpwb2xpY3lEZWxlZ2F0ZV07CisgICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGUuZ2V0KCldOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNv
dXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQpAQCAtOTE0
LDggKzkxNCw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFz
ZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSCiAgICAgLy8gYW5kIGNsb3NlcyBh
IFdlYlZpZXcsIGl0IHNob3VsZCBiZSBydW4gb24gdGhlIG1haW4gdGhyZWFkLiBNYWtlIHRoZSBz
d2l0Y2gKICAgICAvLyBmcm9tIHRoZSB3ZWIgdGhyZWFkIHRvIHRoZSBtYWluIHRocmVhZCBhbmQg
bWFrZSB0aGUgdGVzdCBhc3luY2hyb25vdXMuCiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgp
KSB7Ci0gICAgICAgIEFQSVRlc3REZWxlZ2F0ZUlQaG9uZSAqZGlzcGF0Y2hlciA9IFtbQVBJVGVz
dERlbGVnYXRlSVBob25lIGFsbG9jXSBpbml0V2l0aFRlc3RSdW5uZXI6dGhpcyB1dGY4RGF0YTp1
dGY4RGF0YSBiYXNlVVJMOmJhc2VVUkxdOwotICAgICAgICBOU0ludm9jYXRpb24gKmludm9jYXRp
b24gPSBXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGRpc3BhdGNoZXIsIEBzZWxlY3RvcihydW4p
KTsKKyAgICAgICAgYXV0byBkaXNwYXRjaGVyID0gYWRvcHROUyhbW0FQSVRlc3REZWxlZ2F0ZUlQ
aG9uZSBhbGxvY10gaW5pdFdpdGhUZXN0UnVubmVyOnRoaXMgdXRmOERhdGE6dXRmOERhdGEgYmFz
ZVVSTDpiYXNlVVJMXSk7CisgICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFdlYlRo
cmVhZE1ha2VOU0ludm9jYXRpb24oZGlzcGF0Y2hlci5nZXQoKSwgQHNlbGVjdG9yKHJ1bikpOwog
ICAgICAgICBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoaW52b2NhdGlvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmluZGV4IDEyZjVh
YTc5MDMxYTgxNzExNWRkZWQwMjZhYjY4YjFhZjhiZDFiNGMuLmJiYTUzYmRiZjk0ZTE5YjNmNzU3
MDBlY2FiYWExYzg3ZWY0ZmMyZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tCkBAIC00OCw3ICs0OCw3IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8g
KmRyYWdnaW5nSW5mbyA9IG5pbDsKK1JldGFpblB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5m
bz4gZHJhZ2dpbmdJbmZvOwogI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBVSURlbGVnYXRlCkBA
IC0xNTMsMTAgKzE1MywxMCBAQCAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKiljIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKQogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRyYWdJbWFn
ZTooTlNJbWFnZSAqKWFuSW1hZ2UgYXQ6KE5TUG9pbnQpdmlld0xvY2F0aW9uIG9mZnNldDooTlNT
aXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNrOihCT09MKXNs
aWRlRmxhZyBmb3JWaWV3OihOU1ZpZXcgKil2aWV3CiB7Ci0gICAgIGFzc2VydCghZHJhZ2dpbmdJ
bmZvKTsKLSAgICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBh
bGxvY10gaW5pdFdpdGhJbWFnZTphbkltYWdlIG9mZnNldDppbml0aWFsT2Zmc2V0IHBhc3RlYm9h
cmQ6cGJvYXJkIHNvdXJjZTpzb3VyY2VPYmpdOwotICAgICBbc2VuZGVyIGRyYWdnaW5nVXBkYXRl
ZDpkcmFnZ2luZ0luZm9dOwotICAgICBbRXZlbnRTZW5kaW5nQ29udHJvbGxlciByZXBsYXlTYXZl
ZEV2ZW50c107CisgICAgYXNzZXJ0KCFkcmFnZ2luZ0luZm8pOworICAgIGRyYWdnaW5nSW5mbyA9
IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFn
ZTphbkltYWdlIG9mZnNldDppbml0aWFsT2Zmc2V0IHBhc3RlYm9hcmQ6cGJvYXJkIHNvdXJjZTpz
b3VyY2VPYmpdKTsKKyAgICBbc2VuZGVyIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8uZ2V0
KCldOworICAgIFtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJlcGxheVNhdmVkRXZlbnRzXTsKIH0K
ICNlbmRpZgogCkBAIC00MzMsNyArNDMzLDYgQEAgLSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmYKIC0g
KHZvaWQpZGVhbGxvYwogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtkcmFnZ2lu
Z0luZm8gcmVsZWFzZV07CiAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbQppbmRleCA5NDc1NTM3ZjZmNjkxYWZmNzZjYTUzODkyMDcxNTM0ZjMzMmQ3Y2QwLi4xNTM5
NDQ1OTAzMDViOGI1YTIxMmI3Mjg0NTIwNjBmYzZiOWIzY2ZlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0z
NSw3ICszNSw3IEBACiAKIHVzaW5nIFRleHRDaGVja2luZ0NvbXBsZXRpb25IYW5kbGVyID0gdm9p
ZCheKShOU0ludGVnZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKiwgTlNPcnRo
b2dyYXBoeSAqLCBOU0ludGVnZXIpOwogCi1zdGF0aWMgTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciAq
Z2xvYmFsU3BlbGxDaGVja2VyID0gbmlsOworc3RhdGljIFJldGFpblB0cjxMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyPiBnbG9iYWxTcGVsbENoZWNrZXI7CiBzdGF0aWMgQk9PTCBoYXNTd2l6emxlZExh
eW91dFRlc3RTcGVsbENoZWNrZXIgPSBOTzsKIHN0YXRpYyBJTVAgZ2xvYmFsbHlTd2l6emxlZFNo
YXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uOwogc3RhdGljIE1ldGhvZCBvcmlnaW5hbFNo
YXJlZFNwZWxsQ2hlY2tlck1ldGhvZDsKQEAgLTQ0LDkgKzQ0LDkgQEAgc3RhdGljIExheW91dFRl
c3RTcGVsbENoZWNrZXIgKmVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2VUb2tlbiwgXnsKLSAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyID0gW1tMYXlvdXRUZXN0
U3BlbGxDaGVja2VyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyID0g
YWRvcHROUyhbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgYWxsb2NdIGluaXRdKTsKICAgICB9KTsK
LSAgICByZXR1cm4gZ2xvYmFsU3BlbGxDaGVja2VyOworICAgIHJldHVybiBnbG9iYWxTcGVsbENo
ZWNrZXIuZ2V0KCk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpzdHJpbmdGb3JDb3JyZWN0aW9u
UmVzcG9uc2UoTlNDb3JyZWN0aW9uUmVzcG9uc2UgY29ycmVjdGlvblJlc3BvbnNlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCmluZGV4IDQ0
NGMwNjdiZTczMDJhMzVhNzdkYzIzZWUwZjM5MTFlYzBkMzMxNjguLmI3YmM3ODNlOWI0YTk5NDZi
OGYwZmEwMzRkMjkxYjUwNzc1MWVhMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KQEAgLTEwNiw0NSArMTA2LDQ1IEBAIFRFU1QoV2Vi
S2l0MiwgQ2FwdHVyZU11dGUpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVz
U2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2Fw
dHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRp
YUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAKLSAgICB3ZWJWaWV3Ll9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3Rp
bmcgPSAwOworICAgIFt3ZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRl
c3Rpbmc6MF07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRp
YSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFDYXB0dXJlRGV2
aWNlc011dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmll
dywgX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZENhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdh
aXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11
dGVkQ2FtZXJhKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFOb25lTXV0
ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0
b3AoKSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBf
V0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0
dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAKICAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvKCki
XTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVu
dGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
TWljcm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2FwdHVy
ZURldmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdl
YlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CisgICAgRVhQRUNU
X1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVy
ZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dL
TWVkaWFOb25lTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3
ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZU1pY3JvcGhvbmUpKTsKKyAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0
dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAKICAgICBbd2ViVmlldyBfc2V0UGFnZU11dGVk
OiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9u
ZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgp
LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9uZSkpOwogCiAgICAgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0b3AoKSJdOwotICAgIEVYUEVDVF9UUlVF
KHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUp
KTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwg
X1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8oKSJdOwotICAgIEVYUEVDVF9U
UlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFj
dGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWljcm9waG9uZSkpOworICAg
IEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRp
YUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWlj
cm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2FwdHVyZURl
dmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZp
ZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEgfCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkTWljcm9waG9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0
ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkQ2FtZXJhIHwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVNdXRlZE1pY3JvcGhvbmUpKTsKICAgICBbd2ViVmlldyBfc2V0UGFnZU11
dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVy
ZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhIHwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVu
dGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
Q2FtZXJhIHwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAKICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic3RvcCgpIl07Ci0gICAgRVhQ
RUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0
YXRlTm9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3
LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKIH0KIAogVEVTVChXZWJLaXQyLCBD
YXB0dXJlU3RvcCkKQEAgLTE1OSwxOSArMTU5LDE5IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZVN0
b3ApCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVk
aWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEi
XTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxD
YXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1l
cmEpKTsKIAogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKICAgICBbd2ViVmll
dyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVD
VF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdl
YlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEpKTsKICAgICBbd2Vi
VmlldyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUo
d2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
Q2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcu
Z2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibm90aWZ5RW5kZWRFdmVudCgpIl07CiAg
ICAgW3dlYlZpZXcgX3N0b3BNZWRpYUNhcHR1cmVdOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFRFU1Qo
V2ViS2l0MiwgQ2FwdHVyZVN0b3ApCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJl
U3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CisgICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0
YXRlTm9uZSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InByb21wdEZvckNhcHR1cmUoKSJdOwogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07
CkBAIC0xOTcsMTQgKzE5NywxNCBAQCBURVNUKFdlYktpdDIsIENhcHR1cmVJbmRpY2F0b3JEZWxh
eSkKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW0dVTU1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uLmdldCgpIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAImd1bSJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWcuZ2V0KCldOwotICAgIHdlYlZpZXcuX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVz
dGluZyA9IDI7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZy5nZXQoKV0pOworICAgIFt3ZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdE
ZWxheUZvclRlc3Rpbmc6Ml07CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJN
ZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRp
YSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKIApAQCAtMjE1LDcg
KzIxNSw3IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZUluZGljYXRvckRlbGF5KQogICAgIEVYUEVD
VF9FUShbd2ViVmlldyBfbWVkaWFDYXB0dXJlU3RhdGVdLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFj
dGl2ZUNhbWVyYSk7CiAKICAgICAvLyBPbmUgYWRkaXRpb25hbCBzZWNvbmQgc2hvdWxkIGFsbG93
IHVzIHRvIGdvIGJhY2sgdG8gbm8gY2FwdHVyZSBiZWluZyByZXBvcnRlZC4KLSAgICBFWFBFQ1Rf
VFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVO
b25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0
KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkpOwogfQogCiBURVNUKFdlYktpdDIsIENhcHR1
cmVJbmRpY2F0b3JEZWxheVdoZW5DbG9zZWQpCkBAIC0yMzAsMTQgKzIzMCwxNCBAQCBURVNUKFdl
YktpdDIsIENhcHR1cmVJbmRpY2F0b3JEZWxheVdoZW5DbG9zZWQpCiAgICAgYXV0byBtZXNzYWdl
SGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJndW0iXTsKIAotICAgIGF1
dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKLSAgICB3ZWJW
aWV3Ll9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3RpbmcgPSAyOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKKyAg
ICBbd2ViVmlldyBfc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nOjJdOwog
CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKLSAgICBFWFBFQ1RfVFJV
RSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3Rp
dmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmll
dy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKIAogICAgIFtkZWxl
Z2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKQEAgLTI1OCwxMiArMjU4LDEyIEBAIFRFU1QoV2Vi
S2l0MiwgR2V0Q2FwYWJpbGl0aWVzKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24u
Z2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAg
ICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAiZ2V0VXNlck1lZGlhIl07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0
YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CisgICAgRVhQ
RUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2Fw
dHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJvbXB0
ZWRdOwogCkBAIC0zMzEsMTAgKzMzMSwxMCBAQCBURVNUKFdlYktpdCwgV2ViQXVkaW9BbmRHZXRV
c2VyTWVkaWEpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgYXV0byB1cmwgPSBhZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJnZXRVc2VyTWVkaWEtd2ViYXVkaW8iLCAiaHRt
bCIpKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYS13ZWJh
dWRpbyJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0
VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KaW5kZXggOWJmZmRhYzY1Nzk5NmUwOWIxNTc2YzE3
MmRhZTcwODdjZGE4MGI1My4uMTc4YzQ0Nzc2MGY1M2U2ODQ4NmYwZTUxODIwZWY3MTQzYWE0ZDBi
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9H
ZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCkBAIC03NSw5ICs3NSw5IEBAIFRFU1QoV2ViS2l0LCBO
YXZpZ2F0ZUR1cmluZ0dldFVzZXJNZWRpYVByb21wdCkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFD
YXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpw
cm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbTmF2aWdhdGlvbldoaWxlR2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgc2hv
dWxkUmVsZWFzZUluRW51bWVyYXRlID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKQEAgLTkyLDkgKzkyLDkgQEAgVEVTVChXZWJLaXQsIE5h
dmlnYXRlRHVyaW5nRGV2aWNlRW51bWVyYXRpb24pCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2Fw
dHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIHNob3Vs
ZFJlbGVhc2VJbkVudW1lcmF0ZSA9IHRydWU7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKQEAgLTEyMSw5ICsxMjEsOSBAQCBURVNUKFdl
YktpdCwgRGVmYXVsdERldmljZUlkSGFzaFNhbHRzRGlyZWN0b3J5KQogICAgIHByZWZlcmVuY2Vz
Ll9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1
cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVTOwogICAgIHByZWZlcmVuY2Vz
Ll9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRV
SURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdh
dGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAK
ICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImVudW1lcmF0ZU1lZGlhRGV2aWNlcyJd
OwogCkBAIC0xNTEsOSArMTUxLDkgQEAgVEVTVChXZWJLaXQsIERldmljZUlkSGFzaFNhbHRzRGly
ZWN0b3J5KQogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5l
Y3Rpb24gPSBOTzsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVk
ID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVT
OwotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdl
dCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRV
c2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2Vi
Vmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KaW5kZXgg
ZDA2Mjc2NWZjMjBhYTc4NGFlNWNmMWZlNjVlZjYxMDBhZmQ2NjMxOS4uOTQxNTE0MGRjMGFkZDIz
YjM2ZDUzNGFiMDkxNDJjZjIyMGFhYTQ4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KQEAgLTY4LDkgKzY4
LDkgQEAgVEVTVChXZWJLaXQyLCBHZXRVc2VyTWVkaWFSZXByb21wdCkKICAgICBwcmVmZXJlbmNl
cy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNl
cy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBb
W0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2Fw
dHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CiAg
ICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKQEAgLTEwNCwxMSArMTA0LDExIEBAIFRF
U1QoV2ViS2l0MiwgR2V0VXNlck1lZGlhUmVwcm9tcHRBZnRlckF1ZGlvVmlkZW9CZWluZ0Rlbmll
ZCkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9u
ID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlF
UzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAg
ICBhdXRvIHdlYlZpZXcgPSBbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Zy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJv
bXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbZGVs
ZWdhdGUgc2V0QXVkaW9EZWNpc2lvbjpfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudF07CiAgICAg
W2RlbGVnYXRlIHNldFZpZGVvRGVjaXNpb246X1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueV07Ci0g
ICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAImdldFVzZXJNZWRpYUF1ZGlvVmlkZW9DYXB0dXJlIl07CiAgICAgW2RlbGVnYXRlIHdh
aXRVbnRpbFByb21wdGVkXTsKQEAgLTEyNyw5ICsxMjcsOSBAQCBURVNUKFdlYktpdDIsIE11bHRp
cGxlR2V0VXNlck1lZGlhU3luY2hyb25vdXNseSkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0
dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW0dldFVzZXJNZWRp
YVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0p
OwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CiAgICAgW2RlbGVnYXRl
IHdhaXRVbnRpbFByb21wdGVkXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tCmluZGV4IDNkM2M2
MTYyZDM5NWU2NmVkNWQ1N2VhNzgwYTU5NDY2OWU3OTc1NGYuLjk1NmMxNzc0YzY1M2QwODI4ODg2
MTIzZDJiOTE5NWRlMjRkYTFjM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbQpAQCAtNjAs
OCArNjAsOCBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZQogICAgIC8vIEF0dGVtcHQgdG8gc2V0
IGEgcGFyYW1ldGVyIHVzaW5nIHRoZSBPYmplY3RpdmUgQyBBUEk6CiAgICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCi0gICAgQ3VzdG9tQnVuZGxlT2JqZWN0ICpj
dXN0b21PYmplY3QgPSBbW0N1c3RvbUJ1bmRsZU9iamVjdCBhbGxvY10gaW5pdFdpdGhWYWx1ZTox
MjM0XTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmplY3Q6Y3VzdG9t
T2JqZWN0IGZvckJ1bmRsZVBhcmFtZXRlcjpAIlRlc3RQYXJhbWV0ZXIxIl07CisgICAgYXV0byBj
dXN0b21PYmplY3QgPSBhZG9wdE5TKFtbQ3VzdG9tQnVuZGxlT2JqZWN0IGFsbG9jXSBpbml0V2l0
aFZhbHVlOjEyMzRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmpl
Y3Q6Y3VzdG9tT2JqZWN0LmdldCgpIGZvckJ1bmRsZVBhcmFtZXRlcjpAIlRlc3RQYXJhbWV0ZXIx
Il07CiAKICAgICBpZiAobG9hZERvbmUpCiAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0Zvcndh
cmQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNr
Rm9yd2FyZC5tbQppbmRleCA2N2JhZWViYTZkYzZmOTZmZjFmMjdhMzUzYzczMzU2OTYxNjdmYmQ3
Li4yOGIxODMxNjU5MDMwY2E0ZjhlMjcyNTI5Yjc1OTA1Y2ZkMzhjNmVkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNr
Rm9yd2FyZC5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdl
Q29uZmlndXJhdGlvbkNyZWF0ZSgpKTsgICAgICAgIAogICAgICAgICBXS1BhZ2VDb25maWd1cmF0
aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0LmdldCgpKTsKIAotICAg
ICAgICB3ZWJWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9uLmdldCgpXTsKKyAg
ICAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxvYWRlckNsaWVudDsK
ICAgICAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CmluZGV4IGIxYWYxNWFjYjQzYjZkYmFkN2Y3NWRiYjkwNGI5NzA2NmEzNjIxNjkuLjQ0YWI4NGJm
Yjk3Y2Y5ODNkNTc4ZDMzOGExODE1YWYyNDhiMTZkZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzYwLDcgKzM2MCw4IEBA
IFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGlyZWN0RG93bmxv
YWRXaXRoTG9hZGVkQ29udGVudCkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAg
ICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkxOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbW1t3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpb
W0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRPcmlnaW5hbFVSTDpzb3VyY2VVUkxdXTsKKyAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhFeHBlY3RlZE9yaWdpbmFsVVJMOnNvdXJjZVVSTF0pOworICAgIFtbW3dlYlZpZXcgY29uZmln
dXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdh
dGUuZ2V0KCldOwogCiAgICAgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAg
ICBOU1VSTCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA0YjM2NWU4
YmI5MzdlZWQxNWU0YWZiY2I1NjRmYmM4Yjc3OGU1NGU4Li5mMGI4YWQ5OTg2ZWY3MTEwOGJjODZi
OTc4NTc2ZWU1NThkNDNkNmNmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMTIzLDEx
ICsxMTIzLDExIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSW5qZWN0U2NyaXB0SW5Ob25B
cHBCb3VuZFN1YmZyYW1lQXBwQm91bmRNYWluZnJhbWVGYWlsCiAgICAgY2xlYW5VcEluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIAotc3RhdGljIE5TTXV0YWJsZVNldDxXS0Zy
YW1lSW5mbyAqPiAqYWxsRnJhbWVzOworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVTZXQ8V0tG
cmFtZUluZm8gKj4+IGFsbEZyYW1lczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZh
U2NyaXB0SW5Ob25BcHBCb3VuZEZyYW1lRmFpbHMpCiB7Ci0gICAgYWxsRnJhbWVzID0gW1tOU011
dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOworICAgIGFsbEZyYW1lcyA9IGFk
b3B0TlMoW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdKTsKIAogICAg
IGlzRG9uZSA9IGZhbHNlOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNl
dHRpbmdzKCk7CkBAIC0xMTY0LDEyICsxMTY0LDEyIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgSmF2YVNjcmlwdEluTm9uQXBwQm91bmRGcmFtZUZhaWxzKQogCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKIAotICAgIEVYUEVDVF9FUShhbGxG
cmFtZXMuY291bnQsIDN1KTsKKyAgICBFWFBFQ1RfRVEoW2FsbEZyYW1lcyBjb3VudF0sIDN1KTsK
IAogICAgIHN0YXRpYyBzaXplX3QgZmluaXNoZWRGcmFtZXMgPSAwOwogICAgIHN0YXRpYyBib29s
IGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJh
bWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7
CiAgICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZS5pc01haW5GcmFtZTsKICAgICAgICAg
W3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlvbi5ocmVmOyIgYXJn
dW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRl
ZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJhbWVdIChpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBpZiAoaXNNYWluRnJhbWUpIHsKQEAg
LTExODEsNyArMTE4MSw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSmF2YVNjcmlwdElu
Tm9uQXBwQm91bmRGcmFtZUZhaWxzKQogICAgICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9tYWluKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxsRnJhbWVzLmNvdW50ICogMikK
KyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdICog
MikKICAgICAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9XTsKIApAQCAtMTE5
Niw3ICsxMTk2LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZhU2NyaXB0SW5Ob25B
cHBCb3VuZEZyYW1lRmFpbHMpCiAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IFdLRXJyb3JKYXZhU2NyaXB0QXBwQm91bmREb21haW4pOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAg
ICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQog
ICAgICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH0KQEAgLTEz
NTEsNyArMTM1MSw3IEBAIHN0YXRpYyB2b2lkIGxvYWRSZXF1ZXN0KFJldGFpblB0cjxUZXN0V0tX
ZWJWaWV3PiB3ZWJWaWV3LCBOU1N0cmluZyAqdXJsKQogCiBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogewotICAgIGFs
bEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XTsKKyAg
ICBhbGxGcmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9j
XSBpbml0XSk7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3Mo
KTsKIAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05h
bWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGlu
ZzpZRVNdOwpAQCAtMTM2MywxMiArMTM2MywxMiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogICAgIE5TU3RyaW5n
ICp1cmwgPSBAImluLWFwcC1icm93c2VyOi8vYXBwbGUuY29tL2luLWFwcC1icm93c2VyLXByaXZh
Y3ktdGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSI7CiAgICAgbG9hZFJlcXVlc3Qod2ViVmlldywg
dXJsKTsKICAgICAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQ
RUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpbmlz
aGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZv
ciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUlu
Zm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZyYW1l
ID0gZnJhbWUuaXNNYWluRnJhbWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3Jp
cHQ6QCJyZXR1cm4gbG9jYXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBp
bkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlv
bkhhbmRsZXI6W2lzTWFpbkZyYW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKTsKQEAgLTEzODAsNyArMTM4MCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJv
dXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lQXBwQm91bmQpCiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJh
Ym91dDpibGFuayJdKTsKIAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxs
RnJhbWVzLmNvdW50KQorICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZy
YW1lcyBjb3VudF0pCiAgICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07
CiAgICAgfQpAQCAtMTM4OSw3ICsxMzg5LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBB
Ym91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVBcHBCb3VuZCkKIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3Vu
ZCkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxv
Y10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1l
SW5mbyAqPiBhbGxvY10gaW5pdF0pOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CiAKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKQEAgLTE0MDAsMTUgKzE0MDAsMTUgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3Vu
ZCkKICAgICBOU1N0cmluZyAqdXJsID0gQCJpbi1hcHAtYnJvd3NlcjovL2FwcGxlLmNvbS9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtYWJvdXQtYmxhbmstc3ViZnJhbWUiOwogICAgIGxvYWRS
ZXF1ZXN0KHdlYlZpZXcsIHVybCk7CiAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAy
dSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMg
c2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxz
ZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZv
ciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBbd2Vi
VmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1bWVu
dHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVs
dENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVy
cm9yKSB7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKLSAgICAgICAgICAgIGlm
ICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCkKKyAgICAgICAgICAgIGlmICgr
K2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdKQogICAgICAgICAgICAgICAgIGlz
RG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9sc1Rl
c3RzLm1tCmluZGV4IGY3YjgxZjBhYmQ1ZWY1M2E3NTc2YTAzZDg3NTczY2FmNTQ3YTViZDEuLjZk
ZjIwN2IyZjIwNzljMDBhZTBmMmEyZjJjMWE4ODhlZmZmODkwNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5n
Q29udHJvbHNUZXN0cy5tbQpAQCAtOTIsOSArOTIsOSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAjaWYgUExBVEZPUk0oTUFDKQogVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93
UGxheWluZ0NvbnRyb2xzRG9Ob3RTaG93Rm9yRm9yZWdyb3VuZFBhZ2UpCiB7Ci0gICAgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNl
ckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1lZGlhVHlw
ZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5v
bmVdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgd2FpdEZv
ck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAKQEAgLTExMyw5ICsxMTMsOSBAQCBURVNUKE5vd1BsYXlp
bmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNEb05vdFNob3dGb3JGb3JlZ3JvdW5k
UGFnZSkKIAogVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xz
U2hvd0ZvckJhY2tncm91bmRQYWdlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9
IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlv
bkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVz
dC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJd
OwogCkBAIC0xMzAsOSArMTMwLDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93
UGxheWluZ0NvbnRyb2xzU2hvd0ZvckJhY2tncm91bmRQYWdlKQogCiBURVNUKE5vd1BsYXlpbmdD
b250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNIaWRlQWZ0ZXJTaG93aW5nS2VlcHNTZXNz
aW9uQWN0aXZlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24g
PSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5n
VGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
OldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWlu
ZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0xNTMs
OSArMTUzLDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRy
b2xzSGlkZUFmdGVyU2hvd2luZ0tlZXBzU2Vzc2lvbkFjdGkKIAogVEVTVChOb3dQbGF5aW5nQ29u
dHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2xlYXJJbmZvQWZ0ZXJTZXNzaW9uSXNOb0xv
bmdlclZhbGlkKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24g
PSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5n
VGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMy
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
OldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgNDgwLCAzMjApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWlu
ZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0xOTQs
OSArMTk0LDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRy
b2xzQ2xlYXJJbmZvQWZ0ZXJTZXNzaW9uSXNOb0xvbmdlclYKIAogVEVTVChOb3dQbGF5aW5nQ29u
dHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2hlY2tSZWdpc3RlcmVkKQogewotICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5
cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHNldFdpbmRvd1Zpc2libGU6
Tk9dOwpAQCAtMjIyLDkgKzIyMiw5IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5v
d1BsYXlpbmdDb250cm9sc0NoZWNrUmVnaXN0ZXJlZCkKIC8vIEZJWE1FOiBSZS1lbmFibGUgdGhp
cyB0ZXN0IG9uY2UgPHdlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIHJlc29sdmVkLgogVEVTVChOb3dQ
bGF5aW5nQ29udHJvbHNUZXN0cywgRElTQUJMRURfTm93UGxheWluZ0NvbnRyb2xzSU9TKQogewot
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1Jl
cXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25l
OwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMyMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxN
ZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rl
c3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAzMjAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJW
aWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbQppbmRl
eCAwM2UwZTcwZWQzN2Y5Nzg4OTAyZmU2ZGE5MDVlNGIwY2FhOTZmMDM3Li44YWVmNjI4ZmM2MzQw
NGViOWVlYzY1Nzk5YzhlZTQwNmZlNjg3NGZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KQEAgLTE1
Miw4ICsxNTIsOCBAQCBURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJbWFnZUZpbGVBbmRSVEYpCiB7
CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CiAgICAgYXV0byB0ZXh0ID0gYWRv
cHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKLSAgICBbdGV4
dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpAImxpbmsgdG8gIl1dOwotICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJp
bmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiYXBwbGUiIGF0
dHJpYnV0ZXM6QHsgTlNMaW5rQXR0cmlidXRlTmFtZTogW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3d3dy5hcHBsZS5jb20vIl0gfV1dOworICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRT
dHJpbmc6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCJsaW5rIHRvICJdKS5nZXQoKV07CisgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzph
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImFwcGxl
IiBhdHRyaWJ1dGVzOkB7IE5TTGlua0F0dHJpYnV0ZU5hbWU6IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyJdIH1dKS5nZXQoKV07CiAgICAgTlNEYXRhICpydGZE
YXRhID0gW3RleHQgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0IGxlbmd0aF0pIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XTsKICAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2Fy
ZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgpIF0sIE5TUGFzdGVib2FyZFR5
cGVSVEYsIHJ0ZkRhdGEsIG5pbCk7CiAgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3
VGltZW91dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJl
bnRXZWJWaWV3VGltZW91dC5tbQppbmRleCBjNTU0MjVjMDAyMGQ4N2YwNzFjMGQyNTBjODAzYTFm
OTM3ZGQ4MTU1Li5hMmU0MzAyMjRlOWNjZWY5YmFkZWRmZGU3NzRkYWQ4ODFjMTM3NjlmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2Vi
Vmlld1RpbWVvdXQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tCkBAIC0zNCw3ICszNCw3IEBACiAKIFRFU1QoV2Vi
S2l0LCBSZXBhcmVudFdlYlZpZXdUaW1lb3V0KQogewotICAgIFJldGFpblB0cjxfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldElnbm9yZVN5bmNocm9u
b3VzTWVzc2FnaW5nVGltZW91dHNGb3JUZXN0aW5nOllFU107CiAKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TY2hlbWVSZWdpc3RyeS5tbQppbmRleCAyYzhhODQxNWFj
ZjhlNTk2YjMwOGE1YzRjNzU3MGQ3MTMxOTJiZmFmLi4yMTA4MjA2ZmE3OTQzZDMyYzU4MGNlMjlj
YzZmYjgyZGFiMTE4NzhhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVnaXN0cnkubW0KQEAgLTE2OSw3ICsxNjksOCBAQCBURVNU
KFdlYktpdCwgV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0X1NhbWVPcmlnaW5MbwogICAgICAgICBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSyhlY2hv
U2NoZW1lLlVURjhTdHJpbmcpLmdldCgpKTsKIAogICAgICAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
VmlldyB7IGNvbnRleHQuZ2V0KCkgfTsKLSAgICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbV0tDb250ZXh0UmVnaXN0
ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0XTsKKyAgICAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tDb250ZXh0
UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAg
ICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9h
ZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48Ym9keT48c2NyaXB0IHNyYz0nZWNobzovL0Ev
QV8xJz48L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJlY2hvOi8vQSJd
XTsKICAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKICAgICAgICAgZGlkRmluaXNo
TG9hZCA9IGZhbHNlOwpAQCAtMTkyLDcgKzE5Myw4IEBAIFRFU1QoV2ViS2l0LCBXS0NvbnRleHRS
ZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RfQ3Jvc3NPcmlnaW5M
CiAgICAgICAgIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdChjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKGVjaG9TY2hlbWUuVVRGOFN0cmluZyku
Z2V0KCkpOwogCiAgICAgICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3IHsgY29udGV4dC5nZXQo
KSB9OwotICAgICAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlz
cGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBh
dXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxv
YWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcucGxhdGZv
cm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjwhRE9D
VFlQRSBodG1sPjxib2R5PjxzY3JpcHQgc3JjPSdlY2hvOi8vQS9BXzEnPjwvc2NyaXB0PiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImVjaG86Ly9CIl1dOwogICAgICAgICBVdGlsOjpy
dW4oJmRpZEZpbmlzaExvYWQpOwogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZp
ZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZp
ZXcubW0KaW5kZXggOGJjNjUzY2E5MDY1YjI3ZGRiYzJhY2ZmNmQ4NmJkMmM5NzdhMjU3Yy4uYmQ0
YjM1ZjIwMDAwMTEwZThiNWUwNDZkYzA3YjMwYmQzODA2ODllYyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TeXN0ZW1QcmV2aWV3Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbQpAQCAt
NjgsNyArNjgsNyBAQCBURVNUKFdlYktpdCwgU3lzdGVtUHJldmlld1RyaWdnZXJlZCkKICAgICBh
dXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RTeXN0ZW1QcmV2aWV3VHJpZ2dlcmVk
SGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJ0ZXN0U3lzdGVtUHJldmlldyJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInN5c3Rl
bS1wcmV2aWV3LXRyaWdnZXIiXTsKICAgICBVdGlsOjpydW4oJmhhc1RyaWdnZXJJbmZvKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09B
dXRob3JpemF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
ZXN0U09BdXRob3JpemF0aW9uLm1tCmluZGV4IDg2ZGQxMWUxNjdlYWMzYTFkMTcxZGIyYjZlYzBm
MDJlZGMzMGViOWQuLjMzMjZkNTc2MjRiZGEwMGE4ODBhZTFjZjEwMjVlZmYzMGNlM2Q4ZDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0
aG9yaXphdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KQEAgLTE4NCw3ICsxODQsNyBAQCAtIChXS1dlYlZpZXcg
Kil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJh
dGlvbjooV0tXZQogewogICAgIEVYUEVDVF9GQUxTRShuZXdXaW5kb3dDcmVhdGVkKTsKICAgICBu
ZXdXaW5kb3dDcmVhdGVkID0gdHJ1ZTsKLSAgICBnTmV3V2luZG93ID0gW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
OworICAgIGdOZXdXaW5kb3cgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW2dOZXdX
aW5kb3cgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOnNlbGZdOwogICAgIHJldHVybiBnTmV3V2luZG93
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0aW9uQWN0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0
aW9uQWN0aW9uLm1tCmluZGV4IGM4NmZjNGNiMzYzYjM1MTlkY2U4ZGQxOTJkYzAxODhjZWZhYTMx
ZjAuLmI5ZTMxMDhlYjczN2U3Njk2ZGI4ZmJmYTNlYWNmMjM5ZTc0MWIwZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckluaXRpYXRlZEFjdGlv
bkluTmF2aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1VzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTgx
LDkgKzgxLDkgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKlVSTFdpdGhGcmFnbWVudChOU1N0cmlu
ZyAqZnJhZ21lbnQpCiAgICAgewotICAgICAgICBOU1VSTENvbXBvbmVudHMgKlVSTENvbXBvbmVu
dHMgPSBbW05TVVJMQ29tcG9uZW50cyBhbGxvY10gaW5pdFdpdGhVUkw6VVJMLmdldCgpIHJlc29s
dmluZ0FnYWluc3RCYXNlVVJMOk5PXTsKLSAgICAgICAgVVJMQ29tcG9uZW50cy5mcmFnbWVudCA9
IGZyYWdtZW50OwotICAgICAgICByZXR1cm4gVVJMQ29tcG9uZW50cy5VUkw7CisgICAgICAgIGF1
dG8gdXJsQ29tcG9uZW50cyA9IGFkb3B0TlMoW1tOU1VSTENvbXBvbmVudHMgYWxsb2NdIGluaXRX
aXRoVVJMOlVSTC5nZXQoKSByZXNvbHZpbmdBZ2FpbnN0QmFzZVVSTDpOT10pOworICAgICAgICBb
dXJsQ29tcG9uZW50cyBzZXRGcmFnbWVudDpmcmFnbWVudF07CisgICAgICAgIHJldHVybiBbdXJs
Q29tcG9uZW50cyBVUkxdOwogICAgIH0KIAogICAgIHZvaWQgbG9hZFRlc3QoTlNTdHJpbmcgKnRl
c3QpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJNZWRpYURpc2FibGVkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Vc2VyTWVkaWFEaXNhYmxlZC5tbQppbmRleCBjYzU0NWI0OTFlMDI4OTRhNzYzZjViOTI4MWEw
ZDdlODYwNGQ3YWJkLi41MWUzNGEyZTY1NDRlNzZmZTZlMTAzMWE2ZjJlOWI5OTQ1NGM0MTY5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRp
YURpc2FibGVkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VXNlck1lZGlhRGlzYWJsZWQubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCBURVNUX0YoTWVkaWFDYXB0
dXJlRGlzYWJsZWRUZXN0LCBVbnNlY3VyZUNvbnRleHQpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlh
Q2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IFlFUzsKIAogICAgIHJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIFttX3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aHRt
bD48Ym9keT48c2NyaXB0PndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKE5hdmlnYXRvci5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ21lZGlhRGV2
aWNlcycpID8gJ2hhcycgOiAnbm9uZScpOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiBiYXNlVVJM
OiBbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImh0dHA6Ly90ZXN0Lm9yZyJdXTsKKyAg
ICBbbV93ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+PHNjcmlwdD53aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShOYXZpZ2F0b3Iu
cHJvdG90eXBlLmhhc093blByb3BlcnR5KCdtZWRpYURldmljZXMnKSA/ICdoYXMnIDogJ25vbmUn
KTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIgYmFzZVVSTDphZG9wdE5TKFtbTlNVUkwgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOkAiaHR0cDovL3Rlc3Qub3JnIl0pLmdldCgpXTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICBFWFBFQ1Rf
U1RSRVEoWyhOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSBVVEY4U3RyaW5nXSwg
Im5vbmUiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDg3YTg1MDQzMmQ0YmZkNWYwZTU4NTZm
NDQwN2ZkMDFlYTI3YmVkNDMuLmQ0OTgwY2ZkNDcwMmViM2IzMmExODNkNTllMmM5MDM0MmYyZTNi
MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMjU3LDE3ICsyNTcsMTcgQEAgVEVTVChXS0hU
VFBDb29raWVTdG9yZSwgSHR0cE9ubHkpCiAgICAgZ290RmxhZyA9IGZhbHNlOwogICAgIEFTU0VS
VF9FUShbY29va2llcyBjb3VudF0sIDB1KTsKIAotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmNv
b2tpZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAg
IGF1dG8gY29va2llUHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XSk7CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llTmFt
ZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9i
amVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwogICAgIFtjb29r
aWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5Ok5TSFRUUENv
b2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiL3BhdGgiIGZv
cktleTpOU0hUVFBDb29raWVQYXRoXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6
QFlFUyBmb3JLZXk6QCJIdHRwT25seSJdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGh0
dHBPbmx5Q29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQ
cm9wZXJ0aWVzXTsKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBodHRwT25seUNvb2tpZSA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQo
KV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llVmFsdWUyIiBmb3JL
ZXk6TlNIVFRQQ29va2llVmFsdWVdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGh0dHBP
bmx5Q29va2llMiA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJv
cGVydGllc107CisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gaHR0cE9ubHlDb29raWUyID0g
W05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzLmdldCgp
XTsKICAgICBbY29va2llUHJvcGVydGllcyByZW1vdmVPYmplY3RGb3JLZXk6QCJIdHRwT25seSJd
OwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IG5vdEh0dHBPbmx5Q29va2llID0gW05TSFRU
UENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzXTsKKyAgICBSZXRh
aW5QdHI8TlNIVFRQQ29va2llPiBub3RIdHRwT25seUNvb2tpZSA9IFtOU0hUVFBDb29raWUgY29v
a2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQoKV07CiAKICAgICBFWFBFQ1Rf
VFJVRShodHRwT25seUNvb2tpZS5nZXQoKS5IVFRQT25seSk7CiAgICAgRVhQRUNUX0ZBTFNFKG5v
dEh0dHBPbmx5Q29va2llLmdldCgpLkhUVFBPbmx5KTsKQEAgLTM2MiwxNCArMzYyLDE0IEBAIFRF
U1QoV0tIVFRQQ29va2llU3RvcmUsIENyZWF0aW9uVGltZSkKIAogICAgIGdsb2JhbENvb2tpZVN0
b3JlID0gZGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZTsKIAotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKmNvb2tpZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
OworICAgIGF1dG8gY29va2llUHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29v
a2llTmFtZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwogICAgIFtjb29raWVQcm9wZXJ0aWVz
IHNldE9iamVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwogICAg
IFtjb29raWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5Ok5T
SFRUUENvb2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiL3Bh
dGgiIGZvcktleTpOU0hUVFBDb29raWVQYXRoXTsKICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGNy
ZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6
Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpAIkNyZWF0ZWQiXTsKLSAgICBSZXRhaW5QdHI8TlNI
VFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOmNv
b2tpZVByb3BlcnRpZXNdOworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGNvb2tpZSA9IFtO
U0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQoKV07
CiAKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOmNvb2tpZS5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpbXSgpIHsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVs
ZWdhdGUubW0KaW5kZXggNWEwNDY0MmVmYTQyMjRjM2IyMTdmMGEyMTI0ODFlMGY0ZTAwN2NkOC4u
OWRlYTYzY2Q4NmE3YjdmMTJkOTA4NTliZjQwMmMyMTFiZDIyNDljZSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbQpAQCAtMTI0LDcgKzEyNCw3IEBAIC0gKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9jCiAg
ICAgc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUgPSBbSW5zcGVjdG9yRGVsZWdhdGUgbmV3XTsKICAg
ICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJlZEluc3BlY3RvckRlbGVnYXRlLmdldCgpXTsK
IAotICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBbW1NpbXBsZVVSTFNjaGVtZUhhbmRsZXIg
YWxsb2NdIGluaXRdOworICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbU2lt
cGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gaW5zcGVjdG9yQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpz
aGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3RpbmciXTsKICAg
ICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQppbmRleCBl
NzJlNjBmNzQzYjFiM2RjNGQzY2YyZGExY2QxNWJmMDUxMDgyZmI4Li5lMjMwYjA5NGNhNTk2MTc0
ZTYzMDVmN2U4N2E1N2I0YjJiYmNmYzg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQpAQCAtNDE0LDE0ICs0MTQsMTQgQEAgQGVu
ZAogCiBURVNUKFBERiwgUHJpbnRTaXplKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHNjaGVt
ZUhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlciBmb3JVUkxT
Y2hlbWU6QCJ0ZXN0Il07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tQcmlu
dFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0KLSAgICBzY2hlbWVIYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIg
PSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAg
IGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10p
OworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1ByaW50VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIHNjaGVtZUhhbmRsZXIuZ2V0KCkuc3Rh
cnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFz
az4gdGFzaykgewogICAgICAgICBhdXRvIHVybCA9IHRhc2sucmVxdWVzdC5VUkw7CiAgICAgICAg
IE5TRGF0YSAqZGF0YTsKICAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlOwpAQCAtNDM3LDggKzQz
Nyw4IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgICAgICAgICBtaW1lVHlwZSA9IEAiYXBw
bGljYXRpb24vcGRmIjsKICAgICAgICAgICAgIGRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdF9wcmlu
dCIgd2l0aEV4dGVuc2lvbjpAInBkZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV07CiAgICAgICAgIH0KLSAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBb
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmwgTUlNRVR5cGU6bWltZVR5cGUg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBh
dXRvcmVsZWFzZV07Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07
CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOm1pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpk
YXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRSZWNl
aXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0
YTpkYXRhXTsKICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICB9OwpAQCAtNDQ5LDcgKzQ0
OSw3IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgRVhQRUNUX0VRKHNpemUud2lkdGgsIDYx
Mi4wKTsKIAogICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFNpemUgPSBmYWxzZTsKLSAgICBbd2Vi
VmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6d2ViVmlldy5fbWFpbkZyYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOl4oQ0dTaXplIHJlcXVlc3RlZFNpemUpIHsKKyAgICBbd2ViVmlldyBfZ2V0
UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6W3dlYlZpZXcgX21haW5GcmFtZV0gY29tcGxldGlvbkhh
bmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgewogICAgICAgICBFWFBFQ1RfRVEocmVxdWVz
dGVkU2l6ZS5oZWlnaHQsIDc5Mi4wKTsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNpemUu
d2lkdGgsIDYxMi4wKTsKICAgICAgICAgcmVjZWl2ZWRTaXplID0gdHJ1ZTsKQEAgLTQ2NCw3ICs0
NjQsNyBAQCBURVNUKFBERiwgUHJpbnRTaXplKQogICAgIEVYUEVDVF9FUShtYWluRnJhbWVTaXpl
LndpZHRoLCAwLjApOwogICAgIAogICAgIHJlY2VpdmVkU2l6ZSA9IGZhbHNlOwotICAgIFt3ZWJW
aWV3IF9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFtZTp3ZWJWaWV3Ll9tYWluRnJhbWUgY29tcGxl
dGlvbkhhbmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgeworICAgIFt3ZWJWaWV3IF9nZXRQ
REZGaXJzdFBhZ2VTaXplSW5GcmFtZTpbd2ViVmlldyBfbWFpbkZyYW1lXSBjb21wbGV0aW9uSGFu
ZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CiAgICAgICAgIEVYUEVDVF9FUShyZXF1ZXN0
ZWRTaXplLmhlaWdodCwgMC4wKTsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNpemUud2lk
dGgsIDAuMCk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRydWU7CkBAIC00NzcsNyArNDc3LDcg
QEAgVEVTVChQREYsIFByaW50U2l6ZSkKICAgICBFWFBFQ1RfTkVBUihwZGZGcmFtZVNpemUud2lk
dGgsIDEyOS42MDAwMDYsIC4wMDAwMSk7CiAKICAgICByZWNlaXZlZFNpemUgPSBmYWxzZTsKLSAg
ICBbd2ViVmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6ZGVsZWdhdGUubGFzdFByaW50
ZWRGcmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CisgICAg
W3dlYlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOltkZWxlZ2F0ZSBsYXN0UHJpbnRl
ZEZyYW1lXSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CiAgICAg
ICAgIEVYUEVDVF9ORUFSKHJlcXVlc3RlZFNpemUuaGVpZ2h0LCAyOC43OTk5OTksIC4wMDAwMSk7
CiAgICAgICAgIEVYUEVDVF9ORUFSKHJlcXVlc3RlZFNpemUud2lkdGgsIDEyOS42MDAwMDYsIC4w
MDAwMSk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDYW5kaWRh
dGVUZXN0cy5tbQppbmRleCAwZTdhZTk2ZTFiNmExMzc4YTBlY2YyNzZmZDNkODZjZDFkY2JiYzc3
Li43N2QyNGZhMDVmMzBmMTQzYzkxNDAzOTNkMzJlOGMyNzgyMDEzNWQ5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRl
c3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW0KQEAgLTEyNSw5ICsxMjUsOSBAQCAtICh2b2lkKXR5cGVTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIGlucHV0TWVzc2FnZTooTlNTdHJpbmcgKilpbnB1dE1lc3Nh
Z2UKICAgICB9CiB9CiAKLSsgKGluc3RhbmNldHlwZSlzZXRVcFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIHRlc3RQYWdlOihOU1N0cmluZyAqKXRlc3RQYWdlTmFtZQorKyAoUmV0YWluUHRyPENhbmRp
ZGF0ZVRlc3RXZWJWaWV3PilzZXRVcFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHRlc3RQYWdlOihO
U1N0cmluZyAqKXRlc3RQYWdlTmFtZQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dl
YlZpZXcgPSBbW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1l
XTsKKyAgICBhdXRvIHdrV2ViVmlldyA9IGFkb3B0TlMoW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0pOwogCiAgICAgW3drV2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDp0ZXN0UGFnZU5hbWVdOwogICAgIFt3a1dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJm
b2N1c2VkIl07CkBAIC0xNDEsNyArMTQxLDcgQEAgQGVuZAogCiBURVNUKFdLV2ViVmlld0NhbmRp
ZGF0ZVRlc3RzLCBTb2Z0U3BhY2VSZXBsYWNlbWVudEFmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0
aG91dFJlcGxhY2VtZW50KQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dlYlZpZXcg
PSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Il07
CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1z
Y3JvbGxhYmxlLWRvY3VtZW50Il07CiAKICAgICBbd2tXZWJWaWV3IGluc2VydENhbmRpZGF0ZXNB
bmRXYWl0Rm9yUmVzcG9uc2U6QCJhcHBsZSAiIHJhbmdlOk5TTWFrZVJhbmdlKDAsIDApXTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxlICIsIFt3a1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpHZXRJbnB1dFZhbHVlSlNFeHByZXNzaW9uXSk7CkBAIC0xNTYsNyArMTU2LDcg
QEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU29mdFNwYWNlUmVwbGFjZW1lbnRBZnRl
ckNhbmRpZGF0ZUluc2VydGlvbldpdGhvdXQKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0
cywgSW5zZXJ0Q2hhcmFjdGVyc0FmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0aFNvZnRTcGFjZSkK
IHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RX
ZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdl
OkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJW
aWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVu
dCJdOwogCiAgICAgW3drV2ViVmlldyBpbnNlcnRDYW5kaWRhdGVzQW5kV2FpdEZvclJlc3BvbnNl
OkAiZm9vICIgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMCldOwogICAgIEVYUEVDVF9XS19TVFJFUSgi
Zm9vICIsIFt3a1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpHZXRJbnB1dFZh
bHVlSlNFeHByZXNzaW9uXSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgVEVTVChXS1dlYlZpZXdDYW5k
aWRhdGVUZXN0cywgSW5zZXJ0Q2hhcmFjdGVyc0FmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0aFNv
ZnRTcGEKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgSW5zZXJ0Q2FuZGlkYXRlRnJv
bVBhcnRpYWxseVR5cGVkUGhyYXNlV2l0aFNvZnRTcGFjZSkKIHsKLSAgICBDYW5kaWRhdGVUZXN0
V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Ny
b2xsYWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RX
ZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdl
OkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogCiAgICAgW3drV2ViVmll
dyB0eXBlU3RyaW5nOkAiaGVsIiBpbnB1dE1lc3NhZ2U6QCJpbnB1dCJdOwogICAgIFt3a1dlYlZp
ZXcgaW5zZXJ0Q2FuZGlkYXRlc0FuZFdhaXRGb3JSZXNwb25zZTpAImhlbGxvICIgcmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgMyldOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlk
YXRlVGVzdHMsIEluc2VydENhbmRpZGF0ZUZyb21QYXJ0aWFsbHlUeXBlZFBocmFzZVdpdGhTb2Z0
U3BhCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIENsaWNraW5nSW5UZXh0RmllbGRE
b2VzTm90VGhyYXNoQ2FuZGlkYXRlVmlzaWJpbGl0eSkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2Vi
VmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAibGFyZ2UtaW5wdXQtZmllbGQtZm9j
dXMtb25sb2FkIl07CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcg
c2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJsYXJn
ZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQiXTsKIAogICAgIFt3a1dlYlZpZXcgdHlwZVN0cmlu
ZzpAInRlc3QiIGlucHV0TWVzc2FnZTpAImlucHV0Il07CiAgICAgW3drV2ViVmlldyBleHBlY3RD
YW5kaWRhdGVMaXN0VmlzaWJpbGl0eVVwZGF0ZXM6MCB3aGVuUGVyZm9ybWluZ0FjdGlvbnM6Xigp
CkBAIC0yMDMsNyArMjAzLDcgQEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgQ2xpY2tp
bmdJblRleHRGaWVsZERvZXNOb3RUaHJhc2hDYW5kaWRhdGVWaXNpYmlsaXQKIAogVEVTVChXS1dl
YlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkTm90UmVxdWVzdENhbmRpZGF0ZXNJblBhc3N3b3Jk
RmllbGQpCiB7Ci0gICAgQ2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtbQ2FuZGlk
YXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCldOworICAgIGF1dG8gd2tXZWJWaWV3ID0gYWRvcHROUyhbW0NhbmRpZGF0ZVRlc3RXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAg
ICAgW3drV2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHQtYW5kLXBhc3N3b3JkLWlucHV0
cyJdOwogICAgIFt3a1dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKICAgICBbd2tX
ZWJWaWV3IF9mb3JjZVJlcXVlc3RDYW5kaWRhdGVzXTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBURVNU
KFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBTaG91bGROb3RSZXF1ZXN0Q2FuZGlkYXRlc0luUGFz
c3dvcmRGaWVsZCkKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkUmVxdWVz
dENhbmRpZGF0ZXNJblRleHRGaWVsZCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmlldyAqd2tX
ZWJWaWV3ID0gW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV07CisgICAgYXV0byB3a1dlYlZpZXcgPSBhZG9wdE5TKFtb
Q2FuZGlkYXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKICAgICBbd2tXZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dC1h
bmQtcGFzc3dvcmQtaW5wdXRzIl07CiAgICAgW3drV2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImxv
YWRlZCJdOwogICAgIFt3a1dlYlZpZXcgX2ZvcmNlUmVxdWVzdENhbmRpZGF0ZXNdOwpAQCAtMjQ3
LDcgKzI0Nyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIFNob3VsZFJlcXVlc3RD
YW5kaWRhdGVzSW5UZXh0RmllbGQpCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIENh
bmRpZGF0ZVJlY3RGb3JFbXB0eVBhcmFncmFwaCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmll
dyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJs
ZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3
IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5w
dXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogICAgIE5TUmVjdCBjYW5kaWRhdGVS
ZWN0ID0gW3drV2ViVmlldyBfY2FuZGlkYXRlUmVjdF07CiAgICAgRVhQRUNUX05FKDAsIGNhbmRp
ZGF0ZVJlY3Qub3JpZ2luLnkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0RvZXNO
b3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbQppbmRleCA4ODcxNjkzNDYwN2Y0Y2FjY2QzOWMz
ZmIzNWQ0NGExODg2YTExZmJiLi4yNmNhNDU3YzRiNzZiNTEyZmZhZTRmYjQ5N2JiM2ZiYzViMTJh
MzA0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
V2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0
aWFsaXphdGlvbi5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8ZmNudGwuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogVEVTVChXS1dlYlZpZXcs
IEluaXRpYWxpemluZ1dlYlZpZXdXaXRoRXBoZW1lcmFsU3RvcmFnZURvZXNOb3RMb2cpCiB7CkBA
IC00MSwxMiArNDIsMTIgQEAgVEVTVChXS1dlYlZpZXcsIEluaXRpYWxpemluZ1dlYlZpZXdXaXRo
RXBoZW1lcmFsU3RvcmFnZURvZXNOb3RMb2cpCiAgICAgZHVwMihwWzFdLCBTVERFUlJfRklMRU5P
KTsKICAgICBjbG9zZShwWzFdKTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZp
Z3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIF9X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2wgPSBbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uXTsKLSAgICBjb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVd
OworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSkuZ2V0KCldOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vi
c2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CiAKLSAgICBbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgRklMRSAqc3RkZXJyRmlsZUhhbmRsZSA9IGZkb3BlbihwWzBdLCAiciIpOwogICAg
IGNoYXIgYnVmZmVyWzEwMjRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5t
bQppbmRleCAxMDMwNTE1N2U1MjMyZTFmNDk2MDMyYjVmOGUwMjdhZmZmNjA2NGVkLi41NmIxMjFi
YzlhODA0MjM3MjQ0YzRiOWE1YzIwNDk3OGQzN2M1OTE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2
YWx1YXRlSmF2YVNjcmlwdC5tbQpAQCAtNDczLDcgKzQ3Myw4IEBAIFRFU1QoV2ViS2l0LCBTUElK
YXZhc2NyaXB0TWFya3VwVnNBUElDb250ZW50SmF2YVNjcmlwdCkKIAogfQogCi1zdGF0aWMgTlNN
dXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+ICphbGxGcmFtZXM7CitzdGF0aWMgUmV0YWluUHRyPE5T
TXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPj4gYWxsRnJhbWVzOworCiBAaW50ZXJmYWNlIEZyYW1l
c01lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5k
CiAKQEAgLTQ5OSw3ICs1MDAsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnVzZXJTY3JpcHRTb3VyY2Ug
PSBAIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmZyYW1lc1Rlc3RlcgogLy8gYW5kIGNh
bGxBc3luY0phdmFTY3JpcHQgdG8gY29uZmlybSB0aGF0IGl0IGNhbiBleGVjdXRlIEpTIGRpcmVj
dGx5IGluIGVhY2ggb2YgdGhvc2UgZnJhbWVzLgogVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEph
dmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05T
TXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0g
YWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRnJhbWVzTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0
IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6V0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5P
IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZF0pOwogCkBA
IC01MjcsMTIgKzUyOCwxMiBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdElu
RnJhbWVzRnJvbVBvc3RNZXNzYWdlKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiZnJhbWVzdGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdXV07CiAKLSAgICBF
WFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMg
Y291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsKICAg
ICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8gKmZy
YW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZy
YW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJh
bWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gbG9jYXRp
b24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBpbkNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6W2lzTWFpbkZy
YW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgRVhQRUNUX05V
TEwoZXJyb3IpOwpAQCAtNTQzLDcgKzU0NCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBK
YXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3NhZ2UpCiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnBy
b3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pOwogCi0gICAgICAgICAgICBpZiAoKytmaW5pc2hl
ZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAgICAgICAgICAgaWYgKCsrZmluaXNo
ZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQogICAgICAgICAgICAgICAgIGlzRG9u
ZSA9IHRydWU7CiAgICAgICAgIH1dOwogCkBAIC01NTcsNyArNTU4LDcgQEAgVEVTVChFdmFsdWF0
ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0
cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAgICAg
IGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAgICAg
ICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAg
ICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtNTcyLDcgKzU3
Myw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9z
dE1lc3NhZ2UpCiAvLyBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdCB0byBjb25maXJtIHRoYXQgaXQg
Y2FuIGV4ZWN1dGUgSlMgZGlyZWN0bHkgaW4gZWFjaCBvZiB0aG9zZSBmcmFtZXMuCiBURVNUKEV2
YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0
ZSkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxv
Y10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1l
SW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rl
c3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRV
UkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4g
dGFzaykgewpAQCAtNjE1LDEyICs2MTYsMTIgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEph
dmFTY3JpcHRJbkZyYW1lc0Zyb21OYXZpZ2F0aW9uRGVsZWdhdGUpCiAKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwogCi0gICAgRVhQRUNUX0VRKGFs
bEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJhbWVzIGNvdW50XSwgMnUp
OwogCiAgICAgc3RhdGljIHNpemVfdCBmaW5pc2hlZEZyYW1lcyA9IDA7CiAgICAgc3RhdGljIGJv
b2wgaXNEb25lID0gZmFsc2U7CiAKLSAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxG
cmFtZXMpIHsKKyAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0KCkp
IHsKICAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lOwogICAgICAg
ICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBh
cmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQu
ZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5GcmFtZV0gKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
QEAgLTYzMSw3ICs2MzIsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdElu
RnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIm90aGVycHJvdG9j
b2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJh
bWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZy
YW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAgICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKICAgICAgICAgfV07CiAKQEAgLTY0NSw3ICs2NDYsNyBAQCBURVNUKEV2YWx1YXRlSmF2
YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxU
b1N0cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAg
ICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAg
ICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAg
ICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtNjU3LDcg
KzY1OCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9t
TmF2aWdhdGlvbkRlbGVnYXRlKQogLy8gZHVlIHRvIHJlbW92YWwgZnJvbSB0aGUgRE9NIHJlc3Vs
dHMgaW4gYW4gYXBwcm9wcmlhdGUgZXJyb3IKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZh
U2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJs
ZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAgYXV0
byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3
ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtNzAwLDcgKzcwMSw3IEBAIFRFU1Qo
RXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIAogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CiAKLSAgICBF
WFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMg
Y291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGhlRnJhbWUnKTsgZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZSk7IiBp
bkZyYW1lOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6W10gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKQEAg
LTcxMCw3ICs3MTEsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlz
c2luZ0ZyYW1lRXJyb3IpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwog
ICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxs
RnJhbWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgp
KSB7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC03MjgsNyArNzI5LDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3Jp
cHRJbk1pc3NpbmdGcmFtZUVycm9yKQogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgZXZhbHVh
dGluZyBKYXZhU2NyaXB0IGluIGEgZnJhbWUgZnJvbSB0aGUgcHJldmlvdXMgbWFpbiBuYXZpZ2F0
aW9uIHJlc3VsdHMgaW4gYW4gZXJyb3IKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2Ny
aXB0SW5NaXNzaW5nRnJhbWVBZnRlck5hdmlnYXRpb25FcnJvcikKIHsKLSAgICBhbGxGcmFtZXMg
PSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJh
bWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0p
OwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpb
Jl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtNzc3LDEwICs3
NzgsMTAgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbk1pc3NpbmdGcmFt
ZUFmdGVyTmF2aWdhdGlvbkVycm9yKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlk
RmluaXNoTmF2aWdhdGlvbik7CiAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOwogCi0g
ICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJh
bWVzIGNvdW50XSwgMnUpOwogCiAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBpZnJhbWU7Ci0g
ICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzKSB7CisgICAgZm9yIChXS0Zy
YW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS5p
c01haW5GcmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZnJhbWUgPSBmcmFt
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggMjgxYWMxYmEy
MjEwZGM2NWM2OGI1MGQ3OTdjOThlYTMxMjliMDRiYS4uZjYxNmE3NGI0MTdmNjFlOWFhM2RkMjVj
OGJlODZjOWUyYTJmZDI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgc2hvdWxkRQogICAgIFJldGFp
blB0cjxOU1VSTD4gZmlsZUlEQlBhdGggPSBbW2lkYlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAidjEiXSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJmaWxlX18wIl07CiAg
ICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOmZpbGVJREJQYXRoLmdldCgpLnBhdGhdKTsKIAotICAgIFJldGFpblB0cjxXS1dlYnNp
dGVEYXRhU3RvcmU+IGRhdGFTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXTsK
KyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBSZXRhaW5QdHI8TlNTZXQ+IHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIG5p
bF0pOwogCiAgICAgLy8gU3ViZnJhbWUgb2YgZGlmZmVyZW50IG9yaWdpbnMgbWF5IGFsc28gY3Jl
YXRlIEluZGV4ZWREQiBmaWxlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KaW5kZXggMDQxNzRjOTlkMGQ2YzM1
Zjg5MjI5YjM5MDNiMDA3YzBhNDcyODA4NC4uZjA0MzMyYTIwZjk5ZTFkYWUzMDcyNDZmNGQ2NmJl
NWFhYTJiMzZhYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAgLTE2NTcsNyArMTY1Nyw3IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxX
S1VSTFNjaGVtZVRhc2s+KXRhCiAgICAgTlNVUkwgKnVybCA9IHRhc2sucmVxdWVzdC5VUkw7CiAg
ICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tTdG9yYWdlIl0pIHsKICAg
ICAgICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+dmFyIG9sZFZhbHVlID0gd2luZG93LnNl
c3Npb25TdG9yYWdlWydzdG9yYWdlS2V5J107IHdpbmRvdy5zZXNzaW9uU3RvcmFnZVsnc3RvcmFn
ZUtleSddID0gJ3ZhbHVlJzsgYWxlcnQoJ29sZCB2YWx1ZTogPCcgKyAob2xkVmFsdWUgPyAnZmFp
bCcgOiAnJykgKyAnPicpOzwvc2NyaXB0PiI7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybCBNSU1FVHlwZTpAInRl
eHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0bWwubGVuZ3RoIHRleHRFbmNvZGluZ05h
bWU6bmlsXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOkAidGV4dC9odG1sIiBl
eHBlY3RlZENvbnRlbnRMZW5ndGg6aHRtbC5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5n
ZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltodG1sIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kv
bWFjL0Nsb3NpbmdXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRM
ZWdhY3kvbWFjL0Nsb3NpbmdXZWJWaWV3Lm1tCmluZGV4IDRiM2QzNWVhMzk2ZmIzOGU3MDJjNWVl
MDc4ODlkMmUyNGIyYzQyNTIuLjhkNWY5ZjczOWEyYmQ4ZmU4OWIwMDRiOGNhY2UwMThkYmU5N2Nl
ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L21h
Yy9DbG9zaW5nV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW0KQEAgLTc5LDcgKzc5LDggQEAgVEVTVChXZWJL
aXRMZWdhY3ksIENsb3NpbmdXZWJWaWV3VGhlblNlbmRpbmdJdEFLZXlEb3duRXZlbnQpCiAgICAg
VXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAogICAgIC8vIEZpcnN0LCBhZGQgYSBuYXRpdmUg
ZXZlbnQgbGlzdGVuZXIgdGhhdCBjbG9zZXMgdGhlIFdlYlZpZXcuCi0gICAgW1tbd2ViVmlldyBt
YWluRnJhbWVEb2N1bWVudF0gYm9keV0gYWRkRXZlbnRMaXN0ZW5lcjpAImtleXByZXNzIiBsaXN0
ZW5lcjpbW0tleWJvYXJkRXZlbnRMaXN0ZW5lciBhbGxvY10gaW5pdF0gdXNlQ2FwdHVyZTpOT107
CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tLZXlib2FyZEV2ZW50TGlzdGVuZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbW1t3ZWJWaWV3IG1haW5GcmFtZURvY3VtZW50XSBib2R5XSBhZGRF
dmVudExpc3RlbmVyOkAia2V5cHJlc3MiIGxpc3RlbmVyOmxpc3RlbmVyLmdldCgpIHVzZUNhcHR1
cmU6Tk9dOwogCiAgICAgLy8gU2Vjb25kLCBhZGQgYSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXIg
dGhhdCBjb25zdW1lcyB0aGUgZXZlbnQuCiAgICAgW1tbd2ViVmlldyBtYWluRnJhbWVdIGphdmFT
Y3JpcHRDb250ZXh0XSBldmFsdWF0ZVNjcmlwdDpAImFkZEtleVByZXNzSGFuZGxlcigpIl07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9tUHJv
dG9jb2xzSW52YWxpZFNjaGVtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCmluZGV4IDQyZTRjY2YwY2MzOWI3
YzRmMzhhYmUxNjJhYzcyYTM4OGYzYzhiZDcuLjliODcyZTM3NDE4NmNiYzAzMmRiZjFjMjkyNGM0
MjM5ZGZkZGMzODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCkBA
IC02MCw3ICs2MCw4IEBAIFRFU1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIExvYWRJbnZh
bGlkU2NoZW1lKQogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiQ3VzdG9tUHJvdG9j
b2xJbnZhbGlkU2NoZW1lVGVzdCIpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250
ZXh0LmdldCgpKTsKIAotICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW0xvYWRJbnZhbGlkU2NoZW1lRGVsZWdhdGUgYWxs
b2NdIGluaXRdOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0xvYWRJbnZhbGlk
U2NoZW1lRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygp
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdl
dCgpOwogICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0J3RwOi8vd3d3LndlYmtpdC5vcmciXV1dOwogICAgIAogICAgIFV0aWw6OnJ1
bigmdGVzdEZpbmlzaGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNp
emluZy5tbQppbmRleCAyOTZhYmIwYzJiMDgwM2U5MDY4ODg2NTJiYjcyYjk4NzVkOTZjYWYzLi5l
MTI2MThjYTdjODM5M2RhYjk1NDc0OGJiZDUwMjdiYjExOGJjMzI1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRv
UmVzaXppbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1By
ZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogCkBA
IC00NCw5ICs0NSwxMCBAQCBURVNUKFdlYktpdCwgUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVz
aXppbmdUZXN0KQogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQgPSBO
U01ha2VTaXplKDQwMCwgMzAwKTsKLSAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tU
b1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAgICAg
ICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgfV07CisgICAgfV0pOworICAgIHdlYlZpZXcu
cGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBs
b2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgW3dlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5IHN0eWxlPSdiYWNr
Z3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNV
aEVVZ0FBQUFvQUFBQUtDQVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNC
SmJXRm5aVkpsWVdSNWNjbGxQQUFBQUZaSlJFRlVlRjU5ejRFSkFERUlRMUYzNms3dTVFN1pLWGVV
UVBBQ0ozd0s3VU5va1Z4Vms5a0huUUg3Ylk5aGJEeURoTlhnanBSTHFGbG80TTJHZ2Z5SkhoanE4
VjRhZ2ZyZ1BRWDNKdEpRR2JvZm1DSGdBL25BS2tzK0pBakZBQUFBQUVsRlRrU3VRbUNDKTsnPjwv
Ym9keT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6Ymxhbmsi
XV07CiAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250ZW50VGVzdC5tbQppbmRleCAy
ZDBiMTczZmRhNTZkN2I4YTg1MGIzNzhjN2I4ZWM5MmM4ZjFlNGMzLi5hMjQyMjZlZjI0YWM1ZWZm
NGY2YjY2NTNmYzQwZGJkZWNhODllZDEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVudFRlc3QubW0KQEAgLTEyMCwxNyArMTIw
LDE3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5bGVTaGVldEJl
Zm9yZUNyZWF0aW5nVmlldykKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBbYnJvd3Np
bmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpu
aWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJp
bmdzOm5pbCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBb
W1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBw
cm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dz
aW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JR
dWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlw
dCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0g
W1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9S
dW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAgICAg
ICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xv
clF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNz
R3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29u
dGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KSk7
CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKFt3a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBl
cnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3JRdWVyeSk7CiAgICAgICAg
IH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAKLSAgICBbd2tW
aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBi
YXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9h
ZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMTM5LDE5ICsxMzksMTkgQEAg
VEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0ZXJDcmVh
dGluZ1ZpZXcpCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgCi0gICAgV0tWaWV3
ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4
dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBiYWNr
Z3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91
bmRDb2xvclNjcmlwdCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9h
ZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRl
cikgewotICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJh
Y2tncm91bmRDb2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRv
cHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3Vw
OmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3JR
dWVyeSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENv
bG9yU2NyaXB0KSk7CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dz
aW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4o
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5Lmdl
dCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
V0tFcnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmlu
ZyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZp
bmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3JRdWVy
eSk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5bGVTaGVl
dCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNo
UGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBbd2tWaWV3
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNl
VVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhU
TUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0xNjEsMTkgKzE2MSwxOSBAQCBURVNUX0Yo
V2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQogICAgIHRl
c3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5
bGVTaGVldDp1c2VyU3R5bGVTaGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3Ry
aW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVT
XTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAu
Z2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldOwot
ICAgIFdLU3RyaW5nUmVmIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KTsKLSAgICB3a1ZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZSh3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnksIF4oV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7Cisg
ICAgYXV0byB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkg
YnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBh
dXRvIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikg
eworICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgYmFj
a2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAgICAgICAgICBleHBl
Y3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgcmVkSW5SR0IpOwog
ICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShi
YWNrZ3JvdW5kQ29sb3JRdWVyeSk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAg
ICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWRE
ZWxlZ2F0ZS5nZXQoKTsKICAgICAKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgcmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzXTsKICAgICAKLSAgICBbd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CisgICAgW1t3a1Zp
ZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBi
YXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0Rmlu
aXNoZWQpOwogfQpAQCAtMTgzLDE3ICsxODMsMTcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVu
dFRlc3QsIEFkZFVzZXJTY3JpcHRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgdGVzdEZpbmlzaGVk
ID0gZmFsc2U7CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTY3JpcHQ6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyA9IHRydWU7IiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0
eV0gYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRj
aFBhdHRlcm5TdHJpbmdzOm5pbCBpbmplY3Rpb25UaW1lOmtXS0luamVjdEF0RG9jdW1lbnRTdGFy
dCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNz
R3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29u
dGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0VGVzdFByb3BlcnR5
U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQcm9w
ZXJ0eSk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRl
ID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2Nr
VG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAg
ICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIHVzZXJTY3JpcHRU
ZXN0UHJvcGVydHlTdHJpbmcsIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0byB3a1ZpZXcgPSBhZG9w
dE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6
YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBhdXRvIHVzZXJTY3JpcHRUZXN0UHJv
cGVydHlTdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVzZXJT
Y3JpcHRUZXN0UHJvcGVydHkpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5P
bkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgICAgICBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgdXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eVN0cmluZy5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNj
cmlwdFZhbHVlSXNCb29sZWFuKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdHJ1ZSk7CiAgICAgICAg
ICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgV0tSZWxlYXNlKHVzZXJTY3Jp
cHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsKLSAgICB9XTsKKyAgICB9XSk7Cisg
ICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2FkRGVsZWdhdGUgPSBsb2Fk
RGVsZWdhdGUuZ2V0KCk7CiAgICAgCi0gICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKICAg
ICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0y
MDIsMTkgKzIwMiwxOSBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclNj
cmlwdEFmdGVyQ3JlYXRpbmdWaWV3KQogewogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAg
IAotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBi
cm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tT
dHJpbmdSZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBl
cnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dy
b3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgp
XSk7CisgICAgYXV0byB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7CisgICAg
YXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3
a1ZpZXcgcGFnZVJlZl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVm
IGVycm9yKSB7CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzQm9vbGVhbihzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIHRydWUpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsK
LSAgICAgICAgICAgIFdLUmVsZWFzZSh1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nKTsKICAg
ICAgICAgfSk7Ci0gICAgfV07CisgICAgfV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlcl0ubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAogICAg
IFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJXMgPSB0cnVlOyIsIHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmls
IGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5n
czpuaWwgaW5qZWN0aW9uVGltZTprV0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25s
eTpZRVNdOwogICAgIAotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2Fk
SFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJdIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMjI0LDE5ICsy
MjQsMTkgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIFJlbW92ZUFsbFVzZXJTY3Jp
cHRzKQogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91
cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMgPSB0cnVlOyIs
IHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5T
dHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgaW5qZWN0aW9uVGltZTpr
V0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFdL
VmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0Nv
bnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tTdHJpbmdSZWYg
dXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRD
b250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmll
dy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewor
ICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgp
IGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAg
YXV0byB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7CisgICAgYXV0byBsb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFn
ZVJlZl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7
CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzVW5kZWZpbmVkKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAg
V0tSZWxlYXNlKHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsKLSAg
ICB9XTsKKyAgICB9XSk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5s
b2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCiAgICAgW2Jyb3dzaW5nQ29u
dGV4dEdyb3VwIHJlbW92ZUFsbFVzZXJTY3JpcHRzXTsKICAgICAKLSAgICBbd2tWaWV3LmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5p
bF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJp
bmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggNWU2NzM2MTEwMzNmMTFjNmEy
ODU0YjJlMjJiZjhhZGM5OTg0ZDI2Mi4uOGI0MGFhMDA1NzZiNzE0NDliOWFhY2FiMmQ5OWFmZmFh
NWM1MzQwMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0Fu
ZERyb3BUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFn
QW5kRHJvcFRlc3RzSU9TLm1tCkBAIC04NzksOCArODc5LDggQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBFeHRlcm5hbFNvdXJjZUJvbGRTeXN0ZW1BdHRyaWJ1dGVkU3RyaW5nVG9Db250ZW50RWRp
dGFibGUKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIE5TRGljdGlv
bmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250IGJv
bGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmljaFRl
eHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJUaGlzIGlz
IGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107Ci0gICAgYXV0byBpdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hU
ZXh0XSk7CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhpcyBpcyBhIHRlc3QiIGF0dHJpYnV0ZXM6dGV4dEF0
dHJpYnV0ZXNdKTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6cmljaFRleHQuZ2V0KCldKTsKICAgICBbc2ltdWxh
dG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CiAg
ICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50TWFr
ZSgxMDAsIDMwMCldOwogCkBAIC04OTUsOCArODk1LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBFeHRlcm5hbFNvdXJjZUNvbG9yZWRBdHRyaWJ1dGVkU3RyaW5nVG9Db250ZW50RWRpdGFibGUp
CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBOU0RpY3Rpb25hcnkg
KnRleHRBdHRyaWJ1dGVzID0gQHsgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiBbVUlD
b2xvciByZWRDb2xvcl0gfTsKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnJpY2hUZXh0ID0gW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhpcyBpcyBhIHRlc3Qi
IGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRv
cHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDpyaWNoVGV4dF0pOwor
ICAgIGF1dG8gcmljaFRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpAIlRoaXMgaXMgYSB0ZXN0IiBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVz
XSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxs
b2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0LmdldCgpXSk7CiAgICAgW3NpbXVsYXRvciBzZXRF
eHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdldCgpIF1dOwogICAgIFtzaW11
bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAz
MDApXTsKIApAQCAtMTg3Miw4ICsxODcyLDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRh
VHJhbnNmZXJHZXREYXRhUmVhZFBsYWluQW5kUmljaFRleHQpCiAKICAgICBhdXRvIGl0ZW1Qcm92
aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5TRGlj
dGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250
IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmlj
aFRleHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJXZWJL
aXQiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0
ZXJPYmplY3Q6cmljaFRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9u
VmlzaWJpbGl0eUFsbF07CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiV2ViS2l0IiBhdHRyaWJ1dGVzOnRleHRB
dHRyaWJ1dGVzXSk7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpyaWNoVGV4dC5n
ZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxs
XTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2Jq
ZWN0OkAiV2ViS2l0IiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNp
YmlsaXR5QWxsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCmluZGV4IDI1ZDc4MjQ1MWVhNmMyMDQ0YWYyZGQxYTJh
ODY3NWIyOTk2ZjY5YWEuLjdlYTdiZGNkYjM2YTc3YjgyYTU1YzVhZjgzMDQwZDdjNDUxYzc5YTUg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRU
ZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElu
cHV0VGVzdHNJT1MubW0KQEAgLTcxLDIzICs3MSwyMyBAQCArIChVSUltYWdlICopYmFyQnV0dG9u
SWNvbgogKyAoVUlCYXJCdXR0b25JdGVtR3JvdXAgKilsZWFkaW5nSXRlbXNGb3JXZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47Ci0gICAgc3RhdGljIFVJQmFyQnV0dG9uSXRlbUdyb3VwICpzaGFyZWRJdGVtczsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFVJQmFyQnV0dG9uSXRlbUdyb3VwPj4gc2hh
cmVkSXRlbXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBhdXRv
IGxlYWRpbmdJdGVtID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhJ
bWFnZTpzZWxmLmJhckJ1dHRvbkljb24gc3R5bGU6VUlCYXJCdXR0b25JdGVtU3R5bGVQbGFpbiB0
YXJnZXQ6d2ViVmlldyBhY3Rpb246QHNlbGVjdG9yKGZha2VMZWFkaW5nQmFyQnV0dG9uSXRlbUFj
dGlvbildKTsKLSAgICAgICAgc2hhcmVkSXRlbXMgPSBbW1VJQmFyQnV0dG9uSXRlbUdyb3VwIGFs
bG9jXSBpbml0V2l0aEJhckJ1dHRvbkl0ZW1zOkBbIGxlYWRpbmdJdGVtLmdldCgpIF0gcmVwcmVz
ZW50YXRpdmVJdGVtOm5pbF07CisgICAgICAgIHNoYXJlZEl0ZW1zLmdldCgpID0gYWRvcHROUyhb
W1VJQmFyQnV0dG9uSXRlbUdyb3VwIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRvbkl0ZW1zOkBbIGxl
YWRpbmdJdGVtLmdldCgpIF0gcmVwcmVzZW50YXRpdmVJdGVtOm5pbF0pOwogICAgIH0pOwotICAg
IHJldHVybiBzaGFyZWRJdGVtczsKKyAgICByZXR1cm4gc2hhcmVkSXRlbXMuZ2V0KCkuZ2V0KCk7
CiB9CiAKICsgKFVJQmFyQnV0dG9uSXRlbUdyb3VwICopdHJhaWxpbmdJdGVtc0ZvcldlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VU
b2tlbjsKLSAgICBzdGF0aWMgVUlCYXJCdXR0b25JdGVtR3JvdXAgKnNoYXJlZEl0ZW1zOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8VUlCYXJCdXR0b25JdGVtR3JvdXA+PiBz
aGFyZWRJdGVtczsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIGF1
dG8gdHJhaWxpbmdJdGVtID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdp
dGhJbWFnZTpzZWxmLmJhckJ1dHRvbkljb24gc3R5bGU6VUlCYXJCdXR0b25JdGVtU3R5bGVQbGFp
biB0YXJnZXQ6d2ViVmlldyBhY3Rpb246QHNlbGVjdG9yKGZha2VUcmFpbGluZ0JhckJ1dHRvbkl0
ZW1BY3Rpb24pXSk7Ci0gICAgICAgIHNoYXJlZEl0ZW1zID0gW1tVSUJhckJ1dHRvbkl0ZW1Hcm91
cCBhbGxvY10gaW5pdFdpdGhCYXJCdXR0b25JdGVtczpAWyB0cmFpbGluZ0l0ZW0uZ2V0KCkgXSBy
ZXByZXNlbnRhdGl2ZUl0ZW06bmlsXTsKKyAgICAgICAgc2hhcmVkSXRlbXMuZ2V0KCkgPSBhZG9w
dE5TKFtbVUlCYXJCdXR0b25JdGVtR3JvdXAgYWxsb2NdIGluaXRXaXRoQmFyQnV0dG9uSXRlbXM6
QFsgdHJhaWxpbmdJdGVtLmdldCgpIF0gcmVwcmVzZW50YXRpdmVJdGVtOm5pbF0pOwogICAgIH0p
OwotICAgIHJldHVybiBzaGFyZWRJdGVtczsKKyAgICByZXR1cm4gc2hhcmVkSXRlbXMuZ2V0KCku
Z2V0KCk7CiB9CiAKIC0gKFVJVGV4dElucHV0QXNzaXN0YW50SXRlbSAqKWlucHV0QXNzaXN0YW50
SXRlbQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxW
aWV3RGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZp
ZXdEZWxlZ2F0ZS5tbQppbmRleCBkMjI4YzIzZDFkZTNhZTRkMDE0NjY4NTYxZTgxODI2NGY2NmU2
YWVlLi4yNTQ4ZjE3ZmU3YTM3NTJhODA1N2YyMjYzMDYzYjY4OWIzNGMwMWIyIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5t
bQpAQCAtNTQsMTYgKzU0LDE2IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChX
S1dlYlZpZXcsIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gpCiB7Ci0gICAgV0tXZWJWaWV3ICp3
ZWJWaWV3ID0gW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRdOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKICAgICBhdXRvIGRlbGVnYXRlRm9yU2Ny
b2xsVmlldyA9IGFkb3B0TlMoW1tUZXN0RGVsZWdhdGVGb3JTY3JvbGxWaWV3IGFsbG9jXSBpbml0
XSk7CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIHdlYlZpZXcuc2Nyb2xsVmlldy5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlRm9yU2Nyb2xsVmlldy5nZXQoKTsKKyAgICAgICAgW3dlYlZpZXcg
c2Nyb2xsVmlld10uZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcuZ2V0KCk7CiAgICAg
fQogICAgIGRlbGVnYXRlSXNEZWFsbG9jYXRlZCA9IGZhbHNlOwogICAgIGRlbGVnYXRlRm9yU2Ny
b2xsVmlldyA9IG5pbDsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRlbGVnYXRlSXNE
ZWFsbG9jYXRlZCk7CiAKLSAgICBFWFBFQ1RfTlVMTCh3ZWJWaWV3LnNjcm9sbFZpZXcuZGVsZWdh
dGUpOworICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmRlbGVnYXRlKTsKIH0K
IAogfQpAQCAtOTMsMjMgKzkzLDIzIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVT
VChXS1dlYlZpZXcsIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ2Fubm90T3ZlcnJpZGVWaWV3Rm9yWm9v
bWluZykKIHsKLSAgICBUZXN0V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0XTsKLSAgICBXS1Njcm9sbFZpZXdEZWxlZ2F0ZVdpdGhWaWV3Rm9yWm9vbWluZ092
ZXJyaWRkZW4gKmRlbGVnYXRlRm9yU2Nyb2xsVmlldyA9IFtbV0tTY3JvbGxWaWV3RGVsZWdhdGVX
aXRoVmlld0Zvclpvb21pbmdPdmVycmlkZGVuIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGVs
ZWdhdGVGb3JTY3JvbGxWaWV3ID0gYWRvcHROUyhbW1dLU2Nyb2xsVmlld0RlbGVnYXRlV2l0aFZp
ZXdGb3Jab29taW5nT3ZlcnJpZGRlbiBhbGxvY10gaW5pdF0pOwogICAgIEBhdXRvcmVsZWFzZXBv
b2wgewotICAgICAgICB3ZWJWaWV3LnNjcm9sbFZpZXcuZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNj
cm9sbFZpZXc7CisgICAgICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmRlbGVnYXRlID0gZGVsZWdh
dGVGb3JTY3JvbGxWaWV3LmdldCgpOwogICAgIH0KIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSdpbml0aWFs
LXNjYWxlPTEnPiJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRl
XTsKIAogICAgIC8vIEhhdmUgV0tTY3JvbGxWaWV3J3MgZXh0ZXJuYWwgZGVsZWdhdGUgcmV0dXJu
IGEgdmlldyB3aXRoIHNjYWxlPTIgZnJvbSB2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldy4KLSAg
ICBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcub3ZlcnJpZGVTY2FsZSA9IDI7CisgICAgW2RlbGVnYXRl
Rm9yU2Nyb2xsVmlldyBzZXRPdmVycmlkZVNjYWxlOjJdOwogCiAgICAgW3dlYlZpZXcgc3luY2hy
b25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J2lu
aXRpYWwtc2NhbGU9Mic+Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOwogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIHdlYlZpZXcuc2Nyb2xs
Vmlldy5kZWxlZ2F0ZSA9IG5pbDsKKyAgICAgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uZGVsZWdh
dGUgPSBuaWw7CiAgICAgfQogCiAgICAgRVhQRUNUX0ZBTFNFKGRpZENhbGxWaWV3Rm9yWm9vbWlu
Z0luU2Nyb2xsVmlldyk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21h
Yy9DYW5kaWRhdGVUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRp
ZGF0ZVRlc3RzLm1tCmluZGV4IGFiZmNjYTIxMTAxZTBmMTA3Y2ZhZmNlODdmZTU0OWU3NDFhMjA1
Y2UuLmM1ODFjNTMwNTFkYTg4NTMxNjc4NmY5NTM1ZGVlOTA3OWQ4MTk3ZWMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tCkBAIC05MCw4ICs5
MCw4IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoQ2FuZGlkYXRlVGVzdHMsIERJ
U0FCTEVEX0RvTm90TGVha1ZpZXdUaGF0TG9hZHNFZGl0YWJsZUFyZWEpCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW0RvTm90TGVha1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCldKTsKLSAgICBEb05vdExlYWtGcmFtZUxvYWREZWxl
Z2F0ZSAqZGVsZWdhdGUgPSBbW0RvTm90TGVha0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
XTsKLSAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb05vdExlYWtGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKICAgICAKICAgICBOU1VSTCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJhdXRvZm9jdXNlZC10ZXh0LWlucHV0IiB3aXRoRXh0ZW5zaW9uOkAi
aHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBbW3dl
YlZpZXcgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OmNvbnRlbnRVUkxdXTsKQEAgLTEwNyw4ICsxMDcsOCBAQCBURVNUKENhbmRpZGF0ZVRlc3RzLCBE
SVNBQkxFRF9SZXF1ZXN0Q2FuZGlkYXRlc0ZvclRleHRJbnB1dCkKIHsKICAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDEwMCwgMTAwKV0pOwogICAgIFt3ZWJWaWV3IGZvcmNlUmVxdWVzdENhbmRpZGF0ZXNGb3JU
ZXN0aW5nXTsKLSAgICBDYW5kaWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgKmRlbGVnYXRl
ID0gW1tDYW5kaWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAg
IFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICBhdXRvIGRlbGVn
YXRlID0gYWRvcHROUyhbW0NhbmRpZGF0ZVJlcXVlc3RGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKICAgICAKICAgICBOU1VSTCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
VVJMRm9yUmVzb3VyY2U6QCJmb2N1cy1pbnB1dHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJk
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwogICAgIFtbd2ViVmlldyBtYWlu
RnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6Y29udGVudFVS
TF1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2Fj
aGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1t
CmluZGV4IDAxZTc0NGY0OGIwNGFhYWNlYjY0N2I4ZjEyYjY5NjI1NmQ1ZTUzM2UuLjA0Njc2M2M4
MTc3M2U3MTRjOGRiNzFkZmY2ZjI3NzdkZWFiNDY2ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBy
dW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTc4LDE0ICs3OCwxNCBAQCBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKFdlYktpdExlZ2FjeSwgRElTQUJMRURfTWVtb3J5
Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlKQogewogICAgIEBhdXRvcmVsZWFz
ZXBvb2wgewotICAgICAgICBSZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzEgPSBhZG9wdE5TKFtb
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBm
cmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKLSAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+
IHdlYlZpZXcyID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAg
ICAgIGF1dG8gd2ViVmlldzEgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxd
KTsKKyAgICAgICAgYXV0byB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBO
YW1lOm5pbF0pOwogCi0gICAgICAgIE5TV2luZG93KiB3aW5kb3cgPSBbW05TV2luZG93IGFsbG9j
XSBpbml0V2l0aENvbnRlbnRSZWN0OndlYlZpZXcyLmdldCgpLmZyYW1lIHN0eWxlTWFzazpOU0Jv
cmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZ
RVNdOwotICAgICAgICBbd2luZG93LmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6d2ViVmlldzIuZ2V0
KCldOworICAgICAgICBhdXRvIHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp3ZWJWaWV3Mi5nZXQoKS5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJs
ZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7
CisgICAgICAgIFtbd2luZG93IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcyLmdldCgp
XTsKIAotICAgICAgICBSZXRhaW5QdHI8TWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZT4gcmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVtb3J5Q2FjaGVQcnVu
ZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgICAgICByZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5nZXQoKS0+X3dpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgYXV0byByZXNv
dXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNl
TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHJlc291cmNlTG9hZERlbGVnYXRl
LmdldCgpLT5fd2luZG93ID0gd2luZG93LmdldCgpOwogICAgICAgICB3ZWJWaWV3MS5nZXQoKS5y
ZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAg
ICAgIFtbd2ViVmlldzEuZ2V0KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJN
ZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246
QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvbWFpbklPUy5tbQppbmRleCAyMzg5MTIzN2VjYzZkYTZhMGY5ODFjMzk5ZmRm
NDI2N2RlNjU5OTNjLi5mNzllZTBkNDc3YzVkYmNhMWYzMDgyNTJiYjQwMGQ4M2E5ODc2YzJlIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW0KQEAgLTM1LDExICszNSwxMSBAQCBpbnQgbWFp
bihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHJlbW92ZVBlcnNpc3RlbnREb21haW5Gb3JOYW1lOkAiVGVzdFdlYktp
dEFQSSJdOwogCiAgICAgICAgIC8vIFNldCB1cCB1c2VyIGRlZmF1bHRzLgotICAgICAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0g
bXV0YWJsZUNvcHldOworICAgICAgICBhdXRvIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1l
Ok5TQXJndW1lbnREb21haW5dIG11dGFibGVDb3B5XSk7CiAgICAgICAgIGlmICghYXJndW1lbnRE
b21haW4pCi0gICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF07CisgICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tO
U011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKLSAgICAgICAgW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21h
aW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4uZ2V0
KCkgZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBCVUlMRElOR19URVNUX1dU
RgogICAgICAgICBbV0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0Zv
clRlc3RpbmddOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRP
cHRpb25zLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCmlu
ZGV4IDkzNTc2YjkxNGYyYTY5ZDI1ZTVmNDgwOWRlN2NiNjA4MWJkY2YzZjEuLjgzYjkwY2E1NGU0
NzIwMDYzNTNjNWRiNDdlODIxODc2ZWFjOWY0YjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9UZXN0Rm9udE9wdGlvbnMubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkFwcEtpdFNQ
SS5oIgogI2ltcG9ydCAiQ2xhc3NNZXRob2RTd2l6emxlci5oIgogI2ltcG9ydCA8b2JqYy9ydW50
aW1lLmg+CisjaW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JTY29wZS5oPgogCkBAIC02NSwxMyArNjYsMTMg
QEAgQHN5bnRoZXNpemUgaGFzTXVsdGlwbGVGb250cyA9IF9oYXNNdWx0aXBsZUZvbnRzOwogCiAr
IChpbnN0YW5jZXR5cGUpc2hhcmVkSW5zdGFuY2UKIHsKLSAgICBzdGF0aWMgVGVzdEZvbnRPcHRp
b25zICpzaGFyZWRJbnN0YW5jZTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRy
PFRlc3RGb250T3B0aW9ucz4+IHNoYXJlZEluc3RhbmNlOwogICAgIHN0YXRpYyBkaXNwYXRjaF9v
bmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAg
ICAgTlNGb250T3B0aW9ucyAqc2hhcmVkRm9udE9wdGlvbnMgPSBbTlNDbGFzc0Zyb21TdHJpbmco
QCJOU0ZvbnRPcHRpb25zIikgc2hhcmVkRm9udE9wdGlvbnNdOwotICAgICAgICBzaGFyZWRJbnN0
YW5jZSA9IFtbVGVzdEZvbnRPcHRpb25zIGFsbG9jXSBpbml0V2l0aEZvbnRPcHRpb25zOnNoYXJl
ZEZvbnRPcHRpb25zXTsKKyAgICAgICAgc2hhcmVkSW5zdGFuY2UuZ2V0KCkgPSBhZG9wdE5TKFtb
VGVzdEZvbnRPcHRpb25zIGFsbG9jXSBpbml0V2l0aEZvbnRPcHRpb25zOnNoYXJlZEZvbnRPcHRp
b25zXSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOworICAgIHJldHVybiBz
aGFyZWRJbnN0YW5jZS5nZXQoKS5nZXQoKTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
Rm9udE9wdGlvbnM6KE5TRm9udE9wdGlvbnMgKilmb250T3B0aW9ucwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFj
L21haW5NYWMubW0KaW5kZXggZDlkNmM2MThjMjIyMzU0YjllYTVmODQ0ODI2NzUwYmM1MTIyODdh
Zi4uNzBiMWZkZWM4OGFiZjRhZmQ3OTU5M2FjMGIyNWFlMGU0Y2M3M2Y2ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFpbk1hYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL21hYy9tYWluTWFjLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJUZXN0c0NvbnRy
b2xsZXIuaCIKIAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGV4dGVybiAiQyIgdm9pZCBfQmVnaW5FdmVudFJlY2Vp
cHRPblRocmVhZCh2b2lkKTsKIApAQCAtMzcsOSArMzgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHJlbW92ZVBlcnNpc3RlbnREb21haW5Gb3JOYW1lOkAiVGVzdFdlYktpdEFQSSJdOwogCiAg
ICAgICAgIC8vIFNldCBhIHVzZXIgZGVmYXVsdCBmb3IgVGVzdFdlYktpdEFQSSB0byBieXBhc3Mg
YWxsIGxpbmtlZC1vbi1vci1hZnRlciBjaGVja3MgaW4gV2ViS2l0Ci0gICAgICAgIE5TTXV0YWJs
ZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0gW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRh
YmxlQ29weV07CisgICAgICAgIGF1dG8gYXJndW1lbnREb21haW4gPSBhZG9wdE5TKFtbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNB
cmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldKTsKICAgICAgICAgaWYgKCFhcmd1bWVudERvbWFp
bikKLSAgICAgICAgICAgIGFyZ3VtZW50RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKKyAgICAgICAgICAgIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgICAgICAvLyBDQVVUSU9OOiBEZWZh
dWx0cyBzZXQgaGVyZSBhcmUgbm90IGF1dG9tYXRpY2FsbHkgcHJvcGFnYXRlZCB0byB0aGUKICAg
ICAgICAgLy8gV2ViIENvbnRlbnQgcHJvY2Vzcy4gVGhvc2UgbGlzdGVkIGJlbG93IGFyZSBwcm9w
YWdhdGVkIG1hbnVhbGx5LgpAQCAtNTIsNyArNTMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCiAgICAgICAgIH07CiAKICAgICAgICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJp
ZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpO
U0FyZ3VtZW50RG9tYWluXTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4uZ2V0KCkgZm9yTmFtZTpO
U0FyZ3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBCVUlMRElOR19URVNUX1dURgogICAgICAgICBb
V0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0ZvclRlc3RpbmddOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbQppbmRleCBjNDE4MjMw
ZjNiNGZkZTcxOWFjNmNjYzg0Yjc0MmRiZWNhMTRkMjRhLi5jOThiOWU5OTZjZDFjOGRlOTg5Zjhl
ZWNhZmZjYWY2Y2Q0NWNiOGIxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcklPUy5tbQpAQCAtNDcsNyArNDcsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhYwogICAg
IC8vIE90aGVyIHBsYXRmb3JtcyBtYXkgYmUgZGlmZmVyZW50LgogICAgIGlmIChtX2dsb2JhbE5v
dGlmaWNhdGlvbkhhbmRsZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2dsb2JhbE5v
dGlmaWNhdGlvbkhhbmRsZXIgPSBbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFs
bG9jXSBpbml0XTsKKworICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IGFkb3B0TlMo
W1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtt
X2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgc2V0Q2FsbGJhY2s6ZnVuY3Rpb25DYWxsYmFja107
CiAgICAgW21fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciBzdGFydE9ic2VydmluZ107CiAgICAg
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVy
Q29jb2EubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29j
b2EubW0KaW5kZXggY2UzNmZiYTJkNGJiMTUxZjg3OWUzMWExNTQyZDRkMDZlOWUyOWRlNi4uM2Jm
NTBmYmQ2YmE5MDg5NTU0MWZhZjk3OWYxMWQyZjQwNzA5MzFkZSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNTksMzYg
KzU5LDQ2IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb247Ci1zdGF0aWMgVGVzdFdlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZSAqZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50Oworc3Rh
dGljIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiYgZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24oKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tXZWJW
aWV3Q29uZmlndXJhdGlvbj4+IGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOworICAgIHJldHVy
biBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbjsKK30KKworc3RhdGljIFJldGFpblB0cjxUZXN0
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlPiYgZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
Q2xpZW50KCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFRlc3RXZWJz
aXRlRGF0YVN0b3JlRGVsZWdhdGU+PiBnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGll
bnQ7CisgICAgcmV0dXJuIGdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudDsKK30K
IAogdm9pZCBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGlicmFy
eVBhdGgsIFdLU3RyaW5nUmVmIGluamVjdGVkQnVuZGxlUGF0aCwgV0tDb250ZXh0UmVmIGNvbnRl
eHQsIFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCiB7Ci0g
ICAgYXV0byBvbGRHbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24pOwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uID0gW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBnbG9iYWxXZWJWaWV3Q29u
ZmlndXJhdGlvbigpID0gWyZdIHsKKyAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAotICAgIGdsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gKF9fYnJpZGdlIFdLUHJvY2Vzc1Bvb2wg
Kiljb250ZXh0OwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgPSAoX19icmlkZ2UgV0tXZWJzaXRlRGF0YVN0b3JlICopVGVzdENvbnRyb2xsZXI6OmRlZmF1
bHRXZWJzaXRlRGF0YVN0b3JlKCk7Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2Fs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzID0gWUVTOwotICAgIGdsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uLl9hbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzID0gWUVTOwotICAgIGds
b2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9hcHBsZVBheUVuYWJsZWQgPSBZRVM7CisgICAgICAg
IFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihfX2JyaWRnZSBXS1Byb2Nlc3NQb29sICop
Y29udGV4dF07CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6KF9f
YnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZSAqKVRlc3RDb250cm9sbGVyOjpkZWZhdWx0V2Vic2l0
ZURhdGFTdG9yZSgpXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzOllFU107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRBbGxv
d1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxzOllFU107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9z
ZXRBcHBsZVBheUVuYWJsZWQ6WUVTXTsKIAotICAgIGF1dG8gb2xkR2xvYmFsV2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlQ2xpZW50ID0gYWRvcHROUyhnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGVDbGllbnQpOwotICAgIGdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCA9IFtb
VGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgc2V0X2RlbGVnYXRlOmdsb2JhbFdl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudF07CisgICAgICAgIGdsb2JhbFdlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZUNsaWVudCgpID0gYWRvcHROUyhbW1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRh
U3RvcmVdIHNldF9kZWxlZ2F0ZTpnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQo
KS5nZXQoKV07CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGdsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uLmFsbG93c0lubGluZU1lZGlhUGxheWJhY2sgPSBZRVM7Ci0gICAgZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24uX2lubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5s
aW5lQXR0cmlidXRlID0gTk87Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2ludmlz
aWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkID0gTk87Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24uX21lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseSA9IFlFUzsKLSAgICBnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi5yZXF1aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrID0gTk87
CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldEFsbG93c0lubGluZU1lZGlhUGxheWJhY2s6WUVT
XTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJl
c1BsYXlzSW5saW5lQXR0cmlidXRlOk5PXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldElu
dmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVkOk5PXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24g
X3NldE1lZGlhRGF0YUxvYWRzQXV0b21hdGljYWxseTpZRVNdOworICAgICAgICBbY29uZmlndXJh
dGlvbiBzZXRSZXF1aXJlc1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrOk5PXTsKICNlbmRpZgot
ICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0
aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAgICAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjazpX
S0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZV07CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0g
ICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX3N5c3RlbVByZXZpZXdFbmFibGVkID0gWUVT
OworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0U2N5c3RlbVByZXZpZXdFbmFibGVkOllFU107
CiAjZW5kaWYKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgfSgpOwogfQogCiB2
b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSgpCkBAIC0xMDcsMTIg
KzExNywxMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSgp
CiAKIFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKIHsKLSAg
ICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
bi5wcm9jZXNzUG9vbDsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilbZ2xvYmFs
V2ViVmlld0NvbmZpZ3VyYXRpb24oKSBwcm9jZXNzUG9vbF07CiB9CiAKIFdLUHJlZmVyZW5jZXNS
ZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUHJlZmVyZW5jZXMoKQogewotICAgIHJldHVybiAo
X19icmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5wcmVm
ZXJlbmNlczsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW2dsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uKCkgcHJlZmVyZW5jZXNdOwogfQogCiBUZXN0RmVhdHVyZXMgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtU3BlY2lmaWNGZWF0dXJlT3ZlcnJpZGVzRGVmYXVsdHNGb3JU
ZXN0KGNvbnN0IFRlc3RDb21tYW5kJikgY29uc3QKQEAgLTE0MywxMiArMTUzLDEyIEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1
cmF0aW9uUmVmLCBjb25zdCBUCiAjZW5kaWYKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0g
KF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0
b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWcu
Z2V0KCldKS5nZXQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0g
KF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
bi53ZWJzaXRlRGF0YVN0b3JlOworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlk
Z2UgV0tXZWJzaXRlRGF0YVN0b3JlUmVmKVtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdl
YnNpdGVEYXRhU3RvcmVdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0
ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlv
bnMpCiB7Ci0gICAgYXV0byBjb3BpZWRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gY29weV0pOworICAgIGF1dG8gY29waWVkQ29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgY29weV0pOwogCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAob3B0aW9ucy51c2VEYXRhRGV0ZWN0aW9uKCkpCkBA
IC0xOTEsNyArMjAxLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJW
aWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKIAogUGxhdGZvcm1XZWJW
aWV3KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJW
aWV3KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9u
cyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIG5ld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5XSk7CisgICAgYXV0byBuZXdDb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBjb3B5XSk7CiAgICAgW25l
d0NvbmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2ViVmlldyo+
KHBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpKV07CiAgICAgaWYgKFtuZXdDb25maWd1cmF0aW9u
IF9yZWxhdGVkV2ViVmlld10pCiAgICAgICAgIFtuZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVE
YXRhU3RvcmU6W25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XS5jb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmVdOwpAQCAtMjE0LDcgKzIyNCw3IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmZpbmlzaENyZWF0aW5nUGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogdmlldywg
Y29uc3QKIFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGp1c3RDb250ZXh0
KFdLQ29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRD
b25maWd1cmF0aW9uKQogewogICAgIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihsaWJy
YXJ5UGF0aEZvclRlc3RpbmcoKSwgaW5qZWN0ZWRCdW5kbGVQYXRoKCksIGNvbnRleHQsIGNvbnRl
eHRDb25maWd1cmF0aW9uKTsKLSAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbDsKKyAgICByZXR1cm4gKF9fYnJpZGdl
IFdLQ29udGV4dFJlZilbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBwcm9jZXNzUG9vbF07
CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgZG9uZSwg
V1RGOjpTZWNvbmRzIHRpbWVvdXQpCkBAIC0yOTMsNyArMzAzLDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6Y29jb2FSZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25z
JiBvcHRpb24KICAgICAgICAgW3BsYXRmb3JtVmlldy5jb25maWd1cmF0aW9uLnByZWZlcmVuY2Vz
IHNldFRleHRJbnRlcmFjdGlvbkVuYWJsZWQ6b3B0aW9ucy50ZXh0SW50ZXJhY3Rpb25FbmFibGVk
KCldOwogICAgIH0KIAotICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQg
c2V0QWxsb3dSYWlzaW5nUXVvdGE6WUVTXTsKKyAgICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURl
bGVnYXRlQ2xpZW50KCkgc2V0QWxsb3dSYWlzaW5nUXVvdGE6WUVTXTsKIAogICAgIFdlYkNvcmVU
ZXN0U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9w
dGlvbnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpKTsKIH0KQEAgLTMz
Nyw3ICszNDcsNyBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuZXJh
bFBhc3RlYm9hcmQoKSBjb25zdAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lv
bkNyZWRlbnRpYWxzKCkKIHsKICAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMsIG5pbF0pOwot
ICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURh
dGFPZlR5cGVzOnR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0g
Y29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
KCkgd2Vic2l0ZURhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgbW9kaWZp
ZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAg
ICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMo
KTsKICAgICB9XTsKIH0KQEAgLTM0OCw3ICszNTgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpn
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1W
aWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7
CisgICAgW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdlYnNpdGVEYXRhU3RvcmVdIF9n
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBj
b21wbGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKICAgICAg
ICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KG1ha2VWZWN0b3I8U3RyaW5nPihkb21haW5zKSk7CiAgICAgfV07CiB9CkBAIC0zNTksNyArMzY5
LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6bG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCkKICAg
ICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfbG9hZGVkU3VicmVzb3VyY2VEb21h
aW5zRm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNB
cnJheTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24oKSB3ZWJzaXRlRGF0YVN0b3JlXSBfbG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0
cmluZyAqPiAqZG9tYWlucykgewogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNl
aXZlTG9hZGVkU3VicmVzb3VyY2VEb21haW5zKG1ha2VWZWN0b3I8U3RyaW5nPihkb21haW5zKSk7
CiAgICAgfV07CiB9CkBAIC0zNzAsMTQgKzM4MCwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpj
bGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURh
dGFTdG9yZSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxh
dGZvcm1WaWV3KCldOworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRl
RGF0YVN0b3JlXSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+
cGxhdGZvcm1WaWV3KCldOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2Ny
aXB0KFdLU3RyaW5nUmVmIHNjcmlwdCkKIHsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5T
KFtbV0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0
KSBpbmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQg
Zm9yTWFpbkZyYW1lT25seTpOT10pOwogCi0gICAgW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3JpcHQ6IHVzZXJTY3JpcHQuZ2V0KCld
OworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB1c2VyQ29udGVudENvbnRyb2xs
ZXJdIGFkZFVzZXJTY3JpcHQ6IHVzZXJTY3JpcHQuZ2V0KCldOwogfQogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNl
NjQsIGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFn
QmFzZTY0KQpAQCAtNDQ5LDE0ICs0NTksMTQgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhp
c3RzSW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJgogCiB2
b2lkIFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1N0b3JhZ2VRdW90YUluY3JlYXNlKGJvb2wgdmFs
dWUpCiB7Ci0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCBzZXRBbGxv
d1JhaXNpbmdRdW90YTogdmFsdWVdOworICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdh
dGVDbGllbnQoKSBzZXRBbGxvd1JhaXNpbmdRdW90YTogdmFsdWVdOwogfQogCiB2b2lkIFRlc3RD
b250cm9sbGVyOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sIGFsbG93cykKIHsKICAg
ICBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlID0gYWxsb3dzOwogICAgIFdLV2Vic2l0ZURhdGFT
dG9yZVNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyh3ZWJzaXRl
RGF0YVN0b3JlKCksIGFsbG93cyk7Ci0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0
ZUNsaWVudCBzZXRBbGxvd0FueVNTTENlcnRpZmljYXRlOiBhbGxvd3NdOworICAgIFtnbG9iYWxX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQoKSBzZXRBbGxvd0FueVNTTENlcnRpZmljYXRl
OiBhbGxvd3NdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFj
dGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQXV0b21hdGljYWxseSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1
Z1dpbmRvdy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNE
ZWJ1Z1dpbmRvdy5tbQppbmRleCA3ZDYzZjMzODU5ZDZkODNjNjE2MzhlZWM1NDRiOGI0OWI5NDcx
MzViLi4zZjg3ZTY5MGFjMmViMWY0ZGZjZGMxNWMxMDNlMGU3YWRmNzVmNjI1IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvR2VuZXJhdGVkVG91Y2hlc0RlYnVn
V2luZG93Lm1tCkBAIC00MywxMSArNDMsMTEgQEAgQGltcGxlbWVudGF0aW9uIEdlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvdwogKyAoR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93ICopc2hhcmVk
R2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2Vf
dCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdyAqdG91
Y2hXaW5kb3cgPSBuaWw7CisgICAgc3RhdGljIFJldGFpblB0cjxHZW5lcmF0ZWRUb3VjaGVzRGVi
dWdXaW5kb3c+IHRvdWNoV2luZG93OwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsK
LSAgICAgICAgdG91Y2hXaW5kb3cgPSBbW0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdyBhbGxv
Y10gaW5pdF07CisgICAgICAgIHRvdWNoV2luZG93ID0gYWRvcHROUyhbW0dlbmVyYXRlZFRvdWNo
ZXNEZWJ1Z1dpbmRvdyBhbGxvY10gaW5pdF0pOwogICAgIH0pOwotICAgIHJldHVybiB0b3VjaFdp
bmRvdzsKKyAgICByZXR1cm4gdG91Y2hXaW5kb3cuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpZGVhbGxv
YwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0
b3IubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpp
bmRleCAxMmIzNTYxNzMyYTdlNDMzZTM3MDI3ZjEzMmVmNDNkODFmOTAwZGQ1Li4zMWI0NjUwZTM1
NjExOWMwMjQwMTY2NGNlMDI3Njk0OGRhMDM1ZWQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTYwLDExICsxNjAsOCBAQCBAaW1w
bGVtZW50YXRpb24gSElERXZlbnRHZW5lcmF0b3IgewogCiArIChISURFdmVudEdlbmVyYXRvciAq
KXNoYXJlZEhJREV2ZW50R2VuZXJhdG9yCiB7Ci0gICAgc3RhdGljIEhJREV2ZW50R2VuZXJhdG9y
ICpldmVudEdlbmVyYXRvciA9IG5pbDsKLSAgICBpZiAoIWV2ZW50R2VuZXJhdG9yKQotICAgICAg
ICBldmVudEdlbmVyYXRvciA9IFtbSElERXZlbnRHZW5lcmF0b3IgYWxsb2NdIGluaXRdOwotCi0g
ICAgcmV0dXJuIGV2ZW50R2VuZXJhdG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRh
aW5QdHI8SElERXZlbnRHZW5lcmF0b3I+PiBldmVudEdlbmVyYXRvciA9IGFkb3B0TlMoW1tISURF
dmVudEdlbmVyYXRvciBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiBldmVudEdlbmVyYXRvci5n
ZXQoKS5nZXQoKTsKIH0KIAogKyAoQ0ZJbmRleCluZXh0RXZlbnRDYWxsYmFja0lECmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDRkYjUx
MzlkYmU4OTZlZmEwZjc1ZDczMzEyMzg2ZTljNWJjZTNjYTcuLjg1YTJjNzRkMmQ4YjcwYWNlYjhl
MWYxMjdhZmVlYThkNTJlMjc3YTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
bWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1Rlc3RDb250cm9sbGVyTWFjLm1tCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6Y29uZmlndXJlQ29udGVudEV4dGVuc2lvbkZvclRlc3QoY29uc3QgVGVzdEludm9jYXRp
b24mIHRlc3QKICAgICBhdXRvIHRlc3RVUkwgPSBhZG9wdENGKFdLVVJMQ29weUNGVVJMKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHRlc3QudXJsKCkpKTsKICAgICBOU1VSTCAqZmlsdGVyVVJMID0gWyhf
X2JyaWRnZSBOU1VSTCAqKXRlc3RVUkwuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9u
OkAianNvbiJdOwogCi0gICAgX19ibG9jayBOU1N0cmluZyAqY29udGVudEV4dGVuc2lvblN0cmlu
ZzsKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU1N0cmluZz4gY29udGVudEV4dGVuc2lvblN0cmlu
ZzsKICAgICBfX2Jsb2NrIGJvb2wgZG9uZUZldGNoaW5nQ29udGVudEV4dGVuc2lvbiA9IGZhbHNl
OwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtXS1RSU2Vzc2lvbkRlbGVnYXRlIG5ld10p
OwogICAgIE5TVVJMU2Vzc2lvbiAqc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhD
b25maWd1cmF0aW9uOltOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uIGVwaGVtZXJhbFNlc3Npb25D
b25maWd1cmF0aW9uXSBkZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKSBkZWxlZ2F0ZVF1ZXVlOltOU09w
ZXJhdGlvblF1ZXVlIG1haW5RdWV1ZV1dOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OmNvbmZpZ3VyZUNvbnRlbnRFeHRlbnNpb25Gb3JUZXN0KGNvbnN0IFRlc3RJbnZv
Y2F0aW9uJiB0ZXN0CiAgICAgICAgIEFTU0VSVChkYXRhKTsKICAgICAgICAgQVNTRVJUKHJlc3Bv
bnNlKTsKICAgICAgICAgQVNTRVJUKCFlcnJvcik7Ci0gICAgICAgIGNvbnRlbnRFeHRlbnNpb25T
dHJpbmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ107CisgICAgICAgIGNvbnRlbnRFeHRlbnNpb25TdHJpbmcgPSBhZG9w
dE5TKFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSk7CiAgICAgICAgIGRvbmVGZXRjaGluZ0NvbnRlbnRFeHRlbnNpb24gPSB0
cnVlOwogICAgIH1dOwogICAgIFt0YXNrIHJlc3VtZV07CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9p
ZCBUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29udGVudEV4dGVuc2lvbkZvclRlc3QoY29uc3Qg
VGVzdEludm9jYXRpb24mIHRlc3QKICAgICB9IGVsc2UKICAgICAgICAgdGVtcERpciA9IFtOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRp
bmdQYXRoQ29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvbnMiXSBpc0RpcmVjdG9yeTpZRVNdOwog
Ci0gICAgW1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHN0b3JlV2l0aFVSTDp0ZW1wRGly
XSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJUZXN0Q29udGVudEV4dGVu
c2lvbnMiIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNvbnRlbnRFeHRlbnNpb25TdHJpbmcgY29t
cGxldGlvbkhhbmRsZXI6XihfV0tVc2VyQ29udGVudEZpbHRlciAqZmlsdGVyLCBOU0Vycm9yICpl
cnJvcikKKyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRl
bXBEaXJdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RDb250ZW50
RXh0ZW5zaW9ucyIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246Y29udGVudEV4dGVuc2lvblN0cmlu
Zy5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS1VzZXJDb250ZW50RmlsdGVyICpmaWx0ZXIs
IE5TRXJyb3IgKmVycm9yKQogICAgIHsKICAgICAgICAgaWYgKCFlcnJvcikKICAgICAgICAgICAg
IFttYWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50
Q29udHJvbGxlciBfYWRkVXNlckNvbnRlbnRGaWx0ZXI6ZmlsdGVyXTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0K
aW5kZXggMTMxOTlkMjRmNTQ5NWI4YzIyMjA2ZjgzMGVjZTI3M2Y4M2ZkZWY5MC4uNWUzMTYzMjcy
NjVjNTQ2YjhmYmI5MDg3N2Y1YTk3MWFkZTIzOGQ3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KQEAgLTQ1
LDcgKzQ1LDcgQEAgQGludGVyZmFjZSBMb2NhbFBhc3RlYm9hcmQgOiBOU1Bhc3RlYm9hcmQKIC0o
aWQpaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CiBAZW5kCiAKLXN0YXRpYyBOU011dGFi
bGVEaWN0aW9uYXJ5ICpsb2NhbFBhc3RlYm9hcmRzOworc3RhdGljIFJldGFpblB0cjxOU011dGFi
bGVEaWN0aW9uYXJ5PiBsb2NhbFBhc3RlYm9hcmRzOwogCiBAaW1wbGVtZW50YXRpb24gV2ViS2l0
VGVzdFJ1bm5lclBhc3RlYm9hcmQKIApAQCAtNTYsMTIgKzU2LDEyIEBAICsgKE5TUGFzdGVib2Fy
ZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQogICAgIGlmICghbmFtZSkK
ICAgICAgICAgbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTG9jYWxQYXN0ZWJv
YXJkJWQiLCArK251bWJlcl07CiAgICAgaWYgKCFsb2NhbFBhc3RlYm9hcmRzKQotICAgICAgICBs
b2NhbFBhc3RlYm9hcmRzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAg
ICAgICAgbG9jYWxQYXN0ZWJvYXJkcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XSk7CiAgICAgaWYgKExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2Nh
bFBhc3RlYm9hcmRzIG9iamVjdEZvcktleTpuYW1lXSkKICAgICAgICAgcmV0dXJuIHBhc3RlYm9h
cmQ7CiAgICAgYXV0byBwYXN0ZWJvYXJkID0gYWRvcHROUyhbW0xvY2FsUGFzdGVib2FyZCBhbGxv
Y10gaW5pdFdpdGhOYW1lOm5hbWVdKTsKICAgICBbbG9jYWxQYXN0ZWJvYXJkcyBzZXRPYmplY3Q6
cGFzdGVib2FyZC5nZXQoKSBmb3JLZXk6bmFtZV07Ci0gICAgcmV0dXJuIHBhc3RlYm9hcmQuZ2V0
KCk7CisgICAgcmV0dXJuIHBhc3RlYm9hcmQuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gVGhpcyBt
ZXRob2QgY3Jhc2hlcyB3aGVuIGNhbGxlZCBvbiBMb2NhbFBhc3RlYm9hcmQuCkBAIC03Miw3ICs3
Miw3IEBAIC0gKHZvaWQpX3VwZGF0ZVR5cGVDYWNoZUlmTmVlZGVkCiAKICsgKHZvaWQpcmVsZWFz
ZUxvY2FsUGFzdGVib2FyZHMKIHsKLSAgICBhdXRvIG9sZExvY2FsUGFzdGVCb2FyZHMgPSBhZG9w
dE5TKHN0ZDo6ZXhjaGFuZ2UobG9jYWxQYXN0ZWJvYXJkcywgbmlsKSk7CisgICAgbG9jYWxQYXN0
ZWJvYXJkcyA9IG5pbDsKIH0KIAogLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBKUyBzbyB0aGF0
IGl0IGRvZXNuJ3QgaGF2ZSB0byB0cnkgYW5kIGNyZWF0ZSBhIE5TQXJyYXkgb24gdGhlIG9iamMg
c2lkZSBpbnN0ZWFkCg==
</data>
<flag name="commit-queue"
          id="440049"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421245</attachid>
            <date>2021-02-22 15:09:15 -0800</date>
            <delta_ts>2021-02-22 16:44:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222288-20210222150914.patch</filename>
            <type>text/plain</type>
            <size>149860</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFlZDY5YjRkNTc2MTZhYThmMzVlZTgwOWJkZjcyOTgz
ZGM2MzM4OS4uOTZkMDJiMTVjOWFjMWIxNjk2OTQzMWI3YTc0ODVlYTQ5ODQ0NDYxZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NyBAQAorMjAyMS0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBbW09iamNDbGFzcyBhbGxvY10gaW5pdF0g
dG8gYXZvaWQgbGVha3MgaW4gVG9vbHMvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9T
Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzY3JvbGxUb09mZnNldCk6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlU2Nyb2xsVG9P
ZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1pbmltdW1ab29t
U2NhbGUgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1heGlt
dW1ab29tU2NhbGUgY29uc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbToKKyAgICAgICAgKGZvbnRBbGxvd0xpc3QpOgorICAgICAgICAoYWRqdXN0V2Vi
RG9jdW1lbnRGb3JGbGV4aWJsZVZpZXdwb3J0KToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycyk6Cisg
ICAgICAgIChyZWxlYXNlR2xvYmFsQ29udHJvbGxlcnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAgICAgKCtbRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkIF9wYXN0ZWJvYXJkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW0R1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAo
ZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3VyY2Up
OgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgYmVnaW5EcmFnV2l0aEZpbGVQcm9taXNlczpd
KToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhNb2RpZmll
cnM6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3ZlVG9YOlk6
XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSBkaWRDbGVhcldpbmRvd09iamVjdEluU3RhbmRh
cmRXb3JsZEZvckZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRl
IHdlYlZpZXc6ZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlk
ZUJhY2s6Zm9yVmlldzpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJv
bXB0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9y
d2FyZC5tbToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldzo6
U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50
V2ViVmlld1RpbWVvdXQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9u
Lm1tOgorICAgICAgICAoLVtUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgd2ViVmlldzpjcmVh
dGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0
dXJlczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJJ
bml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgIChVc2VySW5pdGlh
dGVkQWN0aW9uVGVzdDo6VVJMV2l0aEZyYWdtZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tp
ZVN0b3JlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVn
YXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW06CisgICAgICAgICgrW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNl
dFVwV2l0aEZyYW1lOnRlc3RQYWdlOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5p
dGlhbGl6YXRpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW06CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMv
Q3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50
SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVu
dFRlc3QubW06CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRlc3RpbmdXZWJWaWV3IGxl
YWRpbmdJdGVtc0ZvcldlYlZpZXc6XSk6CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRl
c3RpbmdXZWJWaWV3IHRyYWlsaW5nSXRlbXNGb3JXZWJWaWV3Ol0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2Fu
ZGlkYXRlVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgorICAgICAgICAoK1tUZXN0
Rm9udE9wdGlvbnMgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9tYWluTWFjLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAg
IChXVFI6Omdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCk6CisgICAgICAgIChX
VFI6OmluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQWRqdXN0Q29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
b2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldEFsbG93U3RvcmFnZVF1b3RhSW5jcmVhc2UpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbToK
KyAgICAgICAgKCtbR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93IHNoYXJlZEdlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvd10pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoK1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURF
dmVudEdlbmVyYXRvcl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29u
dGVudEV4dGVuc2lvbkZvclRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tXZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorCiAyMDIxLTAyLTIy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMo
KSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1Mu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRl
eCBkNzA5YTJlOTE2YTUxMWI3MDYxOGU5MTJhNDZkNzZiYjgwNzliZTE0Li4xZmViNGFkNDQ5ZGNk
NzM4MGRmZmU0YzhhMmI3MTJjNzA1NDI2NjEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQpAQCAtNDksOCArNDksOCBAQAogI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1leHRlcm4gRHVtcFJl
bmRlclRyZWVXaW5kb3cgKmdEcnRXaW5kb3c7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVCcm93c2Vy
VmlldyAqZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdp
bmRvdz4gZ0RydFdpbmRvdzsKK2V4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2Vy
Vmlldz4gZ1dlYkJyb3dzZXJWaWV3OwogCiBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0
bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZW50YWxSZXBh
aW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdTZWxlY3Rpb25SZWN0KQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggMjExZjg2MGZiMWM2NWY1MTg0NzZjOTkxNzU1MzBlZWU3NjJiMGI0MS4uYTFlZjJlZDA5
NzkwMTIxNDdmNjllMDk0NTNmNmVlY2U4MGEzZjRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zNSw4ICszNSw4IEBACiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7Ci1leHRlcm4g
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmlldzsKK2V4dGVybiBSZXRh
aW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2VyVmlldz4gZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJu
IFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3Owog
CiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
CiBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVySU9TOjp6b29tU2NhbGUoKSBjb25zdAogewotICAg
IHJldHVybiBnV2ViU2Nyb2xsVmlldy56b29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xs
VmlldyB6b29tU2NhbGVdOwogfQogCiBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgbG9uZyB4LCBsb25nIHksIFNj
cm9sbFRvT3B0aW9ucyogb3B0aW9ucykKQEAgLTEwOCwxMyArMTA4LDEzIEBAIGRvdWJsZSBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09w
dGlvbnMqIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBvZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBhdXRvIG9m
ZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3NhcnkoZ1dlYlNjcm9sbFZpZXcuZ2V0
KCksIHgsIHksIG9wdGlvbnMpOwogICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0
Om9mZnNldCBhbmltYXRlZDpZRVNdOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6
aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyog
b3B0aW9ucykKIHsKLSAgICBhdXRvIG9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNl
c3NhcnkoZ1dlYlNjcm9sbFZpZXcsIHgsIHksIG9wdGlvbnMpOworICAgIGF1dG8gb2Zmc2V0ID0g
Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeShnV2ViU2Nyb2xsVmlldy5nZXQoKSwgeCwg
eSwgb3B0aW9ucyk7CiAgICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0
IGFuaW1hdGVkOk5PXTsKIH0KIApAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkKIAogZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6bWluaW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGdXZWJTY3JvbGxWaWV3Lm1pbmltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2Vi
U2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXTsKIH0KIAogZG91YmxlIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdXZWJTY3Jv
bGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBtYXhp
bXVtWm9vbVNjYWxlXTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVySU9TOjpj
b250ZW50VmlzaWJsZVJlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDM3OWQ1MjBkNzM5NzkyN2JmZThhOGY5ODYwODU5ZjZlYzgxMzUy
YTUuLjc4NjA2MzU0YjgzZDg3ZGI4YzI0OWZiMGU1Y2E2NjRmNGUwNTc2ZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJMKTsKIAogdm9sYXRp
bGUgYm9vbCBkb25lOwogCi1OYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyID0gbnVsbHB0cjsKK1JldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOwogUmVmUHRyPFRlc3RSdW5uZXI+IGdUZXN0UnVubmVyOwogCiBPcHRpb25h
bDxXVFI6OlRlc3RPcHRpb25zPiBtYWluRnJhbWVUZXN0T3B0aW9uczsKQEAgLTIwNSw3ICsyMDUs
NyBAQCBXZWJGcmFtZSAqbWFpbkZyYW1lID0gbmlsOwogV2ViRnJhbWUgKnRvcExvYWRpbmdGcmFt
ZSA9IG5pbDsgLy8gIW5pbCBpZmYgYSBsb2FkIGlzIGluIHByb2dyZXNzCiAKICNpZiBQTEFURk9S
TShNQUMpCi1OU1dpbmRvdyAqbWFpbldpbmRvdyA9IG5pbDsKK1JldGFpblB0cjxOU1dpbmRvdz4g
bWFpbldpbmRvdzsKICNlbmRpZgogCiBDRk11dGFibGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM9IG51
bGxwdHI7CkBAIC0yMTgsMTUgKzIxOCwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYlZpZXc+JiBn
bG9iYWxXZWJWaWV3KCkKIH0KIAogLy8gRGVsZWdhdGVzCi1zdGF0aWMgRnJhbWVMb2FkRGVsZWdh
dGUgKmZyYW1lTG9hZERlbGVnYXRlOwotc3RhdGljIFVJRGVsZWdhdGUgKnVpRGVsZWdhdGU7Ci1z
dGF0aWMgRWRpdGluZ0RlbGVnYXRlICplZGl0aW5nRGVsZWdhdGU7Ci1zdGF0aWMgUmVzb3VyY2VM
b2FkRGVsZWdhdGUgKnJlc291cmNlTG9hZERlbGVnYXRlOwotc3RhdGljIEhpc3RvcnlEZWxlZ2F0
ZSAqaGlzdG9yeURlbGVnYXRlOwotUG9saWN5RGVsZWdhdGUgKnBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKLURlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVsdFBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKK3N0YXRpYyBSZXRhaW5QdHI8RnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVn
YXRlOworc3RhdGljIFJldGFpblB0cjxVSURlbGVnYXRlPiB1aURlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxFZGl0aW5nRGVsZWdhdGU+IGVkaXRpbmdEZWxlZ2F0ZTsKK3N0YXRpYyBSZXRhaW5Q
dHI8UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKK1JldGFpblB0cjxQb2xp
Y3lEZWxlZ2F0ZT4gcG9saWN5RGVsZWdhdGU7CitSZXRhaW5QdHI8RGVmYXVsdFBvbGljeURlbGVn
YXRlPiBkZWZhdWx0UG9saWN5RGVsZWdhdGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0
YXRpYyBTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlICpzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRl
Oworc3RhdGljIFJldGFpblB0cjxTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlPiBzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlOwogI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckFsbFRl
c3RzOwpAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+
JiBwcmV2VGVzdEJGSXRlbSgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY29uc3QgQ0dS
ZWN0IGxheW91dFRlc3RWaWV3cG9ydFJlY3QgPSB7IHswLCAwfSwge3N0YXRpY19jYXN0PENHRmxv
YXQ+KFRlc3RSdW5uZXI6OnZpZXdXaWR0aCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5u
ZXI6OnZpZXdIZWlnaHQpfSB9OwotRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyAqZ1dlYkJyb3dz
ZXJWaWV3ID0gbmlsOwotRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmll
dyA9IG5pbDsKLUR1bXBSZW5kZXJUcmVlV2luZG93ICpnRHJ0V2luZG93ID0gbmlsOworUmV0YWlu
UHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKK1JldGFpblB0
cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3OworUmV0YWluUHRy
PER1bXBSZW5kZXJUcmVlV2luZG93PiBnRHJ0V2luZG93OwogI2VuZGlmCiAKIHZvaWQgc2V0UGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oQ0ZTdHJpbmdSZWYgdXJsKQpAQCAtNDE3LDIy
ICs0MTcsMTkgQEAgc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRp
YyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqYXZhaWxh
YmxlRm9udHM7Ci0gICAgaWYgKGF2YWlsYWJsZUZvbnRzKQotICAgICAgICByZXR1cm4gYXZhaWxh
YmxlRm9udHM7Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXZhaWxhYmxlRm9udExpc3QgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBmb3IgKE5TU3RyaW5nICpmb250RmFtaWx5
IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKLSAgICAgICAgTlNBcnJheSogZm9udHNGb3JG
YW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJl
cnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07Ci0gICAgICAgIFthdmFpbGFibGVGb250TGlzdCBh
ZGRPYmplY3Q6Zm9udEZhbWlseV07Ci0gICAgICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4g
Zm9udHNGb3JGYW1pbHkpIHsKLSAgICAgICAgICAgIC8vIEZvbnQgbmFtZSBpcyB0aGUgZmlyc3Qg
ZW50cnkgaW4gdGhlIGFycmF5LgotICAgICAgICAgICAgW2F2YWlsYWJsZUZvbnRMaXN0IGFkZE9i
amVjdDpbZm9udEluZm8gb2JqZWN0QXRJbmRleDowXV07CisgICAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBhdmFpbGFibGVGb250cyA9IFtdIHsKKyAgICAgICAgYXV0byBhdmFpbGFibGVGb250
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3Ig
KE5TU3RyaW5nICpmb250RmFtaWx5IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKKyAgICAg
ICAgICAgIE5TQXJyYXkqIGZvbnRzRm9yRmFtaWx5ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmZvbnRGYW1pbHldOworICAg
ICAgICAgICAgW2F2YWlsYWJsZUZvbnRzIGFkZE9iamVjdDpmb250RmFtaWx5XTsKKyAgICAgICAg
ICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4gZm9udHNGb3JGYW1pbHkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGb250IG5hbWUgaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBhcnJheS4KKyAg
ICAgICAgICAgICAgICBbYXZhaWxhYmxlRm9udHMgYWRkT2JqZWN0Oltmb250SW5mbyBvYmplY3RB
dEluZGV4OjBdXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLQotICAgIGF2YWls
YWJsZUZvbnRzID0gYXZhaWxhYmxlRm9udExpc3Q7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRz
OworICAgICAgICByZXR1cm4gYXZhaWxhYmxlRm9udHM7CisgICAgfSgpOworICAgIHJldHVybiBh
dmFpbGFibGVGb250cy5nZXQoKTsKIH0KIAogLy8gQWN0aXZhdGluZyBzeXN0ZW0gY29waWVzIG9m
IHRoZXNlIGZvbnRzIG92ZXJyaWRlcyBhbnkgb3RoZXJzIHRoYXQgY291bGQgYmUgcHJlZmVycmVk
LCBzdWNoIGFzIG9uZXMKQEAgLTU3Niw3ICs1NzMsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RXZWJE
b2N1bWVudEZvckZsZXhpYmxlVmlld3BvcnQoVUlXZWJCcm93c2VyVmlldyAqd2ViQnJvd3NlclZp
ZQogICAgIC8vIEFkanVzdCB0aGUgdmlld3BvcnQgdmlldyBhbmQgdmlld3BvcnQgdG8gaGF2ZSBz
aW1pbGFyIGJlaGF2aW9yCiAgICAgLy8gYXMgdGhlIGJyb3dzZXIuCiAgICAgWyhEdW1wUmVuZGVy
VHJlZUJyb3dzZXJWaWV3ICopd2ViQnJvd3NlclZpZXcgc2V0U2Nyb2xsaW5nVXNlc1VJV2ViU2Ny
b2xsVmlldzpZRVNdOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXREZWxlZ2F0ZTpzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlXTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0RGVsZWdhdGU6c2Nyb2xs
Vmlld1Jlc2l6ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBDR1JlY3Qgc2NyZWVuQm91bmRzID0g
W1VJU2NyZWVuIG1haW5TY3JlZW5dLmJvdW5kczsKICAgICBDR1JlY3Qgdmlld3BvcnRSZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCBzY3JlZW5Cb3VuZHMuc2l6ZS53aWR0aCwgc2NyZWVuQm91bmRzLnNp
emUuaGVpZ2h0KTsKQEAgLTY4NywxMCArNjg0LDEwIEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6
QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAotICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdh
dGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTpl
ZGl0aW5nRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJl
c291cmNlTG9hZERlbGVnYXRlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0Rl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNv
dXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgX3NldEdlb2xvY2F0aW9uUHJv
dmlkZXI6W01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF1dOwogICAgIFt3ZWJWaWV3IF9z
ZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOltXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jayBzaGFyZWRdXTsKICAgICBbd2ViVmlldyBfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6W01v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBzaGFyZWRdXTsKQEAgLTcyMiwyMyArNzE5LDIyIEBA
IFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAg
ICAvLyBQdXQgaXQgYXQgLTEwMDAwLCAtMTAwMDAgaW4gImZsaXBwZWQgY29vcmRpbmF0ZXMiLCBz
aW5jZSBXZWJDb3JlIGFuZCB0aGUgRE9NIHVzZSBmbGlwcGVkIGNvb3JkaW5hdGVzLgogICAgIE5T
U2NyZWVuICpmaXJzdFNjcmVlbiA9IFtbTlNTY3JlZW4gc2NyZWVuc10gZmlyc3RPYmplY3RdOwog
ICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gKHNob3dXZWJWaWV3KSA/IE5TT2Zmc2V0UmVjdChyZWN0
LCAxMDAsIDEwMCkgOiBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbZmlyc3RTY3JlZW4gZnJh
bWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKLSAgICBEdW1wUmVu
ZGVyVHJlZVdpbmRvdyAqd2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgIG1haW5X
aW5kb3cgPSB3aW5kb3c7CisgICAgbWFpbldpbmRvdyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJl
ZVdpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpO
U0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZl
cjpZRVNdKTsKIAotICAgIFt3aW5kb3cgc2V0Q29sb3JTcGFjZTpbZmlyc3RTY3JlZW4gY29sb3JT
cGFjZV1dOwotICAgIFt3aW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOk5TV2luZG93Q29sbGVj
dGlvbkJlaGF2aW9yU3RhdGlvbmFyeV07Ci0gICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1
YnZpZXc6d2ViVmlldy5nZXQoKV07CisgICAgW21haW5XaW5kb3cgc2V0Q29sb3JTcGFjZTpbZmly
c3RTY3JlZW4gY29sb3JTcGFjZV1dOworICAgIFttYWluV2luZG93IHNldENvbGxlY3Rpb25CZWhh
dmlvcjpOU1dpbmRvd0NvbGxlY3Rpb25CZWhhdmlvclN0YXRpb25hcnldOworICAgIFtbbWFpbldp
bmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3LmdldCgpXTsKICAgICBpZiAoc2hv
d1dlYlZpZXcpCi0gICAgICAgIFt3aW5kb3cgb3JkZXJGcm9udDpuaWxdOworICAgICAgICBbbWFp
bldpbmRvdyBvcmRlckZyb250Om5pbF07CiAgICAgZWxzZQotICAgICAgICBbd2luZG93IG9yZGVy
QmFjazpuaWxdOwotICAgIFt3aW5kb3cgc2V0QXV0b2Rpc3BsYXk6Tk9dOworICAgICAgICBbbWFp
bldpbmRvdyBvcmRlckJhY2s6bmlsXTsKKyAgICBbbWFpbldpbmRvdyBzZXRBdXRvZGlzcGxheTpO
T107CiAKLSAgICBbd2luZG93IHN0YXJ0TGlzdGVuaW5nRm9yQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NoYW5nZXNdOworICAgIFsoRHVtcFJlbmRlclRyZWVXaW5kb3cgKiltYWluV2luZG93LmdldCgp
IHN0YXJ0TGlzdGVuaW5nRm9yQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NoYW5nZXNdOwogI2Vsc2UK
LSAgICBEdW1wUmVuZGVyVHJlZVdpbmRvdyAqZHJ0V2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdp
bmRvdyBhbGxvY10gaW5pdFdpdGhMYXllcjpbd2ViQnJvd3NlclZpZXcgbGF5ZXJdXTsKKyAgICBh
dXRvIGRydFdpbmRvdyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhMYXllcjpbd2ViQnJvd3NlclZpZXcgbGF5ZXJdXSk7CiAgICAgW2RydFdpbmRvdyBzZXRD
b250ZW50Vmlldzp3ZWJWaWV3LmdldCgpXTsKLSAgICBbd2ViQnJvd3NlclZpZXcgc2V0V0FLV2lu
ZG93OmRydFdpbmRvd107CisgICAgW3dlYkJyb3dzZXJWaWV3IHNldFdBS1dpbmRvdzpkcnRXaW5k
b3cuZ2V0KCldOwogCiAgICAgW1t3ZWJWaWV3IHdpbmRvd10gbWFrZUZpcnN0UmVzcG9uZGVyOltb
W3dlYlZpZXcgbWFpbkZyYW1lXSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld11dOwogCkBAIC03NTAs
OCArNzQ2LDggQEAgUmV0YWluUHRyPFdlYlZpZXc+IGNyZWF0ZVdlYlZpZXdBbmRPZmZzY3JlZW5X
aW5kb3coKQogICAgIFt1aVdpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xs
ZXIuZ2V0KCldOwogCiAgICAgLy8gVGhlIFVJV2luZG93IGFuZCBVSVdlYkJyb3dzZXJWaWV3IGFy
ZSByZWxlYXNlZCB3aGVuIHRoZSBEdW1wUmVuZGVyVHJlZVdpbmRvdyBpcyBjbG9zZWQuCi0gICAg
ZHJ0V2luZG93LnVpV2luZG93ID0gdWlXaW5kb3cuZ2V0KCk7Ci0gICAgZHJ0V2luZG93LmJyb3dz
ZXJWaWV3ID0gd2ViQnJvd3NlclZpZXcuZ2V0KCk7CisgICAgZHJ0V2luZG93LmdldCgpLnVpV2lu
ZG93ID0gdWlXaW5kb3cuZ2V0KCk7CisgICAgZHJ0V2luZG93LmdldCgpLmJyb3dzZXJWaWV3ID0g
d2ViQnJvd3NlclZpZXcuZ2V0KCk7CiAKICAgICBhdXRvIHNjcm9sbFZpZXcgPSBhZG9wdE5TKFtb
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmxheW91dFRl
c3RWaWV3cG9ydFJlY3RdKTsKICAgICBbc2Nyb2xsVmlldyBhZGRTdWJ2aWV3OndlYkJyb3dzZXJW
aWV3LmdldCgpXTsKQEAgLTc2OSw5ICs3NjUsOSBAQCBSZXRhaW5QdHI8V2ViVmlldz4gY3JlYXRl
V2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAjZWxzZQogICAgIC8vIEluaXRpYWxpemUgdGhl
IGdsb2JhbCBVSVZpZXdzLCBhbmQgc2V0IHRoZSBrZXkgVUlXaW5kb3cgdG8gYmUgcGFpbnRlZC4K
ICAgICBpZiAoIWdXZWJCcm93c2VyVmlldykgewotICAgICAgICBnV2ViQnJvd3NlclZpZXcgPSBb
d2ViQnJvd3NlclZpZXcgcmV0YWluXTsKLSAgICAgICAgZ1dlYlNjcm9sbFZpZXcgPSBbc2Nyb2xs
VmlldyByZXRhaW5dOwotICAgICAgICBnRHJ0V2luZG93ID0gW2RydFdpbmRvdyByZXRhaW5dOwor
ICAgICAgICBnV2ViQnJvd3NlclZpZXcgPSBXVEZNb3ZlKHdlYkJyb3dzZXJWaWV3KTsKKyAgICAg
ICAgZ1dlYlNjcm9sbFZpZXcgPSBXVEZNb3ZlKHNjcm9sbFZpZXcpOworICAgICAgICBnRHJ0V2lu
ZG93ID0gV1RGTW92ZShkcnRXaW5kb3cpOwogICAgICAgICBbdWlXaW5kb3cgbWFrZUtleUFuZFZp
c2libGVdOwogICAgICAgICBbdWlXaW5kb3cgcmV0YWluXTsKICAgICB9CkBAIC05OTIsMzYgKzk4
OCwzMSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRlc3Rp
bmcoKQogc3RhdGljIHZvaWQgYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycygpCiB7CiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlc2UgYW5kIG1vdmUgdG8gdGhlIE9iakMgc3RhbmRh
cmQgW0ZvbyBzaGFyZWRJbnN0YW5jZV0gbW9kZWwKLSAgICBnTmF2aWdhdGlvbkNvbnRyb2xsZXIg
PSBbW05hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XTsKLSAgICBmcmFtZUxvYWREZWxl
Z2F0ZSA9IFtbRnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIHVpRGVsZWdhdGUg
PSBbW1VJRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGVkaXRpbmdEZWxlZ2F0ZSA9IFtbRWRp
dGluZ0RlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IFtb
UmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIHBvbGljeURlbGVnYXRlID0g
W1tQb2xpY3lEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgaGlzdG9yeURlbGVnYXRlID0gW1tI
aXN0b3J5RGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSA9
IFtbRGVmYXVsdFBvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICBnTmF2aWdhdGlvbkNv
bnRyb2xsZXIgPSBhZG9wdE5TKFtbTmF2aWdhdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRdKTsK
KyAgICBmcmFtZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tGcmFtZUxvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbVUlEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOworICAgIGVkaXRpbmdEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tFZGl0aW5nRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tSZXNv
dXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHBvbGljeURlbGVnYXRlID0gYWRv
cHROUyhbW1BvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgaGlzdG9yeURlbGVnYXRl
ID0gYWRvcHROUyhbW0hpc3RvcnlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGRlZmF1bHRQ
b2xpY3lEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEZWZhdWx0UG9saWN5RGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHNjcm9sbFZpZXdSZXNpemVyRGVs
ZWdhdGUgPSBbW1Njcm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgIHNj
cm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2Nyb2xsVmlld1Jlc2l6ZXJEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOwogI2VuZGlmCiB9CiAKLS8vIE9iakMrKyBkb2Vzbid0IHNlZW0g
dG8gbGV0IG1lIHBhc3MgTlNPYmplY3QqJiBzYWRseS4KLXN0YXRpYyBpbmxpbmUgdm9pZCByZWxl
YXNlQW5kWmVybyhOU09iamVjdCoqIG9iamVjdCkKLXsKLSAgICBhdXRvIG9sZE9iamVjdCA9IGFk
b3B0TlMoKm9iamVjdCk7Ci0gICAgKm9iamVjdCA9IG5pbDsKLX0KLQogc3RhdGljIHZvaWQgcmVs
ZWFzZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKLSAgICByZWxlYXNlQW5kWmVybygmZ05hdmlnYXRp
b25Db250cm9sbGVyKTsKLSAgICByZWxlYXNlQW5kWmVybygmZnJhbWVMb2FkRGVsZWdhdGUpOwot
ICAgIHJlbGVhc2VBbmRaZXJvKCZlZGl0aW5nRGVsZWdhdGUpOwotICAgIHJlbGVhc2VBbmRaZXJv
KCZyZXNvdXJjZUxvYWREZWxlZ2F0ZSk7Ci0gICAgcmVsZWFzZUFuZFplcm8oJnVpRGVsZWdhdGUp
OwotICAgIHJlbGVhc2VBbmRaZXJvKCZwb2xpY3lEZWxlZ2F0ZSk7CisgICAgZ05hdmlnYXRpb25D
b250cm9sbGVyID0gbmlsOworICAgIGZyYW1lTG9hZERlbGVnYXRlID0gbmlsOworICAgIGVkaXRp
bmdEZWxlZ2F0ZSA9IG5pbDsKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IG5pbDsKKyAgICB1
aURlbGVnYXRlID0gbmlsOworICAgIGhpc3RvcnlEZWxlZ2F0ZSA9IG5pbDsKKyAgICBwb2xpY3lE
ZWxlZ2F0ZSA9IG5pbDsKKyAgICBkZWZhdWx0UG9saWN5RGVsZWdhdGUgPSBuaWw7CiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZWxlYXNlQW5kWmVybygmc2Nyb2xsVmlld1Jlc2l6ZXJE
ZWxlZ2F0ZSk7CisgICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9IG5pbDsKICNlbmRpZgog
fQogCkBAIC0xNzU4LDcgKzE3NDksNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNp
c3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogICAgIFdl
YlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQoZ1dlYkJy
b3dzZXJWaWV3LCBnV2ViU2Nyb2xsVmlldyk7CisgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFu
ZGFyZFZpZXdwb3J0KGdXZWJCcm93c2VyVmlldy5nZXQoKSwgZ1dlYlNjcm9sbFZpZXcuZ2V0KCkp
OwogICAgIFt3ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdpbmc6WUVTXTsKICNlbmRpZgogICAgIFt3
ZWJWaWV3IHNldEVkaXRhYmxlOk5PXTsKQEAgLTE3NzAsNyArMTc2MSw3IEBAIHN0YXRpYyB2b2lk
IHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMmIG9w
dGlvbnMsIFJlc2V0CiAgICAgW3dlYlZpZXcgX3NldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3Rvcjow
XTsKICNlbmRpZgogICAgIFt3ZWJWaWV3IHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50czpZ
RVNdOwotICAgIFt3ZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOmRlZmF1bHRQb2xpY3lEZWxlZ2F0
ZV07CisgICAgW3dlYlZpZXcgc2V0UG9saWN5RGVsZWdhdGU6ZGVmYXVsdFBvbGljeURlbGVnYXRl
LmdldCgpXTsKICAgICBbcG9saWN5RGVsZWdhdGUgc2V0UGVybWlzc2l2ZTpOT107CiAgICAgW3Bv
bGljeURlbGVnYXRlIHNldENvbnRyb2xsZXJUb05vdGlmeURvbmU6MF07CiAgICAgW3VpRGVsZWdh
dGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6b3B0aW9uc107CkBAIC0xOTQz
LDcgKzE5MzQsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1
dExpbmUpCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbmlsOwogI2lmICFQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIEFTU0VSVCghZHJhZ2dpbmdJbmZvKTsgLy8gdGhlIHByZXZpb3VzIHRlc3Qgc2hv
dWxkIGhhdmUgY2FsbGVkIGV2ZW50U2VuZGVyLm1vdXNlVXAgdG8gZHJvcCEKLSAgICByZWxlYXNl
QW5kWmVybygmZHJhZ2dpbmdJbmZvKTsKKyAgICBkcmFnZ2luZ0luZm8gPSBuaWw7CiAjZW5kaWYK
ICAgICBkb25lID0gTk87CiAKQEAgLTE5NTksNyArMTk1MCw3IEBAIHN0YXRpYyB2b2lkIHJ1blRl
c3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGluZSkKICAgICAgICAgZ1Rlc3RSdW5uZXItPnNl
dER1bXBGcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7CiAKICAgICBpZiAoc2hvdWxkTG9nSGlzdG9y
eURlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCi0gICAgICAgIFtbbWFpbkZyYW1lIHdlYlZp
ZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVsZWdhdGVdOworICAgICAgICBbW21haW5G
cmFtZSB3ZWJWaWV3XSBzZXRIaXN0b3J5RGVsZWdhdGU6aGlzdG9yeURlbGVnYXRlLmdldCgpXTsK
ICAgICBlbHNlCiAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0
ZTpuaWxdOwogCkBAIC0xOTcwLDcgKzE5NjEsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBpbnB1dExpbmUpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAg
IGlmIChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRoT3JVUkwuY19zdHIoKSkpCi0gICAg
ICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9ydChnV2ViQnJvd3NlclZpZXcs
IGdXZWJTY3JvbGxWaWV3KTsKKyAgICAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JGbGV4aWJsZVZp
ZXdwb3J0KGdXZWJCcm93c2VyVmlldy5nZXQoKSwgZ1dlYlNjcm9sbFZpZXcuZ2V0KCkpOwogI2Vu
ZGlmCiAKICAgICBpZiAoc2hvdWxkVXNlRXBoZW1lcmFsU2Vzc2lvbihwYXRoT3JVUkwuY19zdHIo
KSkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVN
YWMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCmluZGV4
IDQzNDdkYmU1MGVmZWUxZTQ0Nzc5OTA1N2ViOTNiMmE2MzY3ZGJjYjUuLjNkNDFiNWI3NGJiNzI4
YTUxMmRlOTY3ZDk5NThmMDY4ODJkODU2M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9EdW1wUmVuZGVyVHJlZU1hYy5oCkBAIC00NywxNyArNDcsMTkgQEAgZXh0ZXJuIENGTXV0YWJs
ZUFycmF5UmVmIG9wZW5XaW5kb3dzUmVmOwogZXh0ZXJuIENGTXV0YWJsZVNldFJlZiBkaXNhbGxv
d2VkVVJMczsKIGV4dGVybiBXZWJGcmFtZSogbWFpbkZyYW1lOwogZXh0ZXJuIFdlYkZyYW1lKiB0
b3BMb2FkaW5nRnJhbWU7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gKmRyYWdn
aW5nSW5mbzsKLWV4dGVybiBOYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyOwotZXh0ZXJuIFBvbGljeURlbGVnYXRlKiBwb2xpY3lEZWxlZ2F0ZTsKLWV4dGVybiBEZWZh
dWx0UG9saWN5RGVsZWdhdGUgKmRlZmF1bHRQb2xpY3lEZWxlZ2F0ZTsKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbz4gZHJhZ2dp
bmdJbmZvOworZXh0ZXJuIFJldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOworZXh0ZXJuIFJldGFpblB0cjxQb2xpY3lEZWxlZ2F0ZT4gcG9saWN5RGVs
ZWdhdGU7CitleHRlcm4gUmV0YWluUHRyPERlZmF1bHRQb2xpY3lEZWxlZ2F0ZT4gZGVmYXVsdFBv
bGljeURlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1MgVUlX
aW5kb3c7Ci1leHRlcm4gVUlXaW5kb3cgKm1haW5XaW5kb3c7CitleHRlcm4gUmV0YWluUHRyPFVJ
V2luZG93PiBtYWluV2luZG93OwogI2Vsc2UKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7Ci1leHRlcm4g
TlNXaW5kb3cgKm1haW5XaW5kb3c7CitleHRlcm4gUmV0YWluUHRyPE5TV2luZG93PiBtYWluV2lu
ZG93OworI2VuZGlmCiAjZW5kaWYKIAogdm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZSdW5M
b29wVGltZXJSZWYpOwpAQCAtODEsOCArODMsMTAgQEAgQGludGVyZmFjZSBEdW1wUmVuZGVyVHJl
ZSA6IFVJQXBwbGljYXRpb24gewogLSAodm9pZClfd2FpdEZvcldlYlRocmVhZDsKIEBlbmQKIAor
I2lmZGVmIF9fY3BsdXNwbHVzCiBAY2xhc3MgRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldzsKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7CitleHRlcm4g
UmV0YWluUHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKKyNl
bmRpZgogI2VuZGlmCiAKIGludCBEdW1wUmVuZGVyVHJlZU1haW4oaW50LCBjb25zdCBjaGFyICpb
XSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQ
YXN0ZWJvYXJkLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5tbQppbmRleCBlOTQ0YjQxN2RiZjU3ZmY2ZDk3ODJhOThiNDU0MGQ5OTMzZjBiZDk1
Li41Y2YyOWFjNjY2ODgxYWYyZGI2NzBkMjFhOThmMTBlYzJlYmRjOWY3IDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KQEAg
LTU2LDcgKzU2LDcgQEAgQGludGVyZmFjZSBMb2NhbFBhc3RlYm9hcmQgOiBOU1Bhc3RlYm9hcmQg
ewogLShpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKIEBlbmQKIAotc3RhdGljIE5T
TXV0YWJsZURpY3Rpb25hcnkgKmxvY2FsUGFzdGVib2FyZHM7CitzdGF0aWMgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IGxvY2FsUGFzdGVib2FyZHM7CiAKIEBpbXBsZW1lbnRhdGlvbiBE
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQKIApAQCAtNjcsNyArNjcsNyBAQCArIChOU1Bhc3RlYm9h
cmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5hbWUp
CiAgICAgICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkxvY2FsUGFzdGVi
b2FyZCVkIiwgKytudW1iZXJdOwogICAgIGlmICghbG9jYWxQYXN0ZWJvYXJkcykKLSAgICAgICAg
bG9jYWxQYXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07Cisg
ICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBh
bGxvY10gaW5pdF0pOwogICAgIGlmIChMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBbbG9j
YWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV0pCiAgICAgICAgIHJldHVybiBwYXN0ZWJv
YXJkOwogICAgIGF1dG8gcGFzdGVib2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQgYWxs
b2NdIGluaXRXaXRoTmFtZTpuYW1lXSk7CkBAIC03Nyw3ICs3Nyw3IEBAICsgKE5TUGFzdGVib2Fy
ZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQogCiArICh2b2lkKXJlbGVh
c2VMb2NhbFBhc3RlYm9hcmRzCiB7Ci0gICAgYXV0byBvbGRQYXN0ZWJvYWRzID0gYWRvcHROUyhz
dGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVib2FyZHMsIG5pbCkpOworICAgIGxvY2FsUGFzdGVib2Fy
ZHMgPSBuaWw7CiB9CiAKIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgSlMgc28gdGhhdCBpdCBk
b2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBjcmVhdGUgYSBOU0FycmF5IG9uIHRoZSBvYmpjIHNpZGUg
aW5zdGVhZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGlu
Z0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29u
dHJvbGxlci5tbQppbmRleCA1MjY2NzA1OWRjOGE5ZjdjMGEwNzk2MjA4ZjAwZmIwYjk0MmY0ZTA5
Li4xNmE2MDUxYmI3ZmI2NGI5ZGYwYWE5ZTM3MzIyYjg5YjAxMWQ3NTcwIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAtOTEs
NyArOTEsNyBAQCBzdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKIE5TUG9pbnQgbGFzdE1vdXNlUG9z
aXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bvc2l0aW9uOwogaW50IGxhc3RDbGlja0J1dHRvbiA9
IE5vTW91c2VCdXR0b247Ci1OU0FycmF5ICp3ZWJraXREb21FdmVudE5hbWVzOworc3RhdGljIFJl
dGFpblB0cjxOU0FycmF5PiB3ZWJraXREb21FdmVudE5hbWVzOwogQk9PTCByZXBsYXlpbmdTYXZl
ZEV2ZW50czsKIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24gPSAwOwogCkBAIC0x
NjksOCArMTY5LDggQEAgc3RhdGljIE5TRHJhZ2dpbmdTZXNzaW9uICpkcnRfV2ViSFRNTFZpZXdf
YmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNFdmVudFNvdXIKICAgICBmb3IgKE5TRHJhZ2dp
bmdJdGVtICppdGVtIGluIGl0ZW1zKQogICAgICAgICBbcGFzdGVib2FyZCB3cml0ZU9iamVjdHM6
QFsgaXRlbS5pdGVtIF1dOwogCi0gICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURy
YWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFz
dGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VdOwotICAgIFt3ZWJWaWV3IGRyYWdnaW5n
VXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5T
WmVyb1NpemUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VdKTsKKyAgICBbd2Vi
VmlldyBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvLmdldCgpXTsKICAgICBbRXZlbnRTZW5k
aW5nQ29udHJvbGxlciByZXBsYXlTYXZlZEV2ZW50c107CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgTlNEcmFnZ2luZ1Nlc3Npb24gKmRydF9XZWJIVE1M
Vmlld19iZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtc0V2ZW50U291cgogCiArICh2b2lkKWlu
aXRpYWxpemUKIHsKLSAgICB3ZWJraXREb21FdmVudE5hbWVzID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6CisgICAgd2Via2l0RG9tRXZlbnROYW1lcyA9IEBbCiAgICAgICAgIEAi
YWJvcnQiLAogICAgICAgICBAImJlZm9yZWNvcHkiLAogICAgICAgICBAImJlZm9yZWN1dCIsCkBA
IC0yMjYsNyArMjI2LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAidGV4dHpvb21v
dXQiLAogICAgICAgICBAInVubG9hZCIsCiAgICAgICAgIEAiem9vbSIsCi0gICAgICAgIG5pbF07
CisgICAgXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBBZGQgYW4gaW1wbGVtZW50YXRp
b24gb2YgLVtXZWJIVE1MVmlldyBiZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtczpldmVudDpz
b3VyY2U6XS4KQEAgLTQ2Myw4ICs0NjMsOCBAQCAtICh2b2lkKWJlZ2luRHJhZ1dpdGhGaWxlczoo
V2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogCiAgICAgLy8gUHJvdmlkZSBhIHNvdXJjZSwg
b3RoZXJ3aXNlIFtEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9wZXJh
dGlvbk1hc2tdIGRlZmF1bHRzIHRvIE5TRHJhZ09wZXJhdGlvbk5vbmUKICAgICBhdXRvIHNvdXJj
ZSA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZSBhbGxvY10gaW5p
dF0pOwotICAgIGRyYWdnaW5nSW5mbyA9IFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxs
b2NdIGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGJvYXJk
IHNvdXJjZTpzb3VyY2UuZ2V0KCldOwotICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIGRyYWdnaW5n
RW50ZXJlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1w
UmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5T
WmVyb1NpemUgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZS5nZXQoKV0pOworICAgIFtb
bWFpbkZyYW1lIHdlYlZpZXddIGRyYWdnaW5nRW50ZXJlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwog
CiAgICAgZHJhZ01vZGUgPSBOTzsgLy8gZHJhZ01vZGUgc2F2ZXMgZXZlbnRzIGFuZCB0aGVuIHJl
cGxheXMgdGhlbSBsYXRlci4gIFdlIGRvbid0IG5lZWQvd2FudCB0aGF0LgogICAgIGxlZnRNb3Vz
ZUJ1dHRvbkRvd24gPSBZRVM7IC8vIE1ha2UgdGhlIHJlc3Qgb2YgZXZlbnRTZW5kZXIgdGhpbmsg
YSBkcmFnIGlzIGluIHByb2dyZXNzCkBAIC01MDMsOCArNTAzLDggQEAgLSAodm9pZCliZWdpbkRy
YWdXaXRoRmlsZVByb21pc2VzOihXZWJTY3JpcHRPYmplY3QgKilmaWxlUGF0aHMKICAgICBhc3Nl
cnQoW3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5cGVd
KTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlRmlsZURyYWdn
aW5nU291cmNlIGFsbG9jXSBpbml0V2l0aFByb21pc2VkRmlsZVVSTHM6ZmlsZVVSTHNdKTsKLSAg
ICBkcmFnZ2luZ0luZm8gPSBbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0
V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQgc291
cmNlOnNvdXJjZS5nZXQoKV07Ci0gICAgW21haW5GcmFtZS53ZWJWaWV3IGRyYWdnaW5nRW50ZXJl
ZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVy
VHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1Np
emUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCldKTsKKyAgICBbbWFp
bkZyYW1lLndlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOmRyYWdnaW5nSW5mby5nZXQoKV07CiAKICAg
ICBkcmFnTW9kZSA9IE5POwogICAgIGxlZnRNb3VzZUJ1dHRvbkRvd24gPSBZRVM7CkBAIC03MTks
MTYgKzcxOSwxNCBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIgd2l0aE1vZGlm
aWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICBpZiAoZHJhZ2dpbmdJbmZvKSB7
CiAgICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogICAgICAg
ICAKLSAgICAgICAgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBbd2ViVmlldyBkcmFn
Z2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvXTsKLSAgICAgICAgCisgICAgICAgIE5TRHJhZ09wZXJh
dGlvbiBkcmFnT3BlcmF0aW9uID0gW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5m
by5nZXQoKV07CiAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uICE9IE5TRHJhZ09wZXJhdGlvbk5v
bmUpCi0gICAgICAgICAgICBbd2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpkcmFnZ2luZ0lu
Zm9dOworICAgICAgICAgICAgW3dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246ZHJhZ2dpbmdJ
bmZvLmdldCgpXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW3dlYlZpZXcgZHJhZ2dpbmdF
eGl0ZWQ6ZHJhZ2dpbmdJbmZvXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3IGRyYWdnaW5nRXhpdGVk
OmRyYWdnaW5nSW5mby5nZXQoKV07CiAgICAgICAgIC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdn
aW5nU291cmNlcyBtYXkgbm90IGltcGxlbWVudCBkcmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVyYXRp
b246CiAgICAgICAgIGlmIChbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihkcmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVyYXRpb246KV0pCiAg
ICAgICAgICAgICBbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gZHJhZ2dlZEltYWdlOltk
cmFnZ2luZ0luZm8gZHJhZ2dlZEltYWdlXSBlbmRlZEF0Omxhc3RNb3VzZVBvc2l0aW9uIG9wZXJh
dGlvbjpkcmFnT3BlcmF0aW9uXTsKLSAgICAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKICAg
ICAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogICAgIH0KICNlbmRpZgpAQCAtNzg3LDcgKzc4NSw3
IEBAIC0gKHZvaWQpbW91c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQpeQogICAgICAgICAgICAgICAg
IC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdnaW5nU291cmNlcyBtYXkgbm90IGltcGxlbWVudCBk
cmFnZ2VkSW1hZ2U6bW92ZWRUbzoKICAgICAgICAgICAgICAgICBpZiAoW1tkcmFnZ2luZ0luZm8g
ZHJhZ2dpbmdTb3VyY2VdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZHJhZ2dlZEltYWdl
Om1vdmVkVG86KV0pCiAgICAgICAgICAgICAgICAgICAgIFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5n
U291cmNlXSBkcmFnZ2VkSW1hZ2U6W2RyYWdnaW5nSW5mbyBkcmFnZ2VkSW1hZ2VdIG1vdmVkVG86
bGFzdE1vdXNlUG9zaXRpb25dOwotICAgICAgICAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXdd
IGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgICAgICAgICAgICAgIFtbbWFpbkZy
YW1lIHdlYlZpZXddIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAgICAg
ICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2VkTW91
c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1t
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCmluZGV4IDM0
MmIzYTAxZGM3ZWE4NzlhZjFiNTRiMGVlMjczZDY4MTJmOGY3YTcuLjFhYmE4MTIwODI3NzE5YTlm
MjI1ZTk2ODY2NjBlOGY5M2FiZmRkMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RnJhbWVMb2FkRGVsZWdhdGUubW0KQEAgLTMyNiw3ICszMjYsNyBAQCAtICh2b2lkKWRpZENsZWFy
V2luZG93T2JqZWN0SW5TdGFuZGFyZFdvcmxkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUKICNl
bmRpZgogCiAgICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTphZG9wdE5TKFtbRXZlbnRTZW5kaW5n
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAImV2ZW50U2VuZGVyIl07Ci0g
ICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTpnTmF2aWdhdGlvbkNvbnRyb2xsZXIgZm9yS2V5OkAi
bmF2aWdhdGlvbkNvbnRyb2xsZXIiXTsKKyAgICBbd2luZG93T2JqZWN0IHNldFZhbHVlOmdOYXZp
Z2F0aW9uQ29udHJvbGxlci5nZXQoKSBmb3JLZXk6QCJuYXZpZ2F0aW9uQ29udHJvbGxlciJdOwog
ICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHROUyhbW09iakNDb250cm9sbGVyIGFsbG9j
XSBpbml0XSkuZ2V0KCkgZm9yS2V5OkAib2JqQ0NvbnRyb2xsZXIiXTsKICAgICBbd2luZG93T2Jq
ZWN0IHNldFZhbHVlOmFkb3B0TlMoW1tPYmpDUGx1Z2luIGFsbG9jXSBpbml0XSkuZ2V0KCkgZm9y
S2V5OkAib2JqQ1BsdWdpbiJdOwogICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHROUyhb
W09iakNQbHVnaW5GdW5jdGlvbiBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAIm9iakNQbHVn
aW5GdW5jdGlvbiJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RS
dW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpp
bmRleCBjNThkNTQ2NWZhMDNkYmRiYWUwOTU4ZGE5NTU5YjdiNjYwMmIzYTVjLi4yNGNlMjJmN2Zk
YTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJiYThlYzJiNjBmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNDAwLDEyICs0MDAsMTIgQEAgdm9pZCBUZXN0UnVubmVy
OjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKQogdm9pZCBU
ZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBib29s
IHBlcm1pc3NpdmUpCiB7CiAgICAgaWYgKCFzZXREZWxlZ2F0ZSkgewotICAgICAgICBbW21haW5G
cmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0UG9saWN5RGVsZWdhdGVdOwor
ICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0UG9s
aWN5RGVsZWdhdGUuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgW3BvbGlj
eURlbGVnYXRlIHNldFBlcm1pc3NpdmU6cGVybWlzc2l2ZV07Ci0gICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGVdOworICAgIFtbbWFpbkZyYW1l
IHdlYlZpZXddIHNldFBvbGljeURlbGVnYXRlOnBvbGljeURlbGVnYXRlLmdldCgpXTsKIH0KIAog
dm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90
YSkKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lEZWxl
Z2F0ZSgpCiB7CiAgICAgc2V0V2FpdFRvRHVtcCh0cnVlKTsKICAgICBbcG9saWN5RGVsZWdhdGUg
c2V0Q29udHJvbGxlclRvTm90aWZ5RG9uZTp0aGlzXTsKLSAgICBbW21haW5GcmFtZSB3ZWJWaWV3
XSBzZXRQb2xpY3lEZWxlZ2F0ZTpwb2xpY3lEZWxlZ2F0ZV07CisgICAgW1ttYWluRnJhbWUgd2Vi
Vmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGUuZ2V0KCldOwogfQogCiB2b2lk
IFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KEpTU3RyaW5nUmVmIHNv
dXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdSZWYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQpAQCAtOTE0
LDggKzkxNCw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2FkQmFz
ZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSCiAgICAgLy8gYW5kIGNsb3NlcyBh
IFdlYlZpZXcsIGl0IHNob3VsZCBiZSBydW4gb24gdGhlIG1haW4gdGhyZWFkLiBNYWtlIHRoZSBz
d2l0Y2gKICAgICAvLyBmcm9tIHRoZSB3ZWIgdGhyZWFkIHRvIHRoZSBtYWluIHRocmVhZCBhbmQg
bWFrZSB0aGUgdGVzdCBhc3luY2hyb25vdXMuCiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVudCgp
KSB7Ci0gICAgICAgIEFQSVRlc3REZWxlZ2F0ZUlQaG9uZSAqZGlzcGF0Y2hlciA9IFtbQVBJVGVz
dERlbGVnYXRlSVBob25lIGFsbG9jXSBpbml0V2l0aFRlc3RSdW5uZXI6dGhpcyB1dGY4RGF0YTp1
dGY4RGF0YSBiYXNlVVJMOmJhc2VVUkxdOwotICAgICAgICBOU0ludm9jYXRpb24gKmludm9jYXRp
b24gPSBXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGRpc3BhdGNoZXIsIEBzZWxlY3RvcihydW4p
KTsKKyAgICAgICAgYXV0byBkaXNwYXRjaGVyID0gYWRvcHROUyhbW0FQSVRlc3REZWxlZ2F0ZUlQ
aG9uZSBhbGxvY10gaW5pdFdpdGhUZXN0UnVubmVyOnRoaXMgdXRmOERhdGE6dXRmOERhdGEgYmFz
ZVVSTDpiYXNlVVJMXSk7CisgICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFdlYlRo
cmVhZE1ha2VOU0ludm9jYXRpb24oZGlzcGF0Y2hlci5nZXQoKSwgQHNlbGVjdG9yKHJ1bikpOwog
ICAgICAgICBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoaW52b2NhdGlvbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmluZGV4IDEyZjVh
YTc5MDMxYTgxNzExNWRkZWQwMjZhYjY4YjFhZjhiZDFiNGMuLmJiYTUzYmRiZjk0ZTE5YjNmNzU3
MDBlY2FiYWExYzg3ZWY0ZmMyZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tCkBAIC00OCw3ICs0OCw3IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2EuaD4K
IAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8g
KmRyYWdnaW5nSW5mbyA9IG5pbDsKK1JldGFpblB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5m
bz4gZHJhZ2dpbmdJbmZvOwogI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBVSURlbGVnYXRlCkBA
IC0xNTMsMTAgKzE1MywxMCBAQCAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKiljIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKQogI2lmICFQTEFURk9S
TShJT1NfRkFNSUxZKQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRyYWdJbWFn
ZTooTlNJbWFnZSAqKWFuSW1hZ2UgYXQ6KE5TUG9pbnQpdmlld0xvY2F0aW9uIG9mZnNldDooTlNT
aXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJvYXJkOihOU1Bh
c3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNrOihCT09MKXNs
aWRlRmxhZyBmb3JWaWV3OihOU1ZpZXcgKil2aWV3CiB7Ci0gICAgIGFzc2VydCghZHJhZ2dpbmdJ
bmZvKTsKLSAgICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBh
bGxvY10gaW5pdFdpdGhJbWFnZTphbkltYWdlIG9mZnNldDppbml0aWFsT2Zmc2V0IHBhc3RlYm9h
cmQ6cGJvYXJkIHNvdXJjZTpzb3VyY2VPYmpdOwotICAgICBbc2VuZGVyIGRyYWdnaW5nVXBkYXRl
ZDpkcmFnZ2luZ0luZm9dOwotICAgICBbRXZlbnRTZW5kaW5nQ29udHJvbGxlciByZXBsYXlTYXZl
ZEV2ZW50c107CisgICAgYXNzZXJ0KCFkcmFnZ2luZ0luZm8pOworICAgIGRyYWdnaW5nSW5mbyA9
IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFn
ZTphbkltYWdlIG9mZnNldDppbml0aWFsT2Zmc2V0IHBhc3RlYm9hcmQ6cGJvYXJkIHNvdXJjZTpz
b3VyY2VPYmpdKTsKKyAgICBbc2VuZGVyIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8uZ2V0
KCldOworICAgIFtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJlcGxheVNhdmVkRXZlbnRzXTsKIH0K
ICNlbmRpZgogCkBAIC00MzMsNyArNDMzLDYgQEAgLSAoTlNVSW50ZWdlcil3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmYKIC0g
KHZvaWQpZGVhbGxvYwogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtkcmFnZ2lu
Z0luZm8gcmVsZWFzZV07CiAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ci5tbQppbmRleCA5NDc1NTM3ZjZmNjkxYWZmNzZjYTUzODkyMDcxNTM0ZjMzMmQ3Y2QwLi4xNTM5
NDQ1OTAzMDViOGI1YTIxMmI3Mjg0NTIwNjBmYzZiOWIzY2ZlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBAIC0z
NSw3ICszNSw3IEBACiAKIHVzaW5nIFRleHRDaGVja2luZ0NvbXBsZXRpb25IYW5kbGVyID0gdm9p
ZCheKShOU0ludGVnZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKiwgTlNPcnRo
b2dyYXBoeSAqLCBOU0ludGVnZXIpOwogCi1zdGF0aWMgTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciAq
Z2xvYmFsU3BlbGxDaGVja2VyID0gbmlsOworc3RhdGljIFJldGFpblB0cjxMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyPiBnbG9iYWxTcGVsbENoZWNrZXI7CiBzdGF0aWMgQk9PTCBoYXNTd2l6emxlZExh
eW91dFRlc3RTcGVsbENoZWNrZXIgPSBOTzsKIHN0YXRpYyBJTVAgZ2xvYmFsbHlTd2l6emxlZFNo
YXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uOwogc3RhdGljIE1ldGhvZCBvcmlnaW5hbFNo
YXJlZFNwZWxsQ2hlY2tlck1ldGhvZDsKQEAgLTQ0LDkgKzQ0LDkgQEAgc3RhdGljIExheW91dFRl
c3RTcGVsbENoZWNrZXIgKmVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29uY2Uo
Jm9uY2VUb2tlbiwgXnsKLSAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyID0gW1tMYXlvdXRUZXN0
U3BlbGxDaGVja2VyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyID0g
YWRvcHROUyhbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgYWxsb2NdIGluaXRdKTsKICAgICB9KTsK
LSAgICByZXR1cm4gZ2xvYmFsU3BlbGxDaGVja2VyOworICAgIHJldHVybiBnbG9iYWxTcGVsbENo
ZWNrZXIuZ2V0KCk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpzdHJpbmdGb3JDb3JyZWN0aW9u
UmVzcG9uc2UoTlNDb3JyZWN0aW9uUmVzcG9uc2UgY29ycmVjdGlvblJlc3BvbnNlKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCmluZGV4IDQ0
NGMwNjdiZTczMDJhMzVhNzdkYzIzZWUwZjM5MTFlYzBkMzMxNjguLmI3YmM3ODNlOWI0YTk5NDZi
OGYwZmEwMzRkMjkxYjUwNzc1MWVhMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KQEAgLTEwNiw0NSArMTA2LDQ1IEBAIFRFU1QoV2Vi
S2l0MiwgQ2FwdHVyZU11dGUpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVz
U2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2Fw
dHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRp
YUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAKLSAgICB3ZWJWaWV3Ll9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3Rp
bmcgPSAwOworICAgIFt3ZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRl
c3Rpbmc6MF07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRp
YSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFDYXB0dXJlRGV2
aWNlc011dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmll
dywgX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZENhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdh
aXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11
dGVkQ2FtZXJhKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFOb25lTXV0
ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0
b3AoKSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBf
V0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0
dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAKICAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvKCki
XTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVu
dGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
TWljcm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2FwdHVy
ZURldmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdl
YlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CisgICAgRVhQRUNU
X1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVy
ZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dL
TWVkaWFOb25lTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3
ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZU1pY3JvcGhvbmUpKTsKKyAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0
dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAKICAgICBbd2ViVmlldyBfc2V0UGFnZU11dGVk
OiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9u
ZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgp
LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9uZSkpOwogCiAgICAgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0b3AoKSJdOwotICAgIEVYUEVDVF9UUlVF
KHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUp
KTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwg
X1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8oKSJdOwotICAgIEVYUEVDVF9U
UlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFj
dGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWljcm9waG9uZSkpOworICAg
IEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRp
YUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWlj
cm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2FwdHVyZURl
dmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZp
ZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEgfCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkTWljcm9waG9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0
ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkQ2FtZXJhIHwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVNdXRlZE1pY3JvcGhvbmUpKTsKICAgICBbd2ViVmlldyBfc2V0UGFnZU11
dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVy
ZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhIHwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVu
dGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
Q2FtZXJhIHwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAKICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic3RvcCgpIl07Ci0gICAgRVhQ
RUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0
YXRlTm9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3
LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKIH0KIAogVEVTVChXZWJLaXQyLCBD
YXB0dXJlU3RvcCkKQEAgLTE1OSwxOSArMTU5LDE5IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZVN0
b3ApCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVk
aWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEi
XTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxD
YXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1l
cmEpKTsKIAogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKICAgICBbd2ViVmll
dyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVD
VF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdl
YlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEpKTsKICAgICBbd2Vi
VmlldyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUo
d2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
Q2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcu
Z2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibm90aWZ5RW5kZWRFdmVudCgpIl07CiAg
ICAgW3dlYlZpZXcgX3N0b3BNZWRpYUNhcHR1cmVdOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFRFU1Qo
V2ViS2l0MiwgQ2FwdHVyZVN0b3ApCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJl
U3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CisgICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0
YXRlTm9uZSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InByb21wdEZvckNhcHR1cmUoKSJdOwogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07
CkBAIC0xOTcsMTQgKzE5NywxNCBAQCBURVNUKFdlYktpdDIsIENhcHR1cmVJbmRpY2F0b3JEZWxh
eSkKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW0dVTU1lc3NhZ2VIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uLmdldCgpIHVzZXJDb250ZW50Q29u
dHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFt
ZTpAImd1bSJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25m
aWcuZ2V0KCldOwotICAgIHdlYlZpZXcuX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVz
dGluZyA9IDI7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZy5nZXQoKV0pOworICAgIFt3ZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdE
ZWxheUZvclRlc3Rpbmc6Ml07CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJN
ZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRp
YSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOwogCiAgICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKIApAQCAtMjE1LDcg
KzIxNSw3IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZUluZGljYXRvckRlbGF5KQogICAgIEVYUEVD
VF9FUShbd2ViVmlldyBfbWVkaWFDYXB0dXJlU3RhdGVdLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFj
dGl2ZUNhbWVyYSk7CiAKICAgICAvLyBPbmUgYWRkaXRpb25hbCBzZWNvbmQgc2hvdWxkIGFsbG93
IHVzIHRvIGdvIGJhY2sgdG8gbm8gY2FwdHVyZSBiZWluZyByZXBvcnRlZC4KLSAgICBFWFBFQ1Rf
VFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVO
b25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0
KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkpOwogfQogCiBURVNUKFdlYktpdDIsIENhcHR1
cmVJbmRpY2F0b3JEZWxheVdoZW5DbG9zZWQpCkBAIC0yMzAsMTQgKzIzMCwxNCBAQCBURVNUKFdl
YktpdDIsIENhcHR1cmVJbmRpY2F0b3JEZWxheVdoZW5DbG9zZWQpCiAgICAgYXV0byBtZXNzYWdl
SGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAg
IFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1l
c3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJndW0iXTsKIAotICAgIGF1
dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKLSAgICB3ZWJW
aWV3Ll9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3RpbmcgPSAyOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKKyAg
ICBbd2ViVmlldyBfc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nOjJdOwog
CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKLSAgICBFWFBFQ1RfVFJV
RSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3Rp
dmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmll
dy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKIAogICAgIFtkZWxl
Z2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKQEAgLTI1OCwxMiArMjU4LDEyIEBAIFRFU1QoV2Vi
S2l0MiwgR2V0Q2FwYWJpbGl0aWVzKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5T
KFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24u
Z2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNz
YWdlSGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAg
ICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5h
bWVkOkAiZ2V0VXNlck1lZGlhIl07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0
YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CisgICAgRVhQ
RUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2Fw
dHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJvbXB0
ZWRdOwogCkBAIC0zMzEsMTAgKzMzMSwxMCBAQCBURVNUKFdlYktpdCwgV2ViQXVkaW9BbmRHZXRV
c2VyTWVkaWEpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdl
SGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdl
dCgpIG5hbWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgYXV0byB1cmwgPSBhZG9wdFdL
KFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJnZXRVc2VyTWVkaWEtd2ViYXVkaW8iLCAiaHRt
bCIpKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYS13ZWJh
dWRpbyJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0
VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KaW5kZXggOWJmZmRhYzY1Nzk5NmUwOWIxNTc2YzE3
MmRhZTcwODdjZGE4MGI1My4uMTc4YzQ0Nzc2MGY1M2U2ODQ4NmYwZTUxODIwZWY3MTQzYWE0ZDBi
NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1l
ZGlhTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9H
ZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCkBAIC03NSw5ICs3NSw5IEBAIFRFU1QoV2ViS2l0LCBO
YXZpZ2F0ZUR1cmluZ0dldFVzZXJNZWRpYVByb21wdCkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFD
YXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpw
cm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbTmF2aWdhdGlvbldoaWxlR2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgp
OworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgc2hv
dWxkUmVsZWFzZUluRW51bWVyYXRlID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKQEAgLTkyLDkgKzkyLDkgQEAgVEVTVChXZWJLaXQsIE5h
dmlnYXRlRHVyaW5nRGV2aWNlRW51bWVyYXRpb24pCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2Fw
dHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0
dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJv
Y2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIHNob3Vs
ZFJlbGVhc2VJbkVudW1lcmF0ZSA9IHRydWU7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKQEAgLTEyMSw5ICsxMjEsOSBAQCBURVNUKFdl
YktpdCwgRGVmYXVsdERldmljZUlkSGFzaFNhbHRzRGlyZWN0b3J5KQogICAgIHByZWZlcmVuY2Vz
Ll9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1
cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVTOwogICAgIHByZWZlcmVuY2Vz
Ll9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRV
SURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdh
dGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAK
ICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImVudW1lcmF0ZU1lZGlhRGV2aWNlcyJd
OwogCkBAIC0xNTEsOSArMTUxLDkgQEAgVEVTVChXZWJLaXQsIERldmljZUlkSGFzaFNhbHRzRGly
ZWN0b3J5KQogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5l
Y3Rpb24gPSBOTzsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVk
ID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVT
OwotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdl
dCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRV
c2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2Vi
Vmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KaW5kZXgg
ZDA2Mjc2NWZjMjBhYTc4NGFlNWNmMWZlNjVlZjYxMDBhZmQ2NjMxOS4uOTQxNTE0MGRjMGFkZDIz
YjM2ZDUzNGFiMDkxNDJjZjIyMGFhYTQ4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KQEAgLTY4LDkgKzY4
LDkgQEAgVEVTVChXZWJLaXQyLCBHZXRVc2VyTWVkaWFSZXByb21wdCkKICAgICBwcmVmZXJlbmNl
cy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmln
dXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNl
cy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBb
W0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2Fw
dHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CiAg
ICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKQEAgLTEwNCwxMSArMTA0LDExIEBAIFRF
U1QoV2ViS2l0MiwgR2V0VXNlck1lZGlhUmVwcm9tcHRBZnRlckF1ZGlvVmlkZW9CZWluZ0Rlbmll
ZCkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9u
ID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlF
UzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAg
ICBhdXRvIHdlYlZpZXcgPSBbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Zy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJv
bXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbZGVs
ZWdhdGUgc2V0QXVkaW9EZWNpc2lvbjpfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudF07CiAgICAg
W2RlbGVnYXRlIHNldFZpZGVvRGVjaXNpb246X1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueV07Ci0g
ICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAImdldFVzZXJNZWRpYUF1ZGlvVmlkZW9DYXB0dXJlIl07CiAgICAgW2RlbGVnYXRlIHdh
aXRVbnRpbFByb21wdGVkXTsKQEAgLTEyNyw5ICsxMjcsOSBAQCBURVNUKFdlYktpdDIsIE11bHRp
cGxlR2V0VXNlck1lZGlhU3luY2hyb25vdXNseSkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0
dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQo
KS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1
cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW0dldFVzZXJNZWRp
YVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAz
MjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0p
OwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CiAgICAgW2RlbGVnYXRl
IHdhaXRVbnRpbFByb21wdGVkXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tCmluZGV4IDNkM2M2
MTYyZDM5NWU2NmVkNWQ1N2VhNzgwYTU5NDY2OWU3OTc1NGYuLjk1NmMxNzc0YzY1M2QwODI4ODg2
MTIzZDJiOTE5NWRlMjRkYTFjM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbQpAQCAtNjAs
OCArNjAsOCBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZQogICAgIC8vIEF0dGVtcHQgdG8gc2V0
IGEgcGFyYW1ldGVyIHVzaW5nIHRoZSBPYmplY3RpdmUgQyBBUEk6CiAgICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCi0gICAgQ3VzdG9tQnVuZGxlT2JqZWN0ICpj
dXN0b21PYmplY3QgPSBbW0N1c3RvbUJ1bmRsZU9iamVjdCBhbGxvY10gaW5pdFdpdGhWYWx1ZTox
MjM0XTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmplY3Q6Y3VzdG9t
T2JqZWN0IGZvckJ1bmRsZVBhcmFtZXRlcjpAIlRlc3RQYXJhbWV0ZXIxIl07CisgICAgYXV0byBj
dXN0b21PYmplY3QgPSBhZG9wdE5TKFtbQ3VzdG9tQnVuZGxlT2JqZWN0IGFsbG9jXSBpbml0V2l0
aFZhbHVlOjEyMzRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmpl
Y3Q6Y3VzdG9tT2JqZWN0LmdldCgpIGZvckJ1bmRsZVBhcmFtZXRlcjpAIlRlc3RQYXJhbWV0ZXIx
Il07CiAKICAgICBpZiAobG9hZERvbmUpCiAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0Zvcndh
cmQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNr
Rm9yd2FyZC5tbQppbmRleCA2N2JhZWViYTZkYzZmOTZmZjFmMjdhMzUzYzczMzU2OTYxNjdmYmQ3
Li4yOGIxODMxNjU5MDMwY2E0ZjhlMjcyNTI5Yjc1OTA1Y2ZkMzhjNmVkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNr
Rm9yd2FyZC5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdl
Q29uZmlndXJhdGlvbkNyZWF0ZSgpKTsgICAgICAgIAogICAgICAgICBXS1BhZ2VDb25maWd1cmF0
aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0LmdldCgpKTsKIAotICAg
ICAgICB3ZWJWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9uLmdldCgpXTsKKyAg
ICAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CiAKICAgICAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxvYWRlckNsaWVudDsK
ICAgICAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1t
CmluZGV4IGIxYWYxNWFjYjQzYjZkYmFkN2Y3NWRiYjkwNGI5NzA2NmEzNjIxNjkuLjQ0YWI4NGJm
Yjk3Y2Y5ODNkNTc4ZDMzOGExODE1YWYyNDhiMTZkZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzYwLDcgKzM2MCw4IEBA
IFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGlyZWN0RG93bmxv
YWRXaXRoTG9hZGVkQ29udGVudCkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAg
ICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkxOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBbW1t3
ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0ZTpb
W0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0
ZWRPcmlnaW5hbFVSTDpzb3VyY2VVUkxdXTsKKyAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUgPSBh
ZG9wdE5TKFtbRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdp
dGhFeHBlY3RlZE9yaWdpbmFsVVJMOnNvdXJjZVVSTF0pOworICAgIFtbW3dlYlZpZXcgY29uZmln
dXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVsZWdh
dGUuZ2V0KCldOwogCiAgICAgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsKICAg
ICBOU1VSTCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3Vy
Y2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXMiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA0YjM2NWU4
YmI5MzdlZWQxNWU0YWZiY2I1NjRmYmM4Yjc3OGU1NGU4Li5mMGI4YWQ5OTg2ZWY3MTEwOGJjODZi
OTc4NTc2ZWU1NThkNDNkNmNmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMTIzLDEx
ICsxMTIzLDExIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSW5qZWN0U2NyaXB0SW5Ob25B
cHBCb3VuZFN1YmZyYW1lQXBwQm91bmRNYWluZnJhbWVGYWlsCiAgICAgY2xlYW5VcEluQXBwQnJv
d3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIAotc3RhdGljIE5TTXV0YWJsZVNldDxXS0Zy
YW1lSW5mbyAqPiAqYWxsRnJhbWVzOworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVTZXQ8V0tG
cmFtZUluZm8gKj4+IGFsbEZyYW1lczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZh
U2NyaXB0SW5Ob25BcHBCb3VuZEZyYW1lRmFpbHMpCiB7Ci0gICAgYWxsRnJhbWVzID0gW1tOU011
dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOworICAgIGFsbEZyYW1lcyA9IGFk
b3B0TlMoW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdKTsKIAogICAg
IGlzRG9uZSA9IGZhbHNlOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNl
dHRpbmdzKCk7CkBAIC0xMTY0LDEyICsxMTY0LDEyIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFj
eSwgSmF2YVNjcmlwdEluTm9uQXBwQm91bmRGcmFtZUZhaWxzKQogCiAgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKIAotICAgIEVYUEVDVF9FUShhbGxG
cmFtZXMuY291bnQsIDN1KTsKKyAgICBFWFBFQ1RfRVEoW2FsbEZyYW1lcyBjb3VudF0sIDN1KTsK
IAogICAgIHN0YXRpYyBzaXplX3QgZmluaXNoZWRGcmFtZXMgPSAwOwogICAgIHN0YXRpYyBib29s
IGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJh
bWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7
CiAgICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZS5pc01haW5GcmFtZTsKICAgICAgICAg
W3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlvbi5ocmVmOyIgYXJn
dW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRl
ZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJhbWVdIChpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBpZiAoaXNNYWluRnJhbWUpIHsKQEAg
LTExODEsNyArMTE4MSw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSmF2YVNjcmlwdElu
Tm9uQXBwQm91bmRGcmFtZUZhaWxzKQogICAgICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJvci5j
b2RlLCBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9tYWluKTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxsRnJhbWVzLmNvdW50ICogMikK
KyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdICog
MikKICAgICAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9XTsKIApAQCAtMTE5
Niw3ICsxMTk2LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZhU2NyaXB0SW5Ob25B
cHBCb3VuZEZyYW1lRmFpbHMpCiAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUs
IFdLRXJyb3JKYXZhU2NyaXB0QXBwQm91bmREb21haW4pOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAg
ICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQog
ICAgICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH0KQEAgLTEz
NTEsNyArMTM1MSw3IEBAIHN0YXRpYyB2b2lkIGxvYWRSZXF1ZXN0KFJldGFpblB0cjxUZXN0V0tX
ZWJWaWV3PiB3ZWJWaWV3LCBOU1N0cmluZyAqdXJsKQogCiBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogewotICAgIGFs
bEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XTsKKyAg
ICBhbGxGcmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9j
XSBpbml0XSk7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3Mo
KTsKIAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05h
bWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGlu
ZzpZRVNdOwpAQCAtMTM2MywxMiArMTM2MywxMiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ks
IEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogICAgIE5TU3RyaW5n
ICp1cmwgPSBAImluLWFwcC1icm93c2VyOi8vYXBwbGUuY29tL2luLWFwcC1icm93c2VyLXByaXZh
Y3ktdGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSI7CiAgICAgbG9hZFJlcXVlc3Qod2ViVmlldywg
dXJsKTsKICAgICAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQ
RUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpbmlz
aGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZv
ciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUlu
Zm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZyYW1l
ID0gZnJhbWUuaXNNYWluRnJhbWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3Jp
cHQ6QCJyZXR1cm4gbG9jYXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBp
bkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlv
bkhhbmRsZXI6W2lzTWFpbkZyYW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAg
ICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKTsKQEAgLTEzODAsNyArMTM4MCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJv
dXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lQXBwQm91bmQpCiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJh
Ym91dDpibGFuayJdKTsKIAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxs
RnJhbWVzLmNvdW50KQorICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZy
YW1lcyBjb3VudF0pCiAgICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07
CiAgICAgfQpAQCAtMTM4OSw3ICsxMzg5LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBB
Ym91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVBcHBCb3VuZCkKIAogVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3Vu
ZCkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxv
Y10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1l
SW5mbyAqPiBhbGxvY10gaW5pdF0pOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5
VGVzdFNldHRpbmdzKCk7CiAKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3Vy
ZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKQEAgLTE0MDAsMTUgKzE0MDAsMTUgQEAgVEVTVChJbkFwcEJy
b3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBCb3Vu
ZCkKICAgICBOU1N0cmluZyAqdXJsID0gQCJpbi1hcHAtYnJvd3NlcjovL2FwcGxlLmNvbS9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtYWJvdXQtYmxhbmstc3ViZnJhbWUiOwogICAgIGxvYWRS
ZXF1ZXN0KHdlYlZpZXcsIHVybCk7CiAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAy
dSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMg
c2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxz
ZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZv
ciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBbd2Vi
VmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1bWVu
dHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVs
dENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVy
cm9yKSB7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKLSAgICAgICAgICAgIGlm
ICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCkKKyAgICAgICAgICAgIGlmICgr
K2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdKQogICAgICAgICAgICAgICAgIGlz
RG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9sc1Rl
c3RzLm1tCmluZGV4IGY3YjgxZjBhYmQ1ZWY1M2E3NTc2YTAzZDg3NTczY2FmNTQ3YTViZDEuLjZk
ZjIwN2IyZjIwNzljMDBhZTBmMmEyZjJjMWE4ODhlZmZmODkwNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5n
Q29udHJvbHNUZXN0cy5tbQpAQCAtOTIsOSArOTIsOSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAjaWYgUExBVEZPUk0oTUFDKQogVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93
UGxheWluZ0NvbnRyb2xzRG9Ob3RTaG93Rm9yRm9yZWdyb3VuZFBhZ2UpCiB7Ci0gICAgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNl
ckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1lZGlhVHlw
ZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5v
bmVdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgd2FpdEZv
ck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAKQEAgLTExMyw5ICsxMTMsOSBAQCBURVNUKE5vd1BsYXlp
bmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNEb05vdFNob3dGb3JGb3JlZ3JvdW5k
UGFnZSkKIAogVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xz
U2hvd0ZvckJhY2tncm91bmRQYWdlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAg
IGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9
IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlv
bkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVz
dC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJd
OwogCkBAIC0xMzAsOSArMTMwLDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93
UGxheWluZ0NvbnRyb2xzU2hvd0ZvckJhY2tncm91bmRQYWdlKQogCiBURVNUKE5vd1BsYXlpbmdD
b250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNIaWRlQWZ0ZXJTaG93aW5nS2VlcHNTZXNz
aW9uQWN0aXZlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24g
PSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5n
VGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
OldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWlu
ZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0xNTMs
OSArMTUzLDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRy
b2xzSGlkZUFmdGVyU2hvd2luZ0tlZXBzU2Vzc2lvbkFjdGkKIAogVEVTVChOb3dQbGF5aW5nQ29u
dHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2xlYXJJbmZvQWZ0ZXJTZXNzaW9uSXNOb0xv
bmdlclZhbGlkKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24g
PSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5n
VGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMy
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBb
Y29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNr
OldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgNDgwLCAzMjApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWlu
ZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0xOTQs
OSArMTk0LDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRy
b2xzQ2xlYXJJbmZvQWZ0ZXJTZXNzaW9uSXNOb0xvbmdlclYKIAogVEVTVChOb3dQbGF5aW5nQ29u
dHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2hlY2tSZWdpc3RlcmVkKQogewotICAgIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmlu
Z1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5
cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHNldFdpbmRvd1Zpc2libGU6
Tk9dOwpAQCAtMjIyLDkgKzIyMiw5IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5v
d1BsYXlpbmdDb250cm9sc0NoZWNrUmVnaXN0ZXJlZCkKIC8vIEZJWE1FOiBSZS1lbmFibGUgdGhp
cyB0ZXN0IG9uY2UgPHdlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIHJlc29sdmVkLgogVEVTVChOb3dQ
bGF5aW5nQ29udHJvbHNUZXN0cywgRElTQUJMRURfTm93UGxheWluZ0NvbnRyb2xzSU9TKQogewot
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1Jl
cXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25l
OwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMyMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBz
ZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxN
ZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rl
c3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAzMjAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJW
aWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbQppbmRl
eCAwM2UwZTcwZWQzN2Y5Nzg4OTAyZmU2ZGE5MDVlNGIwY2FhOTZmMDM3Li44YWVmNjI4ZmM2MzQw
NGViOWVlYzY1Nzk5YzhlZTQwNmZlNjg3NGZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KQEAgLTE1
Miw4ICsxNTIsOCBAQCBURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJbWFnZUZpbGVBbmRSVEYpCiB7
CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CiAgICAgYXV0byB0ZXh0ID0gYWRv
cHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKLSAgICBbdGV4
dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0
V2l0aFN0cmluZzpAImxpbmsgdG8gIl1dOwotICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJp
bmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiYXBwbGUiIGF0
dHJpYnV0ZXM6QHsgTlNMaW5rQXR0cmlidXRlTmFtZTogW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwczovL3d3dy5hcHBsZS5jb20vIl0gfV1dOworICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRT
dHJpbmc6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6
QCJsaW5rIHRvICJdKS5nZXQoKV07CisgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzph
ZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImFwcGxl
IiBhdHRyaWJ1dGVzOkB7IE5TTGlua0F0dHJpYnV0ZU5hbWU6IFtOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyJdIH1dKS5nZXQoKV07CiAgICAgTlNEYXRhICpydGZE
YXRhID0gW3RleHQgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0IGxlbmd0aF0pIGRv
Y3VtZW50QXR0cmlidXRlczpAeyB9XTsKICAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2Fy
ZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgpIF0sIE5TUGFzdGVib2FyZFR5
cGVSVEYsIHJ0ZkRhdGEsIG5pbCk7CiAgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3
VGltZW91dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJl
bnRXZWJWaWV3VGltZW91dC5tbQppbmRleCBjNTU0MjVjMDAyMGQ4N2YwNzFjMGQyNTBjODAzYTFm
OTM3ZGQ4MTU1Li5hMmU0MzAyMjRlOWNjZWY5YmFkZWRmZGU3NzRkYWQ4ODFjMTM3NjlmIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2Vi
Vmlld1RpbWVvdXQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tCkBAIC0zNCw3ICszNCw3IEBACiAKIFRFU1QoV2Vi
S2l0LCBSZXBhcmVudFdlYlZpZXdUaW1lb3V0KQogewotICAgIFJldGFpblB0cjxfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldElnbm9yZVN5bmNocm9u
b3VzTWVzc2FnaW5nVGltZW91dHNGb3JUZXN0aW5nOllFU107CiAKICAgICBSZXRhaW5QdHI8V0tX
ZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TY2hlbWVSZWdpc3RyeS5tbQppbmRleCAyYzhhODQxNWFj
ZjhlNTk2YjMwOGE1YzRjNzU3MGQ3MTMxOTJiZmFmLi4yMTA4MjA2ZmE3OTQzZDMyYzU4MGNlMjlj
YzZmYjgyZGFiMTE4NzhhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVnaXN0cnkubW0KQEAgLTE2OSw3ICsxNjksOCBAQCBURVNU
KFdlYktpdCwgV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5S
ZXF1ZXN0X1NhbWVPcmlnaW5MbwogICAgICAgICBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSyhlY2hv
U2NoZW1lLlVURjhTdHJpbmcpLmdldCgpKTsKIAogICAgICAgICBQbGF0Zm9ybVdlYlZpZXcgd2Vi
VmlldyB7IGNvbnRleHQuZ2V0KCkgfTsKLSAgICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5i
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbV0tDb250ZXh0UmVnaXN0
ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0XTsKKyAgICAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tDb250ZXh0
UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAg
ICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9h
ZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48Ym9keT48c2NyaXB0IHNyYz0nZWNobzovL0Ev
QV8xJz48L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJlY2hvOi8vQSJd
XTsKICAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKICAgICAgICAgZGlkRmluaXNo
TG9hZCA9IGZhbHNlOwpAQCAtMTkyLDcgKzE5Myw4IEBAIFRFU1QoV2ViS2l0LCBXS0NvbnRleHRS
ZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RfQ3Jvc3NPcmlnaW5M
CiAgICAgICAgIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdChjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKGVjaG9TY2hlbWUuVVRGOFN0cmluZyku
Z2V0KCkpOwogCiAgICAgICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3IHsgY29udGV4dC5nZXQo
KSB9OwotICAgICAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlz
cGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBh
dXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxv
YWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcucGxhdGZv
cm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjwhRE9D
VFlQRSBodG1sPjxib2R5PjxzY3JpcHQgc3JjPSdlY2hvOi8vQS9BXzEnPjwvc2NyaXB0PiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImVjaG86Ly9CIl1dOwogICAgICAgICBVdGlsOjpy
dW4oJmRpZEZpbmlzaExvYWQpOwogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZp
ZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVByZXZp
ZXcubW0KaW5kZXggOGJjNjUzY2E5MDY1YjI3ZGRiYzJhY2ZmNmQ4NmJkMmM5NzdhMjU3Yy4uYmQ0
YjM1ZjIwMDAwMTEwZThiNWUwNDZkYzA3YjMwYmQzODA2ODllYyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TeXN0ZW1QcmV2aWV3Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbQpAQCAt
NjgsNyArNjgsNyBAQCBURVNUKFdlYktpdCwgU3lzdGVtUHJldmlld1RyaWdnZXJlZCkKICAgICBh
dXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RTeXN0ZW1QcmV2aWV3VHJpZ2dlcmVk
SGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJ0ZXN0U3lzdGVtUHJldmlldyJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInN5c3Rl
bS1wcmV2aWV3LXRyaWdnZXIiXTsKICAgICBVdGlsOjpydW4oJmhhc1RyaWdnZXJJbmZvKTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09B
dXRob3JpemF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
ZXN0U09BdXRob3JpemF0aW9uLm1tCmluZGV4IDg2ZGQxMWUxNjdlYWMzYTFkMTcxZGIyYjZlYzBm
MDJlZGMzMGViOWQuLjMzMjZkNTc2MjRiZGEwMGE4ODBhZTFjZjEwMjVlZmYzMGNlM2Q4ZDkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0
aG9yaXphdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KQEAgLTE4NCw3ICsxODQsNyBAQCAtIChXS1dlYlZpZXcg
Kil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmlndXJh
dGlvbjooV0tXZQogewogICAgIEVYUEVDVF9GQUxTRShuZXdXaW5kb3dDcmVhdGVkKTsKICAgICBu
ZXdXaW5kb3dDcmVhdGVkID0gdHJ1ZTsKLSAgICBnTmV3V2luZG93ID0gW1tXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
OworICAgIGdOZXdXaW5kb3cgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW2dOZXdX
aW5kb3cgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOnNlbGZdOwogICAgIHJldHVybiBnTmV3V2luZG93
LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0aW9uQWN0aW9uLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0
aW9uQWN0aW9uLm1tCmluZGV4IGM4NmZjNGNiMzYzYjM1MTlkY2U4ZGQxOTJkYzAxODhjZWZhYTMx
ZjAuLmI5ZTMxMDhlYjczN2U3Njk2ZGI4ZmJmYTNlYWNmMjM5ZTc0MWIwZTUgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckluaXRpYXRlZEFjdGlv
bkluTmF2aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1VzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0KQEAgLTgx
LDkgKzgxLDkgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKlVSTFdpdGhGcmFnbWVudChOU1N0cmlu
ZyAqZnJhZ21lbnQpCiAgICAgewotICAgICAgICBOU1VSTENvbXBvbmVudHMgKlVSTENvbXBvbmVu
dHMgPSBbW05TVVJMQ29tcG9uZW50cyBhbGxvY10gaW5pdFdpdGhVUkw6VVJMLmdldCgpIHJlc29s
dmluZ0FnYWluc3RCYXNlVVJMOk5PXTsKLSAgICAgICAgVVJMQ29tcG9uZW50cy5mcmFnbWVudCA9
IGZyYWdtZW50OwotICAgICAgICByZXR1cm4gVVJMQ29tcG9uZW50cy5VUkw7CisgICAgICAgIGF1
dG8gdXJsQ29tcG9uZW50cyA9IGFkb3B0TlMoW1tOU1VSTENvbXBvbmVudHMgYWxsb2NdIGluaXRX
aXRoVVJMOlVSTC5nZXQoKSByZXNvbHZpbmdBZ2FpbnN0QmFzZVVSTDpOT10pOworICAgICAgICBb
dXJsQ29tcG9uZW50cyBzZXRGcmFnbWVudDpmcmFnbWVudF07CisgICAgICAgIHJldHVybiBbdXJs
Q29tcG9uZW50cyBVUkxdOwogICAgIH0KIAogICAgIHZvaWQgbG9hZFRlc3QoTlNTdHJpbmcgKnRl
c3QpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJNZWRpYURpc2FibGVkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Vc2VyTWVkaWFEaXNhYmxlZC5tbQppbmRleCBjYzU0NWI0OTFlMDI4OTRhNzYzZjViOTI4MWEw
ZDdlODYwNGQ3YWJkLi41MWUzNGEyZTY1NDRlNzZmZTZlMTAzMWE2ZjJlOWI5OTQ1NGM0MTY5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRp
YURpc2FibGVkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VXNlck1lZGlhRGlzYWJsZWQubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCBURVNUX0YoTWVkaWFDYXB0
dXJlRGlzYWJsZWRUZXN0LCBVbnNlY3VyZUNvbnRleHQpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlh
Q2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IFlFUzsKIAogICAgIHJlY2VpdmVkU2Ny
aXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIFttX3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aHRt
bD48Ym9keT48c2NyaXB0PndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVy
LnBvc3RNZXNzYWdlKE5hdmlnYXRvci5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ21lZGlhRGV2
aWNlcycpID8gJ2hhcycgOiAnbm9uZScpOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiBiYXNlVVJM
OiBbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImh0dHA6Ly90ZXN0Lm9yZyJdXTsKKyAg
ICBbbV93ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+PHNjcmlwdD53aW5kb3cu
d2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShOYXZpZ2F0b3Iu
cHJvdG90eXBlLmhhc093blByb3BlcnR5KCdtZWRpYURldmljZXMnKSA/ICdoYXMnIDogJ25vbmUn
KTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIgYmFzZVVSTDphZG9wdE5TKFtbTlNVUkwgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOkAiaHR0cDovL3Rlc3Qub3JnIl0pLmdldCgpXTsKIAogICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICBFWFBFQ1Rf
U1RSRVEoWyhOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSBVVEY4U3RyaW5nXSwg
Im5vbmUiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDg3YTg1MDQzMmQ0YmZkNWYwZTU4NTZm
NDQwN2ZkMDFlYTI3YmVkNDMuLmQ0OTgwY2ZkNDcwMmViM2IzMmExODNkNTllMmM5MDM0MmYyZTNi
MWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tI
VFRQQ29va2llU3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMjU3LDE3ICsyNTcsMTcgQEAgVEVTVChXS0hU
VFBDb29raWVTdG9yZSwgSHR0cE9ubHkpCiAgICAgZ290RmxhZyA9IGZhbHNlOwogICAgIEFTU0VS
VF9FUShbY29va2llcyBjb3VudF0sIDB1KTsKIAotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmNv
b2tpZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAg
IGF1dG8gY29va2llUHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XSk7CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llTmFt
ZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9i
amVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwogICAgIFtjb29r
aWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5Ok5TSFRUUENv
b2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiL3BhdGgiIGZv
cktleTpOU0hUVFBDb29raWVQYXRoXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6
QFlFUyBmb3JLZXk6QCJIdHRwT25seSJdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGh0
dHBPbmx5Q29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQ
cm9wZXJ0aWVzXTsKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBodHRwT25seUNvb2tpZSA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQo
KV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llVmFsdWUyIiBmb3JL
ZXk6TlNIVFRQQ29va2llVmFsdWVdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGh0dHBP
bmx5Q29va2llMiA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJv
cGVydGllc107CisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gaHR0cE9ubHlDb29raWUyID0g
W05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzLmdldCgp
XTsKICAgICBbY29va2llUHJvcGVydGllcyByZW1vdmVPYmplY3RGb3JLZXk6QCJIdHRwT25seSJd
OwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IG5vdEh0dHBPbmx5Q29va2llID0gW05TSFRU
UENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzXTsKKyAgICBSZXRh
aW5QdHI8TlNIVFRQQ29va2llPiBub3RIdHRwT25seUNvb2tpZSA9IFtOU0hUVFBDb29raWUgY29v
a2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQoKV07CiAKICAgICBFWFBFQ1Rf
VFJVRShodHRwT25seUNvb2tpZS5nZXQoKS5IVFRQT25seSk7CiAgICAgRVhQRUNUX0ZBTFNFKG5v
dEh0dHBPbmx5Q29va2llLmdldCgpLkhUVFBPbmx5KTsKQEAgLTM2MiwxNCArMzYyLDE0IEBAIFRF
U1QoV0tIVFRQQ29va2llU3RvcmUsIENyZWF0aW9uVGltZSkKIAogICAgIGdsb2JhbENvb2tpZVN0
b3JlID0gZGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZTsKIAotICAgIE5TTXV0YWJsZURpY3Rpb25h
cnkgKmNvb2tpZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRd
OworICAgIGF1dG8gY29va2llUHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29v
a2llTmFtZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwogICAgIFtjb29raWVQcm9wZXJ0aWVz
IHNldE9iamVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwogICAg
IFtjb29raWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5Ok5T
SFRUUENvb2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiL3Bh
dGgiIGZvcktleTpOU0hUVFBDb29raWVQYXRoXTsKICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+IGNy
ZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6
Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpAIkNyZWF0ZWQiXTsKLSAgICBSZXRhaW5QdHI8TlNI
VFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOmNv
b2tpZVByb3BlcnRpZXNdOworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGNvb2tpZSA9IFtO
U0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQoKV07
CiAKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOmNvb2tpZS5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpbXSgpIHsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVs
ZWdhdGUubW0KaW5kZXggNWEwNDY0MmVmYTQyMjRjM2IyMTdmMGEyMTI0ODFlMGY0ZTAwN2NkOC4u
OWRlYTYzY2Q4NmE3YjdmMTJkOTA4NTliZjQwMmMyMTFiZDIyNDljZSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbQpAQCAtMTI0LDcgKzEyNCw3IEBAIC0gKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9jCiAg
ICAgc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUgPSBbSW5zcGVjdG9yRGVsZWdhdGUgbmV3XTsKICAg
ICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJlZEluc3BlY3RvckRlbGVnYXRlLmdldCgpXTsK
IAotICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBbW1NpbXBsZVVSTFNjaGVtZUhhbmRsZXIg
YWxsb2NdIGluaXRdOworICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtbU2lt
cGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gaW5zcGVjdG9yQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CiAgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpz
aGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3RpbmciXTsKICAg
ICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQppbmRleCBl
NzJlNjBmNzQzYjFiM2RjNGQzY2YyZGExY2QxNWJmMDUxMDgyZmI4Li5lMjMwYjA5NGNhNTk2MTc0
ZTYzMDVmN2U4N2E1N2I0YjJiYmNmYzg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQpAQCAtNDE0LDE0ICs0MTQsMTQgQEAgQGVu
ZAogCiBURVNUKFBERiwgUHJpbnRTaXplKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHNjaGVt
ZUhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0b3JlbGVhc2VdOwotICAg
IFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlciBmb3JVUkxT
Y2hlbWU6QCJ0ZXN0Il07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tQcmlu
dFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0g
ZGVsZWdhdGU7Ci0KLSAgICBzY2hlbWVIYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIg
PSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAg
IGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10p
OworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1ByaW50VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIHNjaGVtZUhhbmRsZXIuZ2V0KCkuc3Rh
cnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFz
az4gdGFzaykgewogICAgICAgICBhdXRvIHVybCA9IHRhc2sucmVxdWVzdC5VUkw7CiAgICAgICAg
IE5TRGF0YSAqZGF0YTsKICAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlOwpAQCAtNDM3LDggKzQz
Nyw4IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgICAgICAgICBtaW1lVHlwZSA9IEAiYXBw
bGljYXRpb24vcGRmIjsKICAgICAgICAgICAgIGRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29udGVu
dHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdF9wcmlu
dCIgd2l0aEV4dGVuc2lvbjpAInBkZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNv
dXJjZXMiXV07CiAgICAgICAgIH0KLSAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UgPSBb
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmwgTUlNRVR5cGU6bWltZVR5cGUg
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBh
dXRvcmVsZWFzZV07Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZV07
CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOm1pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpk
YXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRSZWNl
aXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0
YTpkYXRhXTsKICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICB9OwpAQCAtNDQ5LDcgKzQ0
OSw3IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgRVhQRUNUX0VRKHNpemUud2lkdGgsIDYx
Mi4wKTsKIAogICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFNpemUgPSBmYWxzZTsKLSAgICBbd2Vi
VmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6d2ViVmlldy5fbWFpbkZyYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOl4oQ0dTaXplIHJlcXVlc3RlZFNpemUpIHsKKyAgICBbd2ViVmlldyBfZ2V0
UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6W3dlYlZpZXcgX21haW5GcmFtZV0gY29tcGxldGlvbkhh
bmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgewogICAgICAgICBFWFBFQ1RfRVEocmVxdWVz
dGVkU2l6ZS5oZWlnaHQsIDc5Mi4wKTsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNpemUu
d2lkdGgsIDYxMi4wKTsKICAgICAgICAgcmVjZWl2ZWRTaXplID0gdHJ1ZTsKQEAgLTQ2NCw3ICs0
NjQsNyBAQCBURVNUKFBERiwgUHJpbnRTaXplKQogICAgIEVYUEVDVF9FUShtYWluRnJhbWVTaXpl
LndpZHRoLCAwLjApOwogICAgIAogICAgIHJlY2VpdmVkU2l6ZSA9IGZhbHNlOwotICAgIFt3ZWJW
aWV3IF9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFtZTp3ZWJWaWV3Ll9tYWluRnJhbWUgY29tcGxl
dGlvbkhhbmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgeworICAgIFt3ZWJWaWV3IF9nZXRQ
REZGaXJzdFBhZ2VTaXplSW5GcmFtZTpbd2ViVmlldyBfbWFpbkZyYW1lXSBjb21wbGV0aW9uSGFu
ZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CiAgICAgICAgIEVYUEVDVF9FUShyZXF1ZXN0
ZWRTaXplLmhlaWdodCwgMC4wKTsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNpemUud2lk
dGgsIDAuMCk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRydWU7CkBAIC00NzcsNyArNDc3LDcg
QEAgVEVTVChQREYsIFByaW50U2l6ZSkKICAgICBFWFBFQ1RfTkVBUihwZGZGcmFtZVNpemUud2lk
dGgsIDEyOS42MDAwMDYsIC4wMDAwMSk7CiAKICAgICByZWNlaXZlZFNpemUgPSBmYWxzZTsKLSAg
ICBbd2ViVmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6ZGVsZWdhdGUubGFzdFByaW50
ZWRGcmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CisgICAg
W3dlYlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOltkZWxlZ2F0ZSBsYXN0UHJpbnRl
ZEZyYW1lXSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CiAgICAg
ICAgIEVYUEVDVF9ORUFSKHJlcXVlc3RlZFNpemUuaGVpZ2h0LCAyOC43OTk5OTksIC4wMDAwMSk7
CiAgICAgICAgIEVYUEVDVF9ORUFSKHJlcXVlc3RlZFNpemUud2lkdGgsIDEyOS42MDAwMDYsIC4w
MDAwMSk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDYW5kaWRh
dGVUZXN0cy5tbQppbmRleCAwZTdhZTk2ZTFiNmExMzc4YTBlY2YyNzZmZDNkODZjZDFkY2JiYzc3
Li43N2QyNGZhMDVmMzBmMTQzYzkxNDAzOTNkMzJlOGMyNzgyMDEzNWQ5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRl
c3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW0KQEAgLTEyNSw5ICsxMjUsOSBAQCAtICh2b2lkKXR5cGVTdHJp
bmc6KE5TU3RyaW5nICopc3RyaW5nIGlucHV0TWVzc2FnZTooTlNTdHJpbmcgKilpbnB1dE1lc3Nh
Z2UKICAgICB9CiB9CiAKLSsgKGluc3RhbmNldHlwZSlzZXRVcFdpdGhGcmFtZTooTlNSZWN0KWZy
YW1lIHRlc3RQYWdlOihOU1N0cmluZyAqKXRlc3RQYWdlTmFtZQorKyAoUmV0YWluUHRyPENhbmRp
ZGF0ZVRlc3RXZWJWaWV3PilzZXRVcFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHRlc3RQYWdlOihO
U1N0cmluZyAqKXRlc3RQYWdlTmFtZQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dl
YlZpZXcgPSBbW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1l
XTsKKyAgICBhdXRvIHdrV2ViVmlldyA9IGFkb3B0TlMoW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0pOwogCiAgICAgW3drV2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDp0ZXN0UGFnZU5hbWVdOwogICAgIFt3a1dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJm
b2N1c2VkIl07CkBAIC0xNDEsNyArMTQxLDcgQEAgQGVuZAogCiBURVNUKFdLV2ViVmlld0NhbmRp
ZGF0ZVRlc3RzLCBTb2Z0U3BhY2VSZXBsYWNlbWVudEFmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0
aG91dFJlcGxhY2VtZW50KQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dlYlZpZXcg
PSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Il07
CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1z
Y3JvbGxhYmxlLWRvY3VtZW50Il07CiAKICAgICBbd2tXZWJWaWV3IGluc2VydENhbmRpZGF0ZXNB
bmRXYWl0Rm9yUmVzcG9uc2U6QCJhcHBsZSAiIHJhbmdlOk5TTWFrZVJhbmdlKDAsIDApXTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxlICIsIFt3a1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpHZXRJbnB1dFZhbHVlSlNFeHByZXNzaW9uXSk7CkBAIC0xNTYsNyArMTU2LDcg
QEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU29mdFNwYWNlUmVwbGFjZW1lbnRBZnRl
ckNhbmRpZGF0ZUluc2VydGlvbldpdGhvdXQKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0
cywgSW5zZXJ0Q2hhcmFjdGVyc0FmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0aFNvZnRTcGFjZSkK
IHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RX
ZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdl
OkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJW
aWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVu
dCJdOwogCiAgICAgW3drV2ViVmlldyBpbnNlcnRDYW5kaWRhdGVzQW5kV2FpdEZvclJlc3BvbnNl
OkAiZm9vICIgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMCldOwogICAgIEVYUEVDVF9XS19TVFJFUSgi
Zm9vICIsIFt3a1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpHZXRJbnB1dFZh
bHVlSlNFeHByZXNzaW9uXSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgVEVTVChXS1dlYlZpZXdDYW5k
aWRhdGVUZXN0cywgSW5zZXJ0Q2hhcmFjdGVyc0FmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0aFNv
ZnRTcGEKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgSW5zZXJ0Q2FuZGlkYXRlRnJv
bVBhcnRpYWxseVR5cGVkUGhyYXNlV2l0aFNvZnRTcGFjZSkKIHsKLSAgICBDYW5kaWRhdGVUZXN0
V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Ny
b2xsYWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RX
ZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdl
OkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogCiAgICAgW3drV2ViVmll
dyB0eXBlU3RyaW5nOkAiaGVsIiBpbnB1dE1lc3NhZ2U6QCJpbnB1dCJdOwogICAgIFt3a1dlYlZp
ZXcgaW5zZXJ0Q2FuZGlkYXRlc0FuZFdhaXRGb3JSZXNwb25zZTpAImhlbGxvICIgcmFuZ2U6TlNN
YWtlUmFuZ2UoMCwgMyldOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlk
YXRlVGVzdHMsIEluc2VydENhbmRpZGF0ZUZyb21QYXJ0aWFsbHlUeXBlZFBocmFzZVdpdGhTb2Z0
U3BhCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIENsaWNraW5nSW5UZXh0RmllbGRE
b2VzTm90VGhyYXNoQ2FuZGlkYXRlVmlzaWJpbGl0eSkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2Vi
VmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAibGFyZ2UtaW5wdXQtZmllbGQtZm9j
dXMtb25sb2FkIl07CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcg
c2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJsYXJn
ZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQiXTsKIAogICAgIFt3a1dlYlZpZXcgdHlwZVN0cmlu
ZzpAInRlc3QiIGlucHV0TWVzc2FnZTpAImlucHV0Il07CiAgICAgW3drV2ViVmlldyBleHBlY3RD
YW5kaWRhdGVMaXN0VmlzaWJpbGl0eVVwZGF0ZXM6MCB3aGVuUGVyZm9ybWluZ0FjdGlvbnM6Xigp
CkBAIC0yMDMsNyArMjAzLDcgQEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgQ2xpY2tp
bmdJblRleHRGaWVsZERvZXNOb3RUaHJhc2hDYW5kaWRhdGVWaXNpYmlsaXQKIAogVEVTVChXS1dl
YlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkTm90UmVxdWVzdENhbmRpZGF0ZXNJblBhc3N3b3Jk
RmllbGQpCiB7Ci0gICAgQ2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtbQ2FuZGlk
YXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCldOworICAgIGF1dG8gd2tXZWJWaWV3ID0gYWRvcHROUyhbW0NhbmRpZGF0ZVRlc3RXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAg
ICAgW3drV2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHQtYW5kLXBhc3N3b3JkLWlucHV0
cyJdOwogICAgIFt3a1dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKICAgICBbd2tX
ZWJWaWV3IF9mb3JjZVJlcXVlc3RDYW5kaWRhdGVzXTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBURVNU
KFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBTaG91bGROb3RSZXF1ZXN0Q2FuZGlkYXRlc0luUGFz
c3dvcmRGaWVsZCkKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkUmVxdWVz
dENhbmRpZGF0ZXNJblRleHRGaWVsZCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmlldyAqd2tX
ZWJWaWV3ID0gW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKV07CisgICAgYXV0byB3a1dlYlZpZXcgPSBhZG9wdE5TKFtb
Q2FuZGlkYXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKICAgICBbd2tXZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dC1h
bmQtcGFzc3dvcmQtaW5wdXRzIl07CiAgICAgW3drV2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImxv
YWRlZCJdOwogICAgIFt3a1dlYlZpZXcgX2ZvcmNlUmVxdWVzdENhbmRpZGF0ZXNdOwpAQCAtMjQ3
LDcgKzI0Nyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIFNob3VsZFJlcXVlc3RD
YW5kaWRhdGVzSW5UZXh0RmllbGQpCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIENh
bmRpZGF0ZVJlY3RGb3JFbXB0eVBhcmFncmFwaCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmll
dyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJs
ZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3
IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5w
dXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogICAgIE5TUmVjdCBjYW5kaWRhdGVS
ZWN0ID0gW3drV2ViVmlldyBfY2FuZGlkYXRlUmVjdF07CiAgICAgRVhQRUNUX05FKDAsIGNhbmRp
ZGF0ZVJlY3Qub3JpZ2luLnkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0RvZXNO
b3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbQppbmRleCA4ODcxNjkzNDYwN2Y0Y2FjY2QzOWMz
ZmIzNWQ0NGExODg2YTExZmJiLi4yNmNhNDU3YzRiNzZiNTEyZmZhZTRmYjQ5N2JiM2ZiYzViMTJh
MzA0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
V2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0
aWFsaXphdGlvbi5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5o
PgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2ltcG9y
dCA8ZmNudGwuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogVEVTVChXS1dlYlZpZXcs
IEluaXRpYWxpemluZ1dlYlZpZXdXaXRoRXBoZW1lcmFsU3RvcmFnZURvZXNOb3RMb2cpCiB7CkBA
IC00MSwxMiArNDIsMTIgQEAgVEVTVChXS1dlYlZpZXcsIEluaXRpYWxpemluZ1dlYlZpZXdXaXRo
RXBoZW1lcmFsU3RvcmFnZURvZXNOb3RMb2cpCiAgICAgZHVwMihwWzFdLCBTVERFUlJfRklMRU5P
KTsKICAgICBjbG9zZShwWzFdKTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZp
Z3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIF9X
S1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gW1tf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRp
b24ucHJvY2Vzc1Bvb2wgPSBbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uXTsKLSAgICBjb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVd
OworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgp
XSkuZ2V0KCldOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dLV2Vi
c2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CiAKLSAgICBbW1dLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OwogCiAgICAgRklMRSAqc3RkZXJyRmlsZUhhbmRsZSA9IGZkb3BlbihwWzBdLCAiciIpOwogICAg
IGNoYXIgYnVmZmVyWzEwMjRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5t
bQppbmRleCAxMDMwNTE1N2U1MjMyZTFmNDk2MDMyYjVmOGUwMjdhZmZmNjA2NGVkLi41NmIxMjFi
YzlhODA0MjM3MjQ0YzRiOWE1YzIwNDk3OGQzN2M1OTE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2
YWx1YXRlSmF2YVNjcmlwdC5tbQpAQCAtNDczLDcgKzQ3Myw4IEBAIFRFU1QoV2ViS2l0LCBTUElK
YXZhc2NyaXB0TWFya3VwVnNBUElDb250ZW50SmF2YVNjcmlwdCkKIAogfQogCi1zdGF0aWMgTlNN
dXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+ICphbGxGcmFtZXM7CitzdGF0aWMgUmV0YWluUHRyPE5T
TXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPj4gYWxsRnJhbWVzOworCiBAaW50ZXJmYWNlIEZyYW1l
c01lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5k
CiAKQEAgLTQ5OSw3ICs1MDAsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnVzZXJTY3JpcHRTb3VyY2Ug
PSBAIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmZyYW1lc1Rlc3RlcgogLy8gYW5kIGNh
bGxBc3luY0phdmFTY3JpcHQgdG8gY29uZmlybSB0aGF0IGl0IGNhbiBleGVjdXRlIEpTIGRpcmVj
dGx5IGluIGVhY2ggb2YgdGhvc2UgZnJhbWVzLgogVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEph
dmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05T
TXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0g
YWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRnJhbWVzTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2NyaXB0
IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6V0tV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5P
IGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZF0pOwogCkBA
IC01MjcsMTIgKzUyOCwxMiBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdElu
RnJhbWVzRnJvbVBvc3RNZXNzYWdlKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiZnJhbWVzdGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdXV07CiAKLSAgICBF
WFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMg
Y291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsKICAg
ICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8gKmZy
YW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZy
YW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJh
bWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gbG9jYXRp
b24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBpbkNvbnRlbnRXb3JsZDpXS0Nv
bnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6W2lzTWFpbkZy
YW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgRVhQRUNUX05V
TEwoZXJyb3IpOwpAQCAtNTQzLDcgKzU0NCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBK
YXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3NhZ2UpCiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnBy
b3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pOwogCi0gICAgICAgICAgICBpZiAoKytmaW5pc2hl
ZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAgICAgICAgICAgaWYgKCsrZmluaXNo
ZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQogICAgICAgICAgICAgICAgIGlzRG9u
ZSA9IHRydWU7CiAgICAgICAgIH1dOwogCkBAIC01NTcsNyArNTU4LDcgQEAgVEVTVChFdmFsdWF0
ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0
cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAgICAg
IGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAgICAg
ICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAg
ICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtNTcyLDcgKzU3
Myw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9z
dE1lc3NhZ2UpCiAvLyBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdCB0byBjb25maXJtIHRoYXQgaXQg
Y2FuIGV4ZWN1dGUgSlMgZGlyZWN0bHkgaW4gZWFjaCBvZiB0aG9zZSBmcmFtZXMuCiBURVNUKEV2
YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0
ZSkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxv
Y10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1l
SW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rl
c3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRV
UkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4g
dGFzaykgewpAQCAtNjE1LDEyICs2MTYsMTIgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEph
dmFTY3JpcHRJbkZyYW1lc0Zyb21OYXZpZ2F0aW9uRGVsZWdhdGUpCiAKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwogCi0gICAgRVhQRUNUX0VRKGFs
bEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJhbWVzIGNvdW50XSwgMnUp
OwogCiAgICAgc3RhdGljIHNpemVfdCBmaW5pc2hlZEZyYW1lcyA9IDA7CiAgICAgc3RhdGljIGJv
b2wgaXNEb25lID0gZmFsc2U7CiAKLSAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxG
cmFtZXMpIHsKKyAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0KCkp
IHsKICAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lOwogICAgICAg
ICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBh
cmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQu
ZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5GcmFtZV0gKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsK
QEAgLTYzMSw3ICs2MzIsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdElu
RnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIm90aGVycHJvdG9j
b2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJh
bWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZy
YW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAgICAgICAgICAgaXNEb25lID0g
dHJ1ZTsKICAgICAgICAgfV07CiAKQEAgLTY0NSw3ICs2NDYsNyBAQCBURVNUKEV2YWx1YXRlSmF2
YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxU
b1N0cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAg
ICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAg
ICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAg
ICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtNjU3LDcg
KzY1OCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9t
TmF2aWdhdGlvbkRlbGVnYXRlKQogLy8gZHVlIHRvIHJlbW92YWwgZnJvbSB0aGUgRE9NIHJlc3Vs
dHMgaW4gYW4gYXBwcm9wcmlhdGUgZXJyb3IKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZh
U2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJs
ZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHRO
UyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAgYXV0
byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7
CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3
ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtNzAwLDcgKzcwMSw3IEBAIFRFU1Qo
RXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIAogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CiAKLSAgICBF
WFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMg
Y291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBbd2Vi
VmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgndGhlRnJhbWUnKTsgZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZSk7IiBp
bkZyYW1lOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6W10gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKQEAg
LTcxMCw3ICs3MTEsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlz
c2luZ0ZyYW1lRXJyb3IpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwog
ICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxs
RnJhbWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgp
KSB7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCkBAIC03MjgsNyArNzI5LDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3Jp
cHRJbk1pc3NpbmdGcmFtZUVycm9yKQogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgZXZhbHVh
dGluZyBKYXZhU2NyaXB0IGluIGEgZnJhbWUgZnJvbSB0aGUgcHJldmlvdXMgbWFpbiBuYXZpZ2F0
aW9uIHJlc3VsdHMgaW4gYW4gZXJyb3IKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2Ny
aXB0SW5NaXNzaW5nRnJhbWVBZnRlck5hdmlnYXRpb25FcnJvcikKIHsKLSAgICBhbGxGcmFtZXMg
PSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJh
bWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0p
OwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFs
bG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpb
Jl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtNzc3LDEwICs3
NzgsMTAgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbk1pc3NpbmdGcmFt
ZUFmdGVyTmF2aWdhdGlvbkVycm9yKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlk
RmluaXNoTmF2aWdhdGlvbik7CiAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOwogCi0g
ICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJh
bWVzIGNvdW50XSwgMnUpOwogCiAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBpZnJhbWU7Ci0g
ICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzKSB7CisgICAgZm9yIChXS0Zy
YW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS5p
c01haW5GcmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZnJhbWUgPSBmcmFt
ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggMjgxYWMxYmEy
MjEwZGM2NWM2OGI1MGQ3OTdjOThlYTMxMjliMDRiYS4uZjYxNmE3NGI0MTdmNjFlOWFhM2RkMjVj
OGJlODZjOWUyYTJmZDI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3JlQ3Vz
dG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgc2hvdWxkRQogICAgIFJldGFp
blB0cjxOU1VSTD4gZmlsZUlEQlBhdGggPSBbW2lkYlBhdGggVVJMQnlBcHBlbmRpbmdQYXRoQ29t
cG9uZW50OkAidjEiXSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJmaWxlX18wIl07CiAg
ICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3Rz
QXRQYXRoOmZpbGVJREJQYXRoLmdldCgpLnBhdGhdKTsKIAotICAgIFJldGFpblB0cjxXS1dlYnNp
dGVEYXRhU3RvcmU+IGRhdGFTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5p
dFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXTsK
KyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICBSZXRhaW5QdHI8TlNTZXQ+IHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMsIG5p
bF0pOwogCiAgICAgLy8gU3ViZnJhbWUgb2YgZGlmZmVyZW50IG9yaWdpbnMgbWF5IGFsc28gY3Jl
YXRlIEluZGV4ZWREQiBmaWxlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KaW5kZXggMDQxNzRjOTlkMGQ2YzM1
Zjg5MjI5YjM5MDNiMDA3YzBhNDcyODA4NC4uZjA0MzMyYTIwZjk5ZTFkYWUzMDcyNDZmNGQ2NmJl
NWFhYTJiMzZhYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAgLTE2NTcsNyArMTY1Nyw3IEBAIC0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxX
S1VSTFNjaGVtZVRhc2s+KXRhCiAgICAgTlNVUkwgKnVybCA9IHRhc2sucmVxdWVzdC5VUkw7CiAg
ICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tTdG9yYWdlIl0pIHsKICAg
ICAgICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+dmFyIG9sZFZhbHVlID0gd2luZG93LnNl
c3Npb25TdG9yYWdlWydzdG9yYWdlS2V5J107IHdpbmRvdy5zZXNzaW9uU3RvcmFnZVsnc3RvcmFn
ZUtleSddID0gJ3ZhbHVlJzsgYWxlcnQoJ29sZCB2YWx1ZTogPCcgKyAob2xkVmFsdWUgPyAnZmFp
bCcgOiAnJykgKyAnPicpOzwvc2NyaXB0PiI7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNw
b25zZTpbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybCBNSU1FVHlwZTpAInRl
eHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0bWwubGVuZ3RoIHRleHRFbmNvZGluZ05h
bWU6bmlsXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOkAidGV4dC9odG1sIiBl
eHBlY3RlZENvbnRlbnRMZW5ndGg6aHRtbC5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKS5n
ZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltodG1sIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kv
bWFjL0Nsb3NpbmdXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRM
ZWdhY3kvbWFjL0Nsb3NpbmdXZWJWaWV3Lm1tCmluZGV4IDRiM2QzNWVhMzk2ZmIzOGU3MDJjNWVl
MDc4ODlkMmUyNGIyYzQyNTIuLjhkNWY5ZjczOWEyYmQ4ZmU4OWIwMDRiOGNhY2UwMThkYmU5N2Nl
ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L21h
Yy9DbG9zaW5nV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW0KQEAgLTc5LDcgKzc5LDggQEAgVEVTVChXZWJL
aXRMZWdhY3ksIENsb3NpbmdXZWJWaWV3VGhlblNlbmRpbmdJdEFLZXlEb3duRXZlbnQpCiAgICAg
VXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAogICAgIC8vIEZpcnN0LCBhZGQgYSBuYXRpdmUg
ZXZlbnQgbGlzdGVuZXIgdGhhdCBjbG9zZXMgdGhlIFdlYlZpZXcuCi0gICAgW1tbd2ViVmlldyBt
YWluRnJhbWVEb2N1bWVudF0gYm9keV0gYWRkRXZlbnRMaXN0ZW5lcjpAImtleXByZXNzIiBsaXN0
ZW5lcjpbW0tleWJvYXJkRXZlbnRMaXN0ZW5lciBhbGxvY10gaW5pdF0gdXNlQ2FwdHVyZTpOT107
CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tLZXlib2FyZEV2ZW50TGlzdGVuZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbW1t3ZWJWaWV3IG1haW5GcmFtZURvY3VtZW50XSBib2R5XSBhZGRF
dmVudExpc3RlbmVyOkAia2V5cHJlc3MiIGxpc3RlbmVyOmxpc3RlbmVyLmdldCgpIHVzZUNhcHR1
cmU6Tk9dOwogCiAgICAgLy8gU2Vjb25kLCBhZGQgYSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXIg
dGhhdCBjb25zdW1lcyB0aGUgZXZlbnQuCiAgICAgW1tbd2ViVmlldyBtYWluRnJhbWVdIGphdmFT
Y3JpcHRDb250ZXh0XSBldmFsdWF0ZVNjcmlwdDpAImFkZEtleVByZXNzSGFuZGxlcigpIl07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9tUHJv
dG9jb2xzSW52YWxpZFNjaGVtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCmluZGV4IDQyZTRjY2YwY2MzOWI3
YzRmMzhhYmUxNjJhYzcyYTM4OGYzYzhiZDcuLjliODcyZTM3NDE4NmNiYzAzMmRiZjFjMjkyNGM0
MjM5ZGZkZGMzODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCkBA
IC02MCw3ICs2MCw4IEBAIFRFU1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIExvYWRJbnZh
bGlkU2NoZW1lKQogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0
V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiQ3VzdG9tUHJvdG9j
b2xJbnZhbGlkU2NoZW1lVGVzdCIpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250
ZXh0LmdldCgpKTsKIAotICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW0xvYWRJbnZhbGlkU2NoZW1lRGVsZWdhdGUgYWxs
b2NdIGluaXRdOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0xvYWRJbnZhbGlk
U2NoZW1lRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygp
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdl
dCgpOwogICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0J3RwOi8vd3d3LndlYmtpdC5vcmciXV1dOwogICAgIAogICAgIFV0aWw6OnJ1
bigmdGVzdEZpbmlzaGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNp
emluZy5tbQppbmRleCAyOTZhYmIwYzJiMDgwM2U5MDY4ODg2NTJiYjcyYjk4NzVkOTZjYWYzLi5l
MTI2MThjYTdjODM5M2RhYjk1NDc0OGJiZDUwMjdiYjExOGJjMzI1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRv
UmVzaXppbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1By
ZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogCkBA
IC00NCw5ICs0NSwxMCBAQCBURVNUKFdlYktpdCwgUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVz
aXppbmdUZXN0KQogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQgPSBO
U01ha2VTaXplKDQwMCwgMzAwKTsKLSAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHRO
UyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tU
b1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAgICAg
ICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgfV07CisgICAgfV0pOworICAgIHdlYlZpZXcu
cGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBs
b2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgW3dlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5IHN0eWxlPSdiYWNr
Z3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNV
aEVVZ0FBQUFvQUFBQUtDQVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNC
SmJXRm5aVkpsWVdSNWNjbGxQQUFBQUZaSlJFRlVlRjU5ejRFSkFERUlRMUYzNms3dTVFN1pLWGVV
UVBBQ0ozd0s3VU5va1Z4Vms5a0huUUg3Ylk5aGJEeURoTlhnanBSTHFGbG80TTJHZ2Z5SkhoanE4
VjRhZ2ZyZ1BRWDNKdEpRR2JvZm1DSGdBL25BS2tzK0pBakZBQUFBQUVsRlRrU3VRbUNDKTsnPjwv
Ym9keT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6Ymxhbmsi
XV07CiAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250ZW50VGVzdC5tbQppbmRleCAy
ZDBiMTczZmRhNTZkN2I4YTg1MGIzNzhjN2I4ZWM5MmM4ZjFlNGMzLi5hMjQyMjZlZjI0YWM1ZWZm
NGY2YjY2NTNmYzQwZGJkZWNhODllZDEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVudFRlc3QubW0KQEAgLTEyMCwxNyArMTIw
LDE3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5bGVTaGVldEJl
Zm9yZUNyZWF0aW5nVmlldykKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBbYnJvd3Np
bmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpu
aWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJp
bmdzOm5pbCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBb
W1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBw
cm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dz
aW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JR
dWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlw
dCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0g
W1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9S
dW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAgICAg
ICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xv
clF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNz
R3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29u
dGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KSk7
CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKFt3a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBl
cnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVk
U2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3JRdWVyeSk7CiAgICAgICAg
IH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAKLSAgICBbd2tW
aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBi
YXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9h
ZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMTM5LDE5ICsxMzksMTkgQEAg
VEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0ZXJDcmVh
dGluZ1ZpZXcpCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgCi0gICAgV0tWaWV3
ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4
dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBiYWNr
Z3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91
bmRDb2xvclNjcmlwdCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9h
ZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRl
cikgewotICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJh
Y2tncm91bmRDb2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRv
cHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3Vw
OmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3JR
dWVyeSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENv
bG9yU2NyaXB0KSk7CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dz
aW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4o
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5Lmdl
dCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwg
V0tFcnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmlu
ZyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZp
bmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3JRdWVy
eSk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5bGVTaGVl
dCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNo
UGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBbd2tWaWV3
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNl
VVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhU
TUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0xNjEsMTkgKzE2MSwxOSBAQCBURVNUX0Yo
V2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQogICAgIHRl
c3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5
bGVTaGVldDp1c2VyU3R5bGVTaGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3Ry
aW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVT
XTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAu
Z2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldOwot
ICAgIFdLU3RyaW5nUmVmIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gV0tTdHJpbmdDcmVhdGVXaXRo
VVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KTsKLSAgICB3a1ZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2Fk
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZSh3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnksIF4oV0tTZXJpYWxpemVkU2Ny
aXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7Cisg
ICAgYXV0byB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkg
YnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBh
dXRvIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikg
eworICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgYmFj
a2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAgICAgICAgICBleHBl
Y3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgcmVkSW5SR0IpOwog
ICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShi
YWNrZ3JvdW5kQ29sb3JRdWVyeSk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAg
ICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWRE
ZWxlZ2F0ZS5nZXQoKTsKICAgICAKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgcmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzXTsKICAgICAKLSAgICBbd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CisgICAgW1t3a1Zp
ZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBi
YXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0Rmlu
aXNoZWQpOwogfQpAQCAtMTgzLDE3ICsxODMsMTcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVu
dFRlc3QsIEFkZFVzZXJTY3JpcHRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgdGVzdEZpbmlzaGVk
ID0gZmFsc2U7CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTY3JpcHQ6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyA9IHRydWU7IiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0
eV0gYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRj
aFBhdHRlcm5TdHJpbmdzOm5pbCBpbmplY3Rpb25UaW1lOmtXS0luamVjdEF0RG9jdW1lbnRTdGFy
dCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNz
R3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29u
dGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0VGVzdFByb3BlcnR5
U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQcm9w
ZXJ0eSk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRl
ID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2Nr
VG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAg
ICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIHVzZXJTY3JpcHRU
ZXN0UHJvcGVydHlTdHJpbmcsIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0byB3a1ZpZXcgPSBhZG9w
dE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6
YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBhdXRvIHVzZXJTY3JpcHRUZXN0UHJv
cGVydHlTdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVzZXJT
Y3JpcHRUZXN0UHJvcGVydHkpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tU
ZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5P
bkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgICAgICBy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgdXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eVN0cmluZy5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNj
cmlwdFZhbHVlSXNCb29sZWFuKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdHJ1ZSk7CiAgICAgICAg
ICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgV0tSZWxlYXNlKHVzZXJTY3Jp
cHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsKLSAgICB9XTsKKyAgICB9XSk7Cisg
ICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2FkRGVsZWdhdGUgPSBsb2Fk
RGVsZWdhdGUuZ2V0KCk7CiAgICAgCi0gICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKICAg
ICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0y
MDIsMTkgKzIwMiwxOSBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclNj
cmlwdEFmdGVyQ3JlYXRpbmdWaWV3KQogewogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAg
IAotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBi
cm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tT
dHJpbmdSZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0Nv
bnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2Vy
aWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBl
cnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dy
b3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgp
XSk7CisgICAgYXV0byB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7CisgICAg
YXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3
a1ZpZXcgcGFnZVJlZl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVm
IGVycm9yKSB7CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzQm9vbGVhbihzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIHRydWUpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsK
LSAgICAgICAgICAgIFdLUmVsZWFzZSh1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nKTsKICAg
ICAgICAgfSk7Ci0gICAgfV07CisgICAgfV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlcl0ubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAogICAg
IFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiJXMgPSB0cnVlOyIsIHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmls
IGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5n
czpuaWwgaW5qZWN0aW9uVGltZTprV0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25s
eTpZRVNdOwogICAgIAotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2Fk
SFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJdIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMjI0LDE5ICsy
MjQsMTkgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIFJlbW92ZUFsbFVzZXJTY3Jp
cHRzKQogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91
cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMgPSB0cnVlOyIs
IHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5T
dHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgaW5qZWN0aW9uVGltZTpr
V0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFdL
VmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0Nv
bnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tTdHJpbmdSZWYg
dXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRD
b250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmll
dy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewor
ICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgp
IGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAg
YXV0byB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0
ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7CisgICAgYXV0byBsb2Fk
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFn
ZVJlZl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7
CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzVW5kZWZpbmVkKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAg
V0tSZWxlYXNlKHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsKLSAg
ICB9XTsKKyAgICB9XSk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5s
b2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCiAgICAgW2Jyb3dzaW5nQ29u
dGV4dEdyb3VwIHJlbW92ZUFsbFVzZXJTY3JpcHRzXTsKICAgICAKLSAgICBbd2tWaWV3LmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5p
bF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJp
bmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggNWU2NzM2MTEwMzNmMTFjNmEy
ODU0YjJlMjJiZjhhZGM5OTg0ZDI2Mi4uOGI0MGFhMDA1NzZiNzE0NDliOWFhY2FiMmQ5OWFmZmFh
NWM1MzQwMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0Fu
ZERyb3BUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFn
QW5kRHJvcFRlc3RzSU9TLm1tCkBAIC04NzksOCArODc5LDggQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBFeHRlcm5hbFNvdXJjZUJvbGRTeXN0ZW1BdHRyaWJ1dGVkU3RyaW5nVG9Db250ZW50RWRp
dGFibGUKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxh
dG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIE5TRGljdGlv
bmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250IGJv
bGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmljaFRl
eHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJUaGlzIGlz
IGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107Ci0gICAgYXV0byBpdGVtUHJvdmlk
ZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hU
ZXh0XSk7CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcg
YWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhpcyBpcyBhIHRlc3QiIGF0dHJpYnV0ZXM6dGV4dEF0
dHJpYnV0ZXNdKTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92
aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6cmljaFRleHQuZ2V0KCldKTsKICAgICBbc2ltdWxh
dG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CiAg
ICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50TWFr
ZSgxMDAsIDMwMCldOwogCkBAIC04OTUsOCArODk1LDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3Rz
LCBFeHRlcm5hbFNvdXJjZUNvbG9yZWRBdHRyaWJ1dGVkU3RyaW5nVG9Db250ZW50RWRpdGFibGUp
CiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRvciBh
bGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBOU0RpY3Rpb25hcnkg
KnRleHRBdHRyaWJ1dGVzID0gQHsgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiBbVUlD
b2xvciByZWRDb2xvcl0gfTsKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnJpY2hUZXh0ID0gW1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhpcyBpcyBhIHRlc3Qi
IGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRv
cHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDpyaWNoVGV4dF0pOwor
ICAgIGF1dG8gcmljaFRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpAIlRoaXMgaXMgYSB0ZXN0IiBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVz
XSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxs
b2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0LmdldCgpXSk7CiAgICAgW3NpbXVsYXRvciBzZXRF
eHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdldCgpIF1dOwogICAgIFtzaW11
bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAwLCAz
MDApXTsKIApAQCAtMTg3Miw4ICsxODcyLDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBEYXRh
VHJhbnNmZXJHZXREYXRhUmVhZFBsYWluQW5kUmljaFRleHQpCiAKICAgICBhdXRvIGl0ZW1Qcm92
aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5TRGlj
dGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250
IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmlj
aFRleHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJXZWJL
aXQiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0
ZXJPYmplY3Q6cmljaFRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9u
VmlzaWJpbGl0eUFsbF07CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiV2ViS2l0IiBhdHRyaWJ1dGVzOnRleHRB
dHRyaWJ1dGVzXSk7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpyaWNoVGV4dC5n
ZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxs
XTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVw
cmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2Jq
ZWN0OkAiV2ViS2l0IiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNp
YmlsaXR5QWxsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3Mv
S2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCmluZGV4IDI1ZDc4MjQ1MWVhNmMyMDQ0YWYyZGQxYTJh
ODY3NWIyOTk2ZjY5YWEuLmQ4NzcwODg5MzRhYzM1OTdjZGM0ZTVjNjcxMWJhODExM2E5ZDMxZjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRU
ZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElu
cHV0VGVzdHNJT1MubW0KQEAgLTcxLDIzICs3MSwyMyBAQCArIChVSUltYWdlICopYmFyQnV0dG9u
SWNvbgogKyAoVUlCYXJCdXR0b25JdGVtR3JvdXAgKilsZWFkaW5nSXRlbXNGb3JXZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9r
ZW47Ci0gICAgc3RhdGljIFVJQmFyQnV0dG9uSXRlbUdyb3VwICpzaGFyZWRJdGVtczsKKyAgICBz
dGF0aWMgUmV0YWluUHRyPFVJQmFyQnV0dG9uSXRlbUdyb3VwPiBzaGFyZWRJdGVtczsKICAgICBk
aXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIGF1dG8gbGVhZGluZ0l0ZW0gPSBh
ZG9wdE5TKFtbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEltYWdlOnNlbGYuYmFyQnV0
dG9uSWNvbiBzdHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZVBsYWluIHRhcmdldDp3ZWJWaWV3IGFj
dGlvbjpAc2VsZWN0b3IoZmFrZUxlYWRpbmdCYXJCdXR0b25JdGVtQWN0aW9uKV0pOwotICAgICAg
ICBzaGFyZWRJdGVtcyA9IFtbVUlCYXJCdXR0b25JdGVtR3JvdXAgYWxsb2NdIGluaXRXaXRoQmFy
QnV0dG9uSXRlbXM6QFsgbGVhZGluZ0l0ZW0uZ2V0KCkgXSByZXByZXNlbnRhdGl2ZUl0ZW06bmls
XTsKKyAgICAgICAgc2hhcmVkSXRlbXMgPSBhZG9wdE5TKFtbVUlCYXJCdXR0b25JdGVtR3JvdXAg
YWxsb2NdIGluaXRXaXRoQmFyQnV0dG9uSXRlbXM6QFsgbGVhZGluZ0l0ZW0uZ2V0KCkgXSByZXBy
ZXNlbnRhdGl2ZUl0ZW06bmlsXSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIHNoYXJlZEl0ZW1zOwor
ICAgIHJldHVybiBzaGFyZWRJdGVtcy5nZXQoKTsKIH0KIAogKyAoVUlCYXJCdXR0b25JdGVtR3Jv
dXAgKil0cmFpbGluZ0l0ZW1zRm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAg
IHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBVSUJhckJ1dHRv
bkl0ZW1Hcm91cCAqc2hhcmVkSXRlbXM7CisgICAgc3RhdGljIFJldGFpblB0cjxVSUJhckJ1dHRv
bkl0ZW1Hcm91cD4gc2hhcmVkSXRlbXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBe
ewogICAgICAgICBhdXRvIHRyYWlsaW5nSXRlbSA9IGFkb3B0TlMoW1tVSUJhckJ1dHRvbkl0ZW0g
YWxsb2NdIGluaXRXaXRoSW1hZ2U6c2VsZi5iYXJCdXR0b25JY29uIHN0eWxlOlVJQmFyQnV0dG9u
SXRlbVN0eWxlUGxhaW4gdGFyZ2V0OndlYlZpZXcgYWN0aW9uOkBzZWxlY3RvcihmYWtlVHJhaWxp
bmdCYXJCdXR0b25JdGVtQWN0aW9uKV0pOwotICAgICAgICBzaGFyZWRJdGVtcyA9IFtbVUlCYXJC
dXR0b25JdGVtR3JvdXAgYWxsb2NdIGluaXRXaXRoQmFyQnV0dG9uSXRlbXM6QFsgdHJhaWxpbmdJ
dGVtLmdldCgpIF0gcmVwcmVzZW50YXRpdmVJdGVtOm5pbF07CisgICAgICAgIHNoYXJlZEl0ZW1z
ID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbUdyb3VwIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRv
bkl0ZW1zOkBbIHRyYWlsaW5nSXRlbS5nZXQoKSBdIHJlcHJlc2VudGF0aXZlSXRlbTpuaWxdKTsK
ICAgICB9KTsKLSAgICByZXR1cm4gc2hhcmVkSXRlbXM7CisgICAgcmV0dXJuIHNoYXJlZEl0ZW1z
LmdldCgpOwogfQogCiAtIChVSVRleHRJbnB1dEFzc2lzdGFudEl0ZW0gKilpbnB1dEFzc2lzdGFu
dEl0ZW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xs
Vmlld0RlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxW
aWV3RGVsZWdhdGUubW0KaW5kZXggZDIyOGMyM2QxZGUzYWU0ZDAxNDY2ODU2MWU4MTgyNjRmNjZl
NmFlZS4uMjU0OGYxN2ZlN2EzNzUyYTgwNTdmMjI2MzA2M2I2ODliMzRjMDFiMiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUu
bW0KQEAgLTU0LDE2ICs1NCwxNiBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1Qo
V0tXZWJWaWV3LCBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoKQogewotICAgIFdLV2ViVmlldyAq
d2ViVmlldyA9IFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBkZWxlZ2F0ZUZvclNj
cm9sbFZpZXcgPSBhZG9wdE5TKFtbVGVzdERlbGVnYXRlRm9yU2Nyb2xsVmlldyBhbGxvY10gaW5p
dF0pOwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICB3ZWJWaWV3LnNjcm9sbFZpZXcu
ZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcuZ2V0KCk7CisgICAgICAgIFt3ZWJWaWV3
IHNjcm9sbFZpZXddLmRlbGVnYXRlID0gZGVsZWdhdGVGb3JTY3JvbGxWaWV3LmdldCgpOwogICAg
IH0KICAgICBkZWxlZ2F0ZUlzRGVhbGxvY2F0ZWQgPSBmYWxzZTsKICAgICBkZWxlZ2F0ZUZvclNj
cm9sbFZpZXcgPSBuaWw7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkZWxlZ2F0ZUlz
RGVhbGxvY2F0ZWQpOwogCi0gICAgRVhQRUNUX05VTEwod2ViVmlldy5zY3JvbGxWaWV3LmRlbGVn
YXRlKTsKKyAgICBFWFBFQ1RfTlVMTChbd2ViVmlldyBzY3JvbGxWaWV3XS5kZWxlZ2F0ZSk7CiB9
CiAKIH0KQEAgLTkzLDIzICs5MywyMyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRF
U1QoV0tXZWJWaWV3LCBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNhbm5vdE92ZXJyaWRlVmlld0Zvclpv
b21pbmcpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdF07Ci0gICAgV0tTY3JvbGxWaWV3RGVsZWdhdGVXaXRoVmlld0Zvclpvb21pbmdP
dmVycmlkZGVuICpkZWxlZ2F0ZUZvclNjcm9sbFZpZXcgPSBbW1dLU2Nyb2xsVmlld0RlbGVnYXRl
V2l0aFZpZXdGb3Jab29taW5nT3ZlcnJpZGRlbiBhbGxvY10gaW5pdF07CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIGRl
bGVnYXRlRm9yU2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tXS1Njcm9sbFZpZXdEZWxlZ2F0ZVdpdGhW
aWV3Rm9yWm9vbWluZ092ZXJyaWRkZW4gYWxsb2NdIGluaXRdKTsKICAgICBAYXV0b3JlbGVhc2Vw
b29sIHsKLSAgICAgICAgd2ViVmlldy5zY3JvbGxWaWV3LmRlbGVnYXRlID0gZGVsZWdhdGVGb3JT
Y3JvbGxWaWV3OworICAgICAgICBbd2ViVmlldyBzY3JvbGxWaWV3XS5kZWxlZ2F0ZSA9IGRlbGVn
YXRlRm9yU2Nyb2xsVmlldy5nZXQoKTsKICAgICB9CiAKICAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0naW5pdGlh
bC1zY2FsZT0xJz4iXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CiAKICAgICAvLyBIYXZlIFdLU2Nyb2xsVmlldydzIGV4dGVybmFsIGRlbGVnYXRlIHJldHVy
biBhIHZpZXcgd2l0aCBzY2FsZT0yIGZyb20gdmlld0Zvclpvb21pbmdJblNjcm9sbFZpZXcuCi0g
ICAgZGVsZWdhdGVGb3JTY3JvbGxWaWV3Lm92ZXJyaWRlU2NhbGUgPSAyOworICAgIFtkZWxlZ2F0
ZUZvclNjcm9sbFZpZXcgc2V0T3ZlcnJpZGVTY2FsZToyXTsKIAogICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSdp
bml0aWFsLXNjYWxlPTInPiJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9u
VXBkYXRlXTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICB3ZWJWaWV3LnNjcm9s
bFZpZXcuZGVsZWdhdGUgPSBuaWw7CisgICAgICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmRlbGVn
YXRlID0gbmlsOwogICAgIH0KIAogICAgIEVYUEVDVF9GQUxTRShkaWRDYWxsVmlld0Zvclpvb21p
bmdJblNjcm9sbFZpZXcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9t
YWMvQ2FuZGlkYXRlVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5k
aWRhdGVUZXN0cy5tbQppbmRleCBhYmZjY2EyMTEwMWUwZjEwN2NmYWZjZTg3ZmU1NDllNzQxYTIw
NWNlLi5jNTgxYzUzMDUxZGE4ODUzMTY3ODZmOTUzNWRlZTkwNzlkODE5N2VjIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5tbQpAQCAtOTAsOCAr
OTAsOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKENhbmRpZGF0ZVRlc3RzLCBE
SVNBQkxFRF9Eb05vdExlYWtWaWV3VGhhdExvYWRzRWRpdGFibGVBcmVhKQogewogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tEb05vdExlYWtXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApXSk7Ci0gICAgRG9Ob3RMZWFrRnJhbWVMb2FkRGVs
ZWdhdGUgKmRlbGVnYXRlID0gW1tEb05vdExlYWtGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dF07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZGVsZWdhdGVdOworICAgIGF1
dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbRG9Ob3RMZWFrRnJhbWVMb2FkRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CiAgICAgCiAgICAgTlNVUkwgKmNvbnRlbnRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiYXV0b2ZvY3VzZWQtdGV4dC1pbnB1dCIgd2l0aEV4dGVuc2lvbjpA
Imh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAgW1t3
ZWJWaWV3IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVS
TDpjb250ZW50VVJMXV07CkBAIC0xMDcsOCArMTA3LDggQEAgVEVTVChDYW5kaWRhdGVUZXN0cywg
RElTQUJMRURfUmVxdWVzdENhbmRpZGF0ZXNGb3JUZXh0SW5wdXQpCiB7CiAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAxMDAsIDEwMCldKTsKICAgICBbd2ViVmlldyBmb3JjZVJlcXVlc3RDYW5kaWRhdGVzRm9y
VGVzdGluZ107Ci0gICAgQ2FuZGlkYXRlUmVxdWVzdEZyYW1lTG9hZERlbGVnYXRlICpkZWxlZ2F0
ZSA9IFtbQ2FuZGlkYXRlUmVxdWVzdEZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAg
ICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tDYW5kaWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CiAgICAgCiAgICAgTlNVUkwgKmNvbnRlbnRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiZm9jdXMtaW5wdXRzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3Vi
ZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBbW3dlYlZpZXcgbWFp
bkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOmNvbnRlbnRV
UkxdXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9yeUNh
Y2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5t
bQppbmRleCAwMWU3NDRmNDhiMDRhYWFjZWI2NDdiOGYxMmI2OTYyNTZkNWU1MzNlLi4wNDY3NjNj
ODE3NzNlNzE0YzhkYjcxZGZmNmYyNzc3ZGVhYjQ2NmUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVs
ZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQ
cnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC03OCwxNCArNzgsMTQgQEAgbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXZWJLaXRMZWdhY3ksIERJU0FCTEVEX01lbW9y
eUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZSkKIHsKICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcxID0gYWRvcHROUyhb
W1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkg
ZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAgICAgIFJldGFpblB0cjxXZWJWaWV3
PiB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOworICAg
ICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmls
XSk7CisgICAgICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3Vw
TmFtZTpuaWxdKTsKIAotICAgICAgICBOU1dpbmRvdyogd2luZG93ID0gW1tOU1dpbmRvdyBhbGxv
Y10gaW5pdFdpdGhDb250ZW50UmVjdDp3ZWJWaWV3Mi5nZXQoKS5mcmFtZSBzdHlsZU1hc2s6TlNC
b3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6
WUVTXTsKLSAgICAgICAgW3dpbmRvdy5jb250ZW50VmlldyBhZGRTdWJ2aWV3OndlYlZpZXcyLmdl
dCgpXTsKKyAgICAgICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2NdIGlu
aXRXaXRoQ29udGVudFJlY3Q6d2ViVmlldzIuZ2V0KCkuZnJhbWUgc3R5bGVNYXNrOk5TQm9yZGVy
bGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllFU10p
OworICAgICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3Mi5nZXQo
KV07CiAKLSAgICAgICAgUmV0YWluUHRyPE1lbW9yeUNhY2hlUHJ1bmVUZXN0UmVzb3VyY2VMb2Fk
RGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lbW9yeUNhY2hlUHJ1
bmVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgcmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuZ2V0KCktPl93aW5kb3cgPSB3aW5kb3c7CisgICAgICAgIGF1dG8gcmVz
b3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJj
ZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICByZXNvdXJjZUxvYWREZWxlZ2F0
ZS5nZXQoKS0+X3dpbmRvdyA9IHdpbmRvdy5nZXQoKTsKICAgICAgICAgd2ViVmlldzEuZ2V0KCku
cmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKIAogICAg
ICAgICBbW3dlYlZpZXcxLmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAi
TWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0ZW5zaW9u
OkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvaW9zL21haW5JT1MubW0KaW5kZXggMjM4OTEyMzdlY2M2ZGE2YTBmOTgxYzM5OWZk
ZjQyNjdkZTY1OTkzYy4uNmVkNzY3ZTkyOTQ3NTI5MDkyY2RlZjNjODhjYjZlNzA0MzUwZjQ2ZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0
ICJUZXN0c0NvbnRyb2xsZXIuaCIKIAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2
YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKIHsKQEAgLTM1LDExICszNiwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCiAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNd
IHJlbW92ZVBlcnNpc3RlbnREb21haW5Gb3JOYW1lOkAiVGVzdFdlYktpdEFQSSJdOwogCiAgICAg
ICAgIC8vIFNldCB1cCB1c2VyIGRlZmF1bHRzLgotICAgICAgICBOU011dGFibGVEaWN0aW9uYXJ5
ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldOwor
ICAgICAgICBhdXRvIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1lbnREb21h
aW5dIG11dGFibGVDb3B5XSk7CiAgICAgICAgIGlmICghYXJndW1lbnREb21haW4pCi0gICAgICAg
ICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07
CisgICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0Fy
Z3VtZW50RG9tYWluXTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZh
dWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4uZ2V0KCkgZm9yTmFtZTpOU0Fy
Z3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBCVUlMRElOR19URVNUX1dURgogICAgICAgICBbV0tQ
cm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0ZvclRlc3RpbmddOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCmluZGV4IDkzNTc2YjkxNGYy
YTY5ZDI1ZTVmNDgwOWRlN2NiNjA4MWJkY2YzZjEuLmNiNDVjNWRjN2YzYjlkOWRkODA2YzRhYjkx
MGZhNTUwYzU0ODNkZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RG
b250T3B0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlv
bnMubW0KQEAgLTY1LDEzICs2NSwxMyBAQCBAc3ludGhlc2l6ZSBoYXNNdWx0aXBsZUZvbnRzID0g
X2hhc011bHRpcGxlRm9udHM7CiAKICsgKGluc3RhbmNldHlwZSlzaGFyZWRJbnN0YW5jZQogewot
ICAgIHN0YXRpYyBUZXN0Rm9udE9wdGlvbnMgKnNoYXJlZEluc3RhbmNlOworICAgIHN0YXRpYyBS
ZXRhaW5QdHI8VGVzdEZvbnRPcHRpb25zPiBzaGFyZWRJbnN0YW5jZTsKICAgICBzdGF0aWMgZGlz
cGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57
CiAgICAgICAgIE5TRm9udE9wdGlvbnMgKnNoYXJlZEZvbnRPcHRpb25zID0gW05TQ2xhc3NGcm9t
U3RyaW5nKEAiTlNGb250T3B0aW9ucyIpIHNoYXJlZEZvbnRPcHRpb25zXTsKLSAgICAgICAgc2hh
cmVkSW5zdGFuY2UgPSBbW1Rlc3RGb250T3B0aW9ucyBhbGxvY10gaW5pdFdpdGhGb250T3B0aW9u
czpzaGFyZWRGb250T3B0aW9uc107CisgICAgICAgIHNoYXJlZEluc3RhbmNlID0gYWRvcHROUyhb
W1Rlc3RGb250T3B0aW9ucyBhbGxvY10gaW5pdFdpdGhGb250T3B0aW9uczpzaGFyZWRGb250T3B0
aW9uc10pOwogICAgIH0pOwotICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKKyAgICByZXR1cm4g
c2hhcmVkSW5zdGFuY2UuZ2V0KCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZvbnRP
cHRpb25zOihOU0ZvbnRPcHRpb25zICopZm9udE9wdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWlu
TWFjLm1tCmluZGV4IGQ5ZDZjNjE4YzIyMjM1NGI5ZWE1Zjg0NDgyNjc1MGJjNTEyMjg3YWYuLjcw
YjFmZGVjODhhYmY0YWZkNzk1OTNhYzBiMjVhZTBlNGNjNzNmNmQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvbWFpbk1hYy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiVGVzdHNDb250cm9sbGVy
LmgiCiAKICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgogCiBleHRlcm4gIkMiIHZvaWQgX0JlZ2luRXZlbnRSZWNlaXB0T25U
aHJlYWQodm9pZCk7CiAKQEAgLTM3LDkgKzM4LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBy
ZW1vdmVQZXJzaXN0ZW50RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJLaXRBUEkiXTsKIAogICAgICAg
ICAvLyBTZXQgYSB1c2VyIGRlZmF1bHQgZm9yIFRlc3RXZWJLaXRBUEkgdG8gYnlwYXNzIGFsbCBs
aW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tzIGluIFdlYktpdAotICAgICAgICBOU011dGFibGVEaWN0
aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNv
cHldOworICAgICAgICBhdXRvIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW1tOU1VzZXJEZWZh
dWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1l
bnREb21haW5dIG11dGFibGVDb3B5XSk7CiAgICAgICAgIGlmICghYXJndW1lbnREb21haW4pCi0g
ICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF07CisgICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgLy8gQ0FVVElPTjogRGVmYXVsdHMg
c2V0IGhlcmUgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHByb3BhZ2F0ZWQgdG8gdGhlCiAgICAgICAg
IC8vIFdlYiBDb250ZW50IHByb2Nlc3MuIFRob3NlIGxpc3RlZCBiZWxvdyBhcmUgcHJvcGFnYXRl
ZCBtYW51YWxseS4KQEAgLTUyLDcgKzUzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQogICAgICAgICB9OwogCiAgICAgICAgIFthcmd1bWVudERvbWFpbiBhZGRFbnRyaWVzRnJv
bURpY3Rpb25hcnk6ZGljdF07Ci0gICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNBcmd1
bWVudERvbWFpbl07CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluLmdldCgpIGZvck5hbWU6TlNBcmd1
bWVudERvbWFpbl07CiAKICNpZm5kZWYgQlVJTERJTkdfVEVTVF9XVEYKICAgICAgICAgW1dLUHJv
Y2Vzc1Bvb2wgX3NldExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmdGb3JUZXN0aW5nXTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0KaW5kZXggYzQxODIzMGYzYjRm
ZGU3MTlhYzZjY2M4NGI3NDJkYmVjYTE0ZDI0YS4uYzk4YjllOTk2Y2QxYzhkZTk4OWY4ZWVjYWZm
Y2FmNmNkNDVjYjhiMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJ
T1MubW0KQEAgLTQ3LDcgKzQ3LDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6YWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWMKICAgICAvLyBP
dGhlciBwbGF0Zm9ybXMgbWF5IGJlIGRpZmZlcmVudC4KICAgICBpZiAobV9nbG9iYWxOb3RpZmlj
YXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9nbG9iYWxOb3RpZmlj
YXRpb25IYW5kbGVyID0gW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxvY10g
aW5pdF07CisKKyAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtbQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbbV9nbG9i
YWxOb3RpZmljYXRpb25IYW5kbGVyIHNldENhbGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOwogICAg
IFttX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgc3RhcnRPYnNlcnZpbmddOwogICAgIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
CmluZGV4IGNlMzZmYmEyZDRiYjE1MWY4NzllMzFhMTU0MmQ0ZDA2ZTllMjlkZTYuLjM5MjBjNGE3
MDMwNDJmZWVlNjE0OTZlMWUxZDczOGJiY2M5Zjc4MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTU5LDM2ICs1OSw0
NiBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3RhdGljIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24g
Kmdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOwotc3RhdGljIFRlc3RXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGUgKmdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudDsKK3N0YXRpYyBS
ZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4mIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0
aW9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24+PiBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4gZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb247Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdlYnNp
dGVEYXRhU3RvcmVEZWxlZ2F0ZT4mIGdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVu
dCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxUZXN0V2Vic2l0ZURh
dGFTdG9yZURlbGVnYXRlPj4gZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50Owor
ICAgIHJldHVybiBnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQ7Cit9CiAKIHZv
aWQgaW5pdGlhbGl6ZVdlYlZpZXdDb25maWd1cmF0aW9uKGNvbnN0IGNoYXIqIGxpYnJhcnlQYXRo
LCBXS1N0cmluZ1JlZiBpbmplY3RlZEJ1bmRsZVBhdGgsIFdLQ29udGV4dFJlZiBjb250ZXh0LCBX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRDb25maWd1cmF0aW9uKQogewotICAgIGF1
dG8gb2xkR2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKGdsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uKTsKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiA9IFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CisgICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24oKSA9IFsmXSB7CisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKLSAgICBnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IChfX2JyaWRnZSBXS1Byb2Nlc3NQb29sICopY29u
dGV4dDsKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0g
KF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZSAqKVRlc3RDb250cm9sbGVyOjpkZWZhdWx0V2Vi
c2l0ZURhdGFTdG9yZSgpOwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9hbGxvd1Vu
aXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IFlFUzsKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi5fYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IFlFUzsKLSAgICBnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi5fYXBwbGVQYXlFbmFibGVkID0gWUVTOworICAgICAgICBbY29u
ZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooX19icmlkZ2UgV0tQcm9jZXNzUG9vbCAqKWNvbnRl
eHRdOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOihfX2JyaWRn
ZSBXS1dlYnNpdGVEYXRhU3RvcmUgKilUZXN0Q29udHJvbGxlcjo6ZGVmYXVsdFdlYnNpdGVEYXRh
U3RvcmUoKV07CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMczpZRVNdOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0QWxsb3dUb3BO
YXZpZ2F0aW9uVG9EYXRhVVJMczpZRVNdOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0QXBw
bGVQYXlFbmFibGVkOllFU107CiAKLSAgICBhdXRvIG9sZEdsb2JhbFdlYnNpdGVEYXRhU3RvcmVE
ZWxlZ2F0ZUNsaWVudCA9IGFkb3B0TlMoZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xp
ZW50KTsKLSAgICBnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQgPSBbW1Rlc3RX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIHNldF9kZWxlZ2F0ZTpnbG9iYWxXZWJzaXRl
RGF0YVN0b3JlRGVsZWdhdGVDbGllbnRdOworICAgICAgICBnbG9iYWxXZWJzaXRlRGF0YVN0b3Jl
RGVsZWdhdGVDbGllbnQoKSA9IGFkb3B0TlMoW1tUZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3Jl
XSBzZXRfZGVsZWdhdGU6Z2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50KCkuZ2V0
KCldOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gWUVTOwotICAgIGdsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0
dHJpYnV0ZSA9IE5POwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9pbnZpc2libGVB
dXRvcGxheU5vdFBlcm1pdHRlZCA9IE5POwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
Ll9tZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkgPSBZRVM7Ci0gICAgZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ucmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFjayA9IE5POworICAg
ICAgICBbY29uZmlndXJhdGlvbiBzZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOllFU107Cisg
ICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5
c0lubGluZUF0dHJpYnV0ZTpOT107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRJbnZpc2li
bGVBdXRvcGxheU5vdFBlcm1pdHRlZDpOT107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRN
ZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHk6WUVTXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24g
c2V0UmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFjazpOT107CiAjZW5kaWYKLSAgICBn
bG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZv
clBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CisgICAgICAgIFtjb25maWd1
cmF0aW9uIHNldE1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRp
b3Zpc3VhbE1lZGlhVHlwZU5vbmVdOwogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAgIGds
b2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9zeXN0ZW1QcmV2aWV3RW5hYmxlZCA9IFlFUzsKKyAg
ICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldFN5c3RlbVByZXZpZXdFbmFibGVkOllFU107CiAjZW5k
aWYKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgfSgpOwogfQogCiB2b2lkIFRl
c3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSgpCkBAIC0xMDcsMTIgKzExNywx
MiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAKIFdL
Q29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKIHsKLSAgICByZXR1
cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9j
ZXNzUG9vbDsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilbZ2xvYmFsV2ViVmll
d0NvbmZpZ3VyYXRpb24oKSBwcm9jZXNzUG9vbF07CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtUHJlZmVyZW5jZXMoKQogewotICAgIHJldHVybiAoX19icmlk
Z2UgV0tQcmVmZXJlbmNlc1JlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5wcmVmZXJlbmNl
czsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW2dsb2JhbFdlYlZpZXdD
b25maWd1cmF0aW9uKCkgcHJlZmVyZW5jZXNdOwogfQogCiBUZXN0RmVhdHVyZXMgVGVzdENvbnRy
b2xsZXI6OnBsYXRmb3JtU3BlY2lmaWNGZWF0dXJlT3ZlcnJpZGVzRGVmYXVsdHNGb3JUZXN0KGNv
bnN0IFRlc3RDb21tYW5kJikgY29uc3QKQEAgLTE0MywxMiArMTUzLDEyIEBAIHZvaWQgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0aW9u
UmVmLCBjb25zdCBUCiAjZW5kaWYKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gKF9fYnJp
ZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWcuZ2V0KCld
KS5nZXQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gKF9fYnJp
ZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJz
aXRlRGF0YVN0b3JlOworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlkZ2UgV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmKVtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdlYnNpdGVE
YXRhU3RvcmVdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZp
ZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7
Ci0gICAgYXV0byBjb3BpZWRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24gY29weV0pOworICAgIGF1dG8gY29waWVkQ29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgY29weV0pOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAob3B0aW9ucy51c2VEYXRhRGV0ZWN0aW9uKCkpCkBAIC0xOTEs
NyArMjAxLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KFdL
UGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKIAogUGxhdGZvcm1XZWJWaWV3KiBU
ZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3KiBw
YXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0
aW9ucykKIHsKLSAgICBhdXRvIG5ld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbiBjb3B5XSk7CisgICAgYXV0byBuZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBjb3B5XSk7CiAgICAgW25ld0NvbmZp
Z3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2ViVmlldyo+KHBhcmVu
dFZpZXctPnBsYXRmb3JtVmlldygpKV07CiAgICAgaWYgKFtuZXdDb25maWd1cmF0aW9uIF9yZWxh
dGVkV2ViVmlld10pCiAgICAgICAgIFtuZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3Rv
cmU6W25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XS5jb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmVdOwpAQCAtMjE0LDcgKzIyNCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmZp
bmlzaENyZWF0aW5nUGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogdmlldywgY29uc3QK
IFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGp1c3RDb250ZXh0KFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRDb25maWd1
cmF0aW9uKQogewogICAgIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihsaWJyYXJ5UGF0
aEZvclRlc3RpbmcoKSwgaW5qZWN0ZWRCdW5kbGVQYXRoKCksIGNvbnRleHQsIGNvbnRleHRDb25m
aWd1cmF0aW9uKTsKLSAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbDsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29u
dGV4dFJlZilbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBwcm9jZXNzUG9vbF07CiB9CiAK
IHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgZG9uZSwgV1RGOjpT
ZWNvbmRzIHRpbWVvdXQpCkBAIC0yOTMsNyArMzAzLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
Y29jb2FSZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRp
b24KICAgICAgICAgW3BsYXRmb3JtVmlldy5jb25maWd1cmF0aW9uLnByZWZlcmVuY2VzIHNldFRl
eHRJbnRlcmFjdGlvbkVuYWJsZWQ6b3B0aW9ucy50ZXh0SW50ZXJhY3Rpb25FbmFibGVkKCldOwog
ICAgIH0KIAotICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQgc2V0QWxs
b3dSYWlzaW5nUXVvdGE6WUVTXTsKKyAgICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
Q2xpZW50KCkgc2V0QWxsb3dSYWlzaW5nUXVvdGE6WUVTXTsKIAogICAgIFdlYkNvcmVUZXN0U3Vw
cG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9wdGlvbnMu
YWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpKTsKIH0KQEAgLTMzNyw3ICsz
NDcsNyBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuZXJhbFBhc3Rl
Ym9hcmQoKSBjb25zdAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRl
bnRpYWxzKCkKIHsKICAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0
V2l0aE9iamVjdHM6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMsIG5pbF0pOwotICAgIFtn
bG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5
cGVzOnR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxl
dGlvbkhhbmRsZXI6XigpIHsKKyAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgd2Vi
c2l0ZURhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAgICBt
X2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsKICAg
ICB9XTsKIH0KQEAgLTM0OCw3ICszNTgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllcygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAgICByZXR1
cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBf
Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CisgICAg
W1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdlYnNpdGVEYXRhU3RvcmVdIF9nZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKICAgICAgICAgbV9j
dXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKG1ha2VW
ZWN0b3I8U3RyaW5nPihkb21haW5zKSk7CiAgICAgfV07CiB9CkBAIC0zNTksNyArMzY5LDcgQEAg
dm9pZCBUZXN0Q29udHJvbGxlcjo6bG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCkKICAgICBpZiAo
IXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfbG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9y
OnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxO
U1N0cmluZyAqPiAqZG9tYWlucykgeworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24o
KSB3ZWJzaXRlRGF0YVN0b3JlXSBfbG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBhcmVudFZp
ZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAq
PiAqZG9tYWlucykgewogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZlTG9h
ZGVkU3VicmVzb3VyY2VEb21haW5zKG1ha2VWZWN0b3I8U3RyaW5nPihkb21haW5zKSk7CiAgICAg
fV07CiB9CkBAIC0zNzAsMTQgKzM4MCwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVhckxv
YWRlZFN1YnJlc291cmNlRG9tYWlucygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1W
aWV3KCldOworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRlRGF0YVN0
b3JlXSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZv
cm1WaWV3KCldOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KFdL
U3RyaW5nUmVmIHNjcmlwdCkKIHsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tV
c2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0KSBpbmpl
Y3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9yTWFp
bkZyYW1lT25seTpOT10pOwogCi0gICAgW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3JpcHQ6IHVzZXJTY3JpcHQuZ2V0KCldOworICAg
IFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFk
ZFVzZXJTY3JpcHQ6IHVzZXJTY3JpcHQuZ2V0KCldOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVy
OjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQsIGNv
bnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFzZTY0
KQpAQCAtNDQ5LDE0ICs0NTksMTQgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3RzSW5L
ZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJgogCiB2b2lkIFRl
c3RDb250cm9sbGVyOjpzZXRBbGxvd1N0b3JhZ2VRdW90YUluY3JlYXNlKGJvb2wgdmFsdWUpCiB7
Ci0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCBzZXRBbGxvd1JhaXNp
bmdRdW90YTogdmFsdWVdOworICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGll
bnQoKSBzZXRBbGxvd1JhaXNpbmdRdW90YTogdmFsdWVdOwogfQogCiB2b2lkIFRlc3RDb250cm9s
bGVyOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sIGFsbG93cykKIHsKICAgICBtX2Fs
bG93c0FueVNTTENlcnRpZmljYXRlID0gYWxsb3dzOwogICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNl
dEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyh3ZWJzaXRlRGF0YVN0
b3JlKCksIGFsbG93cyk7Ci0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVu
dCBzZXRBbGxvd0FueVNTTENlcnRpZmljYXRlOiBhbGxvd3NdOworICAgIFtnbG9iYWxXZWJzaXRl
RGF0YVN0b3JlRGVsZWdhdGVDbGllbnQoKSBzZXRBbGxvd0FueVNTTENlcnRpZmljYXRlOiBhbGxv
d3NdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFjdGlvbihj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQXV0b21hdGljYWxseSkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRv
dy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dp
bmRvdy5tbQppbmRleCA3ZDYzZjMzODU5ZDZkODNjNjE2MzhlZWM1NDRiOGI0OWI5NDcxMzViLi4z
Zjg3ZTY5MGFjMmViMWY0ZGZjZGMxNWMxMDNlMGU3YWRmNzVmNjI1IDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cubW0KKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93
Lm1tCkBAIC00MywxMSArNDMsMTEgQEAgQGltcGxlbWVudGF0aW9uIEdlbmVyYXRlZFRvdWNoZXNE
ZWJ1Z1dpbmRvdwogKyAoR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93ICopc2hhcmVkR2VuZXJh
dGVkVG91Y2hlc0RlYnVnV2luZG93CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47Ci0gICAgc3RhdGljIEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdyAqdG91Y2hXaW5k
b3cgPSBuaWw7CisgICAgc3RhdGljIFJldGFpblB0cjxHZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5k
b3c+IHRvdWNoV2luZG93OwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAgICAg
ICAgdG91Y2hXaW5kb3cgPSBbW0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdyBhbGxvY10gaW5p
dF07CisgICAgICAgIHRvdWNoV2luZG93ID0gYWRvcHROUyhbW0dlbmVyYXRlZFRvdWNoZXNEZWJ1
Z1dpbmRvdyBhbGxvY10gaW5pdF0pOwogICAgIH0pOwotICAgIHJldHVybiB0b3VjaFdpbmRvdzsK
KyAgICByZXR1cm4gdG91Y2hXaW5kb3cuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0g
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRleCAx
MmIzNTYxNzMyYTdlNDMzZTM3MDI3ZjEzMmVmNDNkODFmOTAwZGQ1Li4zMWI0NjUwZTM1NjExOWMw
MjQwMTY2NGNlMDI3Njk0OGRhMDM1ZWQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTYwLDExICsxNjAsOCBAQCBAaW1wbGVtZW50
YXRpb24gSElERXZlbnRHZW5lcmF0b3IgewogCiArIChISURFdmVudEdlbmVyYXRvciAqKXNoYXJl
ZEhJREV2ZW50R2VuZXJhdG9yCiB7Ci0gICAgc3RhdGljIEhJREV2ZW50R2VuZXJhdG9yICpldmVu
dEdlbmVyYXRvciA9IG5pbDsKLSAgICBpZiAoIWV2ZW50R2VuZXJhdG9yKQotICAgICAgICBldmVu
dEdlbmVyYXRvciA9IFtbSElERXZlbnRHZW5lcmF0b3IgYWxsb2NdIGluaXRdOwotCi0gICAgcmV0
dXJuIGV2ZW50R2VuZXJhdG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8
SElERXZlbnRHZW5lcmF0b3I+PiBldmVudEdlbmVyYXRvciA9IGFkb3B0TlMoW1tISURFdmVudEdl
bmVyYXRvciBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiBldmVudEdlbmVyYXRvci5nZXQoKS5n
ZXQoKTsKIH0KIAogKyAoQ0ZJbmRleCluZXh0RXZlbnRDYWxsYmFja0lECmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDRkYjUxMzlkYmU4
OTZlZmEwZjc1ZDczMzEyMzg2ZTljNWJjZTNjYTcuLjg1YTJjNzRkMmQ4YjcwYWNlYjhlMWYxMjdh
ZmVlYThkNTJlMjc3YTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rl
c3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RD
b250cm9sbGVyTWFjLm1tCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6
Y29uZmlndXJlQ29udGVudEV4dGVuc2lvbkZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRl
c3QKICAgICBhdXRvIHRlc3RVUkwgPSBhZG9wdENGKFdLVVJMQ29weUNGVVJMKGtDRkFsbG9jYXRv
ckRlZmF1bHQsIHRlc3QudXJsKCkpKTsKICAgICBOU1VSTCAqZmlsdGVyVVJMID0gWyhfX2JyaWRn
ZSBOU1VSTCAqKXRlc3RVUkwuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOkAianNv
biJdOwogCi0gICAgX19ibG9jayBOU1N0cmluZyAqY29udGVudEV4dGVuc2lvblN0cmluZzsKKyAg
ICBfX2Jsb2NrIFJldGFpblB0cjxOU1N0cmluZz4gY29udGVudEV4dGVuc2lvblN0cmluZzsKICAg
ICBfX2Jsb2NrIGJvb2wgZG9uZUZldGNoaW5nQ29udGVudEV4dGVuc2lvbiA9IGZhbHNlOwogICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtXS1RSU2Vzc2lvbkRlbGVnYXRlIG5ld10pOwogICAg
IE5TVVJMU2Vzc2lvbiAqc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25maWd1
cmF0aW9uOltOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uIGVwaGVtZXJhbFNlc3Npb25Db25maWd1
cmF0aW9uXSBkZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKSBkZWxlZ2F0ZVF1ZXVlOltOU09wZXJhdGlv
blF1ZXVlIG1haW5RdWV1ZV1dOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OmNvbmZpZ3VyZUNvbnRlbnRFeHRlbnNpb25Gb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9u
JiB0ZXN0CiAgICAgICAgIEFTU0VSVChkYXRhKTsKICAgICAgICAgQVNTRVJUKHJlc3BvbnNlKTsK
ICAgICAgICAgQVNTRVJUKCFlcnJvcik7Ci0gICAgICAgIGNvbnRlbnRFeHRlbnNpb25TdHJpbmcg
PSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ107CisgICAgICAgIGNvbnRlbnRFeHRlbnNpb25TdHJpbmcgPSBhZG9wdE5TKFtb
TlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nXSk7CiAgICAgICAgIGRvbmVGZXRjaGluZ0NvbnRlbnRFeHRlbnNpb24gPSB0cnVlOwog
ICAgIH1dOwogICAgIFt0YXNrIHJlc3VtZV07CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBUZXN0
Q29udHJvbGxlcjo6Y29uZmlndXJlQ29udGVudEV4dGVuc2lvbkZvclRlc3QoY29uc3QgVGVzdElu
dm9jYXRpb24mIHRlc3QKICAgICB9IGVsc2UKICAgICAgICAgdGVtcERpciA9IFtOU1VSTCBmaWxl
VVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvbnMiXSBpc0RpcmVjdG9yeTpZRVNdOwogCi0gICAg
W1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHN0b3JlV2l0aFVSTDp0ZW1wRGlyXSBjb21w
aWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJUZXN0Q29udGVudEV4dGVuc2lvbnMi
IGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNvbnRlbnRFeHRlbnNpb25TdHJpbmcgY29tcGxldGlv
bkhhbmRsZXI6XihfV0tVc2VyQ29udGVudEZpbHRlciAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikK
KyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRlbXBEaXJd
IGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RDb250ZW50RXh0ZW5z
aW9ucyIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246Y29udGVudEV4dGVuc2lvblN0cmluZy5nZXQo
KSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS1VzZXJDb250ZW50RmlsdGVyICpmaWx0ZXIsIE5TRXJy
b3IgKmVycm9yKQogICAgIHsKICAgICAgICAgaWYgKCFlcnJvcikKICAgICAgICAgICAgIFttYWlu
V2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29udHJv
bGxlciBfYWRkVXNlckNvbnRlbnRGaWx0ZXI6ZmlsdGVyXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KaW5kZXgg
MTMxOTlkMjRmNTQ5NWI4YzIyMjA2ZjgzMGVjZTI3M2Y4M2ZkZWY5MC4uNWUzMTYzMjcyNjVjNTQ2
YjhmYmI5MDg3N2Y1YTk3MWFkZTIzOGQ3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KQEAgLTQ1LDcgKzQ1
LDcgQEAgQGludGVyZmFjZSBMb2NhbFBhc3RlYm9hcmQgOiBOU1Bhc3RlYm9hcmQKIC0oaWQpaW5p
dFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CiBAZW5kCiAKLXN0YXRpYyBOU011dGFibGVEaWN0
aW9uYXJ5ICpsb2NhbFBhc3RlYm9hcmRzOworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVEaWN0
aW9uYXJ5PiBsb2NhbFBhc3RlYm9hcmRzOwogCiBAaW1wbGVtZW50YXRpb24gV2ViS2l0VGVzdFJ1
bm5lclBhc3RlYm9hcmQKIApAQCAtNTYsMTIgKzU2LDEyIEBAICsgKE5TUGFzdGVib2FyZCAqKV9w
YXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQogICAgIGlmICghbmFtZSkKICAgICAg
ICAgbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTG9jYWxQYXN0ZWJvYXJkJWQi
LCArK251bWJlcl07CiAgICAgaWYgKCFsb2NhbFBhc3RlYm9hcmRzKQotICAgICAgICBsb2NhbFBh
c3RlYm9hcmRzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAg
bG9jYWxQYXN0ZWJvYXJkcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBp
bml0XSk7CiAgICAgaWYgKExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBhc3Rl
Ym9hcmRzIG9iamVjdEZvcktleTpuYW1lXSkKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiAg
ICAgYXV0byBwYXN0ZWJvYXJkID0gYWRvcHROUyhbW0xvY2FsUGFzdGVib2FyZCBhbGxvY10gaW5p
dFdpdGhOYW1lOm5hbWVdKTsKICAgICBbbG9jYWxQYXN0ZWJvYXJkcyBzZXRPYmplY3Q6cGFzdGVi
b2FyZC5nZXQoKSBmb3JLZXk6bmFtZV07Ci0gICAgcmV0dXJuIHBhc3RlYm9hcmQuZ2V0KCk7Cisg
ICAgcmV0dXJuIHBhc3RlYm9hcmQuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gVGhpcyBtZXRob2Qg
Y3Jhc2hlcyB3aGVuIGNhbGxlZCBvbiBMb2NhbFBhc3RlYm9hcmQuCkBAIC03Miw3ICs3Miw3IEBA
IC0gKHZvaWQpX3VwZGF0ZVR5cGVDYWNoZUlmTmVlZGVkCiAKICsgKHZvaWQpcmVsZWFzZUxvY2Fs
UGFzdGVib2FyZHMKIHsKLSAgICBhdXRvIG9sZExvY2FsUGFzdGVCb2FyZHMgPSBhZG9wdE5TKHN0
ZDo6ZXhjaGFuZ2UobG9jYWxQYXN0ZWJvYXJkcywgbmlsKSk7CisgICAgbG9jYWxQYXN0ZWJvYXJk
cyA9IG5pbDsKIH0KIAogLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBKUyBzbyB0aGF0IGl0IGRv
ZXNuJ3QgaGF2ZSB0byB0cnkgYW5kIGNyZWF0ZSBhIE5TQXJyYXkgb24gdGhlIG9iamMgc2lkZSBp
bnN0ZWFkCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421263</attachid>
            <date>2021-02-22 16:44:23 -0800</date>
            <delta_ts>2021-02-22 17:08:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222288-20210222164422.patch</filename>
            <type>text/plain</type>
            <size>150389</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFlZDY5YjRkNTc2MTZhYThmMzVlZTgwOWJkZjcyOTgz
ZGM2MzM4OS4uOTZkMDJiMTVjOWFjMWIxNjk2OTQzMWI3YTc0ODVlYTQ5ODQ0NDYxZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NyBAQAorMjAyMS0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBbW09iamNDbGFzcyBhbGxvY10gaW5pdF0g
dG8gYXZvaWQgbGVha3MgaW4gVG9vbHMvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9T
Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzY3JvbGxUb09mZnNldCk6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlU2Nyb2xsVG9P
ZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1pbmltdW1ab29t
U2NhbGUgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1heGlt
dW1ab29tU2NhbGUgY29uc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbToKKyAgICAgICAgKGZvbnRBbGxvd0xpc3QpOgorICAgICAgICAoYWRqdXN0V2Vi
RG9jdW1lbnRGb3JGbGV4aWJsZVZpZXdwb3J0KToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycyk6Cisg
ICAgICAgIChyZWxlYXNlR2xvYmFsQ29udHJvbGxlcnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAgICAgKCtbRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkIF9wYXN0ZWJvYXJkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW0R1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAo
ZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3VyY2Up
OgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgYmVnaW5EcmFnV2l0aEZpbGVQcm9taXNlczpd
KToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhNb2RpZmll
cnM6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3ZlVG9YOlk6
XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSBkaWRDbGVhcldpbmRvd09iamVjdEluU3RhbmRh
cmRXb3JsZEZvckZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRl
IHdlYlZpZXc6ZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlk
ZUJhY2s6Zm9yVmlldzpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJv
bXB0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9y
d2FyZC5tbToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldzo6
U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50
V2ViVmlld1RpbWVvdXQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9u
Lm1tOgorICAgICAgICAoLVtUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgd2ViVmlldzpjcmVh
dGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0
dXJlczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJJ
bml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgIChVc2VySW5pdGlh
dGVkQWN0aW9uVGVzdDo6VVJMV2l0aEZyYWdtZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tp
ZVN0b3JlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVn
YXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW06CisgICAgICAgICgrW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNl
dFVwV2l0aEZyYW1lOnRlc3RQYWdlOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5p
dGlhbGl6YXRpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW06CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMv
Q3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50
SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVu
dFRlc3QubW06CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRlc3RpbmdXZWJWaWV3IGxl
YWRpbmdJdGVtc0ZvcldlYlZpZXc6XSk6CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRl
c3RpbmdXZWJWaWV3IHRyYWlsaW5nSXRlbXNGb3JXZWJWaWV3Ol0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2Fu
ZGlkYXRlVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgorICAgICAgICAoK1tUZXN0
Rm9udE9wdGlvbnMgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9tYWluTWFjLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAg
IChXVFI6Omdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCk6CisgICAgICAgIChX
VFI6OmluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQWRqdXN0Q29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
b2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldEFsbG93U3RvcmFnZVF1b3RhSW5jcmVhc2UpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbToK
KyAgICAgICAgKCtbR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93IHNoYXJlZEdlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvd10pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoK1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURF
dmVudEdlbmVyYXRvcl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29u
dGVudEV4dGVuc2lvbkZvclRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tXZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorCiAyMDIxLTAyLTIy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMo
KSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1Mu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRl
eCBkNzA5YTJlOTE2YTUxMWI3MDYxOGU5MTJhNDZkNzZiYjgwNzliZTE0Li4xZmViNGFkNDQ5ZGNk
NzM4MGRmZmU0YzhhMmI3MTJjNzA1NDI2NjEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQpAQCAtNDksOCArNDksOCBAQAogI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1leHRlcm4gRHVtcFJl
bmRlclRyZWVXaW5kb3cgKmdEcnRXaW5kb3c7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVCcm93c2Vy
VmlldyAqZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdp
bmRvdz4gZ0RydFdpbmRvdzsKK2V4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2Vy
Vmlldz4gZ1dlYkJyb3dzZXJWaWV3OwogCiBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0
bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZW50YWxSZXBh
aW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdTZWxlY3Rpb25SZWN0KQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggMjExZjg2MGZiMWM2NWY1MTg0NzZjOTkxNzU1MzBlZWU3NjJiMGI0MS4uYTFlZjJlZDA5
NzkwMTIxNDdmNjllMDk0NTNmNmVlY2U4MGEzZjRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zNSw4ICszNSw4IEBACiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7Ci1leHRlcm4g
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmlldzsKK2V4dGVybiBSZXRh
aW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2VyVmlldz4gZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJu
IFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3Owog
CiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
CiBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVySU9TOjp6b29tU2NhbGUoKSBjb25zdAogewotICAg
IHJldHVybiBnV2ViU2Nyb2xsVmlldy56b29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xs
VmlldyB6b29tU2NhbGVdOwogfQogCiBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgbG9uZyB4LCBsb25nIHksIFNj
cm9sbFRvT3B0aW9ucyogb3B0aW9ucykKQEAgLTEwOCwxMyArMTA4LDEzIEBAIGRvdWJsZSBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09w
dGlvbnMqIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBvZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBhdXRvIG9m
ZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3NhcnkoZ1dlYlNjcm9sbFZpZXcuZ2V0
KCksIHgsIHksIG9wdGlvbnMpOwogICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0
Om9mZnNldCBhbmltYXRlZDpZRVNdOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6
aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyog
b3B0aW9ucykKIHsKLSAgICBhdXRvIG9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNl
c3NhcnkoZ1dlYlNjcm9sbFZpZXcsIHgsIHksIG9wdGlvbnMpOworICAgIGF1dG8gb2Zmc2V0ID0g
Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeShnV2ViU2Nyb2xsVmlldy5nZXQoKSwgeCwg
eSwgb3B0aW9ucyk7CiAgICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0
IGFuaW1hdGVkOk5PXTsKIH0KIApAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkKIAogZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6bWluaW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGdXZWJTY3JvbGxWaWV3Lm1pbmltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2Vi
U2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXTsKIH0KIAogZG91YmxlIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdXZWJTY3Jv
bGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBtYXhp
bXVtWm9vbVNjYWxlXTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVySU9TOjpj
b250ZW50VmlzaWJsZVJlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDM3OWQ1MjBkNzM5NzkyN2JmZThhOGY5ODYwODU5ZjZlYzgxMzUy
YTUuLjEzYjI3NTg0ZjQzOWZhZWE4N2Y2MmNiMjExYzZhMTNkY2M4ZDFkYjAgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJMKTsKIAogdm9sYXRp
bGUgYm9vbCBkb25lOwogCi1OYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyID0gbnVsbHB0cjsKK1JldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOwogUmVmUHRyPFRlc3RSdW5uZXI+IGdUZXN0UnVubmVyOwogCiBPcHRpb25h
bDxXVFI6OlRlc3RPcHRpb25zPiBtYWluRnJhbWVUZXN0T3B0aW9uczsKQEAgLTIwNSw3ICsyMDUs
NyBAQCBXZWJGcmFtZSAqbWFpbkZyYW1lID0gbmlsOwogV2ViRnJhbWUgKnRvcExvYWRpbmdGcmFt
ZSA9IG5pbDsgLy8gIW5pbCBpZmYgYSBsb2FkIGlzIGluIHByb2dyZXNzCiAKICNpZiBQTEFURk9S
TShNQUMpCi1OU1dpbmRvdyAqbWFpbldpbmRvdyA9IG5pbDsKK1JldGFpblB0cjxOU1dpbmRvdz4g
bWFpbldpbmRvdzsKICNlbmRpZgogCiBDRk11dGFibGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM9IG51
bGxwdHI7CkBAIC0yMTgsMTUgKzIxOCwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYlZpZXc+JiBn
bG9iYWxXZWJWaWV3KCkKIH0KIAogLy8gRGVsZWdhdGVzCi1zdGF0aWMgRnJhbWVMb2FkRGVsZWdh
dGUgKmZyYW1lTG9hZERlbGVnYXRlOwotc3RhdGljIFVJRGVsZWdhdGUgKnVpRGVsZWdhdGU7Ci1z
dGF0aWMgRWRpdGluZ0RlbGVnYXRlICplZGl0aW5nRGVsZWdhdGU7Ci1zdGF0aWMgUmVzb3VyY2VM
b2FkRGVsZWdhdGUgKnJlc291cmNlTG9hZERlbGVnYXRlOwotc3RhdGljIEhpc3RvcnlEZWxlZ2F0
ZSAqaGlzdG9yeURlbGVnYXRlOwotUG9saWN5RGVsZWdhdGUgKnBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKLURlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVsdFBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKK3N0YXRpYyBSZXRhaW5QdHI8RnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVn
YXRlOworc3RhdGljIFJldGFpblB0cjxVSURlbGVnYXRlPiB1aURlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxFZGl0aW5nRGVsZWdhdGU+IGVkaXRpbmdEZWxlZ2F0ZTsKK3N0YXRpYyBSZXRhaW5Q
dHI8UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKK1JldGFpblB0cjxQb2xp
Y3lEZWxlZ2F0ZT4gcG9saWN5RGVsZWdhdGU7CitSZXRhaW5QdHI8RGVmYXVsdFBvbGljeURlbGVn
YXRlPiBkZWZhdWx0UG9saWN5RGVsZWdhdGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0
YXRpYyBTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlICpzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRl
Oworc3RhdGljIFJldGFpblB0cjxTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlPiBzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlOwogI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckFsbFRl
c3RzOwpAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+
JiBwcmV2VGVzdEJGSXRlbSgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY29uc3QgQ0dS
ZWN0IGxheW91dFRlc3RWaWV3cG9ydFJlY3QgPSB7IHswLCAwfSwge3N0YXRpY19jYXN0PENHRmxv
YXQ+KFRlc3RSdW5uZXI6OnZpZXdXaWR0aCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5u
ZXI6OnZpZXdIZWlnaHQpfSB9OwotRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyAqZ1dlYkJyb3dz
ZXJWaWV3ID0gbmlsOwotRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmll
dyA9IG5pbDsKLUR1bXBSZW5kZXJUcmVlV2luZG93ICpnRHJ0V2luZG93ID0gbmlsOworUmV0YWlu
UHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKK1JldGFpblB0
cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3OworUmV0YWluUHRy
PER1bXBSZW5kZXJUcmVlV2luZG93PiBnRHJ0V2luZG93OwogI2VuZGlmCiAKIHZvaWQgc2V0UGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oQ0ZTdHJpbmdSZWYgdXJsKQpAQCAtNDE3LDIy
ICs0MTcsMTkgQEAgc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRp
YyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqYXZhaWxh
YmxlRm9udHM7Ci0gICAgaWYgKGF2YWlsYWJsZUZvbnRzKQotICAgICAgICByZXR1cm4gYXZhaWxh
YmxlRm9udHM7Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXZhaWxhYmxlRm9udExpc3QgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBmb3IgKE5TU3RyaW5nICpmb250RmFtaWx5
IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKLSAgICAgICAgTlNBcnJheSogZm9udHNGb3JG
YW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJl
cnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07Ci0gICAgICAgIFthdmFpbGFibGVGb250TGlzdCBh
ZGRPYmplY3Q6Zm9udEZhbWlseV07Ci0gICAgICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4g
Zm9udHNGb3JGYW1pbHkpIHsKLSAgICAgICAgICAgIC8vIEZvbnQgbmFtZSBpcyB0aGUgZmlyc3Qg
ZW50cnkgaW4gdGhlIGFycmF5LgotICAgICAgICAgICAgW2F2YWlsYWJsZUZvbnRMaXN0IGFkZE9i
amVjdDpbZm9udEluZm8gb2JqZWN0QXRJbmRleDowXV07CisgICAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBhdmFpbGFibGVGb250cyA9IFtdIHsKKyAgICAgICAgYXV0byBhdmFpbGFibGVGb250
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3Ig
KE5TU3RyaW5nICpmb250RmFtaWx5IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKKyAgICAg
ICAgICAgIE5TQXJyYXkqIGZvbnRzRm9yRmFtaWx5ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmZvbnRGYW1pbHldOworICAg
ICAgICAgICAgW2F2YWlsYWJsZUZvbnRzIGFkZE9iamVjdDpmb250RmFtaWx5XTsKKyAgICAgICAg
ICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4gZm9udHNGb3JGYW1pbHkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGb250IG5hbWUgaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBhcnJheS4KKyAg
ICAgICAgICAgICAgICBbYXZhaWxhYmxlRm9udHMgYWRkT2JqZWN0Oltmb250SW5mbyBvYmplY3RB
dEluZGV4OjBdXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLQotICAgIGF2YWls
YWJsZUZvbnRzID0gYXZhaWxhYmxlRm9udExpc3Q7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRz
OworICAgICAgICByZXR1cm4gYXZhaWxhYmxlRm9udHM7CisgICAgfSgpOworICAgIHJldHVybiBh
dmFpbGFibGVGb250cy5nZXQoKTsKIH0KIAogLy8gQWN0aXZhdGluZyBzeXN0ZW0gY29waWVzIG9m
IHRoZXNlIGZvbnRzIG92ZXJyaWRlcyBhbnkgb3RoZXJzIHRoYXQgY291bGQgYmUgcHJlZmVycmVk
LCBzdWNoIGFzIG9uZXMKQEAgLTU3Niw3ICs1NzMsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RXZWJE
b2N1bWVudEZvckZsZXhpYmxlVmlld3BvcnQoVUlXZWJCcm93c2VyVmlldyAqd2ViQnJvd3NlclZp
ZQogICAgIC8vIEFkanVzdCB0aGUgdmlld3BvcnQgdmlldyBhbmQgdmlld3BvcnQgdG8gaGF2ZSBz
aW1pbGFyIGJlaGF2aW9yCiAgICAgLy8gYXMgdGhlIGJyb3dzZXIuCiAgICAgWyhEdW1wUmVuZGVy
VHJlZUJyb3dzZXJWaWV3ICopd2ViQnJvd3NlclZpZXcgc2V0U2Nyb2xsaW5nVXNlc1VJV2ViU2Ny
b2xsVmlldzpZRVNdOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXREZWxlZ2F0ZTpzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlXTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0RGVsZWdhdGU6c2Nyb2xs
Vmlld1Jlc2l6ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBDR1JlY3Qgc2NyZWVuQm91bmRzID0g
W1VJU2NyZWVuIG1haW5TY3JlZW5dLmJvdW5kczsKICAgICBDR1JlY3Qgdmlld3BvcnRSZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCBzY3JlZW5Cb3VuZHMuc2l6ZS53aWR0aCwgc2NyZWVuQm91bmRzLnNp
emUuaGVpZ2h0KTsKQEAgLTY4NywxMCArNjg0LDEwIEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6
QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAotICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdh
dGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTpl
ZGl0aW5nRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJl
c291cmNlTG9hZERlbGVnYXRlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0Rl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNv
dXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgX3NldEdlb2xvY2F0aW9uUHJv
dmlkZXI6W01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF1dOwogICAgIFt3ZWJWaWV3IF9z
ZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOltXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jayBzaGFyZWRdXTsKICAgICBbd2ViVmlldyBfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6W01v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBzaGFyZWRdXTsKQEAgLTcyMiwyMyArNzE5LDIyIEBA
IFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAg
ICAvLyBQdXQgaXQgYXQgLTEwMDAwLCAtMTAwMDAgaW4gImZsaXBwZWQgY29vcmRpbmF0ZXMiLCBz
aW5jZSBXZWJDb3JlIGFuZCB0aGUgRE9NIHVzZSBmbGlwcGVkIGNvb3JkaW5hdGVzLgogICAgIE5T
U2NyZWVuICpmaXJzdFNjcmVlbiA9IFtbTlNTY3JlZW4gc2NyZWVuc10gZmlyc3RPYmplY3RdOwog
ICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gKHNob3dXZWJWaWV3KSA/IE5TT2Zmc2V0UmVjdChyZWN0
LCAxMDAsIDEwMCkgOiBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbZmlyc3RTY3JlZW4gZnJh
bWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKLSAgICBEdW1wUmVu
ZGVyVHJlZVdpbmRvdyAqd2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgIG1haW5X
aW5kb3cgPSB3aW5kb3c7Ci0KLSAgICBbd2luZG93IHNldENvbG9yU3BhY2U6W2ZpcnN0U2NyZWVu
IGNvbG9yU3BhY2VdXTsKLSAgICBbd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjpOU1dpbmRv
d0NvbGxlY3Rpb25CZWhhdmlvclN0YXRpb25hcnldOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIG1haW5XaW5kb3cgPSBhZG9wdE5TKFtb
RHVtcFJlbmRlclRyZWVXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVj
dCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgW21haW5XaW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xv
c2VkOk5PXTsKKyAgICBbbWFpbldpbmRvdyBzZXRDb2xvclNwYWNlOltmaXJzdFNjcmVlbiBjb2xv
clNwYWNlXV07CisgICAgW21haW5XaW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOk5TV2luZG93
Q29sbGVjdGlvbkJlaGF2aW9yU3RhdGlvbmFyeV07CisgICAgW1ttYWluV2luZG93IGNvbnRlbnRW
aWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwogICAgIGlmIChzaG93V2ViVmlldykKLSAg
ICAgICAgW3dpbmRvdyBvcmRlckZyb250Om5pbF07CisgICAgICAgIFttYWluV2luZG93IG9yZGVy
RnJvbnQ6bmlsXTsKICAgICBlbHNlCi0gICAgICAgIFt3aW5kb3cgb3JkZXJCYWNrOm5pbF07Ci0g
ICAgW3dpbmRvdyBzZXRBdXRvZGlzcGxheTpOT107CisgICAgICAgIFttYWluV2luZG93IG9yZGVy
QmFjazpuaWxdOworICAgIFttYWluV2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKIAotICAgIFt3
aW5kb3cgc3RhcnRMaXN0ZW5pbmdGb3JBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ2hhbmdlc107Cisg
ICAgWyhEdW1wUmVuZGVyVHJlZVdpbmRvdyAqKW1haW5XaW5kb3cuZ2V0KCkgc3RhcnRMaXN0ZW5p
bmdGb3JBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ2hhbmdlc107CiAjZWxzZQotICAgIER1bXBSZW5k
ZXJUcmVlV2luZG93ICpkcnRXaW5kb3cgPSBbW0R1bXBSZW5kZXJUcmVlV2luZG93IGFsbG9jXSBp
bml0V2l0aExheWVyOlt3ZWJCcm93c2VyVmlldyBsYXllcl1dOworICAgIGF1dG8gZHJ0V2luZG93
ID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlV2luZG93IGFsbG9jXSBpbml0V2l0aExheWVyOlt3
ZWJCcm93c2VyVmlldyBsYXllcl1dKTsKICAgICBbZHJ0V2luZG93IHNldENvbnRlbnRWaWV3Ondl
YlZpZXcuZ2V0KCldOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXRXQUtXaW5kb3c6ZHJ0V2luZG93
XTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0V0FLV2luZG93OmRydFdpbmRvdy5nZXQoKV07CiAK
ICAgICBbW3dlYlZpZXcgd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6W1tbd2ViVmlldyBtYWlu
RnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XV07CiAKQEAgLTc1MCw4ICs3NDYsOCBAQCBS
ZXRhaW5QdHI8V2ViVmlldz4gY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAgICAg
W3VpV2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKV07CiAK
ICAgICAvLyBUaGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZpZXcgYXJlIHJlbGVhc2VkIHdo
ZW4gdGhlIER1bXBSZW5kZXJUcmVlV2luZG93IGlzIGNsb3NlZC4KLSAgICBkcnRXaW5kb3cudWlX
aW5kb3cgPSB1aVdpbmRvdy5nZXQoKTsKLSAgICBkcnRXaW5kb3cuYnJvd3NlclZpZXcgPSB3ZWJC
cm93c2VyVmlldy5nZXQoKTsKKyAgICBkcnRXaW5kb3cuZ2V0KCkudWlXaW5kb3cgPSB1aVdpbmRv
dy5nZXQoKTsKKyAgICBkcnRXaW5kb3cuZ2V0KCkuYnJvd3NlclZpZXcgPSB3ZWJCcm93c2VyVmll
dy5nZXQoKTsKIAogICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJl
ZVdlYlNjcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0VGVzdFZpZXdwb3J0UmVj
dF0pOwogICAgIFtzY3JvbGxWaWV3IGFkZFN1YnZpZXc6d2ViQnJvd3NlclZpZXcuZ2V0KCldOwpA
QCAtNzY5LDkgKzc2NSw5IEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zm
c2NyZWVuV2luZG93KCkKICNlbHNlCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIFVJVmll
d3MsIGFuZCBzZXQgdGhlIGtleSBVSVdpbmRvdyB0byBiZSBwYWludGVkLgogICAgIGlmICghZ1dl
YkJyb3dzZXJWaWV3KSB7Ci0gICAgICAgIGdXZWJCcm93c2VyVmlldyA9IFt3ZWJCcm93c2VyVmll
dyByZXRhaW5dOwotICAgICAgICBnV2ViU2Nyb2xsVmlldyA9IFtzY3JvbGxWaWV3IHJldGFpbl07
Ci0gICAgICAgIGdEcnRXaW5kb3cgPSBbZHJ0V2luZG93IHJldGFpbl07CisgICAgICAgIGdXZWJC
cm93c2VyVmlldyA9IFdURk1vdmUod2ViQnJvd3NlclZpZXcpOworICAgICAgICBnV2ViU2Nyb2xs
VmlldyA9IFdURk1vdmUoc2Nyb2xsVmlldyk7CisgICAgICAgIGdEcnRXaW5kb3cgPSBXVEZNb3Zl
KGRydFdpbmRvdyk7CiAgICAgICAgIFt1aVdpbmRvdyBtYWtlS2V5QW5kVmlzaWJsZV07CiAgICAg
ICAgIFt1aVdpbmRvdyByZXRhaW5dOwogICAgIH0KQEAgLTgwMiwxMSArNzk4LDEzIEBAIHN0YXRp
YyB2b2lkIGRlc3Ryb3lHbG9iYWxXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAgICAvLyBp
dCBwcm9iYWJseSB3b24ndCBjYXVzZSBhbnkgdHJvdWJsZSAoYW5kIHRoaXMgaXMganVzdCBhIHRl
c3QgdG9vbCwgYWZ0ZXIgYWxsKS4KICAgICBbTlNPYmplY3QgY2FuY2VsUHJldmlvdXNQZXJmb3Jt
UmVxdWVzdHNXaXRoVGFyZ2V0OndpbmRvd107CiAKLSAgICBbd2luZG93IGNsb3NlXTsgLy8gcmVs
ZWFzZXMgd2hlbiBjbG9zZWQKKyAgICBbd2luZG93IGNsb3NlXTsKICNlbHNlCiAgICAgYXV0byB1
aVdpbmRvdyA9IGFkb3B0TlMoW2dXZWJCcm93c2VyVmlldyB3aW5kb3ddKTsKICAgICBbdWlXaW5k
b3cgcmVtb3ZlRnJvbVN1cGVydmlld107CiAjZW5kaWYKKworICAgIG1haW5XaW5kb3cgPSBuaWw7
CiB9CiAKIHN0YXRpYyB2b2lkIGNyZWF0ZUdsb2JhbFdlYlZpZXdBbmRPZmZzY3JlZW5XaW5kb3co
KQpAQCAtOTkyLDM2ICs5OTAsMzEgQEAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdHNUb0NvbnNpc3Rl
bnRWYWx1ZXNGb3JUZXN0aW5nKCkKIHN0YXRpYyB2b2lkIGFsbG9jYXRlR2xvYmFsQ29udHJvbGxl
cnMoKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVtb3ZlIHRoZXNlIGFuZCBtb3ZlIHRv
IHRoZSBPYmpDIHN0YW5kYXJkIFtGb28gc2hhcmVkSW5zdGFuY2VdIG1vZGVsCi0gICAgZ05hdmln
YXRpb25Db250cm9sbGVyID0gW1tOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF07Ci0g
ICAgZnJhbWVMb2FkRGVsZWdhdGUgPSBbW0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XTsK
LSAgICB1aURlbGVnYXRlID0gW1tVSURlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICBlZGl0aW5n
RGVsZWdhdGUgPSBbW0VkaXRpbmdEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgcmVzb3VyY2VM
b2FkRGVsZWdhdGUgPSBbW1Jlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICBw
b2xpY3lEZWxlZ2F0ZSA9IFtbUG9saWN5RGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGhpc3Rv
cnlEZWxlZ2F0ZSA9IFtbSGlzdG9yeURlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICBkZWZhdWx0
UG9saWN5RGVsZWdhdGUgPSBbW0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Cisg
ICAgZ05hdmlnYXRpb25Db250cm9sbGVyID0gYWRvcHROUyhbW05hdmlnYXRpb25Db250cm9sbGVy
IGFsbG9jXSBpbml0XSk7CisgICAgZnJhbWVMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbRnJhbWVM
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB1aURlbGVnYXRlID0gYWRvcHROUyhbW1VJ
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBlZGl0aW5nRGVsZWdhdGUgPSBhZG9wdE5TKFtb
RWRpdGluZ0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgcmVzb3VyY2VMb2FkRGVsZWdhdGUg
PSBhZG9wdE5TKFtbUmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBwb2xp
Y3lEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tQb2xpY3lEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IGhpc3RvcnlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tIaXN0b3J5RGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBkZWZhdWx0UG9saWN5RGVsZWdhdGUgPSBhZG9wdE5TKFtbRGVmYXVsdFBvbGljeURl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBzY3Jv
bGxWaWV3UmVzaXplckRlbGVnYXRlID0gW1tTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlIGFsbG9j
XSBpbml0XTsKKyAgICBzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlID0gYWRvcHROUyhbW1Njcm9s
bFZpZXdSZXNpemVyRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICNlbmRpZgogfQogCi0vLyBPYmpD
KysgZG9lc24ndCBzZWVtIHRvIGxldCBtZSBwYXNzIE5TT2JqZWN0KiYgc2FkbHkuCi1zdGF0aWMg
aW5saW5lIHZvaWQgcmVsZWFzZUFuZFplcm8oTlNPYmplY3QqKiBvYmplY3QpCi17Ci0gICAgYXV0
byBvbGRPYmplY3QgPSBhZG9wdE5TKCpvYmplY3QpOwotICAgICpvYmplY3QgPSBuaWw7Ci19Ci0K
IHN0YXRpYyB2b2lkIHJlbGVhc2VHbG9iYWxDb250cm9sbGVycygpCiB7Ci0gICAgcmVsZWFzZUFu
ZFplcm8oJmdOYXZpZ2F0aW9uQ29udHJvbGxlcik7Ci0gICAgcmVsZWFzZUFuZFplcm8oJmZyYW1l
TG9hZERlbGVnYXRlKTsKLSAgICByZWxlYXNlQW5kWmVybygmZWRpdGluZ0RlbGVnYXRlKTsKLSAg
ICByZWxlYXNlQW5kWmVybygmcmVzb3VyY2VMb2FkRGVsZWdhdGUpOwotICAgIHJlbGVhc2VBbmRa
ZXJvKCZ1aURlbGVnYXRlKTsKLSAgICByZWxlYXNlQW5kWmVybygmcG9saWN5RGVsZWdhdGUpOwor
ICAgIGdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IG5pbDsKKyAgICBmcmFtZUxvYWREZWxlZ2F0ZSA9
IG5pbDsKKyAgICBlZGl0aW5nRGVsZWdhdGUgPSBuaWw7CisgICAgcmVzb3VyY2VMb2FkRGVsZWdh
dGUgPSBuaWw7CisgICAgdWlEZWxlZ2F0ZSA9IG5pbDsKKyAgICBoaXN0b3J5RGVsZWdhdGUgPSBu
aWw7CisgICAgcG9saWN5RGVsZWdhdGUgPSBuaWw7CisgICAgZGVmYXVsdFBvbGljeURlbGVnYXRl
ID0gbmlsOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgcmVsZWFzZUFuZFplcm8oJnNj
cm9sbFZpZXdSZXNpemVyRGVsZWdhdGUpOworICAgIHNjcm9sbFZpZXdSZXNpemVyRGVsZWdhdGUg
PSBuaWw7CiAjZW5kaWYKIH0KIApAQCAtMTc1OCw3ICsxNzUxLDcgQEAgc3RhdGljIHZvaWQgcmVz
ZXRXZWJWaWV3VG9Db25zaXN0ZW50U3RhdGUoY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9u
cywgUmVzZXQKICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3ZWJWaWV3XTsKIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JTdGFuZGFy
ZFZpZXdwb3J0KGdXZWJCcm93c2VyVmlldywgZ1dlYlNjcm9sbFZpZXcpOworICAgIGFkanVzdFdl
YkRvY3VtZW50Rm9yU3RhbmRhcmRWaWV3cG9ydChnV2ViQnJvd3NlclZpZXcuZ2V0KCksIGdXZWJT
Y3JvbGxWaWV3LmdldCgpKTsKICAgICBbd2ViVmlldyBfc2V0QWxsb3dzTWVzc2FnaW5nOllFU107
CiAjZW5kaWYKICAgICBbd2ViVmlldyBzZXRFZGl0YWJsZTpOT107CkBAIC0xNzcwLDcgKzE3NjMs
NyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0NvbnNpc3RlbnRTdGF0ZShjb25zdCBXVFI6
OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogICAgIFt3ZWJWaWV3IF9zZXRDdXN0b21CYWNr
aW5nU2NhbGVGYWN0b3I6MF07CiAjZW5kaWYKICAgICBbd2ViVmlldyBzZXRUYWJLZXlDeWNsZXNU
aHJvdWdoRWxlbWVudHM6WUVTXTsKLSAgICBbd2ViVmlldyBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZh
dWx0UG9saWN5RGVsZWdhdGVdOworICAgIFt3ZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOmRlZmF1
bHRQb2xpY3lEZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3BvbGljeURlbGVnYXRlIHNldFBlcm1pc3Np
dmU6Tk9dOwogICAgIFtwb2xpY3lEZWxlZ2F0ZSBzZXRDb250cm9sbGVyVG9Ob3RpZnlEb25lOjBd
OwogICAgIFt1aURlbGVnYXRlIHJlc2V0VG9Db25zaXN0ZW50U3RhdGVCZWZvcmVUZXN0aW5nOm9w
dGlvbnNdOwpAQCAtMTk0Myw3ICsxOTM2LDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBz
dGQ6OnN0cmluZyYgaW5wdXRMaW5lKQogICAgIHRvcExvYWRpbmdGcmFtZSA9IG5pbDsKICNpZiAh
UExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBBU1NFUlQoIWRyYWdnaW5nSW5mbyk7IC8vIHRoZSBw
cmV2aW91cyB0ZXN0IHNob3VsZCBoYXZlIGNhbGxlZCBldmVudFNlbmRlci5tb3VzZVVwIHRvIGRy
b3AhCi0gICAgcmVsZWFzZUFuZFplcm8oJmRyYWdnaW5nSW5mbyk7CisgICAgZHJhZ2dpbmdJbmZv
ID0gbmlsOwogI2VuZGlmCiAgICAgZG9uZSA9IE5POwogCkBAIC0xOTU5LDcgKzE5NTIsNyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpbnB1dExpbmUpCiAgICAgICAg
IGdUZXN0UnVubmVyLT5zZXREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKHRydWUpOwogCiAgICAgaWYg
KHNob3VsZExvZ0hpc3RvcnlEZWxlZ2F0ZXMocGF0aE9yVVJMLmNfc3RyKCkpKQotICAgICAgICBb
W21haW5GcmFtZSB3ZWJWaWV3XSBzZXRIaXN0b3J5RGVsZWdhdGU6aGlzdG9yeURlbGVnYXRlXTsK
KyAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0SGlzdG9yeURlbGVnYXRlOmhpc3RvcnlE
ZWxlZ2F0ZS5nZXQoKV07CiAgICAgZWxzZQogICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBz
ZXRIaXN0b3J5RGVsZWdhdGU6bmlsXTsKIApAQCAtMTk3MCw3ICsxOTYzLDcgQEAgc3RhdGljIHZv
aWQgcnVuVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaW5wdXRMaW5lKQogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBpZiAoc2hvdWxkTWFrZVZpZXdwb3J0RmxleGlibGUocGF0aE9yVVJM
LmNfc3RyKCkpKQotICAgICAgICBhZGp1c3RXZWJEb2N1bWVudEZvckZsZXhpYmxlVmlld3BvcnQo
Z1dlYkJyb3dzZXJWaWV3LCBnV2ViU2Nyb2xsVmlldyk7CisgICAgICAgIGFkanVzdFdlYkRvY3Vt
ZW50Rm9yRmxleGlibGVWaWV3cG9ydChnV2ViQnJvd3NlclZpZXcuZ2V0KCksIGdXZWJTY3JvbGxW
aWV3LmdldCgpKTsKICNlbmRpZgogCiAgICAgaWYgKHNob3VsZFVzZUVwaGVtZXJhbFNlc3Npb24o
cGF0aE9yVVJMLmNfc3RyKCkpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlTWFjLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWVNYWMuaAppbmRleCA0MzQ3ZGJlNTBlZmVlMWU0NDc3OTkwNTdlYjkzYjJhNjM2N2RiY2I1
Li4zZDQxYjViNzRiYjcyOGE1MTJkZTk2N2Q5OTU4ZjA2ODgyZDg1NjNjIDEwMDY0NAotLS0gYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVNYWMuaApAQCAtNDcsMTcgKzQ3LDE5IEBA
IGV4dGVybiBDRk11dGFibGVBcnJheVJlZiBvcGVuV2luZG93c1JlZjsKIGV4dGVybiBDRk11dGFi
bGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM7CiBleHRlcm4gV2ViRnJhbWUqIG1haW5GcmFtZTsKIGV4
dGVybiBXZWJGcmFtZSogdG9wTG9hZGluZ0ZyYW1lOwotZXh0ZXJuIER1bXBSZW5kZXJUcmVlRHJh
Z2dpbmdJbmZvICpkcmFnZ2luZ0luZm87Ci1leHRlcm4gTmF2aWdhdGlvbkNvbnRyb2xsZXIqIGdO
YXZpZ2F0aW9uQ29udHJvbGxlcjsKLWV4dGVybiBQb2xpY3lEZWxlZ2F0ZSogcG9saWN5RGVsZWdh
dGU7Ci1leHRlcm4gRGVmYXVsdFBvbGljeURlbGVnYXRlICpkZWZhdWx0UG9saWN5RGVsZWdhdGU7
CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVEcmFn
Z2luZ0luZm8+IGRyYWdnaW5nSW5mbzsKK2V4dGVybiBSZXRhaW5QdHI8TmF2aWdhdGlvbkNvbnRy
b2xsZXI+IGdOYXZpZ2F0aW9uQ29udHJvbGxlcjsKK2V4dGVybiBSZXRhaW5QdHI8UG9saWN5RGVs
ZWdhdGU+IHBvbGljeURlbGVnYXRlOworZXh0ZXJuIFJldGFpblB0cjxEZWZhdWx0UG9saWN5RGVs
ZWdhdGU+IGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiBPQkpDX0NMQVNTIFVJV2luZG93OwotZXh0ZXJuIFVJV2luZG93ICptYWluV2luZG93OworZXh0
ZXJuIFJldGFpblB0cjxVSVdpbmRvdz4gbWFpbldpbmRvdzsKICNlbHNlCiBPQkpDX0NMQVNTIE5T
V2luZG93OwotZXh0ZXJuIE5TV2luZG93ICptYWluV2luZG93OworZXh0ZXJuIFJldGFpblB0cjxO
U1dpbmRvdz4gbWFpbldpbmRvdzsKKyNlbmRpZgogI2VuZGlmCiAKIHZvaWQgc2V0V2FpdFRvRHVt
cFdhdGNoZG9nKENGUnVuTG9vcFRpbWVyUmVmKTsKQEAgLTgxLDggKzgzLDEwIEBAIEBpbnRlcmZh
Y2UgRHVtcFJlbmRlclRyZWUgOiBVSUFwcGxpY2F0aW9uIHsKIC0gKHZvaWQpX3dhaXRGb3JXZWJU
aHJlYWQ7CiBAZW5kCiAKKyNpZmRlZiBfX2NwbHVzcGx1cwogQGNsYXNzIER1bXBSZW5kZXJUcmVl
QnJvd3NlclZpZXc7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyAqZ1dlYkJyb3dz
ZXJWaWV3OworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3PiBnV2Vi
QnJvd3NlclZpZXc7CisjZW5kaWYKICNlbmRpZgogCiBpbnQgRHVtcFJlbmRlclRyZWVNYWluKGlu
dCwgY29uc3QgY2hhciAqW10pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KaW5kZXggZTk0NGI0MTdkYmY1N2ZmNmQ5NzgyYTk4
YjQ1NDBkOTkzM2YwYmQ5NS4uNWNmMjlhYzY2Njg4MWFmMmRiNjcwZDIxYTk4ZjEwZWMyZWJkYzlm
NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFz
dGVib2FyZC5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQ
YXN0ZWJvYXJkLm1tCkBAIC01Niw3ICs1Niw3IEBAIEBpbnRlcmZhY2UgTG9jYWxQYXN0ZWJvYXJk
IDogTlNQYXN0ZWJvYXJkIHsKIC0oaWQpaW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CiBA
ZW5kCiAKLXN0YXRpYyBOU011dGFibGVEaWN0aW9uYXJ5ICpsb2NhbFBhc3RlYm9hcmRzOworc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBsb2NhbFBhc3RlYm9hcmRzOwogCiBA
aW1wbGVtZW50YXRpb24gRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkCiAKQEAgLTY3LDcgKzY3LDcg
QEAgKyAoTlNQYXN0ZWJvYXJkICopX3Bhc3RlYm9hcmRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1l
CiAgICAgaWYgKCFuYW1lKQogICAgICAgICBuYW1lID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJMb2NhbFBhc3RlYm9hcmQlZCIsICsrbnVtYmVyXTsKICAgICBpZiAoIWxvY2FsUGFzdGVi
b2FyZHMpCi0gICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRdOworICAgICAgICBsb2NhbFBhc3RlYm9hcmRzID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoTG9jYWxQYXN0ZWJvYXJkICpw
YXN0ZWJvYXJkID0gW2xvY2FsUGFzdGVib2FyZHMgb2JqZWN0Rm9yS2V5Om5hbWVdKQogICAgICAg
ICByZXR1cm4gcGFzdGVib2FyZDsKICAgICBhdXRvIHBhc3RlYm9hcmQgPSBhZG9wdE5TKFtbTG9j
YWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV0pOwpAQCAtNzcsNyArNzcsNyBA
QCArIChOU1Bhc3RlYm9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUK
IAogKyAodm9pZClyZWxlYXNlTG9jYWxQYXN0ZWJvYXJkcwogewotICAgIGF1dG8gb2xkUGFzdGVi
b2FkcyA9IGFkb3B0TlMoc3RkOjpleGNoYW5nZShsb2NhbFBhc3RlYm9hcmRzLCBuaWwpKTsKKyAg
ICBsb2NhbFBhc3RlYm9hcmRzID0gbmlsOwogfQogCiAvLyBDb252ZW5pZW5jZSBtZXRob2QgZm9y
IEpTIHNvIHRoYXQgaXQgZG9lc24ndCBoYXZlIHRvIHRyeSBhbmQgY3JlYXRlIGEgTlNBcnJheSBv
biB0aGUgb2JqYyBzaWRlIGluc3RlYWQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIubW0KaW5kZXggNTI2NjcwNTlkYzhhOWY3YzBhMDc5NjIw
OGYwMGZiMGI5NDJmNGUwOS4uMTZhNjA1MWJiN2ZiNjRiOWRmMGFhOWUzNzMyMmI4OWIwMTFkNzU3
MCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIubW0KQEAgLTkxLDcgKzkxLDcgQEAgc3RydWN0IEtleU1hcHBpbmdFbnRyeSB7CiBOU1Bv
aW50IGxhc3RNb3VzZVBvc2l0aW9uOwogTlNQb2ludCBsYXN0Q2xpY2tQb3NpdGlvbjsKIGludCBs
YXN0Q2xpY2tCdXR0b24gPSBOb01vdXNlQnV0dG9uOwotTlNBcnJheSAqd2Via2l0RG9tRXZlbnRO
YW1lczsKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gd2Via2l0RG9tRXZlbnROYW1lczsKIEJP
T0wgcmVwbGF5aW5nU2F2ZWRFdmVudHM7CiB1bnNpZ25lZCBtb3VzZUJ1dHRvbnNDdXJyZW50bHlE
b3duID0gMDsKIApAQCAtMTY5LDggKzE2OSw4IEBAIHN0YXRpYyBOU0RyYWdnaW5nU2Vzc2lvbiAq
ZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3VyCiAg
ICAgZm9yIChOU0RyYWdnaW5nSXRlbSAqaXRlbSBpbiBpdGVtcykKICAgICAgICAgW3Bhc3RlYm9h
cmQgd3JpdGVPYmplY3RzOkBbIGl0ZW0uaXRlbSBdXTsKIAotICAgIGRyYWdnaW5nSW5mbyA9IFtb
RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNl
dDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNlXTsKLSAgICBb
d2ViVmlldyBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvXTsKKyAgICBkcmFnZ2luZ0luZm8g
PSBhZG9wdE5TKFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1h
Z2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291
cmNlXSk7CisgICAgW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5mby5nZXQoKV07
CiAgICAgW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgcmVwbGF5U2F2ZWRFdmVudHNdOwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CkBAIC0xNzksNyArMTc5LDcgQEAgc3RhdGljIE5TRHJhZ2dpbmdTZXNz
aW9uICpkcnRfV2ViSFRNTFZpZXdfYmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNFdmVudFNv
dXIKIAogKyAodm9pZClpbml0aWFsaXplCiB7Ci0gICAgd2Via2l0RG9tRXZlbnROYW1lcyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgorICAgIHdlYmtpdERvbUV2ZW50TmFtZXMg
PSBAWwogICAgICAgICBAImFib3J0IiwKICAgICAgICAgQCJiZWZvcmVjb3B5IiwKICAgICAgICAg
QCJiZWZvcmVjdXQiLApAQCAtMjI2LDcgKzIyNiw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAg
ICAgICBAInRleHR6b29tb3V0IiwKICAgICAgICAgQCJ1bmxvYWQiLAogICAgICAgICBAInpvb20i
LAotICAgICAgICBuaWxdOworICAgIF07CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgLy8gQWRk
IGFuIGltcGxlbWVudGF0aW9uIG9mIC1bV2ViSFRNTFZpZXcgYmVnaW5EcmFnZ2luZ1Nlc3Npb25X
aXRoSXRlbXM6ZXZlbnQ6c291cmNlOl0uCkBAIC00NjMsOCArNDYzLDggQEAgLSAodm9pZCliZWdp
bkRyYWdXaXRoRmlsZXM6KFdlYlNjcmlwdE9iamVjdCopanNGaWxlUGF0aHMKIAogICAgIC8vIFBy
b3ZpZGUgYSBzb3VyY2UsIG90aGVyd2lzZSBbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gZHJh
Z2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrXSBkZWZhdWx0cyB0byBOU0RyYWdPcGVyYXRpb25Ob25l
CiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdE5TKFtbRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdT
b3VyY2UgYWxsb2NdIGluaXRdKTsKLSAgICBkcmFnZ2luZ0luZm8gPSBbW0R1bXBSZW5kZXJUcmVl
RHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBw
YXN0ZWJvYXJkOnBib2FyZCBzb3VyY2U6c291cmNlLmdldCgpXTsKLSAgICBbW21haW5GcmFtZSB3
ZWJWaWV3XSBkcmFnZ2luZ0VudGVyZWQ6ZHJhZ2dpbmdJbmZvXTsKKyAgICBkcmFnZ2luZ0luZm8g
PSBhZG9wdE5TKFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1h
Z2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGJvYXJkIHNvdXJjZTpzb3VyY2Uu
Z2V0KCldKTsKKyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBkcmFnZ2luZ0VudGVyZWQ6ZHJhZ2dp
bmdJbmZvLmdldCgpXTsKIAogICAgIGRyYWdNb2RlID0gTk87IC8vIGRyYWdNb2RlIHNhdmVzIGV2
ZW50cyBhbmQgdGhlbiByZXBsYXlzIHRoZW0gbGF0ZXIuICBXZSBkb24ndCBuZWVkL3dhbnQgdGhh
dC4KICAgICBsZWZ0TW91c2VCdXR0b25Eb3duID0gWUVTOyAvLyBNYWtlIHRoZSByZXN0IG9mIGV2
ZW50U2VuZGVyIHRoaW5rIGEgZHJhZyBpcyBpbiBwcm9ncmVzcwpAQCAtNTAzLDggKzUwMyw4IEBA
IC0gKHZvaWQpYmVnaW5EcmFnV2l0aEZpbGVQcm9taXNlczooV2ViU2NyaXB0T2JqZWN0ICopZmls
ZVBhdGhzCiAgICAgYXNzZXJ0KFtwYXN0ZWJvYXJkIHByb3BlcnR5TGlzdEZvclR5cGU6TlNGaWxl
bmFtZXNQYm9hcmRUeXBlXSk7CiAKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0TlMoW1tEdW1wUmVu
ZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZSBhbGxvY10gaW5pdFdpdGhQcm9taXNlZEZpbGVVUkxz
OmZpbGVVUkxzXSk7Ci0gICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5n
SW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFzdGVib2Fy
ZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCldOwotICAgIFttYWluRnJhbWUud2ViVmll
dyBkcmFnZ2luZ0VudGVyZWQ6ZHJhZ2dpbmdJbmZvXTsKKyAgICBkcmFnZ2luZ0luZm8gPSBhZG9w
dE5TKFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6bmls
IG9mZnNldDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNlLmdl
dCgpXSk7CisgICAgW21haW5GcmFtZS53ZWJWaWV3IGRyYWdnaW5nRW50ZXJlZDpkcmFnZ2luZ0lu
Zm8uZ2V0KCldOwogCiAgICAgZHJhZ01vZGUgPSBOTzsKICAgICBsZWZ0TW91c2VCdXR0b25Eb3du
ID0gWUVTOwpAQCAtNzE5LDE2ICs3MTksMTQgQEAgLSAodm9pZCltb3VzZVVwOihpbnQpYnV0dG9u
TnVtYmVyIHdpdGhNb2RpZmllcnM6KFdlYlNjcmlwdE9iamVjdCopbW9kaWZpZXJzCiAgICAgaWYg
KGRyYWdnaW5nSW5mbykgewogICAgICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gW21haW5GcmFtZSB3
ZWJWaWV3XTsKICAgICAgICAgCi0gICAgICAgIE5TRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9u
ID0gW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5mb107Ci0gICAgICAgIAorICAg
ICAgICBOU0RyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiA9IFt3ZWJWaWV3IGRyYWdnaW5nVXBk
YXRlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwogICAgICAgICBpZiAoZHJhZ09wZXJhdGlvbiAhPSBO
U0RyYWdPcGVyYXRpb25Ob25lKQotICAgICAgICAgICAgW3dlYlZpZXcgcGVyZm9ybURyYWdPcGVy
YXRpb246ZHJhZ2dpbmdJbmZvXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3IHBlcmZvcm1EcmFnT3Bl
cmF0aW9uOmRyYWdnaW5nSW5mby5nZXQoKV07CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFt3
ZWJWaWV3IGRyYWdnaW5nRXhpdGVkOmRyYWdnaW5nSW5mb107CisgICAgICAgICAgICBbd2ViVmll
dyBkcmFnZ2luZ0V4aXRlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwogICAgICAgICAvLyBQZXIgTlNE
cmFnZ2luZy5oOiBkcmFnZ2luZ1NvdXJjZXMgbWF5IG5vdCBpbXBsZW1lbnQgZHJhZ2dlZEltYWdl
OmVuZGVkQXQ6b3BlcmF0aW9uOgogICAgICAgICBpZiAoW1tkcmFnZ2luZ0luZm8gZHJhZ2dpbmdT
b3VyY2VdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZHJhZ2dlZEltYWdlOmVuZGVkQXQ6
b3BlcmF0aW9uOildKQogICAgICAgICAgICAgW1tkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2Vd
IGRyYWdnZWRJbWFnZTpbZHJhZ2dpbmdJbmZvIGRyYWdnZWRJbWFnZV0gZW5kZWRBdDpsYXN0TW91
c2VQb3NpdGlvbiBvcGVyYXRpb246ZHJhZ09wZXJhdGlvbl07Ci0gICAgICAgIFtkcmFnZ2luZ0lu
Zm8gcmVsZWFzZV07CiAgICAgICAgIGRyYWdnaW5nSW5mbyA9IG5pbDsKICAgICB9CiAjZW5kaWYK
QEAgLTc4Nyw3ICs3ODUsNyBAQCAtICh2b2lkKW1vdXNlTW92ZVRvWDooaW50KXggWTooaW50KXkK
ICAgICAgICAgICAgICAgICAvLyBQZXIgTlNEcmFnZ2luZy5oOiBkcmFnZ2luZ1NvdXJjZXMgbWF5
IG5vdCBpbXBsZW1lbnQgZHJhZ2dlZEltYWdlOm1vdmVkVG86CiAgICAgICAgICAgICAgICAgaWYg
KFtbZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGRyYWdnZWRJbWFnZTptb3ZlZFRvOildKQogICAgICAgICAgICAgICAgICAgICBbW2RyYWdn
aW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gZHJhZ2dlZEltYWdlOltkcmFnZ2luZ0luZm8gZHJhZ2dl
ZEltYWdlXSBtb3ZlZFRvOmxhc3RNb3VzZVBvc2l0aW9uXTsKLSAgICAgICAgICAgICAgICBbW21h
aW5GcmFtZSB3ZWJWaWV3XSBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvXTsKKyAgICAgICAg
ICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZv
LmdldCgpXTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgICAgICAgICAgICAgYXV0byBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlciA9
IGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyRm9yVmlld0FuZEV2ZW50KHN1YlZpZXcs
IGV2ZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFt
ZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxl
Z2F0ZS5tbQppbmRleCAzNDJiM2EwMWRjN2VhODc5YWYxYjU0YjBlZTI3M2Q2ODEyZjhmN2E3Li4x
YWJhODEyMDgyNzcxOWE5ZjIyNWU5Njg2NjYwZThmOTNhYmZkZDIwIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCkBAIC0zMjYsNyArMzI2LDcgQEAg
LSAodm9pZClkaWRDbGVhcldpbmRvd09iamVjdEluU3RhbmRhcmRXb3JsZEZvckZyYW1lOihXZWJG
cmFtZSAqKWZyYW1lCiAjZW5kaWYKIAogICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHRO
UyhbW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKS5nZXQoKSBmb3JLZXk6QCJl
dmVudFNlbmRlciJdOwotICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6Z05hdmlnYXRpb25Db250
cm9sbGVyIGZvcktleTpAIm5hdmlnYXRpb25Db250cm9sbGVyIl07CisgICAgW3dpbmRvd09iamVj
dCBzZXRWYWx1ZTpnTmF2aWdhdGlvbkNvbnRyb2xsZXIuZ2V0KCkgZm9yS2V5OkAibmF2aWdhdGlv
bkNvbnRyb2xsZXIiXTsKICAgICBbd2luZG93T2JqZWN0IHNldFZhbHVlOmFkb3B0TlMoW1tPYmpD
Q29udHJvbGxlciBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAIm9iakNDb250cm9sbGVyIl07
CiAgICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTphZG9wdE5TKFtbT2JqQ1BsdWdpbiBhbGxvY10g
aW5pdF0pLmdldCgpIGZvcktleTpAIm9iakNQbHVnaW4iXTsKICAgICBbd2luZG93T2JqZWN0IHNl
dFZhbHVlOmFkb3B0TlMoW1tPYmpDUGx1Z2luRnVuY3Rpb24gYWxsb2NdIGluaXRdKS5nZXQoKSBm
b3JLZXk6QCJvYmpDUGx1Z2luRnVuY3Rpb24iXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW0KaW5kZXggYzU4ZDU0NjVmYTAzZGJkYmFlMDk1OGRhOTU1OWI3YjY2MDJi
M2E1Yy4uMjRjZTIyZjdmZGE3NmQ1NWY4NmU2YTVkNGExZmJiYmE4ZWMyYjYwZiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KQEAgLTQwMCwxMiArNDAwLDEyIEBA
IHZvaWQgVGVzdFJ1bm5lcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxv
bmcgc2l6ZSkKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUoYm9vbCBz
ZXREZWxlZ2F0ZSwgYm9vbCBwZXJtaXNzaXZlKQogewogICAgIGlmICghc2V0RGVsZWdhdGUpIHsK
LSAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0UG9saWN5RGVsZWdhdGU6ZGVmYXVsdFBv
bGljeURlbGVnYXRlXTsKKyAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0UG9saWN5RGVs
ZWdhdGU6ZGVmYXVsdFBvbGljeURlbGVnYXRlLmdldCgpXTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIFtwb2xpY3lEZWxlZ2F0ZSBzZXRQZXJtaXNzaXZlOnBlcm1pc3NpdmVdOwotICAg
IFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFBvbGljeURlbGVnYXRlOnBvbGljeURlbGVnYXRlXTsK
KyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpwb2xpY3lEZWxlZ2F0
ZS5nZXQoKV07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0RGF0YWJhc2VRdW90YSh1bnNpZ25l
ZCBsb25nIGxvbmcgcXVvdGEpCkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBUZXN0UnVubmVyOjp3
YWl0Rm9yUG9saWN5RGVsZWdhdGUoKQogewogICAgIHNldFdhaXRUb0R1bXAodHJ1ZSk7CiAgICAg
W3BvbGljeURlbGVnYXRlIHNldENvbnRyb2xsZXJUb05vdGlmeURvbmU6dGhpc107Ci0gICAgW1tt
YWluRnJhbWUgd2ViVmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGVdOworICAg
IFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFBvbGljeURlbGVnYXRlOnBvbGljeURlbGVnYXRlLmdl
dCgpXTsKIH0KIAogdm9pZCBUZXN0UnVubmVyOjphZGRPcmlnaW5BY2Nlc3NBbGxvd0xpc3RFbnRy
eShKU1N0cmluZ1JlZiBzb3VyY2VPcmlnaW4sIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIEpTU3RyaW5nUmVmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucykKQEAgLTkxNCw4ICs5MTQsOCBAQCB2b2lkIFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdX
aW5kb3dEYXRhTG9hZEJhc2VVUkwoSlNTdHJpbmdSZWYgdXRmOERhdGEsIEpTU3RyaW5nUgogICAg
IC8vIGFuZCBjbG9zZXMgYSBXZWJWaWV3LCBpdCBzaG91bGQgYmUgcnVuIG9uIHRoZSBtYWluIHRo
cmVhZC4gTWFrZSB0aGUgc3dpdGNoCiAgICAgLy8gZnJvbSB0aGUgd2ViIHRocmVhZCB0byB0aGUg
bWFpbiB0aHJlYWQgYW5kIG1ha2UgdGhlIHRlc3QgYXN5bmNocm9ub3VzLgogICAgIGlmIChXZWJU
aHJlYWRJc0N1cnJlbnQoKSkgewotICAgICAgICBBUElUZXN0RGVsZWdhdGVJUGhvbmUgKmRpc3Bh
dGNoZXIgPSBbW0FQSVRlc3REZWxlZ2F0ZUlQaG9uZSBhbGxvY10gaW5pdFdpdGhUZXN0UnVubmVy
OnRoaXMgdXRmOERhdGE6dXRmOERhdGEgYmFzZVVSTDpiYXNlVVJMXTsKLSAgICAgICAgTlNJbnZv
Y2F0aW9uICppbnZvY2F0aW9uID0gV2ViVGhyZWFkTWFrZU5TSW52b2NhdGlvbihkaXNwYXRjaGVy
LCBAc2VsZWN0b3IocnVuKSk7CisgICAgICAgIGF1dG8gZGlzcGF0Y2hlciA9IGFkb3B0TlMoW1tB
UElUZXN0RGVsZWdhdGVJUGhvbmUgYWxsb2NdIGluaXRXaXRoVGVzdFJ1bm5lcjp0aGlzIHV0ZjhE
YXRhOnV0ZjhEYXRhIGJhc2VVUkw6YmFzZVVSTF0pOworICAgICAgICBOU0ludm9jYXRpb24gKmlu
dm9jYXRpb24gPSBXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGRpc3BhdGNoZXIuZ2V0KCksIEBz
ZWxlY3RvcihydW4pKTsKICAgICAgICAgV2ViVGhyZWFkQ2FsbERlbGVnYXRlKGludm9jYXRpb24p
OwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1VJRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0
ZS5tbQppbmRleCAxMmY1YWE3OTAzMWE4MTcxMTVkZGVkMDI2YWI2OGIxYWY4YmQxYjRjLi5iYmE1
M2JkYmY5NGUxOWIzZjc1NzAwZWNhYmFhMWM4N2VmNGZjMmQ4IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVUlEZWxlZ2F0ZS5tbQpAQCAtNDgsNyArNDgsNyBAQAogI2ltcG9ydCA8d3RmL2NvY29h
L1ZlY3RvckNvY29hLmg+CiAKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKLUR1bXBSZW5kZXJU
cmVlRHJhZ2dpbmdJbmZvICpkcmFnZ2luZ0luZm8gPSBuaWw7CitSZXRhaW5QdHI8RHVtcFJlbmRl
clRyZWVEcmFnZ2luZ0luZm8+IGRyYWdnaW5nSW5mbzsKICNlbmRpZgogCiBAaW1wbGVtZW50YXRp
b24gVUlEZWxlZ2F0ZQpAQCAtMTUzLDEwICsxNTMsMTAgQEAgLSAoQk9PTCl3ZWJWaWV3OihXZWJW
aWV3ICopYyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcg
KikKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXNlbmRlciBkcmFnSW1hZ2U6KE5TSW1hZ2UgKilhbkltYWdlIGF0OihOU1BvaW50KXZpZXdMb2Nh
dGlvbiBvZmZzZXQ6KE5TU2l6ZSlpbml0aWFsT2Zmc2V0IGV2ZW50OihOU0V2ZW50ICopZXZlbnQg
cGFzdGVib2FyZDooTlNQYXN0ZWJvYXJkICopcGJvYXJkIHNvdXJjZTooaWQpc291cmNlT2JqIHNs
aWRlQmFjazooQk9PTClzbGlkZUZsYWcgZm9yVmlldzooTlNWaWV3ICopdmlldwogewotICAgICBh
c3NlcnQoIWRyYWdnaW5nSW5mbyk7Ci0gICAgIGRyYWdnaW5nSW5mbyA9IFtbRHVtcFJlbmRlclRy
ZWVEcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6YW5JbWFnZSBvZmZzZXQ6aW5pdGlh
bE9mZnNldCBwYXN0ZWJvYXJkOnBib2FyZCBzb3VyY2U6c291cmNlT2JqXTsKLSAgICAgW3NlbmRl
ciBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvXTsKLSAgICAgW0V2ZW50U2VuZGluZ0NvbnRy
b2xsZXIgcmVwbGF5U2F2ZWRFdmVudHNdOworICAgIGFzc2VydCghZHJhZ2dpbmdJbmZvKTsKKyAg
ICBkcmFnZ2luZ0luZm8gPSBhZG9wdE5TKFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxs
b2NdIGluaXRXaXRoSW1hZ2U6YW5JbWFnZSBvZmZzZXQ6aW5pdGlhbE9mZnNldCBwYXN0ZWJvYXJk
OnBib2FyZCBzb3VyY2U6c291cmNlT2JqXSk7CisgICAgW3NlbmRlciBkcmFnZ2luZ1VwZGF0ZWQ6
ZHJhZ2dpbmdJbmZvLmdldCgpXTsKKyAgICBbRXZlbnRTZW5kaW5nQ29udHJvbGxlciByZXBsYXlT
YXZlZEV2ZW50c107CiB9CiAjZW5kaWYKIApAQCAtNDMzLDcgKzQzMyw2IEBAIC0gKE5TVUludGVn
ZXIpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZHJhZ0Rlc3RpbmF0aW9uQWN0aW9uTWFza0Zv
ckRyYWdnaW5nSW5mCiAtICh2b2lkKWRlYWxsb2MKIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBbZHJhZ2dpbmdJbmZvIHJlbGVhc2VdOwogICAgIGRyYWdnaW5nSW5mbyA9IG5pbDsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91
dFRlc3RTcGVsbENoZWNrZXIubW0gYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91
dFRlc3RTcGVsbENoZWNrZXIubW0KaW5kZXggOTQ3NTUzN2Y2ZjY5MWFmZjc2Y2E1Mzg5MjA3MTUz
NGYzMzJkN2NkMC4uMTUzOTQ0NTkwMzA1YjhiNWEyMTJiNzI4NDUyMDYwZmM2YjliM2NmZSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVj
a2VyLm1tCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxs
Q2hlY2tlci5tbQpAQCAtMzUsNyArMzUsNyBAQAogCiB1c2luZyBUZXh0Q2hlY2tpbmdDb21wbGV0
aW9uSGFuZGxlciA9IHZvaWQoXikoTlNJbnRlZ2VyLCBOU0FycmF5PE5TVGV4dENoZWNraW5nUmVz
dWx0ICo+ICosIE5TT3J0aG9ncmFwaHkgKiwgTlNJbnRlZ2VyKTsKIAotc3RhdGljIExheW91dFRl
c3RTcGVsbENoZWNrZXIgKmdsb2JhbFNwZWxsQ2hlY2tlciA9IG5pbDsKK3N0YXRpYyBSZXRhaW5Q
dHI8TGF5b3V0VGVzdFNwZWxsQ2hlY2tlcj4gZ2xvYmFsU3BlbGxDaGVja2VyOwogc3RhdGljIEJP
T0wgaGFzU3dpenpsZWRMYXlvdXRUZXN0U3BlbGxDaGVja2VyID0gTk87CiBzdGF0aWMgSU1QIGds
b2JhbGx5U3dpenpsZWRTaGFyZWRTcGVsbENoZWNrZXJJbXBsZW1lbnRhdGlvbjsKIHN0YXRpYyBN
ZXRob2Qgb3JpZ2luYWxTaGFyZWRTcGVsbENoZWNrZXJNZXRob2Q7CkBAIC00NCw5ICs0NCw5IEBA
IHN0YXRpYyBMYXlvdXRUZXN0U3BlbGxDaGVja2VyICplbnN1cmVHbG9iYWxMYXlvdXRUZXN0U3Bl
bGxDaGVja2VyKCkKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57Ci0gICAgICAgIGdsb2JhbFNwZWxsQ2hlY2tl
ciA9IFtbTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciBhbGxvY10gaW5pdF07CisgICAgICAgIGdsb2Jh
bFNwZWxsQ2hlY2tlciA9IGFkb3B0TlMoW1tMYXlvdXRUZXN0U3BlbGxDaGVja2VyIGFsbG9jXSBp
bml0XSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGdsb2JhbFNwZWxsQ2hlY2tlcjsKKyAgICByZXR1
cm4gZ2xvYmFsU3BlbGxDaGVja2VyLmdldCgpOwogfQogCiBzdGF0aWMgY29uc3QgY2hhciAqc3Ry
aW5nRm9yQ29ycmVjdGlvblJlc3BvbnNlKE5TQ29ycmVjdGlvblJlc3BvbnNlIGNvcnJlY3Rpb25S
ZXNwb25zZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dl
dFVzZXJNZWRpYS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJN
ZWRpYS5tbQppbmRleCA0NDRjMDY3YmU3MzAyYTM1YTc3ZGMyM2VlMGYzOTExZWMwZDMzMTY4Li5i
N2JjNzgzZTliNGE5OTQ2YjhmMGZhMDM0ZDI5MWI1MDc3NTFlYTA4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCkBAIC0xMDYsNDUgKzEw
Niw0NSBAQCBURVNUKFdlYktpdDIsIENhcHR1cmVNdXRlKQogICAgIHByZWZlcmVuY2VzLl9tZWRp
YUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1cmF0aW9u
LmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2Nr
Q2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwg
NTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdl
YlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCi0gICAgd2ViVmlldy5fbWVkaWFDYXB0dXJlUmVwb3J0
aW5nRGVsYXlGb3JUZXN0aW5nID0gMDsKKyAgICBbd2ViVmlldyBfc2V0TWVkaWFDYXB0dXJlUmVw
b3J0aW5nRGVsYXlGb3JUZXN0aW5nOjBdOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJnZXRVc2VyTWVkaWEiXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3Rh
dGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0
dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKIAogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9X
S01lZGlhQ2FwdHVyZURldmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2Fw
dHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEpKTsKKyAg
ICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVNdXRlZENhbWVyYSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6
IF9XS01lZGlhTm9uZU11dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3Rh
dGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0
dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJzdG9wKCkiXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJl
U3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CisgICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0
YXRlTm9uZSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImNhcHR1cmVBdWRpbygpIl07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRl
KHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWljcm9waG9uZSkpOworICAgIEVY
UEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNh
cHR1cmVTdGF0ZUFjdGl2ZU1pY3JvcGhvbmUpKTsKICAgICBbd2ViVmlldyBfc2V0UGFnZU11dGVk
OiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9u
ZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgp
LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9z
ZXRQYWdlTXV0ZWQ6IF9XS01lZGlhTm9uZU11dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50
aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bo
b25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0
KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWljcm9waG9uZSkpOwogCiAgICAgW3dlYlZp
ZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFDYXB0dXJlRGV2aWNlc011dGVkXTsKLSAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3Rh
dGVNdXRlZE1pY3JvcGhvbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3Rh
dGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZE1pY3JvcGhvbmUpKTsK
IAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzdG9wKCkiXTsK
LSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFD
YXB0dXJlU3RhdGVOb25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRl
KHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkpOwogCiAgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNhcHR1cmVBdWRpb0FuZFZpZGVvKCki
XTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEgfCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZU1p
Y3JvcGhvbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmll
dy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEgfCBfV0tNZWRpYUNhcHR1
cmVTdGF0ZUFjdGl2ZU1pY3JvcGhvbmUpKTsKICAgICBbd2ViVmlldyBfc2V0UGFnZU11dGVkOiBf
V0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENh
cHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkQ2FtZXJhIHwgX1dL
TWVkaWFDYXB0dXJlU3RhdGVNdXRlZE1pY3JvcGhvbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0
VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRl
ZENhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CiAgICAgW3dl
YlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFOb25lTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVF
KHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWljcm9waG9uZSkpOworICAgIEVY
UEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNh
cHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWljcm9w
aG9uZSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0
b3AoKSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBf
V0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0
dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiB9CiAK
IFRFU1QoV2ViS2l0MiwgQ2FwdHVyZVN0b3ApCkBAIC0xNTksMTkgKzE1OSwxOSBAQCBURVNUKFdl
YktpdDIsIENhcHR1cmVTdG9wKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtb
R1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24uZ2V0
KCkgdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdl
SGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3
ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVk
OkAiZ2V0VXNlck1lZGlhIl07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRl
KHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CisgICAgRVhQRUNU
X1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVy
ZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJvbXB0ZWRd
OwogCiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFDYXB0dXJlRGV2aWNlc011
dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dL
TWVkaWFDYXB0dXJlU3RhdGVNdXRlZENhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRp
bENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkQ2Ft
ZXJhKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFOb25lTXV0ZWRdOwot
ICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNh
cHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1
cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkp
OwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIm5vdGlmeUVu
ZGVkRXZlbnQoKSJdOwogICAgIFt3ZWJWaWV3IF9zdG9wTWVkaWFDYXB0dXJlXTsKQEAgLTE3OSw3
ICsxNzksNyBAQCBURVNUKFdlYktpdDIsIENhcHR1cmVTdG9wKQogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgZG9uZSA9IGZhbHNlOwogCi0gICAgRVhQRUNUX1RSVUUo
d2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkp
OworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBf
V0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJwcm9tcHRGb3JDYXB0dXJlKCkiXTsKICAgICBbZGVsZWdhdGUgd2Fp
dFVudGlsUHJvbXB0ZWRdOwpAQCAtMTk3LDE0ICsxOTcsMTQgQEAgVEVTVChXZWJLaXQyLCBDYXB0
dXJlSW5kaWNhdG9yRGVsYXkpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tH
VU1NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQo
KSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VI
YW5kbGVyLmdldCgpIG5hbWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
OnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKLSAgICB3ZWJWaWV3Ll9tZWRpYUNhcHR1cmVSZXBv
cnRpbmdEZWxheUZvclRlc3RpbmcgPSAyOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKKyAgICBbd2ViVmlldyBfc2V0TWVkaWFD
YXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nOjJdOwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAg
IHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFt
ZWQ6QCJnZXRVc2VyTWVkaWEiXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3Rh
dGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0
dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKIAogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRl
ZF07CiAKQEAgLTIxNSw3ICsyMTUsNyBAQCBURVNUKFdlYktpdDIsIENhcHR1cmVJbmRpY2F0b3JE
ZWxheSkKICAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgX21lZGlhQ2FwdHVyZVN0YXRlXSwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpOwogCiAgICAgLy8gT25lIGFkZGl0aW9uYWwgc2Vj
b25kIHNob3VsZCBhbGxvdyB1cyB0byBnbyBiYWNrIHRvIG5vIGNhcHR1cmUgYmVpbmcgcmVwb3J0
ZWQuCi0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01l
ZGlhQ2FwdHVyZVN0YXRlTm9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVT
dGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKIH0KIAogVEVT
VChXZWJLaXQyLCBDYXB0dXJlSW5kaWNhdG9yRGVsYXlXaGVuQ2xvc2VkKQpAQCAtMjMwLDE0ICsy
MzAsMTQgQEAgVEVTVChXZWJLaXQyLCBDYXB0dXJlSW5kaWNhdG9yRGVsYXlXaGVuQ2xvc2VkKQog
ICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRpb24uZ2V0KCkgdXNlckNvbnRlbnRDb250cm9s
bGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAi
Z3VtIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5n
ZXQoKV07Ci0gICAgd2ViVmlldy5fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5n
ID0gMjsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlnLmdldCgpXSk7CisgICAgW3dlYlZpZXcgX3NldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5
Rm9yVGVzdGluZzoyXTsKIAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlh
Q2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07
Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlh
Q2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2Fw
dHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJh
KSk7CiAKICAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJvbXB0ZWRdOwogCkBAIC0yNTgsMTIgKzI1
OCwxMiBAQCBURVNUKFdlYktpdDIsIEdldENhcGFiaWxpdGllcykKICAgICBhdXRvIG1lc3NhZ2VI
YW5kbGVyID0gYWRvcHROUyhbW0dVTU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAg
W1tjb25maWd1cmF0aW9uLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVz
c2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAImd1bSJdOwogCi0gICAgYXV0
byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFs
bG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7Cisg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmll
dyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYSJdOwotICAgIEVYUEVDVF9UUlVFKHdh
aXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNh
bWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3Lmdl
dCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOwogCiAgICAgW2RlbGVnYXRl
IHdhaXRVbnRpbFByb21wdGVkXTsKIApAQCAtMzMxLDEwICszMzEsMTAgQEAgVEVTVChXZWJLaXQs
IFdlYkF1ZGlvQW5kR2V0VXNlck1lZGlhKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9w
dE5TKFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRp
b24uZ2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
IAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIGF1
dG8gdXJsID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgiZ2V0VXNlck1lZGlh
LXdlYmF1ZGlvIiwgImh0bWwiKSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJn
ZXRVc2VyTWVkaWEtd2ViYXVkaW8iXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCmluZGV4IDliZmZkYWM2
NTc5OTZlMDliMTU3NmMxNzJkYWU3MDg3Y2RhODBiNTMuLjE3OGM0NDc3NjBmNTNlNjg0ODZmMGU1
MTgyMGVmNzE0M2FhNGQwYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbQpAQCAtNzUsOSArNzUsOSBA
QCBURVNUKFdlYktpdCwgTmF2aWdhdGVEdXJpbmdHZXRVc2VyTWVkaWFQcm9tcHQpCiAgICAgcHJl
ZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAg
IGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJl
ZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJW
aWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERp
c3BsYXllZFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKIAogICAgIHNob3VsZFJlbGVhc2VJbkVudW1lcmF0ZSA9IGZhbHNlOwogICAgIFt3ZWJW
aWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CkBAIC05Miw5ICs5Miw5IEBA
IFRFU1QoV2ViS2l0LCBOYXZpZ2F0ZUR1cmluZ0RldmljZUVudW1lcmF0aW9uKQogICAgIHByZWZl
cmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKICAgICBj
b25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVTOwogICAgIHByZWZl
cmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmll
dyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNw
bGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0g
ZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQo
KV07CiAKICAgICBzaG91bGRSZWxlYXNlSW5FbnVtZXJhdGUgPSB0cnVlOwogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAiZW51bWVyYXRlTWVkaWFEZXZpY2VzIl07CkBAIC0xMjEsOSAr
MTIxLDkgQEAgVEVTVChXZWJLaXQsIERlZmF1bHREZXZpY2VJZEhhc2hTYWx0c0RpcmVjdG9yeSkK
ICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0g
Tk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsK
ICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBh
dXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwog
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbTmF2aWdhdGlvbldoaWxlR2V0VXNlck1lZGlh
UHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlE
ZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJlbnVtZXJh
dGVNZWRpYURldmljZXMiXTsKIApAQCAtMTUxLDkgKzE1MSw5IEBAIFRFU1QoV2ViS2l0LCBEZXZp
Y2VJZEhhc2hTYWx0c0RpcmVjdG9yeSkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVx
dWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVk
aWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZp
Y2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9j
ZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbTmF2
aWdhdGlvbldoaWxlR2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0ZSBhbGxvY10g
aW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3
ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIAogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAiZW51bWVyYXRlTWVkaWFEZXZpY2VzIl07CiAgICAgCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFSZXBy
b21wdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJl
cHJvbXB0Lm1tCmluZGV4IGQwNjI3NjVmYzIwYWE3ODRhZTVjZjFmZTY1ZWY2MTAwYWZkNjYzMTku
Ljk0MTUxNDBkYzBhZGQyM2IzNmQ1MzRhYjA5MTQyY2YyMjBhYWE0ODEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0
Lm1tCkBAIC02OCw5ICs2OCw5IEBAIFRFU1QoV2ViS2l0MiwgR2V0VXNlck1lZGlhUmVwcm9tcHQp
CiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9
IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7
CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7Ci0gICAg
YXV0byB3ZWJWaWV3ID0gW1tHZXRVc2VyTWVkaWFSZXByb21wdFRlc3RWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcu
Z2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tHZXRVc2VyTWVkaWFSZXByb21w
dFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbW1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmll
dy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdl
dFVzZXJNZWRpYSJdOwogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CkBAIC0xMDQs
MTEgKzEwNCwxMSBAQCBURVNUKFdlYktpdDIsIEdldFVzZXJNZWRpYVJlcHJvbXB0QWZ0ZXJBdWRp
b1ZpZGVvQmVpbmdEZW5pZWQpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVz
U2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2Fw
dHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0Vu
YWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tHZXRVc2VyTWVkaWFSZXByb21wdFRl
c3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tH
ZXRVc2VyTWVkaWFSZXByb21wdFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CiAgICAgW2RlbGVnYXRlIHNldEF1ZGlvRGVjaXNpb246X1dLUGVybWlzc2lvbkRlY2lz
aW9uR3JhbnRdOwogICAgIFtkZWxlZ2F0ZSBzZXRWaWRlb0RlY2lzaW9uOl9XS1Blcm1pc3Npb25E
ZWNpc2lvbkRlbnldOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOwor
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZp
ZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWFBdWRpb1ZpZGVvQ2FwdHVyZSJdOwog
ICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CkBAIC0xMjcsOSArMTI3LDkgQEAgVEVT
VChXZWJLaXQyLCBNdWx0aXBsZUdldFVzZXJNZWRpYVN5bmNocm9ub3VzbHkpCiAgICAgcHJlZmVy
ZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVy
ZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3
ID0gW1tHZXRVc2VyTWVkaWFSZXByb21wdFRlc3RWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNH
UmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tHZXRVc2VyTWVkaWFSZXByb21wdFRlc3RWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bv
b2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRp
YUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRl
ID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYSJd
OwogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRl
ci5tbQppbmRleCAzZDNjNjE2MmQzOTVlNjZlZDVkNTdlYTc4MGE1OTQ2NjllNzk3NTRmLi45NTZj
MTc3NGM2NTNkMDgyODg4NjEyM2QyYjkxOTVkZTI0ZGExYzNiIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJh
bWV0ZXIubW0KQEAgLTYwLDggKzYwLDggQEAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VG
cm9tSW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmUKICAgICAv
LyBBdHRlbXB0IHRvIHNldCBhIHBhcmFtZXRlciB1c2luZyB0aGUgT2JqZWN0aXZlIEMgQVBJOgog
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIAotICAgIEN1c3Rv
bUJ1bmRsZU9iamVjdCAqY3VzdG9tT2JqZWN0ID0gW1tDdXN0b21CdW5kbGVPYmplY3QgYWxsb2Nd
IGluaXRXaXRoVmFsdWU6MTIzNF07Ci0gICAgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBf
c2V0T2JqZWN0OmN1c3RvbU9iamVjdCBmb3JCdW5kbGVQYXJhbWV0ZXI6QCJUZXN0UGFyYW1ldGVy
MSJdOworICAgIGF1dG8gY3VzdG9tT2JqZWN0ID0gYWRvcHROUyhbW0N1c3RvbUJ1bmRsZU9iamVj
dCBhbGxvY10gaW5pdFdpdGhWYWx1ZToxMjM0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHByb2Nl
c3NQb29sXSBfc2V0T2JqZWN0OmN1c3RvbU9iamVjdC5nZXQoKSBmb3JCdW5kbGVQYXJhbWV0ZXI6
QCJUZXN0UGFyYW1ldGVyMSJdOwogCiAgICAgaWYgKGxvYWREb25lKQogICAgICAgICBkb25lID0g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29tbWFuZEJhY2tGb3J3YXJkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0KaW5kZXggNjdiYWVlYmE2ZGM2Zjk2ZmYxZjI3YTM1
M2M3MzM1Njk2MTY3ZmJkNy4uMjhiMTgzMTY1OTAzMGNhNGY4ZTI3MjUyOWI3NTkwNWNmZDM4YzZl
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21t
YW5kQmFja0ZvcndhcmQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFdLUmV0YWluUHRyPFdLUGFnZUNvbmZpZ3VyYXRpb25SZWY+IGNvbmZpZ3VyYXRpb24g
PSBhZG9wdFdLKFdLUGFnZUNvbmZpZ3VyYXRpb25DcmVhdGUoKSk7ICAgICAgICAKICAgICAgICAg
V0tQYWdlQ29uZmlndXJhdGlvblNldENvbnRleHQoY29uZmlndXJhdGlvbi5nZXQoKSwgY29udGV4
dC5nZXQoKSk7CiAKLSAgICAgICAgd2ViVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb25SZWY6Y29uZmlndXJh
dGlvbi5nZXQoKV07CisgICAgICAgIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApIGNvbmZpZ3VyYXRpb25SZWY6
Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgICAgIFdLUGFnZU5hdmlnYXRpb25DbGllbnRW
MCBsb2FkZXJDbGllbnQ7CiAgICAgICAgIG1lbXNldCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2Yo
bG9hZGVyQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0Rvd25sb2FkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Eb3dubG9hZC5tbQppbmRleCBiMWFmMTVhY2I0M2I2ZGJhZDdmNzVkYmI5MDRiOTcwNjZh
MzYyMTY5Li40NGFiODRiZmI5N2NmOTgzZDU3OGQzMzhhMTgxNWFmMjQ4YjE2ZGQ0IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2FkLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KQEAg
LTM2MCw3ICszNjAsOCBAQCBURVNUKF9XS0Rvd25sb2FkLCBEb3dubG9hZFJlcXVlc3RPcmlnaW5h
bFVSTERpcmVjdERvd25sb2FkV2l0aExvYWRlZENvbnRlbnQpCiAgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKV0pOwogICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gYWRvcHROUyhbW0Rv
d25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMTmF2aWdhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CiAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5n
ZXQoKV07Ci0gICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3NldERv
d25sb2FkRGVsZWdhdGU6W1tEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTERlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aEV4cGVjdGVkT3JpZ2luYWxVUkw6c291cmNlVVJMXV07CisgICAgYXV0byBkb3du
bG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGVsZWdh
dGUgYWxsb2NdIGluaXRXaXRoRXhwZWN0ZWRPcmlnaW5hbFVSTDpzb3VyY2VVUkxdKTsKKyAgICBb
W1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0
ZTpkb3dubG9hZERlbGVnYXRlLmdldCgpXTsKIAogICAgIGV4cGVjdGVkVXNlckluaXRpYXRlZFN0
YXRlID0gZmFsc2U7CiAgICAgTlNVUkwgKmNvbnRlbnRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRp
cmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3ku
bW0KaW5kZXggNGIzNjVlOGJiOTM3ZWVkMTVlNGFmYmNiNTY0ZmJjOGI3NzhlNTRlOC4uZjBiOGFk
OTk4NmVmNzExMDhiYzg2Yjk3ODU3NmVlNTU4ZDQzZDZjZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFj
eS5tbQpAQCAtMTEyMywxMSArMTEyMywxMSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIElu
amVjdFNjcmlwdEluTm9uQXBwQm91bmRTdWJmcmFtZUFwcEJvdW5kTWFpbmZyYW1lRmFpbAogICAg
IGNsZWFuVXBJbkFwcEJyb3dzZXJQcml2YWN5VGVzdFNldHRpbmdzKCk7CiB9CiAKLXN0YXRpYyBO
U011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gKmFsbEZyYW1lczsKK3N0YXRpYyBSZXRhaW5QdHI8
TlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+PiBhbGxGcmFtZXM7CiAKIFRFU1QoSW5BcHBCcm93
c2VyUHJpdmFjeSwgSmF2YVNjcmlwdEluTm9uQXBwQm91bmRGcmFtZUZhaWxzKQogewotICAgIGFs
bEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XTsKKyAg
ICBhbGxGcmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9j
XSBpbml0XSk7CiAKICAgICBpc0RvbmUgPSBmYWxzZTsKICAgICBpbml0aWFsaXplSW5BcHBCcm93
c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwpAQCAtMTE2NCwxMiArMTE2NCwxMiBAQCBURVNUKElu
QXBwQnJvd3NlclByaXZhY3ksIEphdmFTY3JpcHRJbk5vbkFwcEJvdW5kRnJhbWVGYWlscykKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CiAKLSAg
ICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAzdSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFt
ZXMgY291bnRdLCAzdSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsK
ICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8g
KmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFs
bEZyYW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWlu
RnJhbWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gbG9j
YXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBpbkNvbnRlbnRXb3JsZDpX
S0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6W2lzTWFp
bkZyYW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgaWYgKGlz
TWFpbkZyYW1lKSB7CkBAIC0xMTgxLDcgKzExODEsNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEphdmFTY3JpcHRJbk5vbkFwcEJvdW5kRnJhbWVGYWlscykKICAgICAgICAgICAgICAgICBF
WFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJvckphdmFTY3JpcHRBcHBCb3VuZERvbWFpbik7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZy
YW1lcy5jb3VudCAqIDIpCisgICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxs
RnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAg
ICAgfV07CiAKQEAgLTExOTYsNyArMTE5Niw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
SmF2YVNjcmlwdEluTm9uQXBwQm91bmRGcmFtZUZhaWxzKQogICAgICAgICAgICAgICAgIEVYUEVD
VF9FUShlcnJvci5jb2RlLCBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9tYWluKTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxsRnJhbWVz
LmNvdW50ICogMikKKyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFt
ZXMgY291bnRdICogMikKICAgICAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9
XTsKICAgICB9CkBAIC0xMzUxLDcgKzEzNTEsNyBAQCBzdGF0aWMgdm9pZCBsb2FkUmVxdWVzdChS
ZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldywgTlNTdHJpbmcgKnVybCkKIAogVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVBcHBC
b3VuZCkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBh
bGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0Zy
YW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2
YWN5VGVzdFNldHRpbmdzKCk7CiAKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKQEAgLTEzNjMsMTIgKzEzNjMsMTIgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVBcHBCb3Vu
ZCkKICAgICBOU1N0cmluZyAqdXJsID0gQCJpbi1hcHAtYnJvd3NlcjovL2FwcGxlLmNvbS9pbi1h
cHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtYWJvdXQtYmxhbmstc3ViZnJhbWUiOwogICAgIGxvYWRS
ZXF1ZXN0KHdlYlZpZXcsIHVybCk7CiAgICAgCi0gICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3Vu
dCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJhbWVzIGNvdW50XSwgMnUpOwogCiAgICAgc3Rh
dGljIHNpemVfdCBmaW5pc2hlZEZyYW1lcyA9IDA7CiAgICAgc3RhdGljIGJvb2wgaXNEb25lID0g
ZmFsc2U7CiAKLSAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMpIHsKKyAg
ICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0KCkpIHsKICAgICAgICAg
Ym9vbCBpc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lOwogICAgICAgICBbd2ViVmlldyBj
YWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1bWVudHM6bmls
IGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVu
dFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5GcmFtZV0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSk7CkBAIC0xMzgwLDcgKzEzODAsNyBAQCBURVNUKEluQXBwQnJv
d3NlclByaXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNF
cXVhbFRvU3RyaW5nOkAiYWJvdXQ6YmxhbmsiXSk7CiAKLSAgICAgICAgICAgIGlmICgrK2Zpbmlz
aGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCkKKyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVk
RnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdKQogICAgICAgICAgICAgICAgIGlzRG9uZSA9IHRy
dWU7CiAgICAgICAgIH1dOwogICAgIH0KQEAgLTEzODksNyArMTM4OSw3IEBAIFRFU1QoSW5BcHBC
cm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lQXBwQm91bmQp
CiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1Rv
cEZyYW1lTm9uQXBwQm91bmQpCiB7Ci0gICAgYWxsRnJhbWVzID0gW1tOU011dGFibGVTZXQ8V0tG
cmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOworICAgIGFsbEZyYW1lcyA9IGFkb3B0TlMoW1tOU011
dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdKTsKICAgICBpbml0aWFsaXplSW5B
cHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogCiAgICAgV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZp
Z3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50
ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CkBAIC0xNDAwLDE1ICsxNDAwLDE1
IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1Rv
cEZyYW1lTm9uQXBwQm91bmQpCiAgICAgTlNTdHJpbmcgKnVybCA9IEAiaW4tYXBwLWJyb3dzZXI6
Ly9hcHBsZS5jb20vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LWFib3V0LWJsYW5rLXN1YmZy
YW1lIjsKICAgICBsb2FkUmVxdWVzdCh3ZWJWaWV3LCB1cmwpOwogCi0gICAgRVhQRUNUX0VRKGFs
bEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJhbWVzIGNvdW50XSwgMnUp
OwogCiAgICAgc3RhdGljIHNpemVfdCBmaW5pc2hlZEZyYW1lcyA9IDA7CiAgICAgc3RhdGljIGJv
b2wgaXNEb25lID0gZmFsc2U7CiAKLSAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxG
cmFtZXMpIHsKKyAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0KCkp
IHsKICAgICAgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlv
bi5ocmVmOyIgYXJndW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29u
dGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbXSAoaWQgcmVz
dWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgRVhQRUNUX1RSVUUoISFlcnJvcik7
Ci0gICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQpCisg
ICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSkKICAg
ICAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9XTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250
cm9sc1Rlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQ
bGF5aW5nQ29udHJvbHNUZXN0cy5tbQppbmRleCBmN2I4MWYwYWJkNWVmNTNhNzU3NmEwM2Q4NzU3
M2NhZjU0N2E1YmQxLi42ZGYyMDdiMmYyMDc5YzAwYWUwZjJhMmYyYzFhODg4ZWZmZjg5MDQyIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlp
bmdDb250cm9sc1Rlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0KQEAgLTkyLDkgKzkyLDkgQEAgbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogI2lmIFBMQVRGT1JNKE1BQykKIFRFU1QoTm93UGxheWluZ0Nv
bnRyb2xzVGVzdHMsIE5vd1BsYXlpbmdDb250cm9sc0RvTm90U2hvd0ZvckZvcmVncm91bmRQYWdl
KQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFU
eXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5
cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJh
dGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92
aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxh
eWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAg
IFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0xMTMsOSArMTEzLDkg
QEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzRG9Ob3RT
aG93Rm9yRm9yZWdyb3VuZFBhZ2UpCiAKIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5v
d1BsYXlpbmdDb250cm9sc1Nob3dGb3JCYWNrZ3JvdW5kUGFnZSkKIHsKLSAgICBXS1dlYlZpZXdD
b25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XTsKLSAgICBjb25maWd1cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0
aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1Jl
cXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZV07
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpA
ImxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmciXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVz
c2FnZTpAInBsYXlpbmciXTsKIApAQCAtMTMwLDkgKzEzMCw5IEBAIFRFU1QoTm93UGxheWluZ0Nv
bnRyb2xzVGVzdHMsIE5vd1BsYXlpbmdDb250cm9sc1Nob3dGb3JCYWNrZ3JvdW5kUGFnZSkKIAog
VEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzSGlkZUFmdGVy
U2hvd2luZ0tlZXBzU2Vzc2lvbkFjdGl2ZSkKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsK
LSAgICBjb25maWd1cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJh
Y2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVv
LXRlc3Qtbm93LXBsYXlpbmciXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlp
bmciXTsKIApAQCAtMTUzLDkgKzE1Myw5IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMs
IE5vd1BsYXlpbmdDb250cm9sc0hpZGVBZnRlclNob3dpbmdLZWVwc1Nlc3Npb25BY3RpCiAKIFRF
U1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5vd1BsYXlpbmdDb250cm9sc0NsZWFySW5mb0Fm
dGVyU2Vzc2lvbklzTm9Mb25nZXJWYWxpZCkKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsK
LSAgICBjb25maWd1cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJh
Y2sgPSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgNDgwLCAzMjApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJB
Y3Rpb25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZV07CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDQ4MCwgMzIwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVv
LXRlc3Qtbm93LXBsYXlpbmciXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlp
bmciXTsKIApAQCAtMTk0LDkgKzE5NCw5IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMs
IE5vd1BsYXlpbmdDb250cm9sc0NsZWFySW5mb0FmdGVyU2Vzc2lvbklzTm9Mb25nZXJWCiAKIFRF
U1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5vd1BsYXlpbmdDb250cm9sc0NoZWNrUmVnaXN0
ZXJlZCkKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKLSAgICBjb25maWd1cmF0aW9uLm1l
ZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlzdWFsTWVk
aWFUeXBlTm9uZTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2NvbmZp
Z3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjazpXS0F1
ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW05v
d1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAgICBbd2Vi
VmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlpbmciXTsK
ICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlpbmciXTsKICAgICBbd2ViVmlldyBz
ZXRXaW5kb3dWaXNpYmxlOk5PXTsKQEAgLTIyMiw5ICsyMjIsOSBAQCBURVNUKE5vd1BsYXlpbmdD
b250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNDaGVja1JlZ2lzdGVyZWQpCiAvLyBGSVhN
RTogUmUtZW5hYmxlIHRoaXMgdGVzdCBvbmNlIDx3ZWJraXQub3JnL2IvMTc1MjA0PiBpcyByZXNv
bHZlZC4KIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIERJU0FCTEVEX05vd1BsYXlpbmdD
b250cm9sc0lPUykKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9u
ID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKLSAgICBjb25maWd1cmF0
aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlvdmlz
dWFsTWVkaWFUeXBlTm9uZTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWlu
Z1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAz
MjApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFj
azpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDQ4MCwgMzIwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXRlc3Qtbm93LXBsYXlp
bmciXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlpbmciXTsKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29u
dGVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhl
ZENvbnRlbnQubW0KaW5kZXggMDNlMGU3MGVkMzdmOTc4ODkwMmZlNmRhOTA1ZTRiMGNhYTk2ZjAz
Ny4uOGFlZjYyOGZjNjM0MDRlYjllZWM2NTc5OWM4ZWU0MDZmZTY4NzRmZSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRD
b250ZW50Lm1tCkBAIC0xNTIsOCArMTUyLDggQEAgVEVTVChQYXN0ZU1peGVkQ29udGVudCwgSW1h
Z2VGaWxlQW5kUlRGKQogewogICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlldygpOwogICAg
IGF1dG8gdGV4dCA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0XSk7Ci0gICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJsaW5rIHRvICJdXTsKLSAgICBbdGV4dCBhcHBl
bmRBdHRyaWJ1dGVkU3RyaW5nOltbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0
cmluZzpAImFwcGxlIiBhdHRyaWJ1dGVzOkB7IE5TTGlua0F0dHJpYnV0ZU5hbWU6IFtOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyJdIH1dXTsKKyAgICBbdGV4dCBh
cHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOkAibGluayB0byAiXSkuZ2V0KCldOworICAgIFt0ZXh0IGFwcGVuZEF0
dHJpYnV0ZWRTdHJpbmc6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdp
dGhTdHJpbmc6QCJhcHBsZSIgYXR0cmlidXRlczpAeyBOU0xpbmtBdHRyaWJ1dGVOYW1lOiBbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iXSB9XSkuZ2V0KCldOwog
ICAgIE5TRGF0YSAqcnRmRGF0YSA9IFt0ZXh0IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBb
dGV4dCBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV07CiAgICAgd3JpdGVUeXBlc0Fu
ZERhdGFUb1Bhc3RlYm9hcmQoTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBd
LCBOU1Bhc3RlYm9hcmRUeXBlUlRGLCBydGZEYXRhLCBuaWwpOwogICAgIFt3ZWJWaWV3IHBhc3Rl
Om5pbF07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1JlcGFyZW50V2ViVmlld1RpbWVvdXQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1JlcGFyZW50V2ViVmlld1RpbWVvdXQubW0KaW5kZXggYzU1NDI1YzAwMjBkODdm
MDcxYzBkMjUwYzgwM2ExZjkzN2RkODE1NS4uYTJlNDMwMjI0ZTljY2VmOWJhZGVkZmRlNzc0ZGFk
ODgxYzEzNzY5ZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3VGltZW91dC5tbQpAQCAtMzQsNyArMzQs
NyBAQAogCiBURVNUKFdlYktpdCwgUmVwYXJlbnRXZWJWaWV3VGltZW91dCkKIHsKLSAgICBSZXRh
aW5QdHI8X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gPSBbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CisgICAgYXV0
byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBz
ZXRJZ25vcmVTeW5jaHJvbm91c01lc3NhZ2luZ1RpbWVvdXRzRm9yVGVzdGluZzpZRVNdOwogCiAg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TY2hlbWVSZWdpc3RyeS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVnaXN0cnkubW0K
aW5kZXggMmM4YTg0MTVhY2Y4ZTU5NmIzMDhhNWM0Yzc1NzBkNzEzMTkyYmZhZi4uMjEwODIwNmZh
Nzk0M2QzMmM1ODBjZTI5Y2M2ZmI4MmRhYjExODc4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TY2hlbWVSZWdpc3RyeS5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tCkBAIC0xNjks
NyArMTY5LDggQEAgVEVTVChXZWJLaXQsIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5E
aXNwbGF5T25seUlmQ2FuUmVxdWVzdF9TYW1lT3JpZ2luTG8KICAgICAgICAgV0tDb250ZXh0UmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnRleHQuZ2V0KCks
IFV0aWw6OnRvV0soZWNob1NjaGVtZS5VVEY4U3RyaW5nKS5nZXQoKSk7CiAKICAgICAgICAgUGxh
dGZvcm1XZWJWaWV3IHdlYlZpZXcgeyBjb250ZXh0LmdldCgpIH07Ci0gICAgICAgIHdlYlZpZXcu
cGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBb
W1dLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdExv
YWREZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRv
cHROUyhbW1dLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVx
dWVzdExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICB3ZWJWaWV3LnBsYXRmb3Jt
VmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVn
YXRlLmdldCgpOwogICAgICAgICBbd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+PGJvZHk+PHNjcmlw
dCBzcmM9J2VjaG86Ly9BL0FfMSc+PC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiZWNobzovL0EiXV07CiAgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAg
ICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKQEAgLTE5Miw3ICsxOTMsOCBAQCBURVNUKFdl
YktpdCwgV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1
ZXN0X0Nyb3NzT3JpZ2luTAogICAgICAgICBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQ2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSyhlY2hvU2No
ZW1lLlVURjhTdHJpbmcpLmdldCgpKTsKIAogICAgICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmll
dyB7IGNvbnRleHQuZ2V0KCkgfTsKLSAgICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93
c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbV0tDb250ZXh0UmVnaXN0ZXJV
UkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRlIGFsbG9jXSBp
bml0XTsKKyAgICAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tDb250ZXh0UmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgICAg
IFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhU
TUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48Ym9keT48c2NyaXB0IHNyYz0nZWNobzovL0EvQV8x
Jz48L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJlY2hvOi8vQiJdXTsK
ICAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKICAgICAgICAgZGlkRmluaXNoTG9h
ZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TeXN0ZW1QcmV2aWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9TeXN0ZW1QcmV2aWV3Lm1tCmluZGV4IDhiYzY1M2NhOTA2NWIyN2RkYmMyYWNmZjZkODZi
ZDJjOTc3YTI1N2MuLmJkNGIzNWYyMDAwMDExMGU4YjVlMDQ2ZGMwN2IzMGJkMzgwNjg5ZWMgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJl
dmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3Rl
bVByZXZpZXcubW0KQEAgLTY4LDcgKzY4LDcgQEAgVEVTVChXZWJLaXQsIFN5c3RlbVByZXZpZXdU
cmlnZ2VyZWQpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0U3lzdGVt
UHJldmlld1RyaWdnZXJlZEhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRp
b24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdl
SGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdFN5c3RlbVByZXZpZXciXTsKIAotICAgIGF1dG8gd2Vi
VmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJzeXN0ZW0tcHJldmlldy10cmlnZ2VyIl07CiAgICAgVXRpbDo6cnVuKCZoYXNU
cmlnZ2VySW5mbyk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlvbi5tbQppbmRleCA4NmRkMTFlMTY3ZWFj
M2ExZDE3MWRiMmI2ZWMwZjAyZWRjMzBlYjlkLi4zMzI2ZDU3NjI0YmRhMDBhODgwYWUxY2YxMDI1
ZWZmMzBjZTNkOGQ5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tCkBAIC0xODQsNyArMTg0LDcg
QEAgLSAoV0tXZWJWaWV3ICopd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjcmVhdGVXZWJW
aWV3V2l0aENvbmZpZ3VyYXRpb246KFdLV2UKIHsKICAgICBFWFBFQ1RfRkFMU0UobmV3V2luZG93
Q3JlYXRlZCk7CiAgICAgbmV3V2luZG93Q3JlYXRlZCA9IHRydWU7Ci0gICAgZ05ld1dpbmRvdyA9
IFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXTsKKyAgICBnTmV3V2luZG93ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOwogICAgIFtnTmV3V2luZG93IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpzZWxmXTsKICAgICBy
ZXR1cm4gZ05ld1dpbmRvdy5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckluaXRpYXRlZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlv
bi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckluaXRpYXRl
ZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlvbi5tbQppbmRleCBjODZmYzRjYjM2M2IzNTE5ZGNlOGRk
MTkyZGMwMTg4Y2VmYWEzMWYwLi5iOWUzMTA4ZWI3MzdlNzY5NmRiOGZiZmEzZWFjZjIzOWU3NDFi
MGU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Vz
ZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0aW9u
QWN0aW9uLm1tCkBAIC04MSw5ICs4MSw5IEBAIHB1YmxpYzoKIAogICAgIE5TVVJMICpVUkxXaXRo
RnJhZ21lbnQoTlNTdHJpbmcgKmZyYWdtZW50KQogICAgIHsKLSAgICAgICAgTlNVUkxDb21wb25l
bnRzICpVUkxDb21wb25lbnRzID0gW1tOU1VSTENvbXBvbmVudHMgYWxsb2NdIGluaXRXaXRoVVJM
OlVSTC5nZXQoKSByZXNvbHZpbmdBZ2FpbnN0QmFzZVVSTDpOT107Ci0gICAgICAgIFVSTENvbXBv
bmVudHMuZnJhZ21lbnQgPSBmcmFnbWVudDsKLSAgICAgICAgcmV0dXJuIFVSTENvbXBvbmVudHMu
VVJMOworICAgICAgICBhdXRvIHVybENvbXBvbmVudHMgPSBhZG9wdE5TKFtbTlNVUkxDb21wb25l
bnRzIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwuZ2V0KCkgcmVzb2x2aW5nQWdhaW5zdEJhc2VVUkw6
Tk9dKTsKKyAgICAgICAgW3VybENvbXBvbmVudHMgc2V0RnJhZ21lbnQ6ZnJhZ21lbnRdOworICAg
ICAgICByZXR1cm4gW3VybENvbXBvbmVudHMgVVJMXTsKICAgICB9CiAKICAgICB2b2lkIGxvYWRU
ZXN0KE5TU3RyaW5nICp0ZXN0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Vc2VyTWVkaWFEaXNhYmxlZC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlhRGlzYWJsZWQubW0KaW5kZXggY2M1NDViNDkxZTAy
ODk0YTc2M2Y1YjkyODFhMGQ3ZTg2MDRkN2FiZC4uNTFlMzRhMmU2NTQ0ZTc2ZmU2ZTEwMzFhNmYy
ZTliOTk0NTRjNDE2OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Vc2VyTWVkaWFEaXNhYmxlZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tCkBAIC0xMzQsNyArMTM0LDcgQEAg
VEVTVF9GKE1lZGlhQ2FwdHVyZURpc2FibGVkVGVzdCwgVW5zZWN1cmVDb250ZXh0KQogICAgIHBy
ZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBZRVM7CiAK
ICAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxzZTsKLSAgICBbbV93ZWJWaWV3IGxvYWRI
VE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+PHNjcmlwdD53aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5k
bGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShOYXZpZ2F0b3IucHJvdG90eXBlLmhhc093blBy
b3BlcnR5KCdtZWRpYURldmljZXMnKSA/ICdoYXMnIDogJ25vbmUnKTs8L3NjcmlwdD48L2JvZHk+
PC9odG1sPiIgYmFzZVVSTDogW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJodHRwOi8v
dGVzdC5vcmciXV07CisgICAgW21fd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5
PjxzY3JpcHQ+d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1l
c3NhZ2UoTmF2aWdhdG9yLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnbWVkaWFEZXZpY2VzJykg
PyAnaGFzJyA6ICdub25lJyk7PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6YWRvcHRO
UyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImh0dHA6Ly90ZXN0Lm9yZyJdKS5nZXQo
KV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZSk7CiAgICAgRVhQRUNUX1NUUkVRKFsoTlNTdHJpbmcgKilbbGFzdFNjcmlwdE1lc3NhZ2UgYm9k
eV0gVVRGOFN0cmluZ10sICJub25lIik7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQppbmRleCA4N2E4NTA0
MzJkNGJmZDVmMGU1ODU2ZjQ0MDdmZDAxZWEyN2JlZDQzLi5kNDk4MGNmZDQ3MDJlYjNiMzJhMTgz
ZDU5ZTJjOTAzNDJmMmUzYjFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0KQEAgLTI1NywxNyArMjU3
LDE3IEBAIFRFU1QoV0tIVFRQQ29va2llU3RvcmUsIEh0dHBPbmx5KQogICAgIGdvdEZsYWcgPSBm
YWxzZTsKICAgICBBU1NFUlRfRVEoW2Nvb2tpZXMgY291bnRdLCAwdSk7CiAKLSAgICBOU011dGFi
bGVEaWN0aW9uYXJ5ICpjb29raWVQcm9wZXJ0aWVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFs
bG9jXSBpbml0XTsKKyAgICBhdXRvIGNvb2tpZVByb3BlcnRpZXMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9i
amVjdDpAImNvb2tpZU5hbWUiIGZvcktleTpOU0hUVFBDb29raWVOYW1lXTsKICAgICBbY29va2ll
UHJvcGVydGllcyBzZXRPYmplY3Q6QCJjb29raWVWYWx1ZSIgZm9yS2V5Ok5TSFRUUENvb2tpZVZh
bHVlXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCIud3d3LndlYmtpdC5vcmci
IGZvcktleTpOU0hUVFBDb29raWVEb21haW5dOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9i
amVjdDpAIi9wYXRoIiBmb3JLZXk6TlNIVFRQQ29va2llUGF0aF07CiAgICAgW2Nvb2tpZVByb3Bl
cnRpZXMgc2V0T2JqZWN0OkBZRVMgZm9yS2V5OkAiSHR0cE9ubHkiXTsKLSAgICBSZXRhaW5QdHI8
TlNIVFRQQ29va2llPiBodHRwT25seUNvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFBy
b3BlcnRpZXM6Y29va2llUHJvcGVydGllc107CisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4g
aHR0cE9ubHlDb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOmNvb2tp
ZVByb3BlcnRpZXMuZ2V0KCldOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAImNv
b2tpZVZhbHVlMiIgZm9yS2V5Ok5TSFRUUENvb2tpZVZhbHVlXTsKLSAgICBSZXRhaW5QdHI8TlNI
VFRQQ29va2llPiBodHRwT25seUNvb2tpZTIgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9w
ZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXNdOworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGh0
dHBPbmx5Q29va2llMiA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2ll
UHJvcGVydGllcy5nZXQoKV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgcmVtb3ZlT2JqZWN0Rm9y
S2V5OkAiSHR0cE9ubHkiXTsKLSAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBub3RIdHRwT25s
eUNvb2tpZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVy
dGllc107CisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gbm90SHR0cE9ubHlDb29raWUgPSBb
TlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXMuZ2V0KCld
OwogCiAgICAgRVhQRUNUX1RSVUUoaHR0cE9ubHlDb29raWUuZ2V0KCkuSFRUUE9ubHkpOwogICAg
IEVYUEVDVF9GQUxTRShub3RIdHRwT25seUNvb2tpZS5nZXQoKS5IVFRQT25seSk7CkBAIC0zNjIs
MTQgKzM2MiwxNCBAQCBURVNUKFdLSFRUUENvb2tpZVN0b3JlLCBDcmVhdGlvblRpbWUpCiAKICAg
ICBnbG9iYWxDb29raWVTdG9yZSA9IGRhdGFTdG9yZS5odHRwQ29va2llU3RvcmU7CiAKLSAgICBO
U011dGFibGVEaWN0aW9uYXJ5ICpjb29raWVQcm9wZXJ0aWVzID0gW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGNvb2tpZVByb3BlcnRpZXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIFtjb29raWVQcm9wZXJ0aWVz
IHNldE9iamVjdDpAImNvb2tpZU5hbWUiIGZvcktleTpOU0hUVFBDb29raWVOYW1lXTsKICAgICBb
Y29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCJjb29raWVWYWx1ZSIgZm9yS2V5Ok5TSFRUUENv
b2tpZVZhbHVlXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCIud3d3LndlYmtp
dC5vcmciIGZvcktleTpOU0hUVFBDb29raWVEb21haW5dOwogICAgIFtjb29raWVQcm9wZXJ0aWVz
IHNldE9iamVjdDpAIi9wYXRoIiBmb3JLZXk6TlNIVFRQQ29va2llUGF0aF07CiAgICAgUmV0YWlu
UHRyPE5TTnVtYmVyPiBjcmVhdGlvblRpbWUgPSBAKDEwMDAwMCk7CiAgICAgW2Nvb2tpZVByb3Bl
cnRpZXMgc2V0T2JqZWN0OmNyZWF0aW9uVGltZS5nZXQoKSBmb3JLZXk6QCJDcmVhdGVkIl07Ci0g
ICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gY29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVX
aXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzXTsKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29v
a2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOmNvb2tpZVBy
b3BlcnRpZXMuZ2V0KCldOwogCiAgICAgW2dsb2JhbENvb2tpZVN0b3JlIHNldENvb2tpZTpjb29r
aWUuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6W10oKSB7CiAgICAgICAgIGdvdEZsYWcgPSB0cnVl
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0lu
c3BlY3RvckRlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCmluZGV4IDVhMDQ2NDJlZmE0MjI0YzNiMjE3ZjBhMjEy
NDgxZTBmNGUwMDdjZDguLjlkZWE2M2NkODZhN2I3ZjEyZDkwODU5YmY0MDJjMjExYmQyMjQ5Y2Ug
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTEyNCw3ICsxMjQsNyBAQCAtIChfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmln
dXJhdGlvbkZvckxvYwogICAgIHNoYXJlZEluc3BlY3RvckRlbGVnYXRlID0gW0luc3BlY3RvckRl
bGVnYXRlIG5ld107CiAgICAgW2luc3BlY3RvciBzZXREZWxlZ2F0ZTpzaGFyZWRJbnNwZWN0b3JE
ZWxlZ2F0ZS5nZXQoKV07CiAKLSAgICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVyID0gW1tTaW1wbGVV
UkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XTsKKyAgICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVy
ID0gYWRvcHROUyhbW1NpbXBsZVVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBh
dXRvIGluc3BlY3RvckNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtpbnNwZWN0b3JDb25maWd1cmF0aW9uIHNldFVS
TFNjaGVtZUhhbmRsZXI6c2hhcmVkVVJMU2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6
QCJ0ZXN0aW5nIl07CiAgICAgcmV0dXJuIGluc3BlY3RvckNvbmZpZ3VyYXRpb24uYXV0b3JlbGVh
c2UoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tQREZWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BE
RlZpZXcubW0KaW5kZXggZTcyZTYwZjc0M2IxYjNkYzRkM2NmMmRhMWNkMTViZjA1MTA4MmZiOC4u
ZTIzMGIwOTRjYTU5NjE3NGU2MzA1ZjdlODdhNTdiNGIyYmJjZmM4NiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0KQEAgLTQxNCwx
NCArNDE0LDE0IEBAIEBlbmQKIAogVEVTVChQREYsIFByaW50U2l6ZSkKIHsKLSAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSBhdXRvcmVsZWFzZV07
Ci0gICAgYXV0byBzY2hlbWVIYW5kbGVyID0gW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVt
ZUhhbmRsZXIgZm9yVVJMU2NoZW1lOkAidGVzdCJdOwotICAgIGF1dG8gd2ViVmlldyA9IFtbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07Ci0gICAgYXV0byBk
ZWxlZ2F0ZSA9IFtbUHJpbnRVSURlbGVnYXRlIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIHdlYlZp
ZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlOwotCi0gICAgc2NoZW1lSGFuZGxlci5zdGFydFVSTFNj
aGVtZVRhc2tIYW5kbGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNr
KSB7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBuZXddKTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtUZXN0VVJMU2No
ZW1lSGFuZGxlciBuZXddKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtQcmludFVJRGVsZWdhdGUgbmV3XSk7Cisg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBzY2hlbWVI
YW5kbGVyLmdldCgpLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBeKFdLV2ViVmlldyAqLCBp
ZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKICAgICAgICAgYXV0byB1cmwgPSB0YXNrLnJlcXVl
c3QuVVJMOwogICAgICAgICBOU0RhdGEgKmRhdGE7CiAgICAgICAgIE5TU3RyaW5nICptaW1lVHlw
ZTsKQEAgLTQzNyw4ICs0MzcsOCBAQCBURVNUKFBERiwgUHJpbnRTaXplKQogICAgICAgICAgICAg
bWltZVR5cGUgPSBAImFwcGxpY2F0aW9uL3BkZiI7CiAgICAgICAgICAgICBkYXRhID0gW05TRGF0
YSBkYXRhV2l0aENvbnRlbnRzT2ZVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNv
dXJjZTpAInRlc3RfcHJpbnQiIHdpdGhFeHRlbnNpb246QCJwZGYiIHN1YmRpcmVjdG9yeTpAIlRl
c3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOwogICAgICAgICB9Ci0gICAgICAgIE5TVVJMUmVzcG9u
c2UgKnJlc3BvbnNlID0gW1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsIE1J
TUVUeXBlOm1pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdOwotICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVz
cG9uc2U6cmVzcG9uc2VdOworICAgICAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybCBNSU1FVHlwZTptaW1lVHlwZSBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZURhdGE6ZGF0YV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CiAgICAg
fTsKQEAgLTQ0OSw3ICs0NDksNyBAQCBURVNUKFBERiwgUHJpbnRTaXplKQogICAgIEVYUEVDVF9F
UShzaXplLndpZHRoLCA2MTIuMCk7CiAKICAgICBfX2Jsb2NrIGJvb2wgcmVjZWl2ZWRTaXplID0g
ZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOndlYlZpZXcu
X21haW5GcmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7Cisg
ICAgW3dlYlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOlt3ZWJWaWV3IF9tYWluRnJh
bWVdIGNvbXBsZXRpb25IYW5kbGVyOl4oQ0dTaXplIHJlcXVlc3RlZFNpemUpIHsKICAgICAgICAg
RVhQRUNUX0VRKHJlcXVlc3RlZFNpemUuaGVpZ2h0LCA3OTIuMCk7CiAgICAgICAgIEVYUEVDVF9F
UShyZXF1ZXN0ZWRTaXplLndpZHRoLCA2MTIuMCk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRy
dWU7CkBAIC00NjQsNyArNDY0LDcgQEAgVEVTVChQREYsIFByaW50U2l6ZSkKICAgICBFWFBFQ1Rf
RVEobWFpbkZyYW1lU2l6ZS53aWR0aCwgMC4wKTsKICAgICAKICAgICByZWNlaXZlZFNpemUgPSBm
YWxzZTsKLSAgICBbd2ViVmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6d2ViVmlldy5f
bWFpbkZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOl4oQ0dTaXplIHJlcXVlc3RlZFNpemUpIHsKKyAg
ICBbd2ViVmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6W3dlYlZpZXcgX21haW5GcmFt
ZV0gY29tcGxldGlvbkhhbmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgewogICAgICAgICBF
WFBFQ1RfRVEocmVxdWVzdGVkU2l6ZS5oZWlnaHQsIDAuMCk7CiAgICAgICAgIEVYUEVDVF9FUShy
ZXF1ZXN0ZWRTaXplLndpZHRoLCAwLjApOwogICAgICAgICByZWNlaXZlZFNpemUgPSB0cnVlOwpA
QCAtNDc3LDcgKzQ3Nyw3IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgRVhQRUNUX05FQVIo
cGRmRnJhbWVTaXplLndpZHRoLCAxMjkuNjAwMDA2LCAuMDAwMDEpOwogCiAgICAgcmVjZWl2ZWRT
aXplID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOmRl
bGVnYXRlLmxhc3RQcmludGVkRnJhbWUgY29tcGxldGlvbkhhbmRsZXI6XihDR1NpemUgcmVxdWVz
dGVkU2l6ZSkgeworICAgIFt3ZWJWaWV3IF9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFtZTpbZGVs
ZWdhdGUgbGFzdFByaW50ZWRGcmFtZV0gY29tcGxldGlvbkhhbmRsZXI6XihDR1NpemUgcmVxdWVz
dGVkU2l6ZSkgewogICAgICAgICBFWFBFQ1RfTkVBUihyZXF1ZXN0ZWRTaXplLmhlaWdodCwgMjgu
Nzk5OTk5LCAuMDAwMDEpOwogICAgICAgICBFWFBFQ1RfTkVBUihyZXF1ZXN0ZWRTaXplLndpZHRo
LCAxMjkuNjAwMDA2LCAuMDAwMDEpOwogICAgICAgICByZWNlaXZlZFNpemUgPSB0cnVlOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdD
YW5kaWRhdGVUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMubW0KaW5kZXggMGU3YWU5NmUxYjZhMTM3OGEwZWNmMjc2
ZmQzZDg2Y2QxZGNiYmM3Ny4uNzdkMjRmYTA1ZjMwZjE0M2M5MTQwMzkzZDMyZThjMjc4MjAxMzVk
OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dl
YlZpZXdDYW5kaWRhdGVUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1tCkBAIC0xMjUsOSArMTI1LDkgQEAg
LSAodm9pZCl0eXBlU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBpbnB1dE1lc3NhZ2U6KE5TU3Ry
aW5nICopaW5wdXRNZXNzYWdlCiAgICAgfQogfQogCi0rIChpbnN0YW5jZXR5cGUpc2V0VXBXaXRo
RnJhbWU6KE5TUmVjdClmcmFtZSB0ZXN0UGFnZTooTlNTdHJpbmcgKil0ZXN0UGFnZU5hbWUKKysg
KFJldGFpblB0cjxDYW5kaWRhdGVUZXN0V2ViVmlldz4pc2V0VXBXaXRoRnJhbWU6KE5TUmVjdClm
cmFtZSB0ZXN0UGFnZTooTlNTdHJpbmcgKil0ZXN0UGFnZU5hbWUKIHsKLSAgICBDYW5kaWRhdGVU
ZXN0V2ViVmlldyAqd2tXZWJWaWV3ID0gW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpmcmFtZV07CisgICAgYXV0byB3a1dlYlZpZXcgPSBhZG9wdE5TKFtbQ2FuZGlk
YXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVdKTsKIAogICAgIFt3a1dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6dGVzdFBhZ2VOYW1lXTsKICAgICBbd2tXZWJWaWV3IHdh
aXRGb3JNZXNzYWdlOkAiZm9jdXNlZCJdOwpAQCAtMTQxLDcgKzE0MSw3IEBAIEBlbmQKIAogVEVT
VChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU29mdFNwYWNlUmVwbGFjZW1lbnRBZnRlckNhbmRp
ZGF0ZUluc2VydGlvbldpdGhvdXRSZXBsYWNlbWVudCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2Vi
VmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xs
YWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJW
aWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAi
aW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogCiAgICAgW3drV2ViVmlldyBp
bnNlcnRDYW5kaWRhdGVzQW5kV2FpdEZvclJlc3BvbnNlOkAiYXBwbGUgIiByYW5nZTpOU01ha2VS
YW5nZSgwLCAwKV07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJhcHBsZSAiLCBbd2tXZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6R2V0SW5wdXRWYWx1ZUpTRXhwcmVzc2lvbl0pOwpA
QCAtMTU2LDcgKzE1Niw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIFNvZnRTcGFj
ZVJlcGxhY2VtZW50QWZ0ZXJDYW5kaWRhdGVJbnNlcnRpb25XaXRob3V0CiAKIFRFU1QoV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMsIEluc2VydENoYXJhY3RlcnNBZnRlckNhbmRpZGF0ZUluc2VydGlv
bldpdGhTb2Z0U3BhY2UpCiB7Ci0gICAgQ2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9
IFtDYW5kaWRhdGVUZXN0V2ViVmlldyBzZXRVcFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSB0ZXN0UGFnZTpAImlucHV0LWZpZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQiXTsK
KyAgICBhdXRvIHdrV2ViVmlldyA9IFtDYW5kaWRhdGVUZXN0V2ViVmlldyBzZXRVcFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSB0ZXN0UGFnZTpAImlucHV0LWZpZWxkLWluLXNj
cm9sbGFibGUtZG9jdW1lbnQiXTsKIAogICAgIFt3a1dlYlZpZXcgaW5zZXJ0Q2FuZGlkYXRlc0Fu
ZFdhaXRGb3JSZXNwb25zZTpAImZvbyAiIHJhbmdlOk5TTWFrZVJhbmdlKDAsIDApXTsKICAgICBF
WFBFQ1RfV0tfU1RSRVEoImZvbyAiLCBbd2tXZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6R2V0SW5wdXRWYWx1ZUpTRXhwcmVzc2lvbl0pOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIFRF
U1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIEluc2VydENoYXJhY3RlcnNBZnRlckNhbmRpZGF0
ZUluc2VydGlvbldpdGhTb2Z0U3BhCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIElu
c2VydENhbmRpZGF0ZUZyb21QYXJ0aWFsbHlUeXBlZFBocmFzZVdpdGhTb2Z0U3BhY2UpCiB7Ci0g
ICAgQ2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtDYW5kaWRhdGVUZXN0V2ViVmll
dyBzZXRVcFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSB0ZXN0UGFnZTpAImlu
cHV0LWZpZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQiXTsKKyAgICBhdXRvIHdrV2ViVmlldyA9
IFtDYW5kaWRhdGVUZXN0V2ViVmlldyBzZXRVcFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSB0ZXN0UGFnZTpAImlucHV0LWZpZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQiXTsK
IAogICAgIFt3a1dlYlZpZXcgdHlwZVN0cmluZzpAImhlbCIgaW5wdXRNZXNzYWdlOkAiaW5wdXQi
XTsKICAgICBbd2tXZWJWaWV3IGluc2VydENhbmRpZGF0ZXNBbmRXYWl0Rm9yUmVzcG9uc2U6QCJo
ZWxsbyAiIHJhbmdlOk5TTWFrZVJhbmdlKDAsIDMpXTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBURVNU
KFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBJbnNlcnRDYW5kaWRhdGVGcm9tUGFydGlhbGx5VHlw
ZWRQaHJhc2VXaXRoU29mdFNwYQogCiBURVNUKFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBDbGlj
a2luZ0luVGV4dEZpZWxkRG9lc05vdFRocmFzaENhbmRpZGF0ZVZpc2liaWxpdHkpCiB7Ci0gICAg
Q2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtDYW5kaWRhdGVUZXN0V2ViVmlldyBz
ZXRVcFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSB0ZXN0UGFnZTpAImxhcmdl
LWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRp
ZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IHRlc3RQYWdlOkAibGFyZ2UtaW5wdXQtZmllbGQtZm9jdXMtb25sb2FkIl07CiAKICAgICBbd2tX
ZWJWaWV3IHR5cGVTdHJpbmc6QCJ0ZXN0IiBpbnB1dE1lc3NhZ2U6QCJpbnB1dCJdOwogICAgIFt3
a1dlYlZpZXcgZXhwZWN0Q2FuZGlkYXRlTGlzdFZpc2liaWxpdHlVcGRhdGVzOjAgd2hlblBlcmZv
cm1pbmdBY3Rpb25zOl4oKQpAQCAtMjAzLDcgKzIwMyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlk
YXRlVGVzdHMsIENsaWNraW5nSW5UZXh0RmllbGREb2VzTm90VGhyYXNoQ2FuZGlkYXRlVmlzaWJp
bGl0CiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIFNob3VsZE5vdFJlcXVlc3RDYW5k
aWRhdGVzSW5QYXNzd29yZEZpZWxkKQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dl
YlZpZXcgPSBbW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFr
ZVJlY3QoMCwgMCwgODAwLCA2MDApXTsKKyAgICBhdXRvIHdrV2ViVmlldyA9IGFkb3B0TlMoW1tD
YW5kaWRhdGVUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKV0pOwogICAgIFt3a1dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJ0ZXh0LWFu
ZC1wYXNzd29yZC1pbnB1dHMiXTsKICAgICBbd2tXZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9h
ZGVkIl07CiAgICAgW3drV2ViVmlldyBfZm9yY2VSZXF1ZXN0Q2FuZGlkYXRlc107CkBAIC0yMjUs
NyArMjI1LDcgQEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkTm90UmVxdWVz
dENhbmRpZGF0ZXNJblBhc3N3b3JkRmllbGQpCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVz
dHMsIFNob3VsZFJlcXVlc3RDYW5kaWRhdGVzSW5UZXh0RmllbGQpCiB7Ci0gICAgQ2FuZGlkYXRl
VGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldOworICAgIGF1dG8gd2tXZWJW
aWV3ID0gYWRvcHROUyhbW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CiAgICAgW3drV2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDpAInRleHQtYW5kLXBhc3N3b3JkLWlucHV0cyJdOwogICAgIFt3a1dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKICAgICBbd2tXZWJWaWV3IF9mb3JjZVJlcXVlc3RDYW5k
aWRhdGVzXTsKQEAgLTI0Nyw3ICsyNDcsNyBAQCBURVNUKFdLV2ViVmlld0NhbmRpZGF0ZVRlc3Rz
LCBTaG91bGRSZXF1ZXN0Q2FuZGlkYXRlc0luVGV4dEZpZWxkKQogCiBURVNUKFdLV2ViVmlld0Nh
bmRpZGF0ZVRlc3RzLCBDYW5kaWRhdGVSZWN0Rm9yRW1wdHlQYXJhZ3JhcGgpCiB7Ci0gICAgQ2Fu
ZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtDYW5kaWRhdGVUZXN0V2ViVmlldyBzZXRV
cFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSB0ZXN0UGFnZTpAImlucHV0LWZp
ZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQiXTsKKyAgICBhdXRvIHdrV2ViVmlldyA9IFtDYW5k
aWRhdGVUZXN0V2ViVmlldyBzZXRVcFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSB0ZXN0UGFnZTpAImlucHV0LWZpZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQiXTsKICAgICBO
U1JlY3QgY2FuZGlkYXRlUmVjdCA9IFt3a1dlYlZpZXcgX2NhbmRpZGF0ZVJlY3RdOwogICAgIEVY
UEVDVF9ORSgwLCBjYW5kaWRhdGVSZWN0Lm9yaWdpbi55KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RG9lc05vdExvZ0R1cmlu
Z0luaXRpYWxpemF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24ubW0KaW5kZXggODg3MTY5
MzQ2MDdmNGNhY2NkMzljM2ZiMzVkNDRhMTg4NmExMWZiYi4uMjZjYTQ1N2M0Yjc2YjUxMmZmYWU0
ZmI0OTdiYjNmYmM1YjEyYTMwNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24ubW0K
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2Vz
Tm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24ubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQg
PFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaD4KICNpbXBvcnQgPGZjbnRsLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IFRFU1QoV0tXZWJWaWV3LCBJbml0aWFsaXppbmdXZWJWaWV3V2l0aEVwaGVtZXJhbFN0b3JhZ2VE
b2VzTm90TG9nKQogewpAQCAtNDEsMTIgKzQyLDEyIEBAIFRFU1QoV0tXZWJWaWV3LCBJbml0aWFs
aXppbmdXZWJWaWV3V2l0aEVwaGVtZXJhbFN0b3JhZ2VEb2VzTm90TG9nKQogICAgIGR1cDIocFsx
XSwgU1RERVJSX0ZJTEVOTyk7CiAgICAgY2xvc2UocFsxXSk7CiAKLSAgICBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XTsKLSAgICBfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gKnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsK
LSAgICBjb25maWd1cmF0aW9uLnByb2Nlc3NQb29sID0gW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbl07Ci0gICAgY29u
ZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJz
aXN0ZW50RGF0YVN0b3JlXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOmFkb3B0TlMoW1tX
S1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5nZXQoKV0pLmdldCgpXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRl
RGF0YVN0b3JlOltXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV1dOwog
Ci0gICAgW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb25dOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKIAogICAgIEZJTEUgKnN0ZGVyckZpbGVIYW5kbGUgPSBmZG9wZW4o
cFswXSwgInIiKTsKICAgICBjaGFyIGJ1ZmZlclsxMDI0XTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFs
dWF0ZUphdmFTY3JpcHQubW0KaW5kZXggMTAzMDUxNTdlNTIzMmUxZjQ5NjAzMmI1ZjhlMDI3YWZm
ZjYwNjRlZC4uNTZiMTIxYmM5YTgwNDIzNzI0NGM0YjlhNWMyMDQ5NzhkMzdjNTkxNiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFs
dWF0ZUphdmFTY3JpcHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KQEAgLTQ3Myw3ICs0NzMsOCBAQCBU
RVNUKFdlYktpdCwgU1BJSmF2YXNjcmlwdE1hcmt1cFZzQVBJQ29udGVudEphdmFTY3JpcHQpCiAK
IH0KIAotc3RhdGljIE5TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiAqYWxsRnJhbWVzOworc3Rh
dGljIFJldGFpblB0cjxOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4+IGFsbEZyYW1lczsKKwog
QGludGVyZmFjZSBGcmFtZXNNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3Nh
Z2VIYW5kbGVyPgogQGVuZAogCkBAIC00OTksNyArNTAwLDcgQEAgc3RhdGljIE5TU3RyaW5nICp1
c2VyU2NyaXB0U291cmNlID0gQCJ3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5mcmFtZXNU
ZXN0ZXIKIC8vIGFuZCBjYWxsQXN5bmNKYXZhU2NyaXB0IHRvIGNvbmZpcm0gdGhhdCBpdCBjYW4g
ZXhlY3V0ZSBKUyBkaXJlY3RseSBpbiBlYWNoIG9mIHRob3NlIGZyYW1lcy4KIFRFU1QoRXZhbHVh
dGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3NhZ2UpCiB7Ci0gICAg
YWxsRnJhbWVzID0gW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOwor
ICAgIGFsbEZyYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxs
b2NdIGluaXRdKTsKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW0ZyYW1lc01l
c3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byB1c2VyU2NyaXB0ID0gYWRvcHRO
UyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6dXNlclNjcmlwdFNvdXJjZSBp
bmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9y
TWFpbkZyYW1lT25seTpOTyBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xp
ZW50V29ybGRdKTsKIApAQCAtNTI3LDEyICs1MjgsMTIgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3Jp
cHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKICAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImZyYW1lc3Rlc3Q6Ly90ZXN0L2luZGV4Lmh0
bWwiXV1dOwogCi0gICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVD
VF9FUShbYWxsRnJhbWVzIGNvdW50XSwgMnUpOwogCiAgICAgc3RhdGljIHNpemVfdCBmaW5pc2hl
ZEZyYW1lcyA9IDA7CiAgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CiAKLSAgICBmb3Ig
KFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMpIHsKKyAgICBmb3IgKFdLRnJhbWVJbmZv
ICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0KCkpIHsKICAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9
IGZyYW1lLmlzTWFpbkZyYW1lOwogICAgICAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0
OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5D
b250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOltpc01haW5GcmFtZV0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAg
ICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKQEAgLTU0Myw3ICs1NDQsNyBAQCBURVNUKEV2YWx1
YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbVBvc3RNZXNzYWdlKQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRv
U3RyaW5nOkAib3RoZXJwcm90b2NvbDovL3Rlc3QvaW5kZXguaHRtbCJdKTsKIAotICAgICAgICAg
ICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxsRnJhbWVzLmNvdW50ICogMikKKyAgICAgICAg
ICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdICogMikKICAgICAg
ICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9XTsKIApAQCAtNTU3LDcgKzU1OCw3
IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1l
c3NhZ2UpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jl
c3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0p
OwogCi0gICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQg
KiAyKQorICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3Vu
dF0gKiAyKQogICAgICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAg
IH0KQEAgLTU3Miw3ICs1NzMsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlw
dEluRnJhbWVzRnJvbVBvc3RNZXNzYWdlKQogLy8gYW5kIGNhbGxBc3luY0phdmFTY3JpcHQgdG8g
Y29uZmlybSB0aGF0IGl0IGNhbiBleGVjdXRlIEpTIGRpcmVjdGx5IGluIGVhY2ggb2YgdGhvc2Ug
ZnJhbWVzLgogVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21O
YXZpZ2F0aW9uRGVsZWdhdGUpCiB7Ci0gICAgYWxsRnJhbWVzID0gW1tOU011dGFibGVTZXQ8V0tG
cmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOworICAgIGFsbEZyYW1lcyA9IGFkb3B0TlMoW1tOU011
dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdKTsKIAogICAgIGF1dG8gaGFuZGxl
ciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFto
YW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxX
S1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKQEAgLTYxNSwxMiArNjE2LDEyIEBAIFRFU1QoRXZhbHVh
dGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tTmF2aWdhdGlvbkRlbGVnYXRlKQog
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKIAot
ICAgIEVYUEVDVF9FUShhbGxGcmFtZXMuY291bnQsIDJ1KTsKKyAgICBFWFBFQ1RfRVEoW2FsbEZy
YW1lcyBjb3VudF0sIDJ1KTsKIAogICAgIHN0YXRpYyBzaXplX3QgZmluaXNoZWRGcmFtZXMgPSAw
OwogICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5m
byAqZnJhbWUgaW4gYWxsRnJhbWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4g
YWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZS5pc01h
aW5GcmFtZTsKICAgICAgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBs
b2NhdGlvbi5ocmVmOyIgYXJndW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxk
OldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNN
YWluRnJhbWVdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBFWFBF
Q1RfTlVMTChlcnJvcik7CkBAIC02MzEsNyArNjMyLDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3Jp
cHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21OYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJp
bmc6QCJvdGhlcnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pOwogCi0gICAgICAgICAgICBp
ZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAgICAgICAgICAg
aWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQogICAgICAgICAg
ICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogCkBAIC02NDUsNyArNjQ2LDcgQEAg
VEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21OYXZpZ2F0aW9u
RGVsZWdhdGUpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUo
W3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJvdGhlcnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1s
Il0pOwogCi0gICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291
bnQgKiAyKQorICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBj
b3VudF0gKiAyKQogICAgICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwog
ICAgIH0KQEAgLTY1Nyw3ICs2NTgsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNj
cmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKIC8vIGR1ZSB0byByZW1vdmFsIGZy
b20gdGhlIERPTSByZXN1bHRzIGluIGFuIGFwcHJvcHJpYXRlIGVycm9yCiBURVNUKEV2YWx1YXRl
SmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlzc2luZ0ZyYW1lRXJyb3IpCiB7Ci0gICAgYWxsRnJh
bWVzID0gW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOworICAgIGFs
bEZyYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGlu
aXRdKTsKIAogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJMU2NoZW1lSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKQEAgLTcwMCw3
ICs3MDEsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlzc2luZ0Zy
YW1lRXJyb3IpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmln
YXRpb24pOwogCi0gICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVD
VF9FUShbYWxsRnJhbWVzIGNvdW50XSwgMnUpOwogCiAgICAgc3RhdGljIGJvb2wgaXNEb25lID0g
ZmFsc2U7CiAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAidmFyIGZyYW1lID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RoZUZyYW1lJyk7IGZyYW1lLnBhcmVudE5vZGUucmVtb3Zl
Q2hpbGQoZnJhbWUpOyIgaW5GcmFtZTpuaWwgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQu
ZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltdIChpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CkBAIC03MTAsNyArNzExLDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQs
IEphdmFTY3JpcHRJbk1pc3NpbmdGcmFtZUVycm9yKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmaXNEb25lKTsKICAgICBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZvciAoV0tGcmFtZUlu
Zm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGlu
IGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUpCiAgICAg
ICAgICAgICBjb250aW51ZTsKIApAQCAtNzI4LDcgKzcyOSw3IEBAIFRFU1QoRXZhbHVhdGVKYXZh
U2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIC8vIFRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IGV2YWx1YXRpbmcgSmF2YVNjcmlwdCBpbiBhIGZyYW1lIGZyb20gdGhlIHByZXZp
b3VzIG1haW4gbmF2aWdhdGlvbiByZXN1bHRzIGluIGFuIGVycm9yCiBURVNUKEV2YWx1YXRlSmF2
YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlzc2luZ0ZyYW1lQWZ0ZXJOYXZpZ2F0aW9uRXJyb3IpCiB7
Ci0gICAgYWxsRnJhbWVzID0gW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGlu
aXRdOworICAgIGFsbEZyYW1lcyA9IGFkb3B0TlMoW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8g
Kj4gYWxsb2NdIGluaXRdKTsKIAogICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tUZXN0VVJM
U2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtoYW5kbGVyIHNldFN0YXJ0VVJMU2No
ZW1lVGFza0hhbmRsZXI6WyZdKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2sp
IHsKQEAgLTc3NywxMCArNzc4LDEwIEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2Ny
aXB0SW5NaXNzaW5nRnJhbWVBZnRlck5hdmlnYXRpb25FcnJvcikKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwogICAgIGRpZEZpbmlzaE5hdmlnYXRp
b24gPSBmYWxzZTsKIAotICAgIEVYUEVDVF9FUShhbGxGcmFtZXMuY291bnQsIDJ1KTsKKyAgICBF
WFBFQ1RfRVEoW2FsbEZyYW1lcyBjb3VudF0sIDJ1KTsKIAogICAgIFJldGFpblB0cjxXS0ZyYW1l
SW5mbz4gaWZyYW1lOwotICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykg
eworICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAg
ICAgICBpZiAoZnJhbWUuaXNNYWluRnJhbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgaWZyYW1lID0gZnJhbWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
CmluZGV4IDI4MWFjMWJhMjIxMGRjNjVjNjhiNTBkNzk3Yzk4ZWEzMTI5YjA0YmEuLmY2MTZhNzRi
NDE3ZjYxZTlhYTNkZDI1YzhiZTg2YzllMmEyZmQyOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tCkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZvaWQgcnVuV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzKFNob3VsZEVuYWJsZVByb2Nlc3NQcmV3YXJtaW5nIHNo
b3VsZEUKICAgICBSZXRhaW5QdHI8TlNVUkw+IGZpbGVJREJQYXRoID0gW1tpZGJQYXRoIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAInYxIl0gVVJMQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50
OkAiZmlsZV9fMCJdOwogICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpmaWxlSURCUGF0aC5nZXQoKS5wYXRoXSk7CiAKLSAgICBS
ZXRhaW5QdHI8V0tXZWJzaXRlRGF0YVN0b3JlPiBkYXRhU3RvcmUgPSBbW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5nZXQoKV07CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgUmV0YWluUHRyPE5TU2V0PiB0eXBlcyA9IGFkb3B0
TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOldLV2Vic2l0ZURhdGFUeXBlSW5kZXhl
ZERCRGF0YWJhc2VzLCBuaWxdKTsKIAogICAgIC8vIFN1YmZyYW1lIG9mIGRpZmZlcmVudCBvcmln
aW5zIG1heSBhbHNvIGNyZWF0ZSBJbmRleGVkREIgZmlsZXMuCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4
IDA0MTc0Yzk5ZDBkNmMzNWY4OTIyOWIzOTAzYjAwN2MwYTQ3MjgwODQuLmYwNDMzMmEyMGY5OWUx
ZGFlMzA3MjQ2ZjRkNjZiZTVhYWEyYjM2YWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC0xNjU3LDcg
KzE2NTcsNyBAQCAtICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxT
Y2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YQogICAgIE5TVVJMICp1cmwgPSB0YXNr
LnJlcXVlc3QuVVJMOwogICAgIGlmIChbdXJsLnBhdGggaXNFcXVhbFRvU3RyaW5nOkAiL2NoZWNr
U3RvcmFnZSJdKSB7CiAgICAgICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PnZhciBvbGRW
YWx1ZSA9IHdpbmRvdy5zZXNzaW9uU3RvcmFnZVsnc3RvcmFnZUtleSddOyB3aW5kb3cuc2Vzc2lv
blN0b3JhZ2VbJ3N0b3JhZ2VLZXknXSA9ICd2YWx1ZSc7IGFsZXJ0KCdvbGQgdmFsdWU6IDwnICsg
KG9sZFZhbHVlID8gJ2ZhaWwnIDogJycpICsgJz4nKTs8L3NjcmlwdD4iOwotICAgICAgICBbdGFz
ayBkaWRSZWNlaXZlUmVzcG9uc2U6W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1
cmwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpodG1sLmxlbmd0
aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF1dOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybCBNSU1FVHlw
ZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0bWwubGVuZ3RoIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSkuZ2V0KCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbaHRt
bCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgICAgICBbdGFz
ayBkaWRGaW5pc2hdOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0TGVnYWN5L21hYy9DbG9zaW5nV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0TGVnYWN5L21hYy9DbG9zaW5nV2ViVmlldy5tbQppbmRleCA0YjNkMzVl
YTM5NmZiMzhlNzAyYzVlZTA3ODg5ZDJlMjRiMmM0MjUyLi44ZDVmOWY3MzlhMmJkOGZlODliMDA0
YjhjYWNlMDE4ZGJlOTdjZWZiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvbWFjL0Nsb3NpbmdXZWJWaWV3Lm1tCkBAIC03OSw3ICs3
OSw4IEBAIFRFU1QoV2ViS2l0TGVnYWN5LCBDbG9zaW5nV2ViVmlld1RoZW5TZW5kaW5nSXRBS2V5
RG93bkV2ZW50KQogICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CiAKICAgICAvLyBGaXJz
dCwgYWRkIGEgbmF0aXZlIGV2ZW50IGxpc3RlbmVyIHRoYXQgY2xvc2VzIHRoZSBXZWJWaWV3Lgot
ICAgIFtbW3dlYlZpZXcgbWFpbkZyYW1lRG9jdW1lbnRdIGJvZHldIGFkZEV2ZW50TGlzdGVuZXI6
QCJrZXlwcmVzcyIgbGlzdGVuZXI6W1tLZXlib2FyZEV2ZW50TGlzdGVuZXIgYWxsb2NdIGluaXRd
IHVzZUNhcHR1cmU6Tk9dOworICAgIGF1dG8gbGlzdGVuZXIgPSBhZG9wdE5TKFtbS2V5Ym9hcmRF
dmVudExpc3RlbmVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tbd2ViVmlldyBtYWluRnJhbWVEb2N1
bWVudF0gYm9keV0gYWRkRXZlbnRMaXN0ZW5lcjpAImtleXByZXNzIiBsaXN0ZW5lcjpsaXN0ZW5l
ci5nZXQoKSB1c2VDYXB0dXJlOk5PXTsKIAogICAgIC8vIFNlY29uZCwgYWRkIGEgSmF2YVNjcmlw
dCBldmVudCBoYW5kbGVyIHRoYXQgY29uc3VtZXMgdGhlIGV2ZW50LgogICAgIFtbW3dlYlZpZXcg
bWFpbkZyYW1lXSBqYXZhU2NyaXB0Q29udGV4dF0gZXZhbHVhdGVTY3JpcHQ6QCJhZGRLZXlQcmVz
c0hhbmRsZXIoKSJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRPYmpDL0N1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWUubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbQppbmRl
eCA0MmU0Y2NmMGNjMzliN2M0ZjM4YWJlMTYyYWM3MmEzODhmM2M4YmQ3Li45Yjg3MmUzNzQxODZj
YmMwMzJkYmYxYzI5MjRjNDIzOWRmZGRjMzgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9tUHJvdG9jb2xzSW52
YWxpZFNjaGVtZS5tbQpAQCAtNjAsNyArNjAsOCBAQCBURVNUKFdlYktpdDJDdXN0b21Qcm90b2Nv
bHNUZXN0LCBMb2FkSW52YWxpZFNjaGVtZSkKICAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+
IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRl
c3QoIkN1c3RvbVByb3RvY29sSW52YWxpZFNjaGVtZVRlc3QiKSk7CiAgICAgUGxhdGZvcm1XZWJW
aWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKLSAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygp
LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tMb2FkSW52YWxpZFNj
aGVtZURlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tMb2FkSW52YWxpZFNjaGVtZURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgd2ViVmll
dy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9
IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICBbd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodCd0cDovL3d3dy53ZWJraXQub3JnIl1dXTsKICAg
ICAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXpp
bmcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvUHJldmVudEltYWdl
TG9hZFdpdGhBdXRvUmVzaXppbmcubW0KaW5kZXggMjk2YWJiMGMyYjA4MDNlOTA2ODg4NjUyYmI3
MmI5ODc1ZDk2Y2FmMy4uZTEyNjE4Y2E3YzgzOTNkYWI5NTQ3NDhiYmQ1MDI3YmIxMThiYzMyNSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1ByZXZlbnRJ
bWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbQpAQCAtMzMs
NiArMzMsNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW1wb3J0ICJUZXN0QnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tWaWV3UHJpdmF0
ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCB0ZXN0RmluaXNo
ZWQgPSBmYWxzZTsKIApAQCAtNDQsOSArNDUsMTAgQEAgVEVTVChXZWJLaXQsIFByZXZlbnRJbWFn
ZUxvYWRXaXRoQXV0b1Jlc2l6aW5nVGVzdCkKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhj
b250ZXh0LmdldCgpKTsKIAogICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkubWluaW11bVNpemVG
b3JBdXRvTGF5b3V0ID0gTlNNYWtlU2l6ZSg0MDAsIDMwMCk7Ci0gICAgd2ViVmlldy5wbGF0Zm9y
bVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2Fk
Ol4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICBhdXRvIGxvYWRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
KnNlbmRlcikgewogICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgIH1dOworICAgIH1d
KTsKKyAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
bG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIFt3ZWJWaWV3LnBsYXRmb3Jt
VmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6QCI8aHRtbD48
Ym9keSBzdHlsZT0nYmFja2dyb3VuZC1pbWFnZTp1cmwoZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlW
Qk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFBb0FBQUFLQ0FZQUFBQ05Ncys5QUFBQUdYUkZXSFJUYjJa
MGQyRnlaUUJCWkc5aVpTQkpiV0ZuWlZKbFlXUjVjY2xsUEFBQUFGWkpSRUZVZUY1OXo0RUpBREVJ
UTFGMzZrN3U1RTdaS1hlVVFQQUNKM3dLN1VOb2tWeFZrOWtIblFIN2JZOWhiRHlEaE5YZ2pwUkxx
RmxvNE0yR2dmeUpIaGpxOFY0YWdmcmdQUVgzSnRKUUdib2ZtQ0hnQS9uQUtrcytKQWpGQUFBQUFF
bEZUa1N1UW1DQyk7Jz48L2JvZHk+PC9odG1sPiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpAImFib3V0OmJsYW5rIl1dOwogCiAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250ZW50
VGVzdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVu
dFRlc3QubW0KaW5kZXggMmQwYjE3M2ZkYTU2ZDdiOGE4NTBiMzc4YzdiOGVjOTJjOGYxZTRjMy4u
YTI0MjI2ZWYyNGFjNWVmZjRmNmI2NjUzZmM0MGRiZGVjYTg5ZWQxMCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250ZW50VGVzdC5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1t
CkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRk
VXNlclN0eWxlU2hlZXRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgdGVzdEZpbmlzaGVkID0gZmFs
c2U7CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OnVzZXJTdHls
ZVNoZWV0IGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRl
TWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFdL
VmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0Nv
bnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tTdHJpbmdSZWYg
YmFja2dyb3VuZENvbG9yUXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNr
Z3JvdW5kQ29sb3JTY3JpcHQpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVy
LmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpz
ZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVm
LCBiYWNrZ3JvdW5kQ29sb3JRdWVyeSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKKyAgICBhdXRvIHdrVmlldyA9
IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRH
cm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV0pOworICAgIGF1dG8gYmFja2dyb3VuZENv
bG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91
bmRDb2xvclNjcmlwdCkpOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9h
ZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgICAgIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZShbd2tWaWV3IHBhZ2VSZWZdLCBiYWNrZ3JvdW5kQ29sb3JRdWVy
eS5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNjcmlwdFZhbHVlSXNT
dHJpbmcoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBncmVlbkluUkdCKTsKICAgICAgICAgICAgIHRl
c3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgICAgICAgICBXS1JlbGVhc2UoYmFja2dyb3VuZENvbG9y
UXVlcnkpOwogICAgICAgICB9KTsKLSAgICB9XTsKKyAgICB9XSk7CisgICAgW3drVmlldyBicm93
c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7
CiAgICAgCi0gICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3Ry
aW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJdIGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOwogICAg
IAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KQEAgLTEz
OSwxOSArMTM5LDE5IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5
bGVTaGVldEFmdGVyQ3JlYXRpbmdWaWV3KQogewogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwog
ICAgIAotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQo
KSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAg
V0tTdHJpbmdSZWYgYmFja2dyb3VuZENvbG9yUXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdr
Vmlldy5wYWdlUmVmLCBiYWNrZ3JvdW5kQ29sb3JRdWVyeSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKKyAgICBh
dXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtl
UmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93
c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV0pOworICAgIGF1dG8g
YmFja2dyb3VuZENvbG9yUXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3Ry
aW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCkpOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Cisg
ICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShbd2tWaWV3IHBhZ2VSZWZdLCBiYWNrZ3Jv
dW5kQ29sb3JRdWVyeS5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNj
cmlwdFZhbHVlSXNTdHJpbmcoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBncmVlbkluUkdCKTsKICAg
ICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgICAgICAgICBXS1JlbGVhc2UoYmFj
a2dyb3VuZENvbG9yUXVlcnkpOwogICAgICAgICB9KTsKLSAgICB9XTsKKyAgICB9XSk7CisgICAg
W3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2FkRGVsZWdhdGUgPSBsb2FkRGVs
ZWdhdGUuZ2V0KCk7CiAKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hl
ZXQ6dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6
bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBtYWluRnJhbWVPbmx5OllFU107CiAg
ICAgCi0gICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5n
Omh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXJdIGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOwogCiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMTYxLDE5ICsx
NjEsMTkgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIFJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cykKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBbYnJvd3NpbmdDb250ZXh0
R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6dXNlclN0eWxlU2hlZXQgYmFzZVVSTDpuaWwgaW5jbHVk
ZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBt
YWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3Jv
dXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4
dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNjcmlwdCk7Ci0gICAg
d2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJv
d3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6
XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAgICAgICBydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRDb2xvclF1ZXJ5LCBe
KFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJv
clJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJv
Y2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3Vw
LmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KSk7CisgICAgYXV0
byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1Zp
ZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewog
ICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIHJlZEluUkdCKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgICAg
ICAgICBXS1JlbGVhc2UoYmFja2dyb3VuZENvbG9yUXVlcnkpOwogICAgICAgICB9KTsKLSAgICB9
XTsKKyAgICB9XSk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2Fk
RGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCiAgICAgW2Jyb3dzaW5nQ29udGV4
dEdyb3VwIHJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0c107CiAgICAgCi0gICAgW3drVmlldy5icm93
c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpu
aWxdOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdIGxvYWRIVE1MU3Ry
aW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOwogICAgIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KQEAgLTE4MywxNyArMTgzLDE3IEBAIFRFU1RfRihX
ZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU2NyaXB0QmVmb3JlQ3JlYXRpbmdWaWV3KQog
ICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRV
c2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMgPSB0cnVlOyIsIHVzZXJT
Y3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdz
Om5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgaW5qZWN0aW9uVGltZTprV0tJbmpl
Y3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFdLVmlldyAq
d2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRH
cm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tTdHJpbmdSZWYgdXNlclNj
cmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVz
ZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9s
bGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdl
UmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1
dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dz
aW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byB1
c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7CisgICAgYXV0byBsb2FkRGVsZWdh
dGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5k
ZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFnZVJlZl0s
IHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0
VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAg
ICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzQm9vbGVhbihzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IHRydWUpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdL
UmVsZWFzZSh1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nKTsKICAgICAgICAgfSk7Ci0gICAg
fV07CisgICAgfV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0ubG9h
ZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAotICAgIFt3a1ZpZXcuYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOworICAg
IFtbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdIGxvYWRIVE1MU3RyaW5nOkAiIiBi
YXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0Rmlu
aXNoZWQpOwogfQpAQCAtMjAyLDE5ICsyMDIsMTkgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVu
dFRlc3QsIEFkZFVzZXJTY3JpcHRBZnRlckNyZWF0aW5nVmlldykKIHsKICAgICB0ZXN0RmluaXNo
ZWQgPSBmYWxzZTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9j
ZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAu
Z2V0KCldOwotICAgIFdLU3RyaW5nUmVmIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KTsKLSAg
ICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9h
ZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZSh3a1ZpZXcucGFnZVJlZiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0
eVN0cmluZywgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFs
dWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKKyAgICBhdXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1Zp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vz
c0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0Nv
bnRleHRHcm91cC5nZXQoKV0pOworICAgIGF1dG8gdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmlu
ZyA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eSkpOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RCcm93c2lu
Z0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgICAgIHJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZShbd2tWaWV3IHBhZ2VSZWZdLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3Ry
aW5nLmdldCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJ
c0Jvb2xlYW4oc2VyaWFsaXplZFNjcmlwdFZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIHRlc3RG
aW5pc2hlZCA9IHRydWU7Ci0gICAgICAgICAgICBXS1JlbGVhc2UodXNlclNjcmlwdFRlc3RQcm9w
ZXJ0eVN0cmluZyk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3
IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5n
ZXQoKTsKICAgICAKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclNjcmlwdDpbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFByb3Bl
cnR5XSBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1h
dGNoUGF0dGVyblN0cmluZ3M6bmlsIGluamVjdGlvblRpbWU6a1dLSW5qZWN0QXREb2N1bWVudFN0
YXJ0IG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBbd2tWaWV3LmJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKKyAgICBbW3drVmll
dyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVSTDpu
aWxdOwogICAgIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsK
IH0KQEAgLTIyNCwxOSArMjI0LDE5IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBS
ZW1vdmVBbGxVc2VyU2NyaXB0cykKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBbYnJv
d3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5XSBiYXNlVVJMOm5pbCBpbmNs
dWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmls
IGluamVjdGlvblRpbWU6a1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0IG1haW5GcmFtZU9ubHk6WUVT
XTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAu
Z2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldOwot
ICAgIFdLU3RyaW5nUmVmIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KTsKLSAgICB3a1ZpZXcu
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0Nv
bnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSh3a1ZpZXcucGFnZVJlZiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZywg
XihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJy
b3JSZWYgZXJyb3IpIHsKKyAgICBhdXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnBy
b2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91
cC5nZXQoKV0pOworICAgIGF1dG8gdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQcm9wZXJ0eSkp
OworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShbd2tWaWV3IHBhZ2VSZWZdLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLmdldCgp
LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tF
cnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1VuZGVmaW5l
ZChzZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZSh1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nKTsK
ICAgICAgICAgfSk7Ci0gICAgfV07CisgICAgfV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlcl0ubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAog
ICAgIFticm93c2luZ0NvbnRleHRHcm91cCByZW1vdmVBbGxVc2VyU2NyaXB0c107CiAgICAgCi0g
ICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOmh0bWxT
dHJpbmcgYmFzZVVSTDpuaWxdOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXJdIGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOwogICAgIAogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCmluZGV4IDVl
NjczNjExMDMzZjExYzZhMjg1NGIyZTIyYmY4YWRjOTk4NGQyNjIuLjhiNDBhYTAwNTc2YjcxNDQ5
YjlhYWNhYjJkOTlhZmZhYTVjNTM0MDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbQpAQCAtODc5LDggKzg3OSw4IEBAIFRF
U1QoRHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VCb2xkU3lzdGVtQXR0cmlidXRlZFN0
cmluZ1RvQ29udGVudEVkaXRhYmxlCiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tE
cmFnQW5kRHJvcFNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCld
KTsKICAgICBOU0RpY3Rpb25hcnkgKnRleHRBdHRyaWJ1dGVzID0gQHsgTlNGb250QXR0cmlidXRl
TmFtZTogW1VJRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZToyMF0gfTsKLSAgICBOU0F0dHJpYnV0
ZWRTdHJpbmcgKnJpY2hUZXh0ID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRo
U3RyaW5nOkAiVGhpcyBpcyBhIHRlc3QiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAg
IGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0
V2l0aE9iamVjdDpyaWNoVGV4dF0pOworICAgIGF1dG8gcmljaFRleHQgPSBhZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIlRoaXMgaXMgYSB0ZXN0IiBh
dHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9w
dE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0LmdldCgp
XSk7CiAgICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3Zp
ZGVyLmdldCgpIF1dOwogICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQw
MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKIApAQCAtODk1LDggKzg5NSw4IEBAIFRFU1Qo
RHJhZ0FuZERyb3BUZXN0cywgRXh0ZXJuYWxTb3VyY2VDb2xvcmVkQXR0cmlidXRlZFN0cmluZ1Rv
Q29udGVudEVkaXRhYmxlKQogCiAgICAgYXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0Fu
ZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAg
ICAgTlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRlcyA9IEB7IE5TRm9yZWdyb3VuZENvbG9yQXR0
cmlidXRlTmFtZTogW1VJQ29sb3IgcmVkQ29sb3JdIH07Ci0gICAgTlNBdHRyaWJ1dGVkU3RyaW5n
ICpyaWNoVGV4dCA9IFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpA
IlRoaXMgaXMgYSB0ZXN0IiBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXTsKLSAgICBhdXRvIGl0
ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhPYmpl
Y3Q6cmljaFRleHRdKTsKKyAgICBhdXRvIHJpY2hUZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRl
ZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJUaGlzIGlzIGEgdGVzdCIgYXR0cmlidXRl
czp0ZXh0QXR0cmlidXRlc10pOworICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05T
SXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDpyaWNoVGV4dC5nZXQoKV0pOwogICAg
IFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQo
KSBdXTsKICAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRvOkNH
UG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKQEAgLTE4NzIsOCArMTg3Miw4IEBAIFRFU1QoRHJhZ0Fu
ZERyb3BUZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVJlYWRQbGFpbkFuZFJpY2hUZXh0KQogCiAg
ICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGlu
aXRdKTsKICAgICBOU0RpY3Rpb25hcnkgKnRleHRBdHRyaWJ1dGVzID0gQHsgTlNGb250QXR0cmli
dXRlTmFtZTogW1VJRm9udCBib2xkU3lzdGVtRm9udE9mU2l6ZToyMF0gfTsKLSAgICBOU0F0dHJp
YnV0ZWRTdHJpbmcgKnJpY2hUZXh0ID0gW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRX
aXRoU3RyaW5nOkAiV2ViS2l0IiBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXTsKLSAgICBbaXRl
bVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OnJpY2hUZXh0IHZpc2liaWxpdHk6TlNJdGVtUHJvdmlk
ZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOworICAgIGF1dG8gcmljaFRleHQgPSBhZG9w
dE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIldlYktpdCIg
YXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc10pOworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJP
YmplY3Q6cmljaFRleHQuZ2V0KCkgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0
aW9uVmlzaWJpbGl0eUFsbF07CiAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LndlYmtpdC5vcmcvIl0gdmlzaWJpbGl0eTpO
U0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAgICAgW2l0ZW1Qcm92
aWRlciByZWdpc3Rlck9iamVjdDpAIldlYktpdCIgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJl
cHJlc2VudGF0aW9uVmlzaWJpbGl0eUFsbF07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQppbmRleCAyNWQ3ODI0NTFl
YTZjMjA0NGFmMmRkMWEyYTg2NzViMjk5NmY2OWFhLi5kODc3MDg4OTM0YWMzNTk3Y2RjNGU1YzY3
MTFiYTgxMTNhOWQzMWY0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lv
cy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCkBAIC03MSwyMyArNzEsMjMgQEAgKyAoVUlJ
bWFnZSAqKWJhckJ1dHRvbkljb24KICsgKFVJQmFyQnV0dG9uSXRlbUdyb3VwICopbGVhZGluZ0l0
ZW1zRm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewogICAgIHN0YXRpYyBkaXNwYXRj
aF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBVSUJhckJ1dHRvbkl0ZW1Hcm91cCAqc2hh
cmVkSXRlbXM7CisgICAgc3RhdGljIFJldGFpblB0cjxVSUJhckJ1dHRvbkl0ZW1Hcm91cD4gc2hh
cmVkSXRlbXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewogICAgICAgICBhdXRv
IGxlYWRpbmdJdGVtID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhJ
bWFnZTpzZWxmLmJhckJ1dHRvbkljb24gc3R5bGU6VUlCYXJCdXR0b25JdGVtU3R5bGVQbGFpbiB0
YXJnZXQ6d2ViVmlldyBhY3Rpb246QHNlbGVjdG9yKGZha2VMZWFkaW5nQmFyQnV0dG9uSXRlbUFj
dGlvbildKTsKLSAgICAgICAgc2hhcmVkSXRlbXMgPSBbW1VJQmFyQnV0dG9uSXRlbUdyb3VwIGFs
bG9jXSBpbml0V2l0aEJhckJ1dHRvbkl0ZW1zOkBbIGxlYWRpbmdJdGVtLmdldCgpIF0gcmVwcmVz
ZW50YXRpdmVJdGVtOm5pbF07CisgICAgICAgIHNoYXJlZEl0ZW1zID0gYWRvcHROUyhbW1VJQmFy
QnV0dG9uSXRlbUdyb3VwIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRvbkl0ZW1zOkBbIGxlYWRpbmdJ
dGVtLmdldCgpIF0gcmVwcmVzZW50YXRpdmVJdGVtOm5pbF0pOwogICAgIH0pOwotICAgIHJldHVy
biBzaGFyZWRJdGVtczsKKyAgICByZXR1cm4gc2hhcmVkSXRlbXMuZ2V0KCk7CiB9CiAKICsgKFVJ
QmFyQnV0dG9uSXRlbUdyb3VwICopdHJhaWxpbmdJdGVtc0ZvcldlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBz
dGF0aWMgVUlCYXJCdXR0b25JdGVtR3JvdXAgKnNoYXJlZEl0ZW1zOworICAgIHN0YXRpYyBSZXRh
aW5QdHI8VUlCYXJCdXR0b25JdGVtR3JvdXA+IHNoYXJlZEl0ZW1zOwogICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgYXV0byB0cmFpbGluZ0l0ZW0gPSBhZG9wdE5TKFtb
VUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEltYWdlOnNlbGYuYmFyQnV0dG9uSWNvbiBz
dHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZVBsYWluIHRhcmdldDp3ZWJWaWV3IGFjdGlvbjpAc2Vs
ZWN0b3IoZmFrZVRyYWlsaW5nQmFyQnV0dG9uSXRlbUFjdGlvbildKTsKLSAgICAgICAgc2hhcmVk
SXRlbXMgPSBbW1VJQmFyQnV0dG9uSXRlbUdyb3VwIGFsbG9jXSBpbml0V2l0aEJhckJ1dHRvbkl0
ZW1zOkBbIHRyYWlsaW5nSXRlbS5nZXQoKSBdIHJlcHJlc2VudGF0aXZlSXRlbTpuaWxdOworICAg
ICAgICBzaGFyZWRJdGVtcyA9IGFkb3B0TlMoW1tVSUJhckJ1dHRvbkl0ZW1Hcm91cCBhbGxvY10g
aW5pdFdpdGhCYXJCdXR0b25JdGVtczpAWyB0cmFpbGluZ0l0ZW0uZ2V0KCkgXSByZXByZXNlbnRh
dGl2ZUl0ZW06bmlsXSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIHNoYXJlZEl0ZW1zOworICAgIHJl
dHVybiBzaGFyZWRJdGVtcy5nZXQoKTsKIH0KIAogLSAoVUlUZXh0SW5wdXRBc3Npc3RhbnRJdGVt
ICopaW5wdXRBc3Npc3RhbnRJdGVtCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tCmluZGV4IGQyMjhjMjNkMWRlM2FlNGQwMTQ2
Njg1NjFlODE4MjY0ZjY2ZTZhZWUuLjI1NDhmMTdmZTdhMzc1MmE4MDU3ZjIyNjMwNjNiNjg5YjM0
YzAxYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xs
Vmlld0RlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Ny
b2xsVmlld0RlbGVnYXRlLm1tCkBAIC01NCwxNiArNTQsMTYgQEAgbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCiBURVNUKFdLV2ViVmlldywgV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaCkKIHsK
LSAgICBXS1dlYlZpZXcgKndlYlZpZXcgPSBbW1dLV2ViVmlldyBhbGxvY10gaW5pdF07CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOwogICAgIGF1
dG8gZGVsZWdhdGVGb3JTY3JvbGxWaWV3ID0gYWRvcHROUyhbW1Rlc3REZWxlZ2F0ZUZvclNjcm9s
bFZpZXcgYWxsb2NdIGluaXRdKTsKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAgICAgd2Vi
Vmlldy5zY3JvbGxWaWV3LmRlbGVnYXRlID0gZGVsZWdhdGVGb3JTY3JvbGxWaWV3LmdldCgpOwor
ICAgICAgICBbd2ViVmlldyBzY3JvbGxWaWV3XS5kZWxlZ2F0ZSA9IGRlbGVnYXRlRm9yU2Nyb2xs
Vmlldy5nZXQoKTsKICAgICB9CiAgICAgZGVsZWdhdGVJc0RlYWxsb2NhdGVkID0gZmFsc2U7CiAg
ICAgZGVsZWdhdGVGb3JTY3JvbGxWaWV3ID0gbmlsOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZGVsZWdhdGVJc0RlYWxsb2NhdGVkKTsKIAotICAgIEVYUEVDVF9OVUxMKHdlYlZpZXcu
c2Nyb2xsVmlldy5kZWxlZ2F0ZSk7CisgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgc2Nyb2xsVmll
d10uZGVsZWdhdGUpOwogfQogCiB9CkBAIC05MywyMyArOTMsMjMgQEAgbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkgewogCiBURVNUKFdLV2ViVmlldywgV0tTY3JvbGxWaWV3RGVsZWdhdGVDYW5ub3RP
dmVycmlkZVZpZXdGb3Jab29taW5nKQogewotICAgIFRlc3RXS1dlYlZpZXcgKndlYlZpZXcgPSBb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdOwotICAgIFdLU2Nyb2xsVmlld0RlbGVnYXRlV2l0
aFZpZXdGb3Jab29taW5nT3ZlcnJpZGRlbiAqZGVsZWdhdGVGb3JTY3JvbGxWaWV3ID0gW1tXS1Nj
cm9sbFZpZXdEZWxlZ2F0ZVdpdGhWaWV3Rm9yWm9vbWluZ092ZXJyaWRkZW4gYWxsb2NdIGluaXRd
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
XSk7CisgICAgYXV0byBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcgPSBhZG9wdE5TKFtbV0tTY3JvbGxW
aWV3RGVsZWdhdGVXaXRoVmlld0Zvclpvb21pbmdPdmVycmlkZGVuIGFsbG9jXSBpbml0XSk7CiAg
ICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIHdlYlZpZXcuc2Nyb2xsVmlldy5kZWxlZ2F0
ZSA9IGRlbGVnYXRlRm9yU2Nyb2xsVmlldzsKKyAgICAgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10u
ZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcuZ2V0KCk7CiAgICAgfQogCiAgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQn
IGNvbnRlbnQ9J2luaXRpYWwtc2NhbGU9MSc+Il07CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQ
cmVzZW50YXRpb25VcGRhdGVdOwogCiAgICAgLy8gSGF2ZSBXS1Njcm9sbFZpZXcncyBleHRlcm5h
bCBkZWxlZ2F0ZSByZXR1cm4gYSB2aWV3IHdpdGggc2NhbGU9MiBmcm9tIHZpZXdGb3Jab29taW5n
SW5TY3JvbGxWaWV3LgotICAgIGRlbGVnYXRlRm9yU2Nyb2xsVmlldy5vdmVycmlkZVNjYWxlID0g
MjsKKyAgICBbZGVsZWdhdGVGb3JTY3JvbGxWaWV3IHNldE92ZXJyaWRlU2NhbGU6Ml07CiAKICAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8bWV0YSBuYW1lPSd2aWV3
cG9ydCcgY29udGVudD0naW5pdGlhbC1zY2FsZT0yJz4iXTsKICAgICBbd2ViVmlldyB3YWl0Rm9y
TmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CiAKICAgICBAYXV0b3JlbGVhc2Vwb29sIHsKLSAgICAg
ICAgd2ViVmlldy5zY3JvbGxWaWV3LmRlbGVnYXRlID0gbmlsOworICAgICAgICBbd2ViVmlldyBz
Y3JvbGxWaWV3XS5kZWxlZ2F0ZSA9IG5pbDsKICAgICB9CiAKICAgICBFWFBFQ1RfRkFMU0UoZGlk
Q2FsbFZpZXdGb3Jab29taW5nSW5TY3JvbGxWaWV3KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9tYWMvQ2FuZGlkYXRlVGVzdHMubW0KaW5kZXggYWJmY2NhMjExMDFlMGYxMDdjZmFm
Y2U4N2ZlNTQ5ZTc0MWEyMDVjZS4uYzU4MWM1MzA1MWRhODg1MzE2Nzg2Zjk1MzVkZWU5MDc5ZDgx
OTdlYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2FuZGlkYXRl
VGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2FuZGlkYXRlVGVz
dHMubW0KQEAgLTkwLDggKzkwLDggQEAgbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChD
YW5kaWRhdGVUZXN0cywgRElTQUJMRURfRG9Ob3RMZWFrVmlld1RoYXRMb2Fkc0VkaXRhYmxlQXJl
YSkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbRG9Ob3RMZWFrV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKV0pOwotICAgIERvTm90
TGVha0ZyYW1lTG9hZERlbGVnYXRlICpkZWxlZ2F0ZSA9IFtbRG9Ob3RMZWFrRnJhbWVMb2FkRGVs
ZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRl
bGVnYXRlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0RvTm90TGVha0ZyYW1lTG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIAogICAgIE5TVVJMICpjb250ZW50VVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImF1dG9mb2N1c2VkLXRleHQtaW5wdXQi
IHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291
cmNlcyJdOwogICAgIFtbd2ViVmlldyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVl
c3QgcmVxdWVzdFdpdGhVUkw6Y29udGVudFVSTF1dOwpAQCAtMTA3LDggKzEwNyw4IEBAIFRFU1Qo
Q2FuZGlkYXRlVGVzdHMsIERJU0FCTEVEX1JlcXVlc3RDYW5kaWRhdGVzRm9yVGV4dElucHV0KQog
ewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApXSk7CiAgICAgW3dlYlZpZXcgZm9yY2VSZXF1
ZXN0Q2FuZGlkYXRlc0ZvclRlc3RpbmddOwotICAgIENhbmRpZGF0ZVJlcXVlc3RGcmFtZUxvYWRE
ZWxlZ2F0ZSAqZGVsZWdhdGUgPSBbW0NhbmRpZGF0ZVJlcXVlc3RGcmFtZUxvYWREZWxlZ2F0ZSBh
bGxvY10gaW5pdF07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZGVsZWdhdGVd
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQ2FuZGlkYXRlUmVxdWVzdEZyYW1lTG9h
ZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgIAogICAgIE5TVVJMICpjb250ZW50VVJMID0gW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAImZvY3VzLWlucHV0cyIgd2l0aEV4dGVu
c2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAg
ICAgW1t3ZWJWaWV3IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpjb250ZW50VVJMXV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUubW0KaW5kZXggMDFlNzQ0ZjQ4YjA0YWFhY2ViNjQ3YjhmMTJiNjk2MjU2
ZDVlNTMzZS4uMDQ2NzYzYzgxNzczZTcxNGM4ZGI3MWRmZjZmMjc3N2RlYWI0NjZlMCAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhp
blJlc291cmNlTG9hZERlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
bWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQpAQCAtNzgs
MTQgKzc4LDE0IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV2ViS2l0TGVnYWN5
LCBESVNBQkxFRF9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUpCiB7
CiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIFJldGFpblB0cjxXZWJWaWV3PiB3ZWJW
aWV3MSA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwotICAgICAgICBS
ZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzIgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3Vw
TmFtZTpuaWxdKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3MSA9IGFkb3B0TlMoW1tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpu
aWwgZ3JvdXBOYW1lOm5pbF0pOworICAgICAgICBhdXRvIHdlYlZpZXcyID0gYWRvcHROUyhbW1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJh
bWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CiAKLSAgICAgICAgTlNXaW5kb3cqIHdpbmRvdyA9
IFtbTlNXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2ViVmlldzIuZ2V0KCkuZnJh
bWUgc3R5bGVNYXNrOk5TQm9yZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9y
ZUJ1ZmZlcmVkIGRlZmVyOllFU107Ci0gICAgICAgIFt3aW5kb3cuY29udGVudFZpZXcgYWRkU3Vi
dmlldzp3ZWJWaWV3Mi5nZXQoKV07CisgICAgICAgIGF1dG8gd2luZG93ID0gYWRvcHROUyhbW05T
V2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRSZWN0OndlYlZpZXcyLmdldCgpLmZyYW1lIHN0
eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZm
ZXJlZCBkZWZlcjpZRVNdKTsKKyAgICAgICAgW1t3aW5kb3cgY29udGVudFZpZXddIGFkZFN1YnZp
ZXc6d2ViVmlldzIuZ2V0KCldOwogCi0gICAgICAgIFJldGFpblB0cjxNZW1vcnlDYWNoZVBydW5l
VGVzdFJlc291cmNlTG9hZERlbGVnYXRlPiByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7
Ci0gICAgICAgIHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpLT5fd2luZG93ID0gd2luZG93Owor
ICAgICAgICBhdXRvIHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lbW9yeUNhY2hl
UHJ1bmVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgcmVz
b3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCktPl93aW5kb3cgPSB3aW5kb3cuZ2V0KCk7CiAgICAgICAg
IHdlYlZpZXcxLmdldCgpLnJlc291cmNlTG9hZERlbGVnYXRlID0gcmVzb3VyY2VMb2FkRGVsZWdh
dGUuZ2V0KCk7CiAKICAgICAgICAgW1t3ZWJWaWV3MS5nZXQoKSBtYWluRnJhbWVdIGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBV
UkxGb3JSZXNvdXJjZTpAIk1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZSIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5JT1Mu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCmluZGV4IDIzODkxMjM3ZWNj
NmRhNmEwZjk4MWMzOTlmZGY0MjY3ZGU2NTk5M2MuLjZlZDc2N2U5Mjk0NzUyOTA5MmNkZWYzYzg4
Y2I2ZTcwNDM1MGY0NmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL21haW5J
T1MubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQpAQCAtMjcsNiAr
MjcsNyBAQAogI2ltcG9ydCAiVGVzdHNDb250cm9sbGVyLmgiCiAKICNpbXBvcnQgPFdlYktpdC9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiBpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CkBAIC0zNSwxMSArMzYsMTEgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSByZW1vdmVQZXJzaXN0ZW50RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJL
aXRBUEkiXTsKIAogICAgICAgICAvLyBTZXQgdXAgdXNlciBkZWZhdWx0cy4KLSAgICAgICAgTlNN
dXRhYmxlRGljdGlvbmFyeSAqYXJndW1lbnREb21haW4gPSBbW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1lbnREb21haW5d
IG11dGFibGVDb3B5XTsKKyAgICAgICAgYXV0byBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFt
ZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxlQ29weV0pOwogICAgICAgICBpZiAoIWFyZ3VtZW50
RG9tYWluKQotICAgICAgICAgICAgYXJndW1lbnREb21haW4gPSBbW05TTXV0YWJsZURpY3Rpb25h
cnkgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgYXJndW1lbnREb21haW4gPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCi0gICAgICAgIFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9t
YWluIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMg
c3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluLmdl
dCgpIGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiAKICNpZm5kZWYgQlVJTERJTkdfVEVTVF9X
VEYKICAgICAgICAgW1dLUHJvY2Vzc1Bvb2wgX3NldExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmdG
b3JUZXN0aW5nXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250
T3B0aW9ucy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpp
bmRleCA5MzU3NmI5MTRmMmE2OWQyNWU1ZjQ4MDlkZTdjYjYwODFiZGNmM2YxLi5jYjQ1YzVkYzdm
M2I5ZDlkZDgwNmM0YWI5MTBmYTU1MGM1NDgzZGRmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9t
YWMvVGVzdEZvbnRPcHRpb25zLm1tCkBAIC02NSwxMyArNjUsMTMgQEAgQHN5bnRoZXNpemUgaGFz
TXVsdGlwbGVGb250cyA9IF9oYXNNdWx0aXBsZUZvbnRzOwogCiArIChpbnN0YW5jZXR5cGUpc2hh
cmVkSW5zdGFuY2UKIHsKLSAgICBzdGF0aWMgVGVzdEZvbnRPcHRpb25zICpzaGFyZWRJbnN0YW5j
ZTsKKyAgICBzdGF0aWMgUmV0YWluUHRyPFRlc3RGb250T3B0aW9ucz4gc2hhcmVkSW5zdGFuY2U7
CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25j
ZSgmb25jZVRva2VuLCBeewogICAgICAgICBOU0ZvbnRPcHRpb25zICpzaGFyZWRGb250T3B0aW9u
cyA9IFtOU0NsYXNzRnJvbVN0cmluZyhAIk5TRm9udE9wdGlvbnMiKSBzaGFyZWRGb250T3B0aW9u
c107Ci0gICAgICAgIHNoYXJlZEluc3RhbmNlID0gW1tUZXN0Rm9udE9wdGlvbnMgYWxsb2NdIGlu
aXRXaXRoRm9udE9wdGlvbnM6c2hhcmVkRm9udE9wdGlvbnNdOworICAgICAgICBzaGFyZWRJbnN0
YW5jZSA9IGFkb3B0TlMoW1tUZXN0Rm9udE9wdGlvbnMgYWxsb2NdIGluaXRXaXRoRm9udE9wdGlv
bnM6c2hhcmVkRm9udE9wdGlvbnNdKTsKICAgICB9KTsKLSAgICByZXR1cm4gc2hhcmVkSW5zdGFu
Y2U7CisgICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlLmdldCgpOwogfQogCiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhGb250T3B0aW9uczooTlNGb250T3B0aW9ucyAqKWZvbnRPcHRpb25zCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9tYWMvbWFpbk1hYy5tbQppbmRleCBkOWQ2YzYxOGMyMjIzNTRiOWVhNWY4NDQ4MjY3
NTBiYzUxMjI4N2FmLi43MGIxZmRlYzg4YWJmNGFmZDc5NTkzYWMwYjI1YWUwZTRjYzczZjZkIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQg
IlRlc3RzQ29udHJvbGxlci5oIgogCiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZh
dGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogZXh0ZXJuICJDIiB2b2lkIF9CZWdp
bkV2ZW50UmVjZWlwdE9uVGhyZWFkKHZvaWQpOwogCkBAIC0zNyw5ICszOCw5IEBAIGludCBtYWlu
KGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gcmVtb3ZlUGVyc2lzdGVudERvbWFpbkZvck5hbWU6QCJUZXN0V2ViS2l0
QVBJIl07CiAKICAgICAgICAgLy8gU2V0IGEgdXNlciBkZWZhdWx0IGZvciBUZXN0V2ViS2l0QVBJ
IHRvIGJ5cGFzcyBhbGwgbGlua2VkLW9uLW9yLWFmdGVyIGNoZWNrcyBpbiBXZWJLaXQKLSAgICAg
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXJndW1lbnREb21haW4gPSBbW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1lbnRE
b21haW5dIG11dGFibGVDb3B5XTsKKyAgICAgICAgYXV0byBhcmd1bWVudERvbWFpbiA9IGFkb3B0
TlMoW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWlu
Rm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxlQ29weV0pOwogICAgICAgICBpZiAoIWFy
Z3VtZW50RG9tYWluKQotICAgICAgICAgICAgYXJndW1lbnREb21haW4gPSBbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAgICAgICAgYXJndW1lbnREb21haW4gPSBhZG9w
dE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAgICAgICAgIC8vIENB
VVRJT046IERlZmF1bHRzIHNldCBoZXJlIGFyZSBub3QgYXV0b21hdGljYWxseSBwcm9wYWdhdGVk
IHRvIHRoZQogICAgICAgICAvLyBXZWIgQ29udGVudCBwcm9jZXNzLiBUaG9zZSBsaXN0ZWQgYmVs
b3cgYXJlIHByb3BhZ2F0ZWQgbWFudWFsbHkuCkBAIC01Miw3ICs1Myw3IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAgfTsKIAogICAgICAgICBbYXJndW1lbnREb21h
aW4gYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OmRpY3RdOwotICAgICAgICBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjphcmd1bWVudERvbWFp
biBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOworICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0
YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjphcmd1bWVudERvbWFpbi5nZXQo
KSBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwogCiAjaWZuZGVmIEJVSUxESU5HX1RFU1RfV1RG
CiAgICAgICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRMaW5rZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nRm9y
VGVzdGluZ107CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1tCmlu
ZGV4IGM0MTgyMzBmM2I0ZmRlNzE5YWM2Y2NjODRiNzQyZGJlY2ExNGQyNGEuLmM5OGI5ZTk5NmNk
MWM4ZGU5ODlmOGVlY2FmZmNhZjZjZDQ1Y2I4YjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2liaWxpdHlDb250cm9sbGVySU9TLm1t
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVySU9TLm1tCkBAIC00Nyw3ICs0Nyw4IEBAIGJvb2wgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25D
YWxsYmFjCiAgICAgLy8gT3RoZXIgcGxhdGZvcm1zIG1heSBiZSBkaWZmZXJlbnQuCiAgICAgaWYg
KG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IFtbQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIgYWxsb2NdIGluaXRdOworCisgICAgbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVy
ID0gYWRvcHROUyhbW0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW21fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciBzZXRDYWxsYmFjazpmdW5jdGlv
bkNhbGxiYWNrXTsKICAgICBbbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyIHN0YXJ0T2JzZXJ2
aW5nXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVz
dENvbnRyb2xsZXJDb2NvYS5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENv
bnRyb2xsZXJDb2NvYS5tbQppbmRleCBjZTM2ZmJhMmQ0YmIxNTFmODc5ZTMxYTE1NDJkNGQwNmU5
ZTI5ZGU2Li4zOTIwYzRhNzAzMDQyZmVlZTYxNDk2ZTFlMWQ3MzhiYmNjOWY3ODBiIDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29hLm1t
CkBAIC01OSwzNiArNTksNDYgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0YXRpYyBXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbjsKLXN0YXRpYyBUZXN0
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlICpnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVD
bGllbnQ7CitzdGF0aWMgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+JiBnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFp
blB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPj4gZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb247
CisgICAgcmV0dXJuIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOworfQorCitzdGF0aWMgUmV0
YWluUHRyPFRlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+JiBnbG9iYWxXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGVDbGllbnQoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8VGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4+IGdsb2JhbFdlYnNpdGVEYXRhU3RvcmVE
ZWxlZ2F0ZUNsaWVudDsKKyAgICByZXR1cm4gZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
Q2xpZW50OworfQogCiB2b2lkIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihjb25zdCBj
aGFyKiBsaWJyYXJ5UGF0aCwgV0tTdHJpbmdSZWYgaW5qZWN0ZWRCdW5kbGVQYXRoLCBXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb250ZXh0Q29uZmlndXJh
dGlvbikKIHsKLSAgICBhdXRvIG9sZEdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbik7Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOworICAgIGdsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uKCkgPSBbJl0geworICAgICAgICBhdXRvIGNvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCi0g
ICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2wgPSAoX19icmlkZ2UgV0tQ
cm9jZXNzUG9vbCAqKWNvbnRleHQ7Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vi
c2l0ZURhdGFTdG9yZSA9IChfX2JyaWRnZSBXS1dlYnNpdGVEYXRhU3RvcmUgKilUZXN0Q29udHJv
bGxlcjo6ZGVmYXVsdFdlYnNpdGVEYXRhU3RvcmUoKTsKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmln
dXJhdGlvbi5fYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMgPSBZRVM7Ci0gICAgZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2FsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHMgPSBZ
RVM7Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2FwcGxlUGF5RW5hYmxlZCA9IFlF
UzsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6KF9fYnJpZGdlIFdLUHJv
Y2Vzc1Bvb2wgKiljb250ZXh0XTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURh
dGFTdG9yZTooX19icmlkZ2UgV0tXZWJzaXRlRGF0YVN0b3JlICopVGVzdENvbnRyb2xsZXI6OmRl
ZmF1bHRXZWJzaXRlRGF0YVN0b3JlKCldOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0QWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM6WUVTXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRp
b24gX3NldEFsbG93VG9wTmF2aWdhdGlvblRvRGF0YVVSTHM6WUVTXTsKKyAgICAgICAgW2NvbmZp
Z3VyYXRpb24gX3NldEFwcGxlUGF5RW5hYmxlZDpZRVNdOwogCi0gICAgYXV0byBvbGRHbG9iYWxX
ZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQgPSBhZG9wdE5TKGdsb2JhbFdlYnNpdGVEYXRh
U3RvcmVEZWxlZ2F0ZUNsaWVudCk7Ci0gICAgZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
Q2xpZW50ID0gW1tUZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAg
ICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBzZXRfZGVsZWdh
dGU6Z2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50XTsKKyAgICAgICAgZ2xvYmFs
V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50KCkgPSBhZG9wdE5TKFtbVGVzdFdlYnNpdGVE
YXRhU3RvcmVEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBbW2NvbmZpZ3VyYXRpb24g
d2Vic2l0ZURhdGFTdG9yZV0gc2V0X2RlbGVnYXRlOmdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZUNsaWVudCgpLmdldCgpXTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZ2xv
YmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uYWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayA9IFlFUzsK
LSAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5faW5saW5lTWVkaWFQbGF5YmFja1JlcXVp
cmVzUGxheXNJbmxpbmVBdHRyaWJ1dGUgPSBOTzsKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbi5faW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQgPSBOTzsKLSAgICBnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi5fbWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5ID0gWUVTOwotICAg
IGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLnJlcXVpcmVzVXNlckFjdGlvbkZvck1lZGlhUGxh
eWJhY2sgPSBOTzsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0QWxsb3dzSW5saW5lTWVkaWFQ
bGF5YmFjazpZRVNdOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0SW5saW5lTWVkaWFQbGF5
YmFja1JlcXVpcmVzUGxheXNJbmxpbmVBdHRyaWJ1dGU6Tk9dOworICAgICAgICBbY29uZmlndXJh
dGlvbiBfc2V0SW52aXNpYmxlQXV0b3BsYXlOb3RQZXJtaXR0ZWQ6Tk9dOworICAgICAgICBbY29u
ZmlndXJhdGlvbiBfc2V0TWVkaWFEYXRhTG9hZHNBdXRvbWF0aWNhbGx5OllFU107CisgICAgICAg
IFtjb25maWd1cmF0aW9uIHNldFJlcXVpcmVzVXNlckFjdGlvbkZvck1lZGlhUGxheWJhY2s6Tk9d
OwogI2VuZGlmCi0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVp
cmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwor
ICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZv
clBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKIAogI2lmIFVTRShTWVNURU1f
UFJFVklFVykKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5fc3lzdGVtUHJldmlld0Vu
YWJsZWQgPSBZRVM7CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRTeXN0ZW1QcmV2aWV3RW5h
YmxlZDpZRVNdOwogI2VuZGlmCisgICAgICAgIHJldHVybiBjb25maWd1cmF0aW9uOworICAgIH0o
KTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29jb2FQbGF0Zm9ybUluaXRpYWxpemUoKQpA
QCAtMTA3LDEyICsxMTcsMTIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29jb2FQbGF0Zm9ybUlu
aXRpYWxpemUoKQogCiBXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ29udGV4
dCgpCiB7Ci0gICAgcmV0dXJuIChfX2JyaWRnZSBXS0NvbnRleHRSZWYpZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7CisgICAgcmV0dXJuIChfX2JyaWRnZSBXS0NvbnRleHRS
ZWYpW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgcHJvY2Vzc1Bvb2xdOwogfQogCiBXS1By
ZWZlcmVuY2VzUmVmIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVByZWZlcmVuY2VzKCkKIHsKLSAg
ICByZXR1cm4gKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24ucHJlZmVyZW5jZXM7CisgICAgcmV0dXJuIChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVm
KVtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHByZWZlcmVuY2VzXTsKIH0KIAogVGVzdEZl
YXR1cmVzIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVNwZWNpZmljRmVhdHVyZU92ZXJyaWRlc0Rl
ZmF1bHRzRm9yVGVzdChjb25zdCBUZXN0Q29tbWFuZCYpIGNvbnN0CkBAIC0xNDMsMTIgKzE1Mywx
MiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUoV0tQ
YWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVAogI2VuZGlmCiAgICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IChfX2JyaWRnZSBXS1dlYnNpdGVEYXRhU3RvcmVSZWYpYWRvcHROUyhbW1dLV2Vi
c2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjp3ZWJzaXRlRGF0YVN0
b3JlQ29uZmlnLmdldCgpXSkuZ2V0KCk7CiAgICAgfSBlbHNlCi0gICAgICAgIG1fd2Vic2l0ZURh
dGFTdG9yZSA9IChfX2JyaWRnZSBXS1dlYnNpdGVEYXRhU3RvcmVSZWYpZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZTsKKyAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3Jl
ID0gKF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilbZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24oKSB3ZWJzaXRlRGF0YVN0b3JlXTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxh
dGZvcm1DcmVhdGVXZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHRp
b25zJiBvcHRpb25zKQogewotICAgIGF1dG8gY29waWVkQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIGNvcHldKTsKKyAgICBhdXRvIGNvcGllZENvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIGNvcHldKTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKG9wdGlvbnMudXNlRGF0YURldGVj
dGlvbigpKQpAQCAtMTkxLDcgKzIwMSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3Jt
Q3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0CiAKIFBs
YXRmb3JtV2ViVmlldyogVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKFBs
YXRmb3JtV2ViVmlldyogcGFyZW50VmlldywgV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3Qg
VGVzdE9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBuZXdDb25maWd1cmF0aW9uID0gYWRv
cHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gY29weV0pOworICAgIGF1dG8gbmV3Q29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgY29weV0p
OwogICAgIFtuZXdDb25maWd1cmF0aW9uIF9zZXRSZWxhdGVkV2ViVmlldzpzdGF0aWNfY2FzdDxX
S1dlYlZpZXcqPihwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSldOwogICAgIGlmIChbbmV3Q29u
ZmlndXJhdGlvbiBfcmVsYXRlZFdlYlZpZXddKQogICAgICAgICBbbmV3Q29uZmlndXJhdGlvbiBz
ZXRXZWJzaXRlRGF0YVN0b3JlOltuZXdDb25maWd1cmF0aW9uIF9yZWxhdGVkV2ViVmlld10uY29u
ZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlXTsKQEAgLTIxNCw3ICsyMjQsNyBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpmaW5pc2hDcmVhdGluZ1BsYXRmb3JtV2ViVmlldyhQbGF0Zm9ybVdlYlZp
ZXcqIHZpZXcsIGNvbnN0CiBXS0NvbnRleHRSZWYgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQWRq
dXN0Q29udGV4dChXS0NvbnRleHRSZWYgY29udGV4dCwgV0tDb250ZXh0Q29uZmlndXJhdGlvblJl
ZiBjb250ZXh0Q29uZmlndXJhdGlvbikKIHsKICAgICBpbml0aWFsaXplV2ViVmlld0NvbmZpZ3Vy
YXRpb24obGlicmFyeVBhdGhGb3JUZXN0aW5nKCksIGluamVjdGVkQnVuZGxlUGF0aCgpLCBjb250
ZXh0LCBjb250ZXh0Q29uZmlndXJhdGlvbik7Ci0gICAgcmV0dXJuIChfX2JyaWRnZSBXS0NvbnRl
eHRSZWYpZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ucHJvY2Vzc1Bvb2w7CisgICAgcmV0dXJu
IChfX2JyaWRnZSBXS0NvbnRleHRSZWYpW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgcHJv
Y2Vzc1Bvb2xdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybVJ1blVudGlsKGJv
b2wmIGRvbmUsIFdURjo6U2Vjb25kcyB0aW1lb3V0KQpAQCAtMjkzLDcgKzMwMyw3IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmNvY29hUmVzZXRTdGF0ZVRvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBU
ZXN0T3B0aW9ucyYgb3B0aW9uCiAgICAgICAgIFtwbGF0Zm9ybVZpZXcuY29uZmlndXJhdGlvbi5w
cmVmZXJlbmNlcyBzZXRUZXh0SW50ZXJhY3Rpb25FbmFibGVkOm9wdGlvbnMudGV4dEludGVyYWN0
aW9uRW5hYmxlZCgpXTsKICAgICB9CiAKLSAgICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVn
YXRlQ2xpZW50IHNldEFsbG93UmFpc2luZ1F1b3RhOllFU107CisgICAgW2dsb2JhbFdlYnNpdGVE
YXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCgpIHNldEFsbG93UmFpc2luZ1F1b3RhOllFU107CiAKICAg
ICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzRm9y
VGVzdGluZyhvcHRpb25zLmFkZGl0aW9uYWxTdXBwb3J0ZWRJbWFnZVR5cGVzKCkuY19zdHIoKSk7
CiB9CkBAIC0zMzcsNyArMzQ3LDcgQEAgdW5zaWduZWQgVGVzdENvbnRyb2xsZXI6OmltYWdlQ291
bnRJbkdlbmVyYWxQYXN0ZWJvYXJkKCkgY29uc3QKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnJlbW92
ZUFsbFNlc3Npb25DcmVkZW50aWFscygpCiB7CiAgICAgYXV0byB0eXBlcyA9IGFkb3B0TlMoW1tO
U1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOl9XS1dlYnNpdGVEYXRhVHlwZUNyZWRlbnRpYWxz
LCBuaWxdKTsKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSByZW1vdmVEYXRhT2ZUeXBlczp0eXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlz
dGFudFBhc3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CisgICAgW1tnbG9iYWxXZWJWaWV3Q29u
ZmlndXJhdGlvbigpIHdlYnNpdGVEYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOnR5cGVzLmdl
dCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6
XigpIHsKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzKCk7CiAgICAgfV07CiB9CkBAIC0zNDgsNyArMzU4LDcgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoKQogICAgIGlmICghcGFyZW50Vmll
dykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndl
YnNpdGVEYXRhU3RvcmUgX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzRm9yOnBhcmVudFZpZXct
PnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmluZyAqPiAq
ZG9tYWlucykgeworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRlRGF0
YVN0b3JlXSBfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6cGFyZW50Vmlldy0+cGxhdGZv
cm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSB7CiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhtYWtlVmVjdG9yPFN0cmluZz4oZG9tYWlucykpOwogICAgIH1dOwogfQpAQCAt
MzU5LDcgKzM2OSw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmxvYWRlZFN1YnJlc291cmNlRG9t
YWlucygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAg
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgX2xvYWRlZFN1YnJl
c291cmNlRG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICBbW2dsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uKCkgd2Vic2l0ZURhdGFTdG9yZV0gX2xvYWRlZFN1YnJlc291cmNlRG9t
YWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKICAgICAgICAgbV9jdXJyZW50SW52b2NhdGlv
bi0+ZGlkUmVjZWl2ZUxvYWRlZFN1YnJlc291cmNlRG9tYWlucyhtYWtlVmVjdG9yPFN0cmluZz4o
ZG9tYWlucykpOwogICAgIH1dOwogfQpAQCAtMzcwLDE0ICszODAsMTQgQEAgdm9pZCBUZXN0Q29u
dHJvbGxlcjo6Y2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKQogICAgIGlmICghcGFyZW50
VmlldykKICAgICAgICAgcmV0dXJuOwogCi0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
LndlYnNpdGVEYXRhU3RvcmUgX2NsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBhcmVu
dFZpZXctPnBsYXRmb3JtVmlldygpXTsKKyAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
KCkgd2Vic2l0ZURhdGFTdG9yZV0gX2NsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpXTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5q
ZWN0VXNlclNjcmlwdChXS1N0cmluZ1JlZiBzY3JpcHQpCiB7CiAgICAgYXV0byB1c2VyU2NyaXB0
ID0gYWRvcHROUyhbW1dLVXNlclNjcmlwdCBhbGxvY10gaW5pdFdpdGhTb3VyY2U6IHRvV1RGU3Ry
aW5nKHNjcmlwdCkgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25UaW1lQXREb2N1
bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk9dKTsKIAotICAgIFtbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRVc2VyU2NyaXB0OiB1c2VyU2Ny
aXB0LmdldCgpXTsKKyAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgdXNlckNvbnRl
bnRDb250cm9sbGVyXSBhZGRVc2VyU2NyaXB0OiB1c2VyU2NyaXB0LmdldCgpXTsKIH0KIAogdm9p
ZCBUZXN0Q29udHJvbGxlcjo6YWRkVGVzdEtleVRvS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBwcml2
YXRlS2V5QmFzZTY0LCBjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJiBhcHBs
aWNhdGlvblRhZ0Jhc2U2NCkKQEAgLTQ0OSwxNCArNDU5LDE0IEBAIGJvb2wgVGVzdENvbnRyb2xs
ZXI6OmtleUV4aXN0c0luS2V5Y2hhaW4oY29uc3QgU3RyaW5nJiBhdHRyTGFiZWwsIGNvbnN0IFN0
cmluZyYKIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dTdG9yYWdlUXVvdGFJbmNyZWFz
ZShib29sIHZhbHVlKQogewotICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGll
bnQgc2V0QWxsb3dSYWlzaW5nUXVvdGE6IHZhbHVlXTsKKyAgICBbZ2xvYmFsV2Vic2l0ZURhdGFT
dG9yZURlbGVnYXRlQ2xpZW50KCkgc2V0QWxsb3dSYWlzaW5nUXVvdGE6IHZhbHVlXTsKIH0KIAog
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoYm9vbCBhbGxv
d3MpCiB7CiAgICAgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZSA9IGFsbG93czsKICAgICBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3Rp
bmcod2Vic2l0ZURhdGFTdG9yZSgpLCBhbGxvd3MpOwotICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGVDbGllbnQgc2V0QWxsb3dBbnlTU0xDZXJ0aWZpY2F0ZTogYWxsb3dzXTsKKyAg
ICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50KCkgc2V0QWxsb3dBbnlTU0xD
ZXJ0aWZpY2F0ZTogYWxsb3dzXTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxlcjo6aW5zdGFsbEN1
c3RvbU1lbnVBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGRpc21pc3Nlc0F1dG9tYXRp
Y2FsbHkpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0ZWRU
b3VjaGVzRGVidWdXaW5kb3cubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0
ZWRUb3VjaGVzRGVidWdXaW5kb3cubW0KaW5kZXggN2Q2M2YzMzg1OWQ2ZDgzYzYxNjM4ZWVjNTQ0
YjhiNDliOTQ3MTM1Yi4uM2Y4N2U2OTBhYzJlYjFmNGRmY2RjMTVjMTAzZTBlN2FkZjc1ZjYyNSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvR2VuZXJhdGVkVG91Y2hlc0Rl
YnVnV2luZG93Lm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvdy5tbQpAQCAtNDMsMTEgKzQzLDExIEBAIEBpbXBsZW1lbnRhdGlvbiBH
ZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cKICsgKEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRv
dyAqKXNoYXJlZEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdwogewogICAgIHN0YXRpYyBkaXNw
YXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBHZW5lcmF0ZWRUb3VjaGVzRGVidWdX
aW5kb3cgKnRvdWNoV2luZG93ID0gbmlsOworICAgIHN0YXRpYyBSZXRhaW5QdHI8R2VuZXJhdGVk
VG91Y2hlc0RlYnVnV2luZG93PiB0b3VjaFdpbmRvdzsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNl
VG9rZW4sIF57Ci0gICAgICAgIHRvdWNoV2luZG93ID0gW1tHZW5lcmF0ZWRUb3VjaGVzRGVidWdX
aW5kb3cgYWxsb2NdIGluaXRdOworICAgICAgICB0b3VjaFdpbmRvdyA9IGFkb3B0TlMoW1tHZW5l
cmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cgYWxsb2NdIGluaXRdKTsKICAgICB9KTsKLSAgICByZXR1
cm4gdG91Y2hXaW5kb3c7CisgICAgcmV0dXJuIHRvdWNoV2luZG93LmdldCgpOwogfQogCiAtICh2
b2lkKWRlYWxsb2MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5l
cmF0b3IubW0KaW5kZXggMTJiMzU2MTczMmE3ZTQzM2UzNzAyN2YxMzJlZjQzZDgxZjkwMGRkNS4u
MzFiNDY1MGUzNTYxMTljMDI0MDE2NjRjZTAyNzY5NDhkYTAzNWVkOCAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTE2MCwxMSArMTYw
LDggQEAgQGltcGxlbWVudGF0aW9uIEhJREV2ZW50R2VuZXJhdG9yIHsKIAogKyAoSElERXZlbnRH
ZW5lcmF0b3IgKilzaGFyZWRISURFdmVudEdlbmVyYXRvcgogewotICAgIHN0YXRpYyBISURFdmVu
dEdlbmVyYXRvciAqZXZlbnRHZW5lcmF0b3IgPSBuaWw7Ci0gICAgaWYgKCFldmVudEdlbmVyYXRv
cikKLSAgICAgICAgZXZlbnRHZW5lcmF0b3IgPSBbW0hJREV2ZW50R2VuZXJhdG9yIGFsbG9jXSBp
bml0XTsKLQotICAgIHJldHVybiBldmVudEdlbmVyYXRvcjsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8UmV0YWluUHRyPEhJREV2ZW50R2VuZXJhdG9yPj4gZXZlbnRHZW5lcmF0b3IgPSBhZG9w
dE5TKFtbSElERXZlbnRHZW5lcmF0b3IgYWxsb2NdIGluaXRdKTsKKyAgICByZXR1cm4gZXZlbnRH
ZW5lcmF0b3IuZ2V0KCkuZ2V0KCk7CiB9CiAKICsgKENGSW5kZXgpbmV4dEV2ZW50Q2FsbGJhY2tJ
RApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJN
YWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpp
bmRleCA0ZGI1MTM5ZGJlODk2ZWZhMGY3NWQ3MzMxMjM4NmU5YzViY2UzY2E3Li44NWEyYzc0ZDJk
OGI3MGFjZWI4ZTFmMTI3YWZlZWE4ZDUyZTI3N2E5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
VGVzdENvbnRyb2xsZXI6OmNvbmZpZ3VyZUNvbnRlbnRFeHRlbnNpb25Gb3JUZXN0KGNvbnN0IFRl
c3RJbnZvY2F0aW9uJiB0ZXN0CiAgICAgYXV0byB0ZXN0VVJMID0gYWRvcHRDRihXS1VSTENvcHlD
RlVSTChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0ZXN0LnVybCgpKSk7CiAgICAgTlNVUkwgKmZpbHRl
clVSTCA9IFsoX19icmlkZ2UgTlNVUkwgKil0ZXN0VVJMLmdldCgpIFVSTEJ5QXBwZW5kaW5nUGF0
aEV4dGVuc2lvbjpAImpzb24iXTsKIAotICAgIF9fYmxvY2sgTlNTdHJpbmcgKmNvbnRlbnRFeHRl
bnNpb25TdHJpbmc7CisgICAgX19ibG9jayBSZXRhaW5QdHI8TlNTdHJpbmc+IGNvbnRlbnRFeHRl
bnNpb25TdHJpbmc7CiAgICAgX19ibG9jayBib29sIGRvbmVGZXRjaGluZ0NvbnRlbnRFeHRlbnNp
b24gPSBmYWxzZTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbV0tUUlNlc3Npb25EZWxl
Z2F0ZSBuZXddKTsKICAgICBOU1VSTFNlc3Npb24gKnNlc3Npb24gPSBbTlNVUkxTZXNzaW9uIHNl
c3Npb25XaXRoQ29uZmlndXJhdGlvbjpbTlNVUkxTZXNzaW9uQ29uZmlndXJhdGlvbiBlcGhlbWVy
YWxTZXNzaW9uQ29uZmlndXJhdGlvbl0gZGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCkgZGVsZWdhdGVR
dWV1ZTpbTlNPcGVyYXRpb25RdWV1ZSBtYWluUXVldWVdXTsKQEAgLTE5NSw3ICsxOTUsNyBAQCB2
b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVDb250ZW50RXh0ZW5zaW9uRm9yVGVzdChjb25z
dCBUZXN0SW52b2NhdGlvbiYgdGVzdAogICAgICAgICBBU1NFUlQoZGF0YSk7CiAgICAgICAgIEFT
U0VSVChyZXNwb25zZSk7CiAgICAgICAgIEFTU0VSVCghZXJyb3IpOwotICAgICAgICBjb250ZW50
RXh0ZW5zaW9uU3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOmRhdGEgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddOworICAgICAgICBjb250ZW50RXh0ZW5zaW9uU3Ry
aW5nID0gYWRvcHROUyhbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10pOwogICAgICAgICBkb25lRmV0Y2hpbmdDb250ZW50RXh0
ZW5zaW9uID0gdHJ1ZTsKICAgICB9XTsKICAgICBbdGFzayByZXN1bWVdOwpAQCAtMjEwLDcgKzIx
MCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNvbmZpZ3VyZUNvbnRlbnRFeHRlbnNpb25Gb3JU
ZXN0KGNvbnN0IFRlc3RJbnZvY2F0aW9uJiB0ZXN0CiAgICAgfSBlbHNlCiAgICAgICAgIHRlbXBE
aXIgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltOU1RlbXBvcmFyeURpcmVjdG9yeSgpIHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAIkNvbnRlbnRFeHRlbnNpb25zIl0gaXNEaXJlY3Rv
cnk6WUVTXTsKIAotICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBzdG9yZVdpdGhV
Ukw6dGVtcERpcl0gY29tcGlsZUNvbnRlbnRFeHRlbnNpb25Gb3JJZGVudGlmaWVyOkAiVGVzdENv
bnRlbnRFeHRlbnNpb25zIiBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjpjb250ZW50RXh0ZW5zaW9u
U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmZpbHRlciwg
TlNFcnJvciAqZXJyb3IpCisgICAgW1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHN0b3Jl
V2l0aFVSTDp0ZW1wRGlyXSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJU
ZXN0Q29udGVudEV4dGVuc2lvbnMiIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNvbnRlbnRFeHRl
bnNpb25TdHJpbmcuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihfV0tVc2VyQ29udGVudEZpbHRl
ciAqZmlsdGVyLCBOU0Vycm9yICplcnJvcikKICAgICB7CiAgICAgICAgIGlmICghZXJyb3IpCiAg
ICAgICAgICAgICBbbWFpbldlYlZpZXcoKS0+cGxhdGZvcm1WaWV3KCkuY29uZmlndXJhdGlvbi51
c2VyQ29udGVudENvbnRyb2xsZXIgX2FkZFVzZXJDb250ZW50RmlsdGVyOmZpbHRlcl07CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0UnVubmVyUGFzdGVi
b2FyZC5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0
ZWJvYXJkLm1tCmluZGV4IDEzMTk5ZDI0ZjU0OTViOGMyMjIwNmY4MzBlY2UyNzNmODNmZGVmOTAu
LjVlMzE2MzI3MjY1YzU0NmI4ZmJiOTA4NzdmNWE5NzFhZGUyMzhkN2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJk
Lm1tCkBAIC00NSw3ICs0NSw3IEBAIEBpbnRlcmZhY2UgTG9jYWxQYXN0ZWJvYXJkIDogTlNQYXN0
ZWJvYXJkCiAtKGlkKWluaXRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1lOwogQGVuZAogCi1zdGF0
aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAqbG9jYWxQYXN0ZWJvYXJkczsKK3N0YXRpYyBSZXRhaW5Q
dHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gbG9jYWxQYXN0ZWJvYXJkczsKIAogQGltcGxlbWVudGF0
aW9uIFdlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkCiAKQEAgLTU2LDEyICs1NiwxMiBAQCArIChO
U1Bhc3RlYm9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKICAgICBp
ZiAoIW5hbWUpCiAgICAgICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkxv
Y2FsUGFzdGVib2FyZCVkIiwgKytudW1iZXJdOwogICAgIGlmICghbG9jYWxQYXN0ZWJvYXJkcykK
LSAgICAgICAgbG9jYWxQYXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10g
aW5pdF07CisgICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIGlmIChMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9h
cmQgPSBbbG9jYWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV0pCiAgICAgICAgIHJldHVy
biBwYXN0ZWJvYXJkOwogICAgIGF1dG8gcGFzdGVib2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3Rl
Ym9hcmQgYWxsb2NdIGluaXRXaXRoTmFtZTpuYW1lXSk7CiAgICAgW2xvY2FsUGFzdGVib2FyZHMg
c2V0T2JqZWN0OnBhc3RlYm9hcmQuZ2V0KCkgZm9yS2V5Om5hbWVdOwotICAgIHJldHVybiBwYXN0
ZWJvYXJkLmdldCgpOworICAgIHJldHVybiBwYXN0ZWJvYXJkLmF1dG9yZWxlYXNlKCk7CiB9CiAK
IC8vIFRoaXMgbWV0aG9kIGNyYXNoZXMgd2hlbiBjYWxsZWQgb24gTG9jYWxQYXN0ZWJvYXJkLgpA
QCAtNzIsNyArNzIsNyBAQCAtICh2b2lkKV91cGRhdGVUeXBlQ2FjaGVJZk5lZWRlZAogCiArICh2
b2lkKXJlbGVhc2VMb2NhbFBhc3RlYm9hcmRzCiB7Ci0gICAgYXV0byBvbGRMb2NhbFBhc3RlQm9h
cmRzID0gYWRvcHROUyhzdGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVib2FyZHMsIG5pbCkpOworICAg
IGxvY2FsUGFzdGVib2FyZHMgPSBuaWw7CiB9CiAKIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3Ig
SlMgc28gdGhhdCBpdCBkb2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBjcmVhdGUgYSBOU0FycmF5IG9u
IHRoZSBvYmpjIHNpZGUgaW5zdGVhZAo=
</data>
<flag name="commit-queue"
          id="440066"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421269</attachid>
            <date>2021-02-22 16:59:02 -0800</date>
            <delta_ts>2021-02-22 17:09:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222288-20210222165901.patch</filename>
            <type>text/plain</type>
            <size>150354</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFlZDY5YjRkNTc2MTZhYThmMzVlZTgwOWJkZjcyOTgz
ZGM2MzM4OS4uOTZkMDJiMTVjOWFjMWIxNjk2OTQzMWI3YTc0ODVlYTQ5ODQ0NDYxZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NyBAQAorMjAyMS0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBbW09iamNDbGFzcyBhbGxvY10gaW5pdF0g
dG8gYXZvaWQgbGVha3MgaW4gVG9vbHMvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9T
Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzY3JvbGxUb09mZnNldCk6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlU2Nyb2xsVG9P
ZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1pbmltdW1ab29t
U2NhbGUgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1heGlt
dW1ab29tU2NhbGUgY29uc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbToKKyAgICAgICAgKGZvbnRBbGxvd0xpc3QpOgorICAgICAgICAoYWRqdXN0V2Vi
RG9jdW1lbnRGb3JGbGV4aWJsZVZpZXdwb3J0KToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycyk6Cisg
ICAgICAgIChyZWxlYXNlR2xvYmFsQ29udHJvbGxlcnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAgICAgKCtbRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkIF9wYXN0ZWJvYXJkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW0R1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAo
ZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3VyY2Up
OgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgYmVnaW5EcmFnV2l0aEZpbGVQcm9taXNlczpd
KToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhNb2RpZmll
cnM6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3ZlVG9YOlk6
XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSBkaWRDbGVhcldpbmRvd09iamVjdEluU3RhbmRh
cmRXb3JsZEZvckZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRl
IHdlYlZpZXc6ZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlk
ZUJhY2s6Zm9yVmlldzpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJv
bXB0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9y
d2FyZC5tbToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldzo6
U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50
V2ViVmlld1RpbWVvdXQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9u
Lm1tOgorICAgICAgICAoLVtUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgd2ViVmlldzpjcmVh
dGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0
dXJlczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJJ
bml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgIChVc2VySW5pdGlh
dGVkQWN0aW9uVGVzdDo6VVJMV2l0aEZyYWdtZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tp
ZVN0b3JlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVn
YXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW06CisgICAgICAgICgrW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNl
dFVwV2l0aEZyYW1lOnRlc3RQYWdlOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5p
dGlhbGl6YXRpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW06CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMv
Q3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50
SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVu
dFRlc3QubW06CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRlc3RpbmdXZWJWaWV3IGxl
YWRpbmdJdGVtc0ZvcldlYlZpZXc6XSk6CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRl
c3RpbmdXZWJWaWV3IHRyYWlsaW5nSXRlbXNGb3JXZWJWaWV3Ol0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2Fu
ZGlkYXRlVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgorICAgICAgICAoK1tUZXN0
Rm9udE9wdGlvbnMgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9tYWluTWFjLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAg
IChXVFI6Omdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCk6CisgICAgICAgIChX
VFI6OmluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQWRqdXN0Q29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
b2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldEFsbG93U3RvcmFnZVF1b3RhSW5jcmVhc2UpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbToK
KyAgICAgICAgKCtbR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93IHNoYXJlZEdlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvd10pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoK1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURF
dmVudEdlbmVyYXRvcl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29u
dGVudEV4dGVuc2lvbkZvclRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tXZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorCiAyMDIxLTAyLTIy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMo
KSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1Mu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRl
eCBkNzA5YTJlOTE2YTUxMWI3MDYxOGU5MTJhNDZkNzZiYjgwNzliZTE0Li4xZmViNGFkNDQ5ZGNk
NzM4MGRmZmU0YzhhMmI3MTJjNzA1NDI2NjEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQpAQCAtNDksOCArNDksOCBAQAogI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1leHRlcm4gRHVtcFJl
bmRlclRyZWVXaW5kb3cgKmdEcnRXaW5kb3c7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVCcm93c2Vy
VmlldyAqZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdp
bmRvdz4gZ0RydFdpbmRvdzsKK2V4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2Vy
Vmlldz4gZ1dlYkJyb3dzZXJWaWV3OwogCiBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0
bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZW50YWxSZXBh
aW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdTZWxlY3Rpb25SZWN0KQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggMjExZjg2MGZiMWM2NWY1MTg0NzZjOTkxNzU1MzBlZWU3NjJiMGI0MS4uYTFlZjJlZDA5
NzkwMTIxNDdmNjllMDk0NTNmNmVlY2U4MGEzZjRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zNSw4ICszNSw4IEBACiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7Ci1leHRlcm4g
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmlldzsKK2V4dGVybiBSZXRh
aW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2VyVmlldz4gZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJu
IFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3Owog
CiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
CiBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVySU9TOjp6b29tU2NhbGUoKSBjb25zdAogewotICAg
IHJldHVybiBnV2ViU2Nyb2xsVmlldy56b29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xs
VmlldyB6b29tU2NhbGVdOwogfQogCiBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgbG9uZyB4LCBsb25nIHksIFNj
cm9sbFRvT3B0aW9ucyogb3B0aW9ucykKQEAgLTEwOCwxMyArMTA4LDEzIEBAIGRvdWJsZSBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09w
dGlvbnMqIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBvZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBhdXRvIG9m
ZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3NhcnkoZ1dlYlNjcm9sbFZpZXcuZ2V0
KCksIHgsIHksIG9wdGlvbnMpOwogICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0
Om9mZnNldCBhbmltYXRlZDpZRVNdOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6
aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyog
b3B0aW9ucykKIHsKLSAgICBhdXRvIG9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNl
c3NhcnkoZ1dlYlNjcm9sbFZpZXcsIHgsIHksIG9wdGlvbnMpOworICAgIGF1dG8gb2Zmc2V0ID0g
Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeShnV2ViU2Nyb2xsVmlldy5nZXQoKSwgeCwg
eSwgb3B0aW9ucyk7CiAgICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0
IGFuaW1hdGVkOk5PXTsKIH0KIApAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkKIAogZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6bWluaW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGdXZWJTY3JvbGxWaWV3Lm1pbmltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2Vi
U2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXTsKIH0KIAogZG91YmxlIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdXZWJTY3Jv
bGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBtYXhp
bXVtWm9vbVNjYWxlXTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVySU9TOjpj
b250ZW50VmlzaWJsZVJlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDM3OWQ1MjBkNzM5NzkyN2JmZThhOGY5ODYwODU5ZjZlYzgxMzUy
YTUuLjEzY2FkOTAzMjg1YjllNzE4NTA5Y2NkZGI4ZjE2NDhjNzE2MzM3OTcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJMKTsKIAogdm9sYXRp
bGUgYm9vbCBkb25lOwogCi1OYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyID0gbnVsbHB0cjsKK1JldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOwogUmVmUHRyPFRlc3RSdW5uZXI+IGdUZXN0UnVubmVyOwogCiBPcHRpb25h
bDxXVFI6OlRlc3RPcHRpb25zPiBtYWluRnJhbWVUZXN0T3B0aW9uczsKQEAgLTIwNSw3ICsyMDUs
NyBAQCBXZWJGcmFtZSAqbWFpbkZyYW1lID0gbmlsOwogV2ViRnJhbWUgKnRvcExvYWRpbmdGcmFt
ZSA9IG5pbDsgLy8gIW5pbCBpZmYgYSBsb2FkIGlzIGluIHByb2dyZXNzCiAKICNpZiBQTEFURk9S
TShNQUMpCi1OU1dpbmRvdyAqbWFpbldpbmRvdyA9IG5pbDsKK1JldGFpblB0cjxOU1dpbmRvdz4g
bWFpbldpbmRvdzsKICNlbmRpZgogCiBDRk11dGFibGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM9IG51
bGxwdHI7CkBAIC0yMTgsMTUgKzIxOCwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYlZpZXc+JiBn
bG9iYWxXZWJWaWV3KCkKIH0KIAogLy8gRGVsZWdhdGVzCi1zdGF0aWMgRnJhbWVMb2FkRGVsZWdh
dGUgKmZyYW1lTG9hZERlbGVnYXRlOwotc3RhdGljIFVJRGVsZWdhdGUgKnVpRGVsZWdhdGU7Ci1z
dGF0aWMgRWRpdGluZ0RlbGVnYXRlICplZGl0aW5nRGVsZWdhdGU7Ci1zdGF0aWMgUmVzb3VyY2VM
b2FkRGVsZWdhdGUgKnJlc291cmNlTG9hZERlbGVnYXRlOwotc3RhdGljIEhpc3RvcnlEZWxlZ2F0
ZSAqaGlzdG9yeURlbGVnYXRlOwotUG9saWN5RGVsZWdhdGUgKnBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKLURlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVsdFBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKK3N0YXRpYyBSZXRhaW5QdHI8RnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVn
YXRlOworc3RhdGljIFJldGFpblB0cjxVSURlbGVnYXRlPiB1aURlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxFZGl0aW5nRGVsZWdhdGU+IGVkaXRpbmdEZWxlZ2F0ZTsKK3N0YXRpYyBSZXRhaW5Q
dHI8UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKK1JldGFpblB0cjxQb2xp
Y3lEZWxlZ2F0ZT4gcG9saWN5RGVsZWdhdGU7CitSZXRhaW5QdHI8RGVmYXVsdFBvbGljeURlbGVn
YXRlPiBkZWZhdWx0UG9saWN5RGVsZWdhdGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0
YXRpYyBTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlICpzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRl
Oworc3RhdGljIFJldGFpblB0cjxTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlPiBzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlOwogI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckFsbFRl
c3RzOwpAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+
JiBwcmV2VGVzdEJGSXRlbSgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY29uc3QgQ0dS
ZWN0IGxheW91dFRlc3RWaWV3cG9ydFJlY3QgPSB7IHswLCAwfSwge3N0YXRpY19jYXN0PENHRmxv
YXQ+KFRlc3RSdW5uZXI6OnZpZXdXaWR0aCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5u
ZXI6OnZpZXdIZWlnaHQpfSB9OwotRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyAqZ1dlYkJyb3dz
ZXJWaWV3ID0gbmlsOwotRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmll
dyA9IG5pbDsKLUR1bXBSZW5kZXJUcmVlV2luZG93ICpnRHJ0V2luZG93ID0gbmlsOworUmV0YWlu
UHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKK1JldGFpblB0
cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3OworUmV0YWluUHRy
PER1bXBSZW5kZXJUcmVlV2luZG93PiBnRHJ0V2luZG93OwogI2VuZGlmCiAKIHZvaWQgc2V0UGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oQ0ZTdHJpbmdSZWYgdXJsKQpAQCAtNDE3LDIy
ICs0MTcsMTkgQEAgc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRp
YyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqYXZhaWxh
YmxlRm9udHM7Ci0gICAgaWYgKGF2YWlsYWJsZUZvbnRzKQotICAgICAgICByZXR1cm4gYXZhaWxh
YmxlRm9udHM7Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXZhaWxhYmxlRm9udExpc3QgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBmb3IgKE5TU3RyaW5nICpmb250RmFtaWx5
IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKLSAgICAgICAgTlNBcnJheSogZm9udHNGb3JG
YW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJl
cnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07Ci0gICAgICAgIFthdmFpbGFibGVGb250TGlzdCBh
ZGRPYmplY3Q6Zm9udEZhbWlseV07Ci0gICAgICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4g
Zm9udHNGb3JGYW1pbHkpIHsKLSAgICAgICAgICAgIC8vIEZvbnQgbmFtZSBpcyB0aGUgZmlyc3Qg
ZW50cnkgaW4gdGhlIGFycmF5LgotICAgICAgICAgICAgW2F2YWlsYWJsZUZvbnRMaXN0IGFkZE9i
amVjdDpbZm9udEluZm8gb2JqZWN0QXRJbmRleDowXV07CisgICAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBhdmFpbGFibGVGb250cyA9IFtdIHsKKyAgICAgICAgYXV0byBhdmFpbGFibGVGb250
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3Ig
KE5TU3RyaW5nICpmb250RmFtaWx5IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKKyAgICAg
ICAgICAgIE5TQXJyYXkqIGZvbnRzRm9yRmFtaWx5ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmZvbnRGYW1pbHldOworICAg
ICAgICAgICAgW2F2YWlsYWJsZUZvbnRzIGFkZE9iamVjdDpmb250RmFtaWx5XTsKKyAgICAgICAg
ICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4gZm9udHNGb3JGYW1pbHkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGb250IG5hbWUgaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBhcnJheS4KKyAg
ICAgICAgICAgICAgICBbYXZhaWxhYmxlRm9udHMgYWRkT2JqZWN0Oltmb250SW5mbyBvYmplY3RB
dEluZGV4OjBdXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLQotICAgIGF2YWls
YWJsZUZvbnRzID0gYXZhaWxhYmxlRm9udExpc3Q7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRz
OworICAgICAgICByZXR1cm4gYXZhaWxhYmxlRm9udHM7CisgICAgfSgpOworICAgIHJldHVybiBh
dmFpbGFibGVGb250cy5nZXQoKTsKIH0KIAogLy8gQWN0aXZhdGluZyBzeXN0ZW0gY29waWVzIG9m
IHRoZXNlIGZvbnRzIG92ZXJyaWRlcyBhbnkgb3RoZXJzIHRoYXQgY291bGQgYmUgcHJlZmVycmVk
LCBzdWNoIGFzIG9uZXMKQEAgLTU3Niw3ICs1NzMsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RXZWJE
b2N1bWVudEZvckZsZXhpYmxlVmlld3BvcnQoVUlXZWJCcm93c2VyVmlldyAqd2ViQnJvd3NlclZp
ZQogICAgIC8vIEFkanVzdCB0aGUgdmlld3BvcnQgdmlldyBhbmQgdmlld3BvcnQgdG8gaGF2ZSBz
aW1pbGFyIGJlaGF2aW9yCiAgICAgLy8gYXMgdGhlIGJyb3dzZXIuCiAgICAgWyhEdW1wUmVuZGVy
VHJlZUJyb3dzZXJWaWV3ICopd2ViQnJvd3NlclZpZXcgc2V0U2Nyb2xsaW5nVXNlc1VJV2ViU2Ny
b2xsVmlldzpZRVNdOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXREZWxlZ2F0ZTpzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlXTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0RGVsZWdhdGU6c2Nyb2xs
Vmlld1Jlc2l6ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBDR1JlY3Qgc2NyZWVuQm91bmRzID0g
W1VJU2NyZWVuIG1haW5TY3JlZW5dLmJvdW5kczsKICAgICBDR1JlY3Qgdmlld3BvcnRSZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCBzY3JlZW5Cb3VuZHMuc2l6ZS53aWR0aCwgc2NyZWVuQm91bmRzLnNp
emUuaGVpZ2h0KTsKQEAgLTY4NywxMCArNjg0LDEwIEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6
QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAotICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdh
dGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTpl
ZGl0aW5nRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJl
c291cmNlTG9hZERlbGVnYXRlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0Rl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNv
dXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgX3NldEdlb2xvY2F0aW9uUHJv
dmlkZXI6W01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF1dOwogICAgIFt3ZWJWaWV3IF9z
ZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOltXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jayBzaGFyZWRdXTsKICAgICBbd2ViVmlldyBfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6W01v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBzaGFyZWRdXTsKQEAgLTcyMiwyMyArNzE5LDIyIEBA
IFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAg
ICAvLyBQdXQgaXQgYXQgLTEwMDAwLCAtMTAwMDAgaW4gImZsaXBwZWQgY29vcmRpbmF0ZXMiLCBz
aW5jZSBXZWJDb3JlIGFuZCB0aGUgRE9NIHVzZSBmbGlwcGVkIGNvb3JkaW5hdGVzLgogICAgIE5T
U2NyZWVuICpmaXJzdFNjcmVlbiA9IFtbTlNTY3JlZW4gc2NyZWVuc10gZmlyc3RPYmplY3RdOwog
ICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gKHNob3dXZWJWaWV3KSA/IE5TT2Zmc2V0UmVjdChyZWN0
LCAxMDAsIDEwMCkgOiBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbZmlyc3RTY3JlZW4gZnJh
bWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKLSAgICBEdW1wUmVu
ZGVyVHJlZVdpbmRvdyAqd2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgIG1haW5X
aW5kb3cgPSB3aW5kb3c7Ci0KLSAgICBbd2luZG93IHNldENvbG9yU3BhY2U6W2ZpcnN0U2NyZWVu
IGNvbG9yU3BhY2VdXTsKLSAgICBbd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjpOU1dpbmRv
d0NvbGxlY3Rpb25CZWhhdmlvclN0YXRpb25hcnldOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIG1haW5XaW5kb3cgPSBhZG9wdE5TKFtb
RHVtcFJlbmRlclRyZWVXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVj
dCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgW21haW5XaW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xv
c2VkOk5PXTsKKyAgICBbbWFpbldpbmRvdyBzZXRDb2xvclNwYWNlOltmaXJzdFNjcmVlbiBjb2xv
clNwYWNlXV07CisgICAgW21haW5XaW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOk5TV2luZG93
Q29sbGVjdGlvbkJlaGF2aW9yU3RhdGlvbmFyeV07CisgICAgW1ttYWluV2luZG93IGNvbnRlbnRW
aWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwogICAgIGlmIChzaG93V2ViVmlldykKLSAg
ICAgICAgW3dpbmRvdyBvcmRlckZyb250Om5pbF07CisgICAgICAgIFttYWluV2luZG93IG9yZGVy
RnJvbnQ6bmlsXTsKICAgICBlbHNlCi0gICAgICAgIFt3aW5kb3cgb3JkZXJCYWNrOm5pbF07Ci0g
ICAgW3dpbmRvdyBzZXRBdXRvZGlzcGxheTpOT107CisgICAgICAgIFttYWluV2luZG93IG9yZGVy
QmFjazpuaWxdOworICAgIFttYWluV2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKIAotICAgIFt3
aW5kb3cgc3RhcnRMaXN0ZW5pbmdGb3JBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ2hhbmdlc107Cisg
ICAgWyhEdW1wUmVuZGVyVHJlZVdpbmRvdyAqKW1haW5XaW5kb3cuZ2V0KCkgc3RhcnRMaXN0ZW5p
bmdGb3JBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ2hhbmdlc107CiAjZWxzZQotICAgIER1bXBSZW5k
ZXJUcmVlV2luZG93ICpkcnRXaW5kb3cgPSBbW0R1bXBSZW5kZXJUcmVlV2luZG93IGFsbG9jXSBp
bml0V2l0aExheWVyOlt3ZWJCcm93c2VyVmlldyBsYXllcl1dOworICAgIGF1dG8gZHJ0V2luZG93
ID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlV2luZG93IGFsbG9jXSBpbml0V2l0aExheWVyOlt3
ZWJCcm93c2VyVmlldyBsYXllcl1dKTsKICAgICBbZHJ0V2luZG93IHNldENvbnRlbnRWaWV3Ondl
YlZpZXcuZ2V0KCldOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXRXQUtXaW5kb3c6ZHJ0V2luZG93
XTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0V0FLV2luZG93OmRydFdpbmRvdy5nZXQoKV07CiAK
ICAgICBbW3dlYlZpZXcgd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6W1tbd2ViVmlldyBtYWlu
RnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XV07CiAKQEAgLTc1MCw4ICs3NDYsOCBAQCBS
ZXRhaW5QdHI8V2ViVmlldz4gY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAgICAg
W3VpV2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKV07CiAK
ICAgICAvLyBUaGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZpZXcgYXJlIHJlbGVhc2VkIHdo
ZW4gdGhlIER1bXBSZW5kZXJUcmVlV2luZG93IGlzIGNsb3NlZC4KLSAgICBkcnRXaW5kb3cudWlX
aW5kb3cgPSB1aVdpbmRvdy5nZXQoKTsKLSAgICBkcnRXaW5kb3cuYnJvd3NlclZpZXcgPSB3ZWJC
cm93c2VyVmlldy5nZXQoKTsKKyAgICBkcnRXaW5kb3cuZ2V0KCkudWlXaW5kb3cgPSB1aVdpbmRv
dy5nZXQoKTsKKyAgICBkcnRXaW5kb3cuZ2V0KCkuYnJvd3NlclZpZXcgPSB3ZWJCcm93c2VyVmll
dy5nZXQoKTsKIAogICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJl
ZVdlYlNjcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0VGVzdFZpZXdwb3J0UmVj
dF0pOwogICAgIFtzY3JvbGxWaWV3IGFkZFN1YnZpZXc6d2ViQnJvd3NlclZpZXcuZ2V0KCldOwpA
QCAtNzY5LDkgKzc2NSw5IEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zm
c2NyZWVuV2luZG93KCkKICNlbHNlCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIFVJVmll
d3MsIGFuZCBzZXQgdGhlIGtleSBVSVdpbmRvdyB0byBiZSBwYWludGVkLgogICAgIGlmICghZ1dl
YkJyb3dzZXJWaWV3KSB7Ci0gICAgICAgIGdXZWJCcm93c2VyVmlldyA9IFt3ZWJCcm93c2VyVmll
dyByZXRhaW5dOwotICAgICAgICBnV2ViU2Nyb2xsVmlldyA9IFtzY3JvbGxWaWV3IHJldGFpbl07
Ci0gICAgICAgIGdEcnRXaW5kb3cgPSBbZHJ0V2luZG93IHJldGFpbl07CisgICAgICAgIGdXZWJC
cm93c2VyVmlldyA9IFdURk1vdmUod2ViQnJvd3NlclZpZXcpOworICAgICAgICBnV2ViU2Nyb2xs
VmlldyA9IFdURk1vdmUoc2Nyb2xsVmlldyk7CisgICAgICAgIGdEcnRXaW5kb3cgPSBXVEZNb3Zl
KGRydFdpbmRvdyk7CiAgICAgICAgIFt1aVdpbmRvdyBtYWtlS2V5QW5kVmlzaWJsZV07CiAgICAg
ICAgIFt1aVdpbmRvdyByZXRhaW5dOwogICAgIH0KQEAgLTgwMiw3ICs3OTgsOSBAQCBzdGF0aWMg
dm9pZCBkZXN0cm95R2xvYmFsV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAgICAgLy8gaXQg
cHJvYmFibHkgd29uJ3QgY2F1c2UgYW55IHRyb3VibGUgKGFuZCB0aGlzIGlzIGp1c3QgYSB0ZXN0
IHRvb2wsIGFmdGVyIGFsbCkuCiAgICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJl
cXVlc3RzV2l0aFRhcmdldDp3aW5kb3ddOwogCi0gICAgW3dpbmRvdyBjbG9zZV07IC8vIHJlbGVh
c2VzIHdoZW4gY2xvc2VkCisgICAgW3dpbmRvdyBjbG9zZV07CisgICAgQVNTRVJUKHdpbmRvdyA9
PSBtYWluV2luZG93KTsKKyAgICBtYWluV2luZG93ID0gbmlsOwogI2Vsc2UKICAgICBhdXRvIHVp
V2luZG93ID0gYWRvcHROUyhbZ1dlYkJyb3dzZXJWaWV3IHdpbmRvd10pOwogICAgIFt1aVdpbmRv
dyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKQEAgLTk5MiwzNiArOTkwLDMxIEBAIHN0YXRpYyB2b2lk
IHNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzRm9yVGVzdGluZygpCiBzdGF0aWMgdm9pZCBh
bGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJl
bW92ZSB0aGVzZSBhbmQgbW92ZSB0byB0aGUgT2JqQyBzdGFuZGFyZCBbRm9vIHNoYXJlZEluc3Rh
bmNlXSBtb2RlbAotICAgIGdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IFtbTmF2aWdhdGlvbkNvbnRy
b2xsZXIgYWxsb2NdIGluaXRdOwotICAgIGZyYW1lTG9hZERlbGVnYXRlID0gW1tGcmFtZUxvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgdWlEZWxlZ2F0ZSA9IFtbVUlEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF07Ci0gICAgZWRpdGluZ0RlbGVnYXRlID0gW1tFZGl0aW5nRGVsZWdhdGUgYWxsb2Nd
IGluaXRdOwotICAgIHJlc291cmNlTG9hZERlbGVnYXRlID0gW1tSZXNvdXJjZUxvYWREZWxlZ2F0
ZSBhbGxvY10gaW5pdF07Ci0gICAgcG9saWN5RGVsZWdhdGUgPSBbW1BvbGljeURlbGVnYXRlIGFs
bG9jXSBpbml0XTsKLSAgICBoaXN0b3J5RGVsZWdhdGUgPSBbW0hpc3RvcnlEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF07Ci0gICAgZGVmYXVsdFBvbGljeURlbGVnYXRlID0gW1tEZWZhdWx0UG9saWN5RGVs
ZWdhdGUgYWxsb2NdIGluaXRdOworICAgIGdOYXZpZ2F0aW9uQ29udHJvbGxlciA9IGFkb3B0TlMo
W1tOYXZpZ2F0aW9uQ29udHJvbGxlciBhbGxvY10gaW5pdF0pOworICAgIGZyYW1lTG9hZERlbGVn
YXRlID0gYWRvcHROUyhbW0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgdWlE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgZWRpdGlu
Z0RlbGVnYXRlID0gYWRvcHROUyhbW0VkaXRpbmdEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Jlc291cmNlTG9hZERlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgcG9saWN5RGVsZWdhdGUgPSBhZG9wdE5TKFtbUG9saWN5RGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBoaXN0b3J5RGVsZWdhdGUgPSBhZG9wdE5TKFtbSGlzdG9y
eURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgZGVmYXVsdFBvbGljeURlbGVnYXRlID0gYWRv
cHROUyhbW0RlZmF1bHRQb2xpY3lEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9IFtbU2Nyb2xsVmll
d1Jlc2l6ZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CiAjZW5kaWYKIH0KIAotLy8gT2JqQysrIGRvZXNuJ3Qgc2VlbSB0byBsZXQgbWUgcGFzcyBOU09i
amVjdComIHNhZGx5Lgotc3RhdGljIGlubGluZSB2b2lkIHJlbGVhc2VBbmRaZXJvKE5TT2JqZWN0
Kiogb2JqZWN0KQotewotICAgIGF1dG8gb2xkT2JqZWN0ID0gYWRvcHROUygqb2JqZWN0KTsKLSAg
ICAqb2JqZWN0ID0gbmlsOwotfQotCiBzdGF0aWMgdm9pZCByZWxlYXNlR2xvYmFsQ29udHJvbGxl
cnMoKQogewotICAgIHJlbGVhc2VBbmRaZXJvKCZnTmF2aWdhdGlvbkNvbnRyb2xsZXIpOwotICAg
IHJlbGVhc2VBbmRaZXJvKCZmcmFtZUxvYWREZWxlZ2F0ZSk7Ci0gICAgcmVsZWFzZUFuZFplcm8o
JmVkaXRpbmdEZWxlZ2F0ZSk7Ci0gICAgcmVsZWFzZUFuZFplcm8oJnJlc291cmNlTG9hZERlbGVn
YXRlKTsKLSAgICByZWxlYXNlQW5kWmVybygmdWlEZWxlZ2F0ZSk7Ci0gICAgcmVsZWFzZUFuZFpl
cm8oJnBvbGljeURlbGVnYXRlKTsKKyAgICBnTmF2aWdhdGlvbkNvbnRyb2xsZXIgPSBuaWw7Cisg
ICAgZnJhbWVMb2FkRGVsZWdhdGUgPSBuaWw7CisgICAgZWRpdGluZ0RlbGVnYXRlID0gbmlsOwor
ICAgIHJlc291cmNlTG9hZERlbGVnYXRlID0gbmlsOworICAgIHVpRGVsZWdhdGUgPSBuaWw7Cisg
ICAgaGlzdG9yeURlbGVnYXRlID0gbmlsOworICAgIHBvbGljeURlbGVnYXRlID0gbmlsOworICAg
IGRlZmF1bHRQb2xpY3lEZWxlZ2F0ZSA9IG5pbDsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQot
ICAgIHJlbGVhc2VBbmRaZXJvKCZzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlKTsKKyAgICBzY3Jv
bGxWaWV3UmVzaXplckRlbGVnYXRlID0gbmlsOwogI2VuZGlmCiB9CiAKQEAgLTE3NTgsNyArMTc1
MSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKGNvbnN0IFdU
Ujo6VGVzdE9wdGlvbnMmIG9wdGlvbnMsIFJlc2V0CiAgICAgV2ViVmlldyAqd2ViVmlldyA9IFtt
YWluRnJhbWUgd2ViVmlld107CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGFkanVz
dFdlYkRvY3VtZW50Rm9yU3RhbmRhcmRWaWV3cG9ydChnV2ViQnJvd3NlclZpZXcsIGdXZWJTY3Jv
bGxWaWV3KTsKKyAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQoZ1dlYkJy
b3dzZXJWaWV3LmdldCgpLCBnV2ViU2Nyb2xsVmlldy5nZXQoKSk7CiAgICAgW3dlYlZpZXcgX3Nl
dEFsbG93c01lc3NhZ2luZzpZRVNdOwogI2VuZGlmCiAgICAgW3dlYlZpZXcgc2V0RWRpdGFibGU6
Tk9dOwpAQCAtMTc3MCw3ICsxNzYzLDcgQEAgc3RhdGljIHZvaWQgcmVzZXRXZWJWaWV3VG9Db25z
aXN0ZW50U3RhdGUoY29uc3QgV1RSOjpUZXN0T3B0aW9ucyYgb3B0aW9ucywgUmVzZXQKICAgICBb
d2ViVmlldyBfc2V0Q3VzdG9tQmFja2luZ1NjYWxlRmFjdG9yOjBdOwogI2VuZGlmCiAgICAgW3dl
YlZpZXcgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzOllFU107Ci0gICAgW3dlYlZpZXcg
c2V0UG9saWN5RGVsZWdhdGU6ZGVmYXVsdFBvbGljeURlbGVnYXRlXTsKKyAgICBbd2ViVmlldyBz
ZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0UG9saWN5RGVsZWdhdGUuZ2V0KCldOwogICAgIFtwb2xp
Y3lEZWxlZ2F0ZSBzZXRQZXJtaXNzaXZlOk5PXTsKICAgICBbcG9saWN5RGVsZWdhdGUgc2V0Q29u
dHJvbGxlclRvTm90aWZ5RG9uZTowXTsKICAgICBbdWlEZWxlZ2F0ZSByZXNldFRvQ29uc2lzdGVu
dFN0YXRlQmVmb3JlVGVzdGluZzpvcHRpb25zXTsKQEAgLTE5NDMsNyArMTkzNiw3IEBAIHN0YXRp
YyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGluZSkKICAgICB0b3BMb2Fk
aW5nRnJhbWUgPSBuaWw7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgQVNTRVJUKCFk
cmFnZ2luZ0luZm8pOyAvLyB0aGUgcHJldmlvdXMgdGVzdCBzaG91bGQgaGF2ZSBjYWxsZWQgZXZl
bnRTZW5kZXIubW91c2VVcCB0byBkcm9wIQotICAgIHJlbGVhc2VBbmRaZXJvKCZkcmFnZ2luZ0lu
Zm8pOworICAgIGRyYWdnaW5nSW5mbyA9IG5pbDsKICNlbmRpZgogICAgIGRvbmUgPSBOTzsKIApA
QCAtMTk1OSw3ICsxOTUyLDcgQEAgc3RhdGljIHZvaWQgcnVuVGVzdChjb25zdCBzdGQ6OnN0cmlu
ZyYgaW5wdXRMaW5lKQogICAgICAgICBnVGVzdFJ1bm5lci0+c2V0RHVtcEZyYW1lTG9hZENhbGxi
YWNrcyh0cnVlKTsKIAogICAgIGlmIChzaG91bGRMb2dIaXN0b3J5RGVsZWdhdGVzKHBhdGhPclVS
TC5jX3N0cigpKSkKLSAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0SGlzdG9yeURlbGVn
YXRlOmhpc3RvcnlEZWxlZ2F0ZV07CisgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhp
c3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVsZWdhdGUuZ2V0KCldOwogICAgIGVsc2UKICAgICAgICAg
W1ttYWluRnJhbWUgd2ViVmlld10gc2V0SGlzdG9yeURlbGVnYXRlOm5pbF07CiAKQEAgLTE5NzAs
NyArMTk2Myw3IEBAIHN0YXRpYyB2b2lkIHJ1blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0
TGluZSkKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKHNob3VsZE1ha2VWaWV3
cG9ydEZsZXhpYmxlKHBhdGhPclVSTC5jX3N0cigpKSkKLSAgICAgICAgYWRqdXN0V2ViRG9jdW1l
bnRGb3JGbGV4aWJsZVZpZXdwb3J0KGdXZWJCcm93c2VyVmlldywgZ1dlYlNjcm9sbFZpZXcpOwor
ICAgICAgICBhZGp1c3RXZWJEb2N1bWVudEZvckZsZXhpYmxlVmlld3BvcnQoZ1dlYkJyb3dzZXJW
aWV3LmdldCgpLCBnV2ViU2Nyb2xsVmlldy5nZXQoKSk7CiAjZW5kaWYKIAogICAgIGlmIChzaG91
bGRVc2VFcGhlbWVyYWxTZXNzaW9uKHBhdGhPclVSTC5jX3N0cigpKSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmgKaW5kZXggNDM0N2RiZTUwZWZlZTFlNDQ3
Nzk5MDU3ZWI5M2IyYTYzNjdkYmNiNS4uM2Q0MWI1Yjc0YmI3MjhhNTEyZGU5NjdkOTk1OGYwNjg4
MmQ4NTYzYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlTWFjLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFj
LmgKQEAgLTQ3LDE3ICs0NywxOSBAQCBleHRlcm4gQ0ZNdXRhYmxlQXJyYXlSZWYgb3BlbldpbmRv
d3NSZWY7CiBleHRlcm4gQ0ZNdXRhYmxlU2V0UmVmIGRpc2FsbG93ZWRVUkxzOwogZXh0ZXJuIFdl
YkZyYW1lKiBtYWluRnJhbWU7CiBleHRlcm4gV2ViRnJhbWUqIHRvcExvYWRpbmdGcmFtZTsKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvOwotZXh0ZXJuIE5h
dmlnYXRpb25Db250cm9sbGVyKiBnTmF2aWdhdGlvbkNvbnRyb2xsZXI7Ci1leHRlcm4gUG9saWN5
RGVsZWdhdGUqIHBvbGljeURlbGVnYXRlOwotZXh0ZXJuIERlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAq
ZGVmYXVsdFBvbGljeURlbGVnYXRlOworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gUmV0YWlu
UHRyPER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm87CitleHRlcm4gUmV0
YWluUHRyPE5hdmlnYXRpb25Db250cm9sbGVyPiBnTmF2aWdhdGlvbkNvbnRyb2xsZXI7CitleHRl
cm4gUmV0YWluUHRyPFBvbGljeURlbGVnYXRlPiBwb2xpY3lEZWxlZ2F0ZTsKK2V4dGVybiBSZXRh
aW5QdHI8RGVmYXVsdFBvbGljeURlbGVnYXRlPiBkZWZhdWx0UG9saWN5RGVsZWdhdGU7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogT0JKQ19DTEFTUyBVSVdpbmRvdzsKLWV4dGVybiBVSVdp
bmRvdyAqbWFpbldpbmRvdzsKK2V4dGVybiBSZXRhaW5QdHI8VUlXaW5kb3c+IG1haW5XaW5kb3c7
CiAjZWxzZQogT0JKQ19DTEFTUyBOU1dpbmRvdzsKLWV4dGVybiBOU1dpbmRvdyAqbWFpbldpbmRv
dzsKK2V4dGVybiBSZXRhaW5QdHI8TlNXaW5kb3c+IG1haW5XaW5kb3c7CisjZW5kaWYKICNlbmRp
ZgogCiB2b2lkIHNldFdhaXRUb0R1bXBXYXRjaGRvZyhDRlJ1bkxvb3BUaW1lclJlZik7CkBAIC04
MSw4ICs4MywxMCBAQCBAaW50ZXJmYWNlIER1bXBSZW5kZXJUcmVlIDogVUlBcHBsaWNhdGlvbiB7
CiAtICh2b2lkKV93YWl0Rm9yV2ViVGhyZWFkOwogQGVuZAogCisjaWZkZWYgX19jcGx1c3BsdXMK
IEBjbGFzcyBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3OwotZXh0ZXJuIER1bXBSZW5kZXJUcmVl
QnJvd3NlclZpZXcgKmdXZWJCcm93c2VyVmlldzsKK2V4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRl
clRyZWVCcm93c2VyVmlldz4gZ1dlYkJyb3dzZXJWaWV3OworI2VuZGlmCiAjZW5kaWYKIAogaW50
IER1bXBSZW5kZXJUcmVlTWFpbihpbnQsIGNvbnN0IGNoYXIgKltdKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCmluZGV4IGU5
NDRiNDE3ZGJmNTdmZjZkOTc4MmE5OGI0NTQwZDk5MzNmMGJkOTUuLjVjZjI5YWM2NjY4ODFhZjJk
YjY3MGQyMWE5OGYxMGVjMmViZGM5ZjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbQpAQCAtNTYsNyArNTYsNyBAQCBAaW50
ZXJmYWNlIExvY2FsUGFzdGVib2FyZCA6IE5TUGFzdGVib2FyZCB7CiAtKGlkKWluaXRXaXRoTmFt
ZTooTlNTdHJpbmcgKiluYW1lOwogQGVuZAogCi1zdGF0aWMgTlNNdXRhYmxlRGljdGlvbmFyeSAq
bG9jYWxQYXN0ZWJvYXJkczsKK3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4g
bG9jYWxQYXN0ZWJvYXJkczsKIAogQGltcGxlbWVudGF0aW9uIER1bXBSZW5kZXJUcmVlUGFzdGVi
b2FyZAogCkBAIC02Nyw3ICs2Nyw3IEBAICsgKE5TUGFzdGVib2FyZCAqKV9wYXN0ZWJvYXJkV2l0
aE5hbWU6KE5TU3RyaW5nICopbmFtZQogICAgIGlmICghbmFtZSkKICAgICAgICAgbmFtZSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTG9jYWxQYXN0ZWJvYXJkJWQiLCArK251bWJlcl07
CiAgICAgaWYgKCFsb2NhbFBhc3RlYm9hcmRzKQotICAgICAgICBsb2NhbFBhc3RlYm9hcmRzID0g
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgbG9jYWxQYXN0ZWJv
YXJkcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAg
aWYgKExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBhc3RlYm9hcmRzIG9iamVj
dEZvcktleTpuYW1lXSkKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7CiAgICAgYXV0byBwYXN0
ZWJvYXJkID0gYWRvcHROUyhbW0xvY2FsUGFzdGVib2FyZCBhbGxvY10gaW5pdFdpdGhOYW1lOm5h
bWVdKTsKQEAgLTc3LDcgKzc3LDcgQEAgKyAoTlNQYXN0ZWJvYXJkICopX3Bhc3RlYm9hcmRXaXRo
TmFtZTooTlNTdHJpbmcgKiluYW1lCiAKICsgKHZvaWQpcmVsZWFzZUxvY2FsUGFzdGVib2FyZHMK
IHsKLSAgICBhdXRvIG9sZFBhc3RlYm9hZHMgPSBhZG9wdE5TKHN0ZDo6ZXhjaGFuZ2UobG9jYWxQ
YXN0ZWJvYXJkcywgbmlsKSk7CisgICAgbG9jYWxQYXN0ZWJvYXJkcyA9IG5pbDsKIH0KIAogLy8g
Q29udmVuaWVuY2UgbWV0aG9kIGZvciBKUyBzbyB0aGF0IGl0IGRvZXNuJ3QgaGF2ZSB0byB0cnkg
YW5kIGNyZWF0ZSBhIE5TQXJyYXkgb24gdGhlIG9iamMgc2lkZSBpbnN0ZWFkCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbSBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCmluZGV4IDUy
NjY3MDU5ZGM4YTlmN2MwYTA3OTYyMDhmMDBmYjBiOTQyZjRlMDkuLjE2YTYwNTFiYjdmYjY0Yjlk
ZjBhYTllMzczMjJiODliMDExZDc1NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tCkBAIC05MSw3ICs5MSw3IEBAIHN0cnVjdCBL
ZXlNYXBwaW5nRW50cnkgewogTlNQb2ludCBsYXN0TW91c2VQb3NpdGlvbjsKIE5TUG9pbnQgbGFz
dENsaWNrUG9zaXRpb247CiBpbnQgbGFzdENsaWNrQnV0dG9uID0gTm9Nb3VzZUJ1dHRvbjsKLU5T
QXJyYXkgKndlYmtpdERvbUV2ZW50TmFtZXM7CitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHdl
YmtpdERvbUV2ZW50TmFtZXM7CiBCT09MIHJlcGxheWluZ1NhdmVkRXZlbnRzOwogdW5zaWduZWQg
bW91c2VCdXR0b25zQ3VycmVudGx5RG93biA9IDA7CiAKQEAgLTE2OSw4ICsxNjksOCBAQCBzdGF0
aWMgTlNEcmFnZ2luZ1Nlc3Npb24gKmRydF9XZWJIVE1MVmlld19iZWdpbkRyYWdnaW5nU2Vzc2lv
bldpdGhJdGVtc0V2ZW50U291cgogICAgIGZvciAoTlNEcmFnZ2luZ0l0ZW0gKml0ZW0gaW4gaXRl
bXMpCiAgICAgICAgIFtwYXN0ZWJvYXJkIHdyaXRlT2JqZWN0czpAWyBpdGVtLml0ZW0gXV07CiAK
LSAgICBkcmFnZ2luZ0luZm8gPSBbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBp
bml0V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQg
c291cmNlOnNvdXJjZV07Ci0gICAgW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5m
b107CisgICAgZHJhZ2dpbmdJbmZvID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJ
bmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJk
OnBhc3RlYm9hcmQgc291cmNlOnNvdXJjZV0pOworICAgIFt3ZWJWaWV3IGRyYWdnaW5nVXBkYXRl
ZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwogICAgIFtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJlcGxh
eVNhdmVkRXZlbnRzXTsKIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTc5LDcgKzE3OSw3IEBA
IHN0YXRpYyBOU0RyYWdnaW5nU2Vzc2lvbiAqZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdT
ZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3VyCiAKICsgKHZvaWQpaW5pdGlhbGl6ZQogewotICAgIHdl
YmtpdERvbUV2ZW50TmFtZXMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czoKKyAg
ICB3ZWJraXREb21FdmVudE5hbWVzID0gQFsKICAgICAgICAgQCJhYm9ydCIsCiAgICAgICAgIEAi
YmVmb3JlY29weSIsCiAgICAgICAgIEAiYmVmb3JlY3V0IiwKQEAgLTIyNiw3ICsyMjYsNyBAQCAr
ICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgQCJ0ZXh0em9vbW91dCIsCiAgICAgICAgIEAidW5s
b2FkIiwKICAgICAgICAgQCJ6b29tIiwKLSAgICAgICAgbmlsXTsKKyAgICBdOwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIC8vIEFkZCBhbiBpbXBsZW1lbnRhdGlvbiBvZiAtW1dlYkhUTUxWaWV3
IGJlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zOmV2ZW50OnNvdXJjZTpdLgpAQCAtNDYzLDgg
KzQ2Myw4IEBAIC0gKHZvaWQpYmVnaW5EcmFnV2l0aEZpbGVzOihXZWJTY3JpcHRPYmplY3QqKWpz
RmlsZVBhdGhzCiAKICAgICAvLyBQcm92aWRlIGEgc291cmNlLCBvdGhlcndpc2UgW0R1bXBSZW5k
ZXJUcmVlRHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFza10gZGVmYXVsdHMg
dG8gTlNEcmFnT3BlcmF0aW9uTm9uZQogICAgIGF1dG8gc291cmNlID0gYWRvcHROUyhbW0R1bXBS
ZW5kZXJUcmVlRmlsZURyYWdnaW5nU291cmNlIGFsbG9jXSBpbml0XSk7Ci0gICAgZHJhZ2dpbmdJ
bmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpu
aWwgb2Zmc2V0Ok5TWmVyb1NpemUgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZS5nZXQo
KV07Ci0gICAgW1ttYWluRnJhbWUgd2ViVmlld10gZHJhZ2dpbmdFbnRlcmVkOmRyYWdnaW5nSW5m
b107CisgICAgZHJhZ2dpbmdJbmZvID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJ
bmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJk
OnBib2FyZCBzb3VyY2U6c291cmNlLmdldCgpXSk7CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10g
ZHJhZ2dpbmdFbnRlcmVkOmRyYWdnaW5nSW5mby5nZXQoKV07CiAKICAgICBkcmFnTW9kZSA9IE5P
OyAvLyBkcmFnTW9kZSBzYXZlcyBldmVudHMgYW5kIHRoZW4gcmVwbGF5cyB0aGVtIGxhdGVyLiAg
V2UgZG9uJ3QgbmVlZC93YW50IHRoYXQuCiAgICAgbGVmdE1vdXNlQnV0dG9uRG93biA9IFlFUzsg
Ly8gTWFrZSB0aGUgcmVzdCBvZiBldmVudFNlbmRlciB0aGluayBhIGRyYWcgaXMgaW4gcHJvZ3Jl
c3MKQEAgLTUwMyw4ICs1MDMsOCBAQCAtICh2b2lkKWJlZ2luRHJhZ1dpdGhGaWxlUHJvbWlzZXM6
KFdlYlNjcmlwdE9iamVjdCAqKWZpbGVQYXRocwogICAgIGFzc2VydChbcGFzdGVib2FyZCBwcm9w
ZXJ0eUxpc3RGb3JUeXBlOk5TRmlsZW5hbWVzUGJvYXJkVHlwZV0pOwogCiAgICAgYXV0byBzb3Vy
Y2UgPSBhZG9wdE5TKFtbRHVtcFJlbmRlclRyZWVGaWxlRHJhZ2dpbmdTb3VyY2UgYWxsb2NdIGlu
aXRXaXRoUHJvbWlzZWRGaWxlVVJMczpmaWxlVVJMc10pOwotICAgIGRyYWdnaW5nSW5mbyA9IFtb
RHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gYWxsb2NdIGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNl
dDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGFzdGVib2FyZCBzb3VyY2U6c291cmNlLmdldCgpXTsK
LSAgICBbbWFpbkZyYW1lLndlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOmRyYWdnaW5nSW5mb107Cisg
ICAgZHJhZ2dpbmdJbmZvID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFs
bG9jXSBpbml0V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJkOnBhc3Rl
Ym9hcmQgc291cmNlOnNvdXJjZS5nZXQoKV0pOworICAgIFttYWluRnJhbWUud2ViVmlldyBkcmFn
Z2luZ0VudGVyZWQ6ZHJhZ2dpbmdJbmZvLmdldCgpXTsKIAogICAgIGRyYWdNb2RlID0gTk87CiAg
ICAgbGVmdE1vdXNlQnV0dG9uRG93biA9IFlFUzsKQEAgLTcxOSwxNiArNzE5LDE0IEBAIC0gKHZv
aWQpbW91c2VVcDooaW50KWJ1dHRvbk51bWJlciB3aXRoTW9kaWZpZXJzOihXZWJTY3JpcHRPYmpl
Y3QqKW1vZGlmaWVycwogICAgIGlmIChkcmFnZ2luZ0luZm8pIHsKICAgICAgICAgV2ViVmlldyAq
d2ViVmlldyA9IFttYWluRnJhbWUgd2ViVmlld107CiAgICAgICAgIAotICAgICAgICBOU0RyYWdP
cGVyYXRpb24gZHJhZ09wZXJhdGlvbiA9IFt3ZWJWaWV3IGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2lu
Z0luZm9dOwotICAgICAgICAKKyAgICAgICAgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24g
PSBbd2ViVmlldyBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvLmdldCgpXTsKICAgICAgICAg
aWYgKGRyYWdPcGVyYXRpb24gIT0gTlNEcmFnT3BlcmF0aW9uTm9uZSkKLSAgICAgICAgICAgIFt3
ZWJWaWV3IHBlcmZvcm1EcmFnT3BlcmF0aW9uOmRyYWdnaW5nSW5mb107CisgICAgICAgICAgICBb
d2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpkcmFnZ2luZ0luZm8uZ2V0KCldOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBbd2ViVmlldyBkcmFnZ2luZ0V4aXRlZDpkcmFnZ2luZ0luZm9d
OworICAgICAgICAgICAgW3dlYlZpZXcgZHJhZ2dpbmdFeGl0ZWQ6ZHJhZ2dpbmdJbmZvLmdldCgp
XTsKICAgICAgICAgLy8gUGVyIE5TRHJhZ2dpbmcuaDogZHJhZ2dpbmdTb3VyY2VzIG1heSBub3Qg
aW1wbGVtZW50IGRyYWdnZWRJbWFnZTplbmRlZEF0Om9wZXJhdGlvbjoKICAgICAgICAgaWYgKFtb
ZHJhZ2dpbmdJbmZvIGRyYWdnaW5nU291cmNlXSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KGRyYWdnZWRJbWFnZTplbmRlZEF0Om9wZXJhdGlvbjopXSkKICAgICAgICAgICAgIFtbZHJhZ2dp
bmdJbmZvIGRyYWdnaW5nU291cmNlXSBkcmFnZ2VkSW1hZ2U6W2RyYWdnaW5nSW5mbyBkcmFnZ2Vk
SW1hZ2VdIGVuZGVkQXQ6bGFzdE1vdXNlUG9zaXRpb24gb3BlcmF0aW9uOmRyYWdPcGVyYXRpb25d
OwotICAgICAgICBbZHJhZ2dpbmdJbmZvIHJlbGVhc2VdOwogICAgICAgICBkcmFnZ2luZ0luZm8g
PSBuaWw7CiAgICAgfQogI2VuZGlmCkBAIC03ODcsNyArNzg1LDcgQEAgLSAodm9pZCltb3VzZU1v
dmVUb1g6KGludCl4IFk6KGludCl5CiAgICAgICAgICAgICAgICAgLy8gUGVyIE5TRHJhZ2dpbmcu
aDogZHJhZ2dpbmdTb3VyY2VzIG1heSBub3QgaW1wbGVtZW50IGRyYWdnZWRJbWFnZTptb3ZlZFRv
OgogICAgICAgICAgICAgICAgIGlmIChbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkcmFnZ2VkSW1hZ2U6bW92ZWRUbzopXSkKICAgICAg
ICAgICAgICAgICAgICAgW1tkcmFnZ2luZ0luZm8gZHJhZ2dpbmdTb3VyY2VdIGRyYWdnZWRJbWFn
ZTpbZHJhZ2dpbmdJbmZvIGRyYWdnZWRJbWFnZV0gbW92ZWRUbzpsYXN0TW91c2VQb3NpdGlvbl07
Ci0gICAgICAgICAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gZHJhZ2dpbmdVcGRhdGVkOmRy
YWdnaW5nSW5mb107CisgICAgICAgICAgICAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gZHJhZ2dp
bmdVcGRhdGVkOmRyYWdnaW5nSW5mby5nZXQoKV07CiAgICAgICAgICAgICB9IGVsc2UgewogI2lm
ICFQTEFURk9STShJT1NfRkFNSUxZKQogICAgICAgICAgICAgICAgIGF1dG8gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXIgPSBldmVudFByZXNzZWRNb3VzZUJ1dHRvbnNTd2l6emxlckZv
clZpZXdBbmRFdmVudChzdWJWaWV3LCBldmVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KaW5kZXggMzQyYjNhMDFkYzdlYTg3OWFmMWI1
NGIwZWUyNzNkNjgxMmY4ZjdhNy4uMWFiYTgxMjA4Mjc3MTlhOWYyMjVlOTY4NjY2MGU4ZjkzYWJm
ZGQyMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVn
YXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5t
bQpAQCAtMzI2LDcgKzMyNiw3IEBAIC0gKHZvaWQpZGlkQ2xlYXJXaW5kb3dPYmplY3RJblN0YW5k
YXJkV29ybGRGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZQogI2VuZGlmCiAKICAgICBbd2luZG93
T2JqZWN0IHNldFZhbHVlOmFkb3B0TlMoW1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGFsbG9jXSBp
bml0XSkuZ2V0KCkgZm9yS2V5OkAiZXZlbnRTZW5kZXIiXTsKLSAgICBbd2luZG93T2JqZWN0IHNl
dFZhbHVlOmdOYXZpZ2F0aW9uQ29udHJvbGxlciBmb3JLZXk6QCJuYXZpZ2F0aW9uQ29udHJvbGxl
ciJdOworICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6Z05hdmlnYXRpb25Db250cm9sbGVyLmdl
dCgpIGZvcktleTpAIm5hdmlnYXRpb25Db250cm9sbGVyIl07CiAgICAgW3dpbmRvd09iamVjdCBz
ZXRWYWx1ZTphZG9wdE5TKFtbT2JqQ0NvbnRyb2xsZXIgYWxsb2NdIGluaXRdKS5nZXQoKSBmb3JL
ZXk6QCJvYmpDQ29udHJvbGxlciJdOwogICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHRO
UyhbW09iakNQbHVnaW4gYWxsb2NdIGluaXRdKS5nZXQoKSBmb3JLZXk6QCJvYmpDUGx1Z2luIl07
CiAgICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTphZG9wdE5TKFtbT2JqQ1BsdWdpbkZ1bmN0aW9u
IGFsbG9jXSBpbml0XSkuZ2V0KCkgZm9yS2V5OkAib2JqQ1BsdWdpbkZ1bmN0aW9uIl07CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbSBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCmluZGV4IGM1OGQ1NDY1ZmEwM2Ri
ZGJhZTA5NThkYTk1NTliN2I2NjAyYjNhNWMuLjI0Y2UyMmY3ZmRhNzZkNTVmODZlNmE1ZDRhMWZi
YmJhOGVjMmI2MGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CkBAIC00MDAsMTIgKzQwMCwxMiBAQCB2b2lkIFRlc3RSdW5uZXI6OnNldEFwcENhY2hlTWF4aW11
bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHNpemUpCiB2b2lkIFRlc3RSdW5uZXI6OnNldEN1c3Rv
bVBvbGljeURlbGVnYXRlKGJvb2wgc2V0RGVsZWdhdGUsIGJvb2wgcGVybWlzc2l2ZSkKIHsKICAg
ICBpZiAoIXNldERlbGVnYXRlKSB7Ci0gICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFBv
bGljeURlbGVnYXRlOmRlZmF1bHRQb2xpY3lEZWxlZ2F0ZV07CisgICAgICAgIFtbbWFpbkZyYW1l
IHdlYlZpZXddIHNldFBvbGljeURlbGVnYXRlOmRlZmF1bHRQb2xpY3lEZWxlZ2F0ZS5nZXQoKV07
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBbcG9saWN5RGVsZWdhdGUgc2V0UGVybWlz
c2l2ZTpwZXJtaXNzaXZlXTsKLSAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxl
Z2F0ZTpwb2xpY3lEZWxlZ2F0ZV07CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gc2V0UG9saWN5
RGVsZWdhdGU6cG9saWN5RGVsZWdhdGUuZ2V0KCldOwogfQogCiB2b2lkIFRlc3RSdW5uZXI6OnNl
dERhdGFiYXNlUXVvdGEodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKQpAQCAtNjY0LDcgKzY2NCw3
IEBAIHZvaWQgVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKCkKIHsKICAgICBzZXRX
YWl0VG9EdW1wKHRydWUpOwogICAgIFtwb2xpY3lEZWxlZ2F0ZSBzZXRDb250cm9sbGVyVG9Ob3Rp
ZnlEb25lOnRoaXNdOwotICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldFBvbGljeURlbGVnYXRl
OnBvbGljeURlbGVnYXRlXTsKKyAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxl
Z2F0ZTpwb2xpY3lEZWxlZ2F0ZS5nZXQoKV07CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6YWRkT3Jp
Z2luQWNjZXNzQWxsb3dMaXN0RW50cnkoSlNTdHJpbmdSZWYgc291cmNlT3JpZ2luLCBKU1N0cmlu
Z1JlZiBkZXN0aW5hdGlvblByb3RvY29sLCBKU1N0cmluZ1JlZiBkZXN0aW5hdGlvbkhvc3QsIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCkBAIC05MTQsOCArOTE0LDggQEAgdm9pZCBU
ZXN0UnVubmVyOjphcGlUZXN0TmV3V2luZG93RGF0YUxvYWRCYXNlVVJMKEpTU3RyaW5nUmVmIHV0
ZjhEYXRhLCBKU1N0cmluZ1IKICAgICAvLyBhbmQgY2xvc2VzIGEgV2ViVmlldywgaXQgc2hvdWxk
IGJlIHJ1biBvbiB0aGUgbWFpbiB0aHJlYWQuIE1ha2UgdGhlIHN3aXRjaAogICAgIC8vIGZyb20g
dGhlIHdlYiB0aHJlYWQgdG8gdGhlIG1haW4gdGhyZWFkIGFuZCBtYWtlIHRoZSB0ZXN0IGFzeW5j
aHJvbm91cy4KICAgICBpZiAoV2ViVGhyZWFkSXNDdXJyZW50KCkpIHsKLSAgICAgICAgQVBJVGVz
dERlbGVnYXRlSVBob25lICpkaXNwYXRjaGVyID0gW1tBUElUZXN0RGVsZWdhdGVJUGhvbmUgYWxs
b2NdIGluaXRXaXRoVGVzdFJ1bm5lcjp0aGlzIHV0ZjhEYXRhOnV0ZjhEYXRhIGJhc2VVUkw6YmFz
ZVVSTF07Ci0gICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFdlYlRocmVhZE1ha2VO
U0ludm9jYXRpb24oZGlzcGF0Y2hlciwgQHNlbGVjdG9yKHJ1bikpOworICAgICAgICBhdXRvIGRp
c3BhdGNoZXIgPSBhZG9wdE5TKFtbQVBJVGVzdERlbGVnYXRlSVBob25lIGFsbG9jXSBpbml0V2l0
aFRlc3RSdW5uZXI6dGhpcyB1dGY4RGF0YTp1dGY4RGF0YSBiYXNlVVJMOmJhc2VVUkxdKTsKKyAg
ICAgICAgTlNJbnZvY2F0aW9uICppbnZvY2F0aW9uID0gV2ViVGhyZWFkTWFrZU5TSW52b2NhdGlv
bihkaXNwYXRjaGVyLmdldCgpLCBAc2VsZWN0b3IocnVuKSk7CiAgICAgICAgIFdlYlRocmVhZENh
bGxEZWxlZ2F0ZShpbnZvY2F0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5kZXggMTJmNWFhNzkwMzFhODE3MTE1ZGRlZDAy
NmFiNjhiMWFmOGJkMWI0Yy4uYmJhNTNiZGJmOTRlMTliM2Y3NTcwMGVjYWJhYTFjODdlZjRmYzJk
OCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KQEAgLTQ4LDcgKzQ4LDcg
QEAKICNpbXBvcnQgPHd0Zi9jb2NvYS9WZWN0b3JDb2NvYS5oPgogCiAjaWYgIVBMQVRGT1JNKElP
U19GQU1JTFkpCi1EdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dpbmdJbmZvID0gbmls
OworUmV0YWluUHRyPER1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvPiBkcmFnZ2luZ0luZm87CiAj
ZW5kaWYKIAogQGltcGxlbWVudGF0aW9uIFVJRGVsZWdhdGUKQEAgLTE1MywxMCArMTUzLDEwIEBA
IC0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKWMgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopCiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCiAtICh2
b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZHJhZ0ltYWdlOihOU0ltYWdlICopYW5JbWFn
ZSBhdDooTlNQb2ludCl2aWV3TG9jYXRpb24gb2Zmc2V0OihOU1NpemUpaW5pdGlhbE9mZnNldCBl
dmVudDooTlNFdmVudCAqKWV2ZW50IHBhc3RlYm9hcmQ6KE5TUGFzdGVib2FyZCAqKXBib2FyZCBz
b3VyY2U6KGlkKXNvdXJjZU9iaiBzbGlkZUJhY2s6KEJPT0wpc2xpZGVGbGFnIGZvclZpZXc6KE5T
VmlldyAqKXZpZXcKIHsKLSAgICAgYXNzZXJ0KCFkcmFnZ2luZ0luZm8pOwotICAgICBkcmFnZ2lu
Z0luZm8gPSBbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdl
OmFuSW1hZ2Ugb2Zmc2V0OmluaXRpYWxPZmZzZXQgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNv
dXJjZU9ial07Ci0gICAgIFtzZW5kZXIgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5mb107Ci0g
ICAgIFtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJlcGxheVNhdmVkRXZlbnRzXTsKKyAgICBhc3Nl
cnQoIWRyYWdnaW5nSW5mbyk7CisgICAgZHJhZ2dpbmdJbmZvID0gYWRvcHROUyhbW0R1bXBSZW5k
ZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBpbml0V2l0aEltYWdlOmFuSW1hZ2Ugb2Zmc2V0Omlu
aXRpYWxPZmZzZXQgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZU9ial0pOworICAgIFtz
ZW5kZXIgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5nSW5mby5nZXQoKV07CisgICAgW0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIgcmVwbGF5U2F2ZWRFdmVudHNdOwogfQogI2VuZGlmCiAKQEAgLTQzMyw3
ICs0MzMsNiBAQCAtIChOU1VJbnRlZ2VyKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRyYWdE
ZXN0aW5hdGlvbkFjdGlvbk1hc2tGb3JEcmFnZ2luZ0luZgogLSAodm9pZClkZWFsbG9jCiB7CiAj
aWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsKICAg
ICBkcmFnZ2luZ0luZm8gPSBuaWw7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tIGIvVG9vbHMvVGVzdFJ1
bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCmluZGV4IDk0NzU1Mzdm
NmY2OTFhZmY3NmNhNTM4OTIwNzE1MzRmMzMyZDdjZDAuLjE1Mzk0NDU5MDMwNWI4YjVhMjEyYjcy
ODQ1MjA2MGZjNmI5YjNjZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29j
b2EvTGF5b3V0VGVzdFNwZWxsQ2hlY2tlci5tbQorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVk
L2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KQEAgLTM1LDcgKzM1LDcgQEAKIAogdXNp
bmcgVGV4dENoZWNraW5nQ29tcGxldGlvbkhhbmRsZXIgPSB2b2lkKF4pKE5TSW50ZWdlciwgTlNB
cnJheTxOU1RleHRDaGVja2luZ1Jlc3VsdCAqPiAqLCBOU09ydGhvZ3JhcGh5ICosIE5TSW50ZWdl
cik7CiAKLXN0YXRpYyBMYXlvdXRUZXN0U3BlbGxDaGVja2VyICpnbG9iYWxTcGVsbENoZWNrZXIg
PSBuaWw7CitzdGF0aWMgUmV0YWluUHRyPExheW91dFRlc3RTcGVsbENoZWNrZXI+IGdsb2JhbFNw
ZWxsQ2hlY2tlcjsKIHN0YXRpYyBCT09MIGhhc1N3aXp6bGVkTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ciA9IE5POwogc3RhdGljIElNUCBnbG9iYWxseVN3aXp6bGVkU2hhcmVkU3BlbGxDaGVja2VySW1w
bGVtZW50YXRpb247CiBzdGF0aWMgTWV0aG9kIG9yaWdpbmFsU2hhcmVkU3BlbGxDaGVja2VyTWV0
aG9kOwpAQCAtNDQsOSArNDQsOSBAQCBzdGF0aWMgTGF5b3V0VGVzdFNwZWxsQ2hlY2tlciAqZW5z
dXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcigpCiB7CiAgICAgc3RhdGljIGRpc3BhdGNo
X29uY2VfdCBvbmNlVG9rZW47CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAg
ICAgICBnbG9iYWxTcGVsbENoZWNrZXIgPSBbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgYWxsb2Nd
IGluaXRdOworICAgICAgICBnbG9iYWxTcGVsbENoZWNrZXIgPSBhZG9wdE5TKFtbTGF5b3V0VGVz
dFNwZWxsQ2hlY2tlciBhbGxvY10gaW5pdF0pOwogICAgIH0pOwotICAgIHJldHVybiBnbG9iYWxT
cGVsbENoZWNrZXI7CisgICAgcmV0dXJuIGdsb2JhbFNwZWxsQ2hlY2tlci5nZXQoKTsKIH0KIAog
c3RhdGljIGNvbnN0IGNoYXIgKnN0cmluZ0ZvckNvcnJlY3Rpb25SZXNwb25zZShOU0NvcnJlY3Rp
b25SZXNwb25zZSBjb3JyZWN0aW9uUmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KaW5kZXggNDQ0YzA2N2JlNzMwMmEzNWE3N2Rj
MjNlZTBmMzkxMWVjMGQzMzE2OC4uYjdiYzc4M2U5YjRhOTk0NmI4ZjBmYTAzNGQyOTFiNTA3NzUx
ZWEwOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNl
ck1lZGlhLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJN
ZWRpYS5tbQpAQCAtMTA2LDQ1ICsxMDYsNDUgQEAgVEVTVChXZWJLaXQyLCBDYXB0dXJlTXV0ZSkK
ICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0g
Tk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsK
ICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBh
dXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwog
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIHdlYlZp
ZXcuX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVzdGluZyA9IDA7CisgICAgW3dlYlZp
ZXcgX3NldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVzdGluZzowXTsKIAogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07Ci0gICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0
aXZlQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZp
ZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbd2Vi
VmlldyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVY
UEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVT
dGF0ZU11dGVkQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRl
KHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEpKTsKICAgICBb
d2ViVmlldyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0
aXZlQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZp
ZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic3RvcCgpIl07Ci0gICAgRVhQRUNU
X1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRl
Tm9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3Lmdl
dCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjYXB0dXJlQXVkaW8oKSJdOwotICAgIEVYUEVDVF9UUlVF
KHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZU1pY3JvcGhvbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2Vi
Vmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAgICAg
W3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFDYXB0dXJlRGV2aWNlc011dGVkXTsKLSAg
ICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0
dXJlU3RhdGVNdXRlZE1pY3JvcGhvbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0
dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZE1pY3JvcGhv
bmUpKTsKICAgICBbd2ViVmlldyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0g
ICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2Fw
dHVyZVN0YXRlQWN0aXZlTWljcm9waG9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENh
cHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZU1pY3Jv
cGhvbmUpKTsKIAogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2FwdHVyZURl
dmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZp
ZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0
YXRlTXV0ZWRNaWNyb3Bob25lKSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAic3RvcCgpIl07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0
YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkpOworICAgIEVYUEVDVF9UUlVF
KHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU5vbmUpKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJj
YXB0dXJlQXVkaW9BbmRWaWRlbygpIl07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVy
ZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhIHwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVu
dGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
Q2FtZXJhIHwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAgICAgW3dl
YlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFDYXB0dXJlRGV2aWNlc011dGVkXTsKLSAgICBF
WFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJl
U3RhdGVNdXRlZENhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7
CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9X
S01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEgfCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVk
TWljcm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhTm9uZU11
dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dL
TWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEgfCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZU1pY3JvcGhvbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2Vi
Vmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEgfCBfV0tNZWRpYUNh
cHR1cmVTdGF0ZUFjdGl2ZU1pY3JvcGhvbmUpKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJzdG9wKCkiXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxD
YXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CisgICAgRVhQ
RUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2Fw
dHVyZVN0YXRlTm9uZSkpOwogfQogCiBURVNUKFdlYktpdDIsIENhcHR1cmVTdG9wKQpAQCAtMTU5
LDE5ICsxNTksMTkgQEAgVEVTVChXZWJLaXQyLCBDYXB0dXJlU3RvcCkKICAgICBhdXRvIG1lc3Nh
Z2VIYW5kbGVyID0gYWRvcHROUyhbW0dVTU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAg
ICAgW1tjb25maWd1cmF0aW9uLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAImd1bSJdOwogCi0gICAg
YXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBw
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsK
ICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRl
IGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7
CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2Vi
VmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYSJdOwotICAgIEVYUEVDVF9UUlVF
KHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3
LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOwogCiAgICAgW2RlbGVn
YXRlIHdhaXRVbnRpbFByb21wdGVkXTsKIAogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9X
S01lZGlhQ2FwdHVyZURldmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2Fw
dHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEpKTsKKyAg
ICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVk
aWFDYXB0dXJlU3RhdGVNdXRlZENhbWVyYSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6
IF9XS01lZGlhTm9uZU11dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3Rh
dGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0
dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKIAogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJub3RpZnlFbmRlZEV2ZW50KCkiXTsKICAgICBbd2ViVmlldyBfc3RvcE1l
ZGlhQ2FwdHVyZV07CkBAIC0xNzksNyArMTc5LDcgQEAgVEVTVChXZWJLaXQyLCBDYXB0dXJlU3Rv
cCkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIGRvbmUgPSBmYWxz
ZTsKIAotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJl
U3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAKICAgICBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicHJvbXB0Rm9yQ2FwdHVyZSgp
Il07CiAgICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKQEAgLTE5NywxNCArMTk3LDE0
IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZUluZGljYXRvckRlbGF5KQogICAgIGF1dG8gbWVzc2Fn
ZUhhbmRsZXIgPSBhZG9wdE5TKFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAg
ICBbW2NvbmZpZ3VyYXRpb24uZ2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRN
ZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CiAKLSAgICBh
dXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07Ci0gICAgd2Vi
Vmlldy5fbWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nID0gMjsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7Cisg
ICAgW3dlYlZpZXcgX3NldE1lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9yVGVzdGluZzoyXTsK
IAogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3
ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07Ci0gICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0
aXZlQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZp
ZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbZGVs
ZWdhdGUgd2FpdFVudGlsUHJvbXB0ZWRdOwogCkBAIC0yMTUsNyArMjE1LDcgQEAgVEVTVChXZWJL
aXQyLCBDYXB0dXJlSW5kaWNhdG9yRGVsYXkpCiAgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IF9tZWRp
YUNhcHR1cmVTdGF0ZV0sIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKTsKIAogICAg
IC8vIE9uZSBhZGRpdGlvbmFsIHNlY29uZCBzaG91bGQgYWxsb3cgdXMgdG8gZ28gYmFjayB0byBu
byBjYXB0dXJlIGJlaW5nIHJlcG9ydGVkLgotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1
cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKKyAgICBFWFBFQ1Rf
VFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJl
U3RhdGVOb25lKSk7CiB9CiAKIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZUluZGljYXRvckRlbGF5V2hl
bkNsb3NlZCkKQEAgLTIzMCwxNCArMjMwLDE0IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZUluZGlj
YXRvckRlbGF5V2hlbkNsb3NlZCkKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhb
W0dVTU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uLmdl
dCgpIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2Fn
ZUhhbmRsZXIuZ2V0KCkgbmFtZTpAImd1bSJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOwotICAgIHdlYlZpZXcuX21lZGlhQ2FwdHVyZVJl
cG9ydGluZ0RlbGF5Rm9yVGVzdGluZyA9IDI7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOworICAgIFt3ZWJWaWV3IF9zZXRNZWRp
YUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3Rpbmc6Ml07CiAKICAgICBhdXRvIGRlbGVnYXRl
ID0gYWRvcHROUyhbW1VzZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0g
ICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAImdldFVzZXJNZWRpYSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVT
dGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVY
UEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNh
cHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOwogCiAgICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21w
dGVkXTsKIApAQCAtMjU4LDEyICsyNTgsMTIgQEAgVEVTVChXZWJLaXQyLCBHZXRDYXBhYmlsaXRp
ZXMpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxl
ciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVudENv
bnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5h
bWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVk
aWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0
ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEi
XTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVk
aWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxD
YXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1l
cmEpKTsKIAogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKQEAgLTMzMSwxMCAr
MzMxLDEwIEBAIFRFU1QoV2ViS2l0LCBXZWJBdWRpb0FuZEdldFVzZXJNZWRpYSkKICAgICBhdXRv
IG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW0dVTU1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uLmdldCgpIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAImd1bSJdOwog
Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Vz
ZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAKICAgICBhdXRvIHVybCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlVVJMRm9y
UmVzb3VyY2UoImdldFVzZXJNZWRpYS13ZWJhdWRpbyIsICJodG1sIikpOwogICAgIFt3ZWJWaWV3
IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhLXdlYmF1ZGlvIl07CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9u
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhTmF2aWdh
dGlvbi5tbQppbmRleCA5YmZmZGFjNjU3OTk2ZTA5YjE1NzZjMTcyZGFlNzA4N2NkYTgwYjUzLi4x
NzhjNDQ3NzYwZjUzZTY4NDg2ZjBlNTE4MjBlZjcxNDNhYTRkMGI1IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYU5hdmlnYXRp
b24ubW0KQEAgLTc1LDkgKzc1LDkgQEAgVEVTVChXZWJLaXQsIE5hdmlnYXRlRHVyaW5nR2V0VXNl
ck1lZGlhUHJvbXB0KQogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3Vy
ZUNvbm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVF
bmFibGVkID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVk
ID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdl
dCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hp
bGVHZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0g
ICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBzaG91bGRSZWxlYXNlSW5FbnVtZXJh
dGUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRp
YSJdOwpAQCAtOTIsOSArOTIsOSBAQCBURVNUKFdlYktpdCwgTmF2aWdhdGVEdXJpbmdEZXZpY2VF
bnVtZXJhdGlvbikKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVD
b25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5h
YmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9
IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQo
KV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZp
Zy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbTmF2aWdhdGlvbldoaWxl
R2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAg
IHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgc2hvdWxkUmVsZWFzZUluRW51bWVyYXRl
ID0gdHJ1ZTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImVudW1lcmF0ZU1lZGlh
RGV2aWNlcyJdOwpAQCAtMTIxLDkgKzEyMSw5IEBAIFRFU1QoV2ViS2l0LCBEZWZhdWx0RGV2aWNl
SWRIYXNoU2FsdHNEaXJlY3RvcnkpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVp
cmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlh
Q2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vz
c1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW05hdmln
YXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAiZW51bWVyYXRlTWVkaWFEZXZpY2VzIl07CiAKQEAgLTE1MSw5ICsxNTEs
OSBAQCBURVNUKFdlYktpdCwgRGV2aWNlSWRIYXNoU2FsdHNEaXJlY3RvcnkpCiAgICAgcHJlZmVy
ZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNv
bmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVy
ZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3
ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbW05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERpc3Bs
YXllZFVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBk
ZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKICAgICAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImVudW1lcmF0ZU1lZGlh
RGV2aWNlcyJdOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdC9HZXRVc2VyTWVkaWFSZXByb21wdC5tbQppbmRleCBkMDYyNzY1ZmMyMGFhNzg0YWU1
Y2YxZmU2NWVmNjEwMGFmZDY2MzE5Li45NDE1MTQwZGMwYWRkMjNiMzZkNTM0YWIwOTE0MmNmMjIw
YWFhNDgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9HZXRV
c2VyTWVkaWFSZXByb21wdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9HZXRVc2VyTWVkaWFSZXByb21wdC5tbQpAQCAtNjgsOSArNjgsOSBAQCBURVNUKFdlYktpdDIs
IEdldFVzZXJNZWRpYVJlcHJvbXB0KQogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1
aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRp
YUNhcHR1cmVFbmFibGVkID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmlj
ZXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtbR2V0VXNlck1lZGlhUmVwcm9t
cHRUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbR2V0VXNlck1lZGlhUmVwcm9tcHRUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkg
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAg
YXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAg
IFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcg
bG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKICAgICBbZGVsZWdhdGUgd2FpdFVu
dGlsUHJvbXB0ZWRdOwpAQCAtMTA0LDExICsxMDQsMTEgQEAgVEVTVChXZWJLaXQyLCBHZXRVc2Vy
TWVkaWFSZXByb21wdEFmdGVyQXVkaW9WaWRlb0JlaW5nRGVuaWVkKQogICAgIHByZWZlcmVuY2Vz
Ll9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1
cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVTOwogICAgIHByZWZlcmVuY2Vz
Ll9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtb
R2V0VXNlck1lZGlhUmVwcm9tcHRUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RN
YWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbR2V0VXNlck1lZGlhUmVwcm9tcHRUZXN0VmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29u
ZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0
dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFtkZWxlZ2F0ZSBzZXRBdWRpb0RlY2lz
aW9uOl9XS1Blcm1pc3Npb25EZWNpc2lvbkdyYW50XTsKICAgICBbZGVsZWdhdGUgc2V0VmlkZW9E
ZWNpc2lvbjpfV0tQZXJtaXNzaW9uRGVjaXNpb25EZW55XTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdh
dGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlh
QXVkaW9WaWRlb0NhcHR1cmUiXTsKICAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJvbXB0ZWRdOwpA
QCAtMTI3LDkgKzEyNyw5IEBAIFRFU1QoV2ViS2l0MiwgTXVsdGlwbGVHZXRVc2VyTWVkaWFTeW5j
aHJvbm91c2x5KQogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNv
bm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFi
bGVkID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0g
WUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtbR2V0VXNlck1lZGlhUmVwcm9tcHRUZXN0VmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQ
b29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbR2V0VXNlck1l
ZGlhUmVwcm9tcHRUZXN0VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwot
ICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKICAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJvbXB0ZWRd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3Rv
bUJ1bmRsZVBhcmFtZXRlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L21h
Yy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0KaW5kZXggM2QzYzYxNjJkMzk1ZTY2ZWQ1ZDU3ZWE3
ODBhNTk0NjY5ZTc5NzU0Zi4uOTU2YzE3NzRjNjUzZDA4Mjg4ODYxMjNkMmI5MTk1ZGUyNGRhMWMz
YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3Rv
bUJ1bmRsZVBhcmFtZXRlci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9tYWMvQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tCkBAIC02MCw4ICs2MCw4IEBAIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250
ZXh0LCBXS1N0cmluZ1JlCiAgICAgLy8gQXR0ZW1wdCB0byBzZXQgYSBwYXJhbWV0ZXIgdXNpbmcg
dGhlIE9iamVjdGl2ZSBDIEFQSToKICAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAKLSAgICBDdXN0b21CdW5kbGVPYmplY3QgKmN1c3RvbU9iamVjdCA9IFtbQ3Vz
dG9tQnVuZGxlT2JqZWN0IGFsbG9jXSBpbml0V2l0aFZhbHVlOjEyMzRdOwotICAgIFtbY29uZmln
dXJhdGlvbiBwcm9jZXNzUG9vbF0gX3NldE9iamVjdDpjdXN0b21PYmplY3QgZm9yQnVuZGxlUGFy
YW1ldGVyOkAiVGVzdFBhcmFtZXRlcjEiXTsKKyAgICBhdXRvIGN1c3RvbU9iamVjdCA9IGFkb3B0
TlMoW1tDdXN0b21CdW5kbGVPYmplY3QgYWxsb2NdIGluaXRXaXRoVmFsdWU6MTIzNF0pOworICAg
IFtbY29uZmlndXJhdGlvbiBwcm9jZXNzUG9vbF0gX3NldE9iamVjdDpjdXN0b21PYmplY3QuZ2V0
KCkgZm9yQnVuZGxlUGFyYW1ldGVyOkAiVGVzdFBhcmFtZXRlcjEiXTsKIAogICAgIGlmIChsb2Fk
RG9uZSkKICAgICAgICAgZG9uZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tCmluZGV4IDY3
YmFlZWJhNmRjNmY5NmZmMWYyN2EzNTNjNzMzNTY5NjE2N2ZiZDcuLjI4YjE4MzE2NTkwMzBjYTRm
OGUyNzI1MjliNzU5MDVjZmQzOGM2ZWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tCkBAIC0xMDIs
NyArMTAyLDcgQEAgcHVibGljOgogICAgICAgICBXS1JldGFpblB0cjxXS1BhZ2VDb25maWd1cmF0
aW9uUmVmPiBjb25maWd1cmF0aW9uID0gYWRvcHRXSyhXS1BhZ2VDb25maWd1cmF0aW9uQ3JlYXRl
KCkpOyAgICAgICAgCiAgICAgICAgIFdLUGFnZUNvbmZpZ3VyYXRpb25TZXRDb250ZXh0KGNvbmZp
Z3VyYXRpb24uZ2V0KCksIGNvbnRleHQuZ2V0KCkpOwogCi0gICAgICAgIHdlYlZpZXcgPSBbW1dL
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKSBjb25m
aWd1cmF0aW9uUmVmOmNvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgICAgICB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwg
MTAwKSBjb25maWd1cmF0aW9uUmVmOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKIAogICAgICAgICBX
S1BhZ2VOYXZpZ2F0aW9uQ2xpZW50VjAgbG9hZGVyQ2xpZW50OwogICAgICAgICBtZW1zZXQoJmxv
YWRlckNsaWVudCwgMCwgc2l6ZW9mKGxvYWRlckNsaWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KaW5kZXggYjFhZjE1YWNiNDNi
NmRiYWQ3Zjc1ZGJiOTA0Yjk3MDY2YTM2MjE2OS4uNDRhYjg0YmZiOTdjZjk4M2Q1NzhkMzM4YTE4
MTVhZjI0OGIxNmRkNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Eb3dubG9hZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0Rvd25sb2FkLm1tCkBAIC0zNjAsNyArMzYwLDggQEAgVEVTVChfV0tEb3dubG9hZCwg
RG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEaXJlY3REb3dubG9hZFdpdGhMb2FkZWRDb250ZW50
KQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBhdXRvIG5hdmlnYXRpb25E
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb3dubG9hZFJlcXVlc3RPcmlnaW5hbFVSTE5hdmlnYXRpb25E
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCldOwotICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlv
bl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOltbRG93bmxvYWRSZXF1ZXN0T3Jp
Z2luYWxVUkxEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhFeHBlY3RlZE9yaWdpbmFsVVJMOnNvdXJj
ZVVSTF1dOworICAgIGF1dG8gZG93bmxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEb3dubG9hZFJl
cXVlc3RPcmlnaW5hbFVSTERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEV4cGVjdGVkT3JpZ2luYWxV
Ukw6c291cmNlVVJMXSk7CisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9v
bF0gX3NldERvd25sb2FkRGVsZWdhdGU6ZG93bmxvYWREZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBl
eHBlY3RlZFVzZXJJbml0aWF0ZWRTdGF0ZSA9IGZhbHNlOwogICAgIE5TVVJMICpjb250ZW50VVJM
ID0gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAInNpbXBsZTIiIHdpdGhF
eHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFw
cEJyb3dzZXJQcml2YWN5Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCmluZGV4IDRiMzY1ZThiYjkzN2VlZDE1ZTRhZmJjYjU2
NGZiYzhiNzc4ZTU0ZTguLmYwYjhhZDk5ODZlZjcxMTA4YmM4NmI5Nzg1NzZlZTU1OGQ0M2Q2Y2Yg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBC
cm93c2VyUHJpdmFjeS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KQEAgLTExMjMsMTEgKzExMjMsMTEgQEAgVEVTVChJ
bkFwcEJyb3dzZXJQcml2YWN5LCBJbmplY3RTY3JpcHRJbk5vbkFwcEJvdW5kU3ViZnJhbWVBcHBC
b3VuZE1haW5mcmFtZUZhaWwKICAgICBjbGVhblVwSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0
aW5ncygpOwogfQogCi1zdGF0aWMgTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+ICphbGxGcmFt
ZXM7CitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPj4gYWxsRnJh
bWVzOwogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEphdmFTY3JpcHRJbk5vbkFwcEJvdW5k
RnJhbWVGYWlscykKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5m
byAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNl
dDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAgaXNEb25lID0gZmFsc2U7CiAg
ICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKQEAgLTExNjQs
MTIgKzExNjQsMTIgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZhU2NyaXB0SW5Ob25B
cHBCb3VuZEZyYW1lRmFpbHMpCiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEZp
bmlzaE5hdmlnYXRpb24pOwogCi0gICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgM3UpOwor
ICAgIEVYUEVDVF9FUShbYWxsRnJhbWVzIGNvdW50XSwgM3UpOwogCiAgICAgc3RhdGljIHNpemVf
dCBmaW5pc2hlZEZyYW1lcyA9IDA7CiAgICAgc3RhdGljIGJvb2wgaXNEb25lID0gZmFsc2U7CiAK
LSAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMpIHsKKyAgICBmb3IgKFdL
RnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0KCkpIHsKICAgICAgICAgYm9vbCBpc01h
aW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lOwogICAgICAgICBbd2ViVmlldyBjYWxsQXN5bmNK
YXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1bWVudHM6bmlsIGluRnJhbWU6
ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOltpc01haW5GcmFtZV0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3Ip
IHsKICAgICAgICAgICAgIGlmIChpc01haW5GcmFtZSkgewpAQCAtMTE4MSw3ICsxMTgxLDcgQEAg
VEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZhU2NyaXB0SW5Ob25BcHBCb3VuZEZyYW1lRmFp
bHMpCiAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNvZGUsIFdLRXJyb3JKYXZhU2Ny
aXB0QXBwQm91bmREb21haW4pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoKytm
aW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAgICAgICAgICAgaWYgKCsr
ZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQogICAgICAgICAgICAgICAg
IGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogCkBAIC0xMTk2LDcgKzExOTYsNyBAQCBURVNU
KEluQXBwQnJvd3NlclByaXZhY3ksIEphdmFTY3JpcHRJbk5vbkFwcEJvdW5kRnJhbWVGYWlscykK
ICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoZXJyb3IuY29kZSwgV0tFcnJvckphdmFTY3JpcHRB
cHBCb3VuZERvbWFpbik7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICgrK2Zpbmlz
aGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAgICAgICBpZiAoKytmaW5p
c2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAgICAgICAgICAgaXNE
b25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtMTM1MSw3ICsxMzUxLDcgQEAgc3Rh
dGljIHZvaWQgbG9hZFJlcXVlc3QoUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcsIE5T
U3RyaW5nICp1cmwpCiAKIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZy
YW1lTWF0Y2hlc1RvcEZyYW1lQXBwQm91bmQpCiB7Ci0gICAgYWxsRnJhbWVzID0gW1tOU011dGFi
bGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOworICAgIGFsbEZyYW1lcyA9IGFkb3B0
TlMoW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdKTsKICAgICBpbml0
aWFsaXplSW5BcHBCcm93c2VyUHJpdmFjeVRlc3RTZXR0aW5ncygpOwogCiAgICAgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVn
SW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CkBAIC0xMzYzLDEy
ICsxMzYzLDEyIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgQWJvdXRCbGFua1N1YkZyYW1l
TWF0Y2hlc1RvcEZyYW1lQXBwQm91bmQpCiAgICAgTlNTdHJpbmcgKnVybCA9IEAiaW4tYXBwLWJy
b3dzZXI6Ly9hcHBsZS5jb20vaW4tYXBwLWJyb3dzZXItcHJpdmFjeS10ZXN0LWFib3V0LWJsYW5r
LXN1YmZyYW1lIjsKICAgICBsb2FkUmVxdWVzdCh3ZWJWaWV3LCB1cmwpOwogICAgIAotICAgIEVY
UEVDVF9FUShhbGxGcmFtZXMuY291bnQsIDJ1KTsKKyAgICBFWFBFQ1RfRVEoW2FsbEZyYW1lcyBj
b3VudF0sIDJ1KTsKIAogICAgIHN0YXRpYyBzaXplX3QgZmluaXNoZWRGcmFtZXMgPSAwOwogICAg
IHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJh
bWUgaW4gYWxsRnJhbWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJh
bWVzLmdldCgpKSB7CiAgICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZS5pc01haW5GcmFt
ZTsKICAgICAgICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlv
bi5ocmVmOyIgYXJndW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29u
dGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJh
bWVdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBFWFBFQ1RfVFJV
RShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOwpAQCAtMTM4MCw3ICsx
MzgwLDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRj
aGVzVG9wRnJhbWVBcHBCb3VuZCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImFib3V0OmJsYW5rIl0pOwogCi0g
ICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQpCisgICAg
ICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSkKICAgICAg
ICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9XTsKICAgICB9CkBAIC0xMzg5LDcg
KzEzODksNyBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1h
dGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogCiBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0
QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5kKQogewotICAgIGFsbEZyYW1l
cyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XTsKKyAgICBhbGxG
cmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0
XSk7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIAog
ICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJX
ZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNd
OwpAQCAtMTQwMCwxNSArMTQwMCwxNSBAQCBURVNUKEluQXBwQnJvd3NlclByaXZhY3ksIEFib3V0
QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZU5vbkFwcEJvdW5kKQogICAgIE5TU3RyaW5nICp1
cmwgPSBAImluLWFwcC1icm93c2VyOi8vYXBwbGUuY29tL2luLWFwcC1icm93c2VyLXByaXZhY3kt
dGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSI7CiAgICAgbG9hZFJlcXVlc3Qod2ViVmlldywgdXJs
KTsKIAotICAgIEVYUEVDVF9FUShhbGxGcmFtZXMuY291bnQsIDJ1KTsKKyAgICBFWFBFQ1RfRVEo
W2FsbEZyYW1lcyBjb3VudF0sIDJ1KTsKIAogICAgIHN0YXRpYyBzaXplX3QgZmluaXNoZWRGcmFt
ZXMgPSAwOwogICAgIHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0Zy
YW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJh
bWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFT
Y3JpcHQ6QCJyZXR1cm4gbG9jYXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFt
ZSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6W10gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAg
IEVYUEVDVF9UUlVFKCEhZXJyb3IpOwotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMg
PT0gYWxsRnJhbWVzLmNvdW50KQorICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0g
W2FsbEZyYW1lcyBjb3VudF0pCiAgICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAg
ICAgfV07CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0KaW5kZXggZjdiODFm
MGFiZDVlZjUzYTc1NzZhMDNkODc1NzNjYWY1NDdhNWJkMS4uNmRmMjA3YjJmMjA3OWMwMGFlMGYy
YTJmMmMxYTg4OGVmZmY4OTA0MiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9sc1Rlc3RzLm1tCkBA
IC05Miw5ICs5Miw5IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKICNpZiBQTEFURk9STShN
QUMpCiBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNEb05v
dFNob3dGb3JGb3JlZ3JvdW5kUGFnZSkKIHsKLSAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpj
b25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKLSAg
ICBjb25maWd1cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sg
PSBXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZTsKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBp
bml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rp
b25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9uZV07CisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImxhcmdlLXZpZGVvLXRl
c3Qtbm93LXBsYXlpbmciXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAInBsYXlpbmci
XTsKIApAQCAtMTEzLDkgKzExMyw5IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5v
d1BsYXlpbmdDb250cm9sc0RvTm90U2hvd0ZvckZvcmVncm91bmRQYWdlKQogCiBURVNUKE5vd1Bs
YXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNTaG93Rm9yQmFja2dyb3VuZFBh
Z2UpCiB7Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5tZWRp
YVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmU7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldE1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRp
b3Zpc3VhbE1lZGlhVHlwZU5vbmVdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQ
bGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZp
ZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nIl07CiAg
ICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAKQEAgLTEzMCw5ICsxMzAs
OSBAQCBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNTaG93
Rm9yQmFja2dyb3VuZFBhZ2UpCiAKIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMsIE5vd1Bs
YXlpbmdDb250cm9sc0hpZGVBZnRlclNob3dpbmdLZWVwc1Nlc3Npb25BY3RpdmUpCiB7Ci0gICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWly
aW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0g
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1l
ZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmVdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQ
YWdlTmFtZWQ6QCJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcg
d2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAKQEAgLTE1Myw5ICsxNTMsOSBAQCBURVNUKE5v
d1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNIaWRlQWZ0ZXJTaG93aW5n
S2VlcHNTZXNzaW9uQWN0aQogCiBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5
aW5nQ29udHJvbHNDbGVhckluZm9BZnRlclNlc3Npb25Jc05vTG9uZ2VyVmFsaWQpCiB7Ci0gICAg
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWly
aW5nVXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0g
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQ4MCwgMzIwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1l
ZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlh
VHlwZU5vbmVdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMyMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQ
YWdlTmFtZWQ6QCJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcg
d2FpdEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAKQEAgLTE5NCw5ICsxOTQsOSBAQCBURVNUKE5v
d1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNDbGVhckluZm9BZnRlclNl
c3Npb25Jc05vTG9uZ2VyVgogCiBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5
aW5nQ29udHJvbHNDaGVja1JlZ2lzdGVyZWQpCiB7Ci0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07
Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXli
YWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBh
dXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1lZGlhVHlwZXNSZXF1aXJpbmdVc2Vy
QWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmVdOworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJnZS12aWRl
by10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJwbGF5
aW5nIl07CiAgICAgW3dlYlZpZXcgc2V0V2luZG93VmlzaWJsZTpOT107CkBAIC0yMjIsOSArMjIy
LDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2hl
Y2tSZWdpc3RlcmVkKQogLy8gRklYTUU6IFJlLWVuYWJsZSB0aGlzIHRlc3Qgb25jZSA8d2Via2l0
Lm9yZy9iLzE3NTIwND4gaXMgcmVzb2x2ZWQuCiBURVNUKE5vd1BsYXlpbmdDb250cm9sc1Rlc3Rz
LCBESVNBQkxFRF9Ob3dQbGF5aW5nQ29udHJvbHNJT1MpCiB7Ci0gICAgV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZv
clBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDQ4MCwgMzIwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1lZGlhVHlwZXNSZXF1aXJp
bmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmVdOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMyMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJsYXJn
ZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6
QCJwbGF5aW5nIl07CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tCmluZGV4IDAzZTBlNzBlZDM3Zjk3ODg5
MDJmZTZkYTkwNWU0YjBjYWE5NmYwMzcuLjhhZWY2MjhmYzYzNDA0ZWI5ZWVjNjU3OTljOGVlNDA2
ZmU2ODc0ZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUGFzdGVNaXhlZENvbnRlbnQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbQpAQCAtMTUyLDggKzE1Miw4IEBAIFRFU1Qo
UGFzdGVNaXhlZENvbnRlbnQsIEltYWdlRmlsZUFuZFJURikKIHsKICAgICBhdXRvIHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXcoKTsKICAgICBhdXRvIHRleHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pOwotICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRT
dHJpbmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAibGluayB0
byAiXV07Ci0gICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJhcHBsZSIgYXR0cmlidXRlczpAeyBOU0xpbmtB
dHRyaWJ1dGVOYW1lOiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNv
bS8iXSB9XV07CisgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzphZG9wdE5TKFtbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImxpbmsgdG8gIl0pLmdldCgp
XTsKKyAgICBbdGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmFkb3B0TlMoW1tOU0F0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiYXBwbGUiIGF0dHJpYnV0ZXM6QHsgTlNM
aW5rQXR0cmlidXRlTmFtZTogW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBs
ZS5jb20vIl0gfV0pLmdldCgpXTsKICAgICBOU0RhdGEgKnJ0ZkRhdGEgPSBbdGV4dCBSVEZGcm9t
UmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3RleHQgbGVuZ3RoXSkgZG9jdW1lbnRBdHRyaWJ1dGVzOkB7
IH1dOwogICAgIHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKE5TRmlsZW5hbWVzUGJvYXJk
VHlwZSwgQFsgaW1hZ2VQYXRoKCkgXSwgTlNQYXN0ZWJvYXJkVHlwZVJURiwgcnRmRGF0YSwgbmls
KTsKICAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1t
CmluZGV4IGM1NTQyNWMwMDIwZDg3ZjA3MWMwZDI1MGM4MDNhMWY5MzdkZDgxNTUuLmEyZTQzMDIy
NGU5Y2NlZjliYWRlZGZkZTc3NGRhZDg4MWMxMzc2OWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJWaWV3VGltZW91dC5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50V2ViVmlld1Rp
bWVvdXQubW0KQEAgLTM0LDcgKzM0LDcgQEAKIAogVEVTVChXZWJLaXQsIFJlcGFyZW50V2ViVmll
d1RpbWVvdXQpCiB7Ci0gICAgUmV0YWluUHRyPF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbj4g
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
YWxsb2NdIGluaXRdOworICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtwcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0SWdub3JlU3luY2hyb25vdXNNZXNzYWdpbmdUaW1lb3V0
c0ZvclRlc3Rpbmc6WUVTXTsKIAogICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9u
PiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvU2NoZW1lUmVnaXN0cnkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1NjaGVtZVJlZ2lzdHJ5Lm1tCmluZGV4IDJjOGE4NDE1YWNmOGU1OTZiMzA4YTVjNGM3NTcw
ZDcxMzE5MmJmYWYuLjIxMDgyMDZmYTc5NDNkMzJjNTgwY2UyOWNjNmZiODJkYWIxMTg3OGEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVn
aXN0cnkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TY2hl
bWVSZWdpc3RyeS5tbQpAQCAtMTY5LDcgKzE2OSw4IEBAIFRFU1QoV2ViS2l0LCBXS0NvbnRleHRS
ZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RfU2FtZU9yaWdpbkxv
CiAgICAgICAgIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdChjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKGVjaG9TY2hlbWUuVVRGOFN0cmluZyku
Z2V0KCkpOwogCiAgICAgICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3IHsgY29udGV4dC5nZXQo
KSB9OwotICAgICAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIubG9hZERlbGVnYXRlID0gW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlz
cGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAgICBh
dXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFz
Q2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxv
YWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcucGxhdGZv
cm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjwhRE9D
VFlQRSBodG1sPjxib2R5PjxzY3JpcHQgc3JjPSdlY2hvOi8vQS9BXzEnPjwvc2NyaXB0PiIgYmFz
ZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImVjaG86Ly9BIl1dOwogICAgICAgICBVdGlsOjpy
dW4oJmRpZEZpbmlzaExvYWQpOwogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CkBAIC0x
OTIsNyArMTkzLDggQEAgVEVTVChXZWJLaXQsIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXND
YW5EaXNwbGF5T25seUlmQ2FuUmVxdWVzdF9Dcm9zc09yaWdpbkwKICAgICAgICAgV0tDb250ZXh0
UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0KGNvbnRleHQuZ2V0
KCksIFV0aWw6OnRvV0soZWNob1NjaGVtZS5VVEY4U3RyaW5nKS5nZXQoKSk7CiAKICAgICAgICAg
UGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcgeyBjb250ZXh0LmdldCgpIH07Ci0gICAgICAgIHdlYlZp
ZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUg
PSBbW1dLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2FuUmVxdWVz
dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgICAgIGF1dG8gbG9hZERlbGVnYXRlID0g
YWRvcHROUyhbW1dLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlmQ2Fu
UmVxdWVzdExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICB3ZWJWaWV3LnBsYXRm
b3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERl
bGVnYXRlLmdldCgpOwogICAgICAgICBbd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0Nv
bnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiPCFET0NUWVBFIGh0bWw+PGJvZHk+PHNj
cmlwdCBzcmM9J2VjaG86Ly9BL0FfMSc+PC9zY3JpcHQ+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAiZWNobzovL0IiXV07CiAgICAgICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7
CiAgICAgICAgIGRpZEZpbmlzaExvYWQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbQppbmRleCA4YmM2NTNj
YTkwNjViMjdkZGJjMmFjZmY2ZDg2YmQyYzk3N2EyNTdjLi5iZDRiMzVmMjAwMDAxMTBlOGI1ZTA0
NmRjMDdiMzBiZDM4MDY4OWVjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1N5c3RlbVByZXZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9TeXN0ZW1QcmV2aWV3Lm1tCkBAIC02OCw3ICs2OCw3IEBAIFRFU1Qo
V2ViS2l0LCBTeXN0ZW1QcmV2aWV3VHJpZ2dlcmVkKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIg
PSBhZG9wdE5TKFtbVGVzdFN5c3RlbVByZXZpZXdUcmlnZ2VyZWRIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0
TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RTeXN0ZW1QcmV2
aWV3Il07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic3lzdGVtLXByZXZpZXctdHJpZ2dlciJd
OwogICAgIFV0aWw6OnJ1bigmaGFzVHJpZ2dlckluZm8pOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rlc3RTT0F1dGhvcml6YXRpb24u
bW0KaW5kZXggODZkZDExZTE2N2VhYzNhMWQxNzFkYjJiNmVjMGYwMmVkYzMwZWI5ZC4uMzMyNmQ1
NzYyNGJkYTAwYTg4MGFlMWNmMTAyNWVmZjMwY2UzZDhkOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9uLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNPQXV0aG9yaXphdGlv
bi5tbQpAQCAtMTg0LDcgKzE4NCw3IEBAIC0gKFdLV2ViVmlldyAqKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgY3JlYXRlV2ViVmlld1dpdGhDb25maWd1cmF0aW9uOihXS1dlCiB7CiAgICAg
RVhQRUNUX0ZBTFNFKG5ld1dpbmRvd0NyZWF0ZWQpOwogICAgIG5ld1dpbmRvd0NyZWF0ZWQgPSB0
cnVlOwotICAgIGdOZXdXaW5kb3cgPSBbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl07CisgICAgZ05ld1dpbmRvdyA9
IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKICAgICBbZ05ld1dpbmRvdyBzZXROYXZpZ2F0aW9u
RGVsZWdhdGU6c2VsZl07CiAgICAgcmV0dXJuIGdOZXdXaW5kb3cuZ2V0KCk7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJJbml0aWF0ZWRB
Y3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1VzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0KaW5kZXgg
Yzg2ZmM0Y2IzNjNiMzUxOWRjZThkZDE5MmRjMDE4OGNlZmFhMzFmMC4uYjllMzEwOGViNzM3ZTc2
OTZkYjhmYmZhM2VhY2YyMzllNzQxYjBlNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0aW9uQWN0aW9u
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckluaXRp
YXRlZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlvbi5tbQpAQCAtODEsOSArODEsOSBAQCBwdWJsaWM6
CiAKICAgICBOU1VSTCAqVVJMV2l0aEZyYWdtZW50KE5TU3RyaW5nICpmcmFnbWVudCkKICAgICB7
Ci0gICAgICAgIE5TVVJMQ29tcG9uZW50cyAqVVJMQ29tcG9uZW50cyA9IFtbTlNVUkxDb21wb25l
bnRzIGFsbG9jXSBpbml0V2l0aFVSTDpVUkwuZ2V0KCkgcmVzb2x2aW5nQWdhaW5zdEJhc2VVUkw6
Tk9dOwotICAgICAgICBVUkxDb21wb25lbnRzLmZyYWdtZW50ID0gZnJhZ21lbnQ7Ci0gICAgICAg
IHJldHVybiBVUkxDb21wb25lbnRzLlVSTDsKKyAgICAgICAgYXV0byB1cmxDb21wb25lbnRzID0g
YWRvcHROUyhbW05TVVJMQ29tcG9uZW50cyBhbGxvY10gaW5pdFdpdGhVUkw6VVJMLmdldCgpIHJl
c29sdmluZ0FnYWluc3RCYXNlVVJMOk5PXSk7CisgICAgICAgIFt1cmxDb21wb25lbnRzIHNldEZy
YWdtZW50OmZyYWdtZW50XTsKKyAgICAgICAgcmV0dXJuIFt1cmxDb21wb25lbnRzIFVSTF07CiAg
ICAgfQogCiAgICAgdm9pZCBsb2FkVGVzdChOU1N0cmluZyAqdGVzdCkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlhRGlzYWJsZWQubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVk
Lm1tCmluZGV4IGNjNTQ1YjQ5MWUwMjg5NGE3NjNmNWI5MjgxYTBkN2U4NjA0ZDdhYmQuLjUxZTM0
YTJlNjU0NGU3NmZlNmUxMDMxYTZmMmU5Yjk5NDU0YzQxNjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlck1lZGlhRGlzYWJsZWQubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VyTWVkaWFEaXNhYmxlZC5t
bQpAQCAtMTM0LDcgKzEzNCw3IEBAIFRFU1RfRihNZWRpYUNhcHR1cmVEaXNhYmxlZFRlc3QsIFVu
c2VjdXJlQ29udGV4dCkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1
cmVDb25uZWN0aW9uID0gWUVTOwogCiAgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gZmFsc2U7
Ci0gICAgW21fd2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5PjxzY3JpcHQ+d2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoTmF2aWdh
dG9yLnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnbWVkaWFEZXZpY2VzJykgPyAnaGFzJyA6ICdu
b25lJyk7PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4iIGJhc2VVUkw6IFtbTlNVUkwgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOkAiaHR0cDovL3Rlc3Qub3JnIl1dOworICAgIFttX3dlYlZpZXcgbG9hZEhU
TUxTdHJpbmc6QCI8aHRtbD48Ym9keT48c2NyaXB0PndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRs
ZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKE5hdmlnYXRvci5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHkoJ21lZGlhRGV2aWNlcycpID8gJ2hhcycgOiAnbm9uZScpOzwvc2NyaXB0PjwvYm9keT48
L2h0bWw+IiBiYXNlVVJMOmFkb3B0TlMoW1tOU1VSTCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJo
dHRwOi8vdGVzdC5vcmciXSkuZ2V0KCldOwogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIEVYUEVDVF9TVFJFUShbKE5TU3RyaW5nICop
W2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldIFVURjhTdHJpbmddLCAibm9uZSIpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9y
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tIVFRQQ29va2ll
U3RvcmUubW0KaW5kZXggODdhODUwNDMyZDRiZmQ1ZjBlNTg1NmY0NDA3ZmQwMWVhMjdiZWQ0My4u
ZDQ5ODBjZmQ0NzAyZWIzYjMyYTE4M2Q1OWUyYzkwMzQyZjJlM2IxYyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tpZVN0
b3JlLm1tCkBAIC0yNTcsMTcgKzI1NywxNyBAQCBURVNUKFdLSFRUUENvb2tpZVN0b3JlLCBIdHRw
T25seSkKICAgICBnb3RGbGFnID0gZmFsc2U7CiAgICAgQVNTRVJUX0VRKFtjb29raWVzIGNvdW50
XSwgMHUpOwogCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqY29va2llUHJvcGVydGllcyA9IFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgYXV0byBjb29raWVQcm9wZXJ0
aWVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBb
Y29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCJjb29raWVOYW1lIiBmb3JLZXk6TlNIVFRQQ29v
a2llTmFtZV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llVmFsdWUi
IGZvcktleTpOU0hUVFBDb29raWVWYWx1ZV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2Jq
ZWN0OkAiLnd3dy53ZWJraXQub3JnIiBmb3JLZXk6TlNIVFRQQ29va2llRG9tYWluXTsKICAgICBb
Y29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCIvcGF0aCIgZm9yS2V5Ok5TSFRUUENvb2tpZVBh
dGhdOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAWUVTIGZvcktleTpAIkh0dHBP
bmx5Il07Ci0gICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gaHR0cE9ubHlDb29raWUgPSBbTlNI
VFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXNdOworICAgIFJl
dGFpblB0cjxOU0hUVFBDb29raWU+IGh0dHBPbmx5Q29va2llID0gW05TSFRUUENvb2tpZSBjb29r
aWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzLmdldCgpXTsKICAgICBbY29va2llUHJv
cGVydGllcyBzZXRPYmplY3Q6QCJjb29raWVWYWx1ZTIiIGZvcktleTpOU0hUVFBDb29raWVWYWx1
ZV07Ci0gICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gaHR0cE9ubHlDb29raWUyID0gW05TSFRU
UENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzXTsKKyAgICBSZXRh
aW5QdHI8TlNIVFRQQ29va2llPiBodHRwT25seUNvb2tpZTIgPSBbTlNIVFRQQ29va2llIGNvb2tp
ZVdpdGhQcm9wZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXMuZ2V0KCldOwogICAgIFtjb29raWVQcm9w
ZXJ0aWVzIHJlbW92ZU9iamVjdEZvcktleTpAIkh0dHBPbmx5Il07Ci0gICAgUmV0YWluUHRyPE5T
SFRUUENvb2tpZT4gbm90SHR0cE9ubHlDb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQ
cm9wZXJ0aWVzOmNvb2tpZVByb3BlcnRpZXNdOworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+
IG5vdEh0dHBPbmx5Q29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpj
b29raWVQcm9wZXJ0aWVzLmdldCgpXTsKIAogICAgIEVYUEVDVF9UUlVFKGh0dHBPbmx5Q29va2ll
LmdldCgpLkhUVFBPbmx5KTsKICAgICBFWFBFQ1RfRkFMU0Uobm90SHR0cE9ubHlDb29raWUuZ2V0
KCkuSFRUUE9ubHkpOwpAQCAtMzYyLDE0ICszNjIsMTQgQEAgVEVTVChXS0hUVFBDb29raWVTdG9y
ZSwgQ3JlYXRpb25UaW1lKQogCiAgICAgZ2xvYmFsQ29va2llU3RvcmUgPSBkYXRhU3RvcmUuaHR0
cENvb2tpZVN0b3JlOwogCi0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqY29va2llUHJvcGVydGll
cyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07CisgICAgYXV0byBjb29raWVQ
cm9wZXJ0aWVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
ICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCJjb29raWVOYW1lIiBmb3JLZXk6TlNI
VFRQQ29va2llTmFtZV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2ll
VmFsdWUiIGZvcktleTpOU0hUVFBDb29raWVWYWx1ZV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMg
c2V0T2JqZWN0OkAiLnd3dy53ZWJraXQub3JnIiBmb3JLZXk6TlNIVFRQQ29va2llRG9tYWluXTsK
ICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmplY3Q6QCIvcGF0aCIgZm9yS2V5Ok5TSFRUUENv
b2tpZVBhdGhdOwogICAgIFJldGFpblB0cjxOU051bWJlcj4gY3JlYXRpb25UaW1lID0gQCgxMDAw
MDApOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9iamVjdDpjcmVhdGlvblRpbWUuZ2V0KCkg
Zm9yS2V5OkAiQ3JlYXRlZCJdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGNvb2tpZSA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllc107Cisg
ICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gY29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVX
aXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzLmdldCgpXTsKIAogICAgIFtnbG9iYWxDb29r
aWVTdG9yZSBzZXRDb29raWU6Y29va2llLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOltdKCkgewog
ICAgICAgICBnb3RGbGFnID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQppbmRleCA1YTA0
NjQyZWZhNDIyNGMzYjIxN2YwYTIxMjQ4MWUwZjRlMDA3Y2Q4Li45ZGVhNjNjZDg2YTdiN2YxMmQ5
MDg1OWJmNDAyYzIxMWJkMjI0OWNlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCkBAIC0xMjQs
NyArMTI0LDcgQEAgLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGNvbmZpZ3VyYXRpb25Gb3JMb2MKICAgICBzaGFyZWRJbnNwZWN0b3JE
ZWxlZ2F0ZSA9IFtJbnNwZWN0b3JEZWxlZ2F0ZSBuZXddOwogICAgIFtpbnNwZWN0b3Igc2V0RGVs
ZWdhdGU6c2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUuZ2V0KCldOwogCi0gICAgc2hhcmVkVVJMU2No
ZW1lSGFuZGxlciA9IFtbU2ltcGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF07CisgICAg
c2hhcmVkVVJMU2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tTaW1wbGVVUkxTY2hlbWVIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBpbnNwZWN0b3JDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbaW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNoYXJlZFVSTFNjaGVtZUhhbmRs
ZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdGluZyJdOwogICAgIHJldHVybiBpbnNwZWN0b3JD
b25maWd1cmF0aW9uLmF1dG9yZWxlYXNlKCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tQREZWaWV3Lm1tCmluZGV4IGU3MmU2MGY3NDNiMWIzZGM0ZDNj
ZjJkYTFjZDE1YmYwNTEwODJmYjguLmUyMzBiMDk0Y2E1OTYxNzRlNjMwNWY3ZTg3YTU3YjRiMmJi
Y2ZjODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tQREZWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tQREZWaWV3Lm1tCkBAIC00MTQsMTQgKzQxNCwxNCBAQCBAZW5kCiAKIFRFU1QoUERGLCBQcmlu
dFNpemUpCiB7Ci0gICAgYXV0byBjb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIG5ld10gYXV0b3JlbGVhc2VdOwotICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IFtbVGVzdFVS
TFNjaGVtZUhhbmRsZXIgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0
VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyIGZvclVSTFNjaGVtZTpAInRlc3QiXTsKLSAg
ICBhdXRvIHdlYlZpZXcgPSBbW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0gYXV0
b3JlbGVhc2VdOwotICAgIGF1dG8gZGVsZWdhdGUgPSBbW1ByaW50VUlEZWxlZ2F0ZSBuZXddIGF1
dG9yZWxlYXNlXTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLQotICAgIHNj
aGVtZUhhbmRsZXIuc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlk
PFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgeworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgYXV0byBzY2hlbWVIYW5kbGVy
ID0gYWRvcHROUyhbVGVzdFVSTFNjaGVtZUhhbmRsZXIgbmV3XSk7CisgICAgW2NvbmZpZ3VyYXRp
b24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpA
InRlc3QiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbUHJp
bnRVSURlbGVnYXRlIG5ld10pOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOworCisgICAgc2NoZW1lSGFuZGxlci5nZXQoKS5zdGFydFVSTFNjaGVtZVRhc2tIYW5k
bGVyID0gXihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CiAgICAgICAg
IGF1dG8gdXJsID0gdGFzay5yZXF1ZXN0LlVSTDsKICAgICAgICAgTlNEYXRhICpkYXRhOwogICAg
ICAgICBOU1N0cmluZyAqbWltZVR5cGU7CkBAIC00MzcsOCArNDM3LDggQEAgVEVTVChQREYsIFBy
aW50U2l6ZSkKICAgICAgICAgICAgIG1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi9wZGYiOwogICAg
ICAgICAgICAgZGF0YSA9IFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mVVJMOltbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ0ZXN0X3ByaW50IiB3aXRoRXh0ZW5zaW9uOkAi
cGRmIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKICAgICAgICAg
fQotICAgICAgICBOU1VSTFJlc3BvbnNlICpyZXNwb25zZSA9IFtbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOnVybCBNSU1FVHlwZTptaW1lVHlwZSBleHBlY3RlZENvbnRlbnRMZW5n
dGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxlYXNlXTsKLSAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlXTsKKyAgICAgICAgYXV0byByZXNw
b25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmwgTUlN
RVR5cGU6bWltZVR5cGUgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNv
ZGluZ05hbWU6bmlsXSk7CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25z
ZS5nZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGFdOwogICAgICAgICBb
dGFzayBkaWRGaW5pc2hdOwogICAgIH07CkBAIC00NDksNyArNDQ5LDcgQEAgVEVTVChQREYsIFBy
aW50U2l6ZSkKICAgICBFWFBFQ1RfRVEoc2l6ZS53aWR0aCwgNjEyLjApOwogCiAgICAgX19ibG9j
ayBib29sIHJlY2VpdmVkU2l6ZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9nZXRQREZGaXJzdFBh
Z2VTaXplSW5GcmFtZTp3ZWJWaWV3Ll9tYWluRnJhbWUgY29tcGxldGlvbkhhbmRsZXI6XihDR1Np
emUgcmVxdWVzdGVkU2l6ZSkgeworICAgIFt3ZWJWaWV3IF9nZXRQREZGaXJzdFBhZ2VTaXplSW5G
cmFtZTpbd2ViVmlldyBfbWFpbkZyYW1lXSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1
ZXN0ZWRTaXplKSB7CiAgICAgICAgIEVYUEVDVF9FUShyZXF1ZXN0ZWRTaXplLmhlaWdodCwgNzky
LjApOwogICAgICAgICBFWFBFQ1RfRVEocmVxdWVzdGVkU2l6ZS53aWR0aCwgNjEyLjApOwogICAg
ICAgICByZWNlaXZlZFNpemUgPSB0cnVlOwpAQCAtNDY0LDcgKzQ2NCw3IEBAIFRFU1QoUERGLCBQ
cmludFNpemUpCiAgICAgRVhQRUNUX0VRKG1haW5GcmFtZVNpemUud2lkdGgsIDAuMCk7CiAgICAg
CiAgICAgcmVjZWl2ZWRTaXplID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2dldFBERkZpcnN0UGFn
ZVNpemVJbkZyYW1lOndlYlZpZXcuX21haW5GcmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6
ZSByZXF1ZXN0ZWRTaXplKSB7CisgICAgW3dlYlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZy
YW1lOlt3ZWJWaWV3IF9tYWluRnJhbWVdIGNvbXBsZXRpb25IYW5kbGVyOl4oQ0dTaXplIHJlcXVl
c3RlZFNpemUpIHsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNpemUuaGVpZ2h0LCAwLjAp
OwogICAgICAgICBFWFBFQ1RfRVEocmVxdWVzdGVkU2l6ZS53aWR0aCwgMC4wKTsKICAgICAgICAg
cmVjZWl2ZWRTaXplID0gdHJ1ZTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBURVNUKFBERiwgUHJpbnRT
aXplKQogICAgIEVYUEVDVF9ORUFSKHBkZkZyYW1lU2l6ZS53aWR0aCwgMTI5LjYwMDAwNiwgLjAw
MDAxKTsKIAogICAgIHJlY2VpdmVkU2l6ZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9nZXRQREZG
aXJzdFBhZ2VTaXplSW5GcmFtZTpkZWxlZ2F0ZS5sYXN0UHJpbnRlZEZyYW1lIGNvbXBsZXRpb25I
YW5kbGVyOl4oQ0dTaXplIHJlcXVlc3RlZFNpemUpIHsKKyAgICBbd2ViVmlldyBfZ2V0UERGRmly
c3RQYWdlU2l6ZUluRnJhbWU6W2RlbGVnYXRlIGxhc3RQcmludGVkRnJhbWVdIGNvbXBsZXRpb25I
YW5kbGVyOl4oQ0dTaXplIHJlcXVlc3RlZFNpemUpIHsKICAgICAgICAgRVhQRUNUX05FQVIocmVx
dWVzdGVkU2l6ZS5oZWlnaHQsIDI4Ljc5OTk5OSwgLjAwMDAxKTsKICAgICAgICAgRVhQRUNUX05F
QVIocmVxdWVzdGVkU2l6ZS53aWR0aCwgMTI5LjYwMDAwNiwgLjAwMDAxKTsKICAgICAgICAgcmVj
ZWl2ZWRTaXplID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLm1tCmluZGV4IDBl
N2FlOTZlMWI2YTEzNzhhMGVjZjI3NmZkM2Q4NmNkMWRjYmJjNzcuLjc3ZDI0ZmEwNWYzMGYxNDNj
OTE0MDM5M2QzMmU4YzI3ODIwMTM1ZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDYW5kaWRhdGVUZXN0cy5t
bQpAQCAtMTI1LDkgKzEyNSw5IEBAIC0gKHZvaWQpdHlwZVN0cmluZzooTlNTdHJpbmcgKilzdHJp
bmcgaW5wdXRNZXNzYWdlOihOU1N0cmluZyAqKWlucHV0TWVzc2FnZQogICAgIH0KIH0KIAotKyAo
aW5zdGFuY2V0eXBlKXNldFVwV2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgdGVzdFBhZ2U6KE5TU3Ry
aW5nICopdGVzdFBhZ2VOYW1lCisrIChSZXRhaW5QdHI8Q2FuZGlkYXRlVGVzdFdlYlZpZXc+KXNl
dFVwV2l0aEZyYW1lOihOU1JlY3QpZnJhbWUgdGVzdFBhZ2U6KE5TU3RyaW5nICopdGVzdFBhZ2VO
YW1lCiB7Ci0gICAgQ2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtbQ2FuZGlkYXRl
VGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6ZnJhbWVdOworICAgIGF1dG8gd2tXZWJW
aWV3ID0gYWRvcHROUyhbW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OmZyYW1lXSk7CiAKICAgICBbd2tXZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOnRlc3RQYWdlTmFt
ZV07CiAgICAgW3drV2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpAImZvY3VzZWQiXTsKQEAgLTE0MSw3
ICsxNDEsNyBAQCBAZW5kCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIFNvZnRTcGFj
ZVJlcGxhY2VtZW50QWZ0ZXJDYW5kaWRhdGVJbnNlcnRpb25XaXRob3V0UmVwbGFjZW1lbnQpCiB7
Ci0gICAgQ2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtDYW5kaWRhdGVUZXN0V2Vi
VmlldyBzZXRVcFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSB0ZXN0UGFnZTpA
ImlucHV0LWZpZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQiXTsKKyAgICBhdXRvIHdrV2ViVmll
dyA9IFtDYW5kaWRhdGVUZXN0V2ViVmlldyBzZXRVcFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSB0ZXN0UGFnZTpAImlucHV0LWZpZWxkLWluLXNjcm9sbGFibGUtZG9jdW1lbnQi
XTsKIAogICAgIFt3a1dlYlZpZXcgaW5zZXJ0Q2FuZGlkYXRlc0FuZFdhaXRGb3JSZXNwb25zZTpA
ImFwcGxlICIgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMCldOwogICAgIEVYUEVDVF9XS19TVFJFUSgi
YXBwbGUgIiwgW3drV2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkdldElucHV0
VmFsdWVKU0V4cHJlc3Npb25dKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBURVNUKFdLV2ViVmlld0Nh
bmRpZGF0ZVRlc3RzLCBTb2Z0U3BhY2VSZXBsYWNlbWVudEFmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9u
V2l0aG91dAogCiBURVNUKFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBJbnNlcnRDaGFyYWN0ZXJz
QWZ0ZXJDYW5kaWRhdGVJbnNlcnRpb25XaXRoU29mdFNwYWNlKQogewotICAgIENhbmRpZGF0ZVRl
c3RXZWJWaWV3ICp3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1z
Y3JvbGxhYmxlLWRvY3VtZW50Il07CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVz
dFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBh
Z2U6QCJpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Il07CiAKICAgICBbd2tXZWJW
aWV3IGluc2VydENhbmRpZGF0ZXNBbmRXYWl0Rm9yUmVzcG9uc2U6QCJmb28gIiByYW5nZTpOU01h
a2VSYW5nZSgwLCAwKV07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJmb28gIiwgW3drV2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkdldElucHV0VmFsdWVKU0V4cHJlc3Npb25dKTsK
QEAgLTE2Nyw3ICsxNjcsNyBAQCBURVNUKFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBJbnNlcnRD
aGFyYWN0ZXJzQWZ0ZXJDYW5kaWRhdGVJbnNlcnRpb25XaXRoU29mdFNwYQogCiBURVNUKFdLV2Vi
Vmlld0NhbmRpZGF0ZVRlc3RzLCBJbnNlcnRDYW5kaWRhdGVGcm9tUGFydGlhbGx5VHlwZWRQaHJh
c2VXaXRoU29mdFNwYWNlKQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dlYlZpZXcg
PSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Il07
CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1z
Y3JvbGxhYmxlLWRvY3VtZW50Il07CiAKICAgICBbd2tXZWJWaWV3IHR5cGVTdHJpbmc6QCJoZWwi
IGlucHV0TWVzc2FnZTpAImlucHV0Il07CiAgICAgW3drV2ViVmlldyBpbnNlcnRDYW5kaWRhdGVz
QW5kV2FpdEZvclJlc3BvbnNlOkAiaGVsbG8gIiByYW5nZTpOU01ha2VSYW5nZSgwLCAzKV07CkBA
IC0xODcsNyArMTg3LDcgQEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgSW5zZXJ0Q2Fu
ZGlkYXRlRnJvbVBhcnRpYWxseVR5cGVkUGhyYXNlV2l0aFNvZnRTcGEKIAogVEVTVChXS1dlYlZp
ZXdDYW5kaWRhdGVUZXN0cywgQ2xpY2tpbmdJblRleHRGaWVsZERvZXNOb3RUaHJhc2hDYW5kaWRh
dGVWaXNpYmlsaXR5KQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dlYlZpZXcgPSBb
Q2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgdGVzdFBhZ2U6QCJsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQiXTsKKyAgICBh
dXRvIHdrV2ViVmlldyA9IFtDYW5kaWRhdGVUZXN0V2ViVmlldyBzZXRVcFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDgwMCwgNjAwKSB0ZXN0UGFnZTpAImxhcmdlLWlucHV0LWZpZWxkLWZvY3Vz
LW9ubG9hZCJdOwogCiAgICAgW3drV2ViVmlldyB0eXBlU3RyaW5nOkAidGVzdCIgaW5wdXRNZXNz
YWdlOkAiaW5wdXQiXTsKICAgICBbd2tXZWJWaWV3IGV4cGVjdENhbmRpZGF0ZUxpc3RWaXNpYmls
aXR5VXBkYXRlczowIHdoZW5QZXJmb3JtaW5nQWN0aW9uczpeKCkKQEAgLTIwMyw3ICsyMDMsNyBA
QCBURVNUKFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBDbGlja2luZ0luVGV4dEZpZWxkRG9lc05v
dFRocmFzaENhbmRpZGF0ZVZpc2liaWxpdAogCiBURVNUKFdLV2ViVmlld0NhbmRpZGF0ZVRlc3Rz
LCBTaG91bGROb3RSZXF1ZXN0Q2FuZGlkYXRlc0luUGFzc3dvcmRGaWVsZCkKIHsKLSAgICBDYW5k
aWRhdGVUZXN0V2ViVmlldyAqd2tXZWJWaWV3ID0gW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV07CisgICAgYXV0byB3
a1dlYlZpZXcgPSBhZG9wdE5TKFtbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2tXZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAidGV4dC1hbmQtcGFzc3dvcmQtaW5wdXRzIl07CiAgICAgW3drV2ViVmll
dyB3YWl0Rm9yTWVzc2FnZTpAImxvYWRlZCJdOwogICAgIFt3a1dlYlZpZXcgX2ZvcmNlUmVxdWVz
dENhbmRpZGF0ZXNdOwpAQCAtMjI1LDcgKzIyNSw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRl
VGVzdHMsIFNob3VsZE5vdFJlcXVlc3RDYW5kaWRhdGVzSW5QYXNzd29yZEZpZWxkKQogCiBURVNU
KFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBTaG91bGRSZXF1ZXN0Q2FuZGlkYXRlc0luVGV4dEZp
ZWxkKQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dlYlZpZXcgPSBbW0NhbmRpZGF0
ZVRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApXTsKKyAgICBhdXRvIHdrV2ViVmlldyA9IGFkb3B0TlMoW1tDYW5kaWRhdGVUZXN0V2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwogICAg
IFt3a1dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJ0ZXh0LWFuZC1wYXNzd29yZC1pbnB1dHMi
XTsKICAgICBbd2tXZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAibG9hZGVkIl07CiAgICAgW3drV2Vi
VmlldyBfZm9yY2VSZXF1ZXN0Q2FuZGlkYXRlc107CkBAIC0yNDcsNyArMjQ3LDcgQEAgVEVTVChX
S1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkUmVxdWVzdENhbmRpZGF0ZXNJblRleHRGaWVs
ZCkKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgQ2FuZGlkYXRlUmVjdEZvckVtcHR5
UGFyYWdyYXBoKQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dlYlZpZXcgPSBbQ2Fu
ZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50Il07CisgICAg
YXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1zY3JvbGxh
YmxlLWRvY3VtZW50Il07CiAgICAgTlNSZWN0IGNhbmRpZGF0ZVJlY3QgPSBbd2tXZWJWaWV3IF9j
YW5kaWRhdGVSZWN0XTsKICAgICBFWFBFQ1RfTkUoMCwgY2FuZGlkYXRlUmVjdC5vcmlnaW4ueSk7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
V2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0luaXRpYWxp
emF0aW9uLm1tCmluZGV4IDg4NzE2OTM0NjA3ZjRjYWNjZDM5YzNmYjM1ZDQ0YTE4ODZhMTFmYmIu
LjI2Y2E0NTdjNGI3NmI1MTJmZmFlNGZiNDk3YmIzZmJjNWIxMmEzMDQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RG9lc05vdExvZ0R1
cmluZ0luaXRpYWxpemF0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0luaXRpYWxpemF0aW9uLm1tCkBAIC0z
MSw2ICszMSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQv
X1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxmY250bC5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiBURVNUKFdLV2ViVmlldywgSW5pdGlhbGl6aW5nV2ViVmll
d1dpdGhFcGhlbWVyYWxTdG9yYWdlRG9lc05vdExvZykKIHsKQEAgLTQxLDEyICs0MiwxMiBAQCBU
RVNUKFdLV2ViVmlldywgSW5pdGlhbGl6aW5nV2ViVmlld1dpdGhFcGhlbWVyYWxTdG9yYWdlRG9l
c05vdExvZykKICAgICBkdXAyKHBbMV0sIFNUREVSUl9GSUxFTk8pOwogICAgIGNsb3NlKHBbMV0p
OwogCi0gICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgX1dLUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uICpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBbW19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IFtb
V0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb25dOwotICAgIGNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dl
YnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV07CisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQ
cm9jZXNzUG9vbDphZG9wdE5TKFtbV0tQcm9jZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCldKS5nZXQoKV07CisgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBl
cnNpc3RlbnREYXRhU3RvcmVdXTsKIAotICAgIFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFpl
cm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAKICAgICBGSUxFICpzdGRl
cnJGaWxlSGFuZGxlID0gZmRvcGVuKHBbMF0sICJyIik7CiAgICAgY2hhciBidWZmZXJbMTAyNF07
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCmluZGV4IDEwMzA1MTU3ZTUy
MzJlMWY0OTYwMzJiNWY4ZTAyN2FmZmY2MDY0ZWQuLjU2YjEyMWJjOWE4MDQyMzcyNDRjNGI5YTVj
MjA0OTc4ZDM3YzU5MTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1t
CkBAIC00NzMsNyArNDczLDggQEAgVEVTVChXZWJLaXQsIFNQSUphdmFzY3JpcHRNYXJrdXBWc0FQ
SUNvbnRlbnRKYXZhU2NyaXB0KQogCiB9CiAKLXN0YXRpYyBOU011dGFibGVTZXQ8V0tGcmFtZUlu
Zm8gKj4gKmFsbEZyYW1lczsKK3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlU2V0PFdLRnJhbWVJ
bmZvICo+PiBhbGxGcmFtZXM7CisKIEBpbnRlcmZhY2UgRnJhbWVzTWVzc2FnZUhhbmRsZXIgOiBO
U09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIEBlbmQKIApAQCAtNDk5LDcgKzUwMCw3
IEBAIHN0YXRpYyBOU1N0cmluZyAqdXNlclNjcmlwdFNvdXJjZSA9IEAid2luZG93LndlYmtpdC5t
ZXNzYWdlSGFuZGxlcnMuZnJhbWVzVGVzdGVyCiAvLyBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdCB0
byBjb25maXJtIHRoYXQgaXQgY2FuIGV4ZWN1dGUgSlMgZGlyZWN0bHkgaW4gZWFjaCBvZiB0aG9z
ZSBmcmFtZXMuCiBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJv
bVBvc3RNZXNzYWdlKQogewotICAgIGFsbEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJ
bmZvICo+IGFsbG9jXSBpbml0XTsKKyAgICBhbGxGcmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
U2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBtZXNzYWdlSGFuZGxl
ciA9IGFkb3B0TlMoW1tGcmFtZXNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1
dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGluaXRXaXRoU291
cmNlOnVzZXJTY3JpcHRTb3VyY2UgaW5qZWN0aW9uVGltZTpXS1VzZXJTY3JpcHRJbmplY3Rpb25U
aW1lQXREb2N1bWVudFN0YXJ0IGZvck1haW5GcmFtZU9ubHk6Tk8gaW5Db250ZW50V29ybGQ6V0tD
b250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkXSk7CiAKQEAgLTUyNywxMiArNTI4LDEyIEBA
IFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3Nh
Z2UpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJmcmFt
ZXN0ZXN0Oi8vdGVzdC9pbmRleC5odG1sIl1dXTsKIAotICAgIEVYUEVDVF9FUShhbGxGcmFtZXMu
Y291bnQsIDJ1KTsKKyAgICBFWFBFQ1RfRVEoW2FsbEZyYW1lcyBjb3VudF0sIDJ1KTsKIAogICAg
IHN0YXRpYyBzaXplX3QgZmluaXNoZWRGcmFtZXMgPSAwOwogICAgIHN0YXRpYyBib29sIGlzRG9u
ZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzKSB7
CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7CiAgICAg
ICAgIGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZS5pc01haW5GcmFtZTsKICAgICAgICAgW3dlYlZp
ZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlvbi5ocmVmOyIgYXJndW1lbnRz
Om5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRD
bGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJhbWVdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CkBAIC01NDMs
NyArNTQ0LDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zy
b21Qb3N0TWVzc2FnZSkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4
Lmh0bWwiXSk7CiAKLSAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1l
cy5jb3VudCAqIDIpCisgICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJh
bWVzIGNvdW50XSAqIDIpCiAgICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAg
fV07CiAKQEAgLTU1Nyw3ICs1NTgsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNj
cmlwdEluRnJhbWVzRnJvbVBvc3RNZXNzYWdlKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAib3RoZXJwcm90b2Nv
bDovL3Rlc3QvaW5kZXguaHRtbCJdKTsKIAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFt
ZXMgPT0gYWxsRnJhbWVzLmNvdW50ICogMikKKyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJh
bWVzID09IFthbGxGcmFtZXMgY291bnRdICogMikKICAgICAgICAgICAgICAgICBpc0RvbmUgPSB0
cnVlOwogICAgICAgICB9XTsKICAgICB9CkBAIC01NzIsNyArNTczLDcgQEAgVEVTVChFdmFsdWF0
ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKIC8vIGFuZCBj
YWxsQXN5bmNKYXZhU2NyaXB0IHRvIGNvbmZpcm0gdGhhdCBpdCBjYW4gZXhlY3V0ZSBKUyBkaXJl
Y3RseSBpbiBlYWNoIG9mIHRob3NlIGZyYW1lcy4KIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBK
YXZhU2NyaXB0SW5GcmFtZXNGcm9tTmF2aWdhdGlvbkRlbGVnYXRlKQogewotICAgIGFsbEZyYW1l
cyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XTsKKyAgICBhbGxG
cmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0
XSk7CiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKICAgICBbaGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVy
OlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CkBAIC02MTUsMTIg
KzYxNiwxMiBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJv
bU5hdmlnYXRpb25EZWxlZ2F0ZSkKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlk
RmluaXNoTmF2aWdhdGlvbik7CiAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7
CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6
ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsK
IAotICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAo
V0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlz
TWFpbkZyYW1lID0gZnJhbWUuaXNNYWluRnJhbWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3lu
Y0phdmFTY3JpcHQ6QCJyZXR1cm4gbG9jYXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFt
ZTpmcmFtZSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6W2lzTWFpbkZyYW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJv
cikgewogICAgICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwpAQCAtNjMxLDcgKzYzMiw3IEBA
IFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tTmF2aWdhdGlv
bkRlbGVnYXRlKQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIEVYUEVDVF9UUlVF
KFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAib3RoZXJwcm90b2NvbDovL3Rlc3QvaW5kZXguaHRt
bCJdKTsKIAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxsRnJhbWVzLmNv
dW50ICogMikKKyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMg
Y291bnRdICogMikKICAgICAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9XTsK
IApAQCAtNjQ1LDcgKzY0Niw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0
SW5GcmFtZXNGcm9tTmF2aWdhdGlvbkRlbGVnYXRlKQogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAib3RoZXJwcm90
b2NvbDovL3Rlc3QvaW5kZXguaHRtbCJdKTsKIAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRG
cmFtZXMgPT0gYWxsRnJhbWVzLmNvdW50ICogMikKKyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVk
RnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdICogMikKICAgICAgICAgICAgICAgICBpc0RvbmUg
PSB0cnVlOwogICAgICAgICB9XTsKICAgICB9CkBAIC02NTcsNyArNjU4LDcgQEAgVEVTVChFdmFs
dWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21OYXZpZ2F0aW9uRGVsZWdhdGUp
CiAvLyBkdWUgdG8gcmVtb3ZhbCBmcm9tIHRoZSBET00gcmVzdWx0cyBpbiBhbiBhcHByb3ByaWF0
ZSBlcnJvcgogVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbk1pc3NpbmdGcmFt
ZUVycm9yKQogewotICAgIGFsbEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+
IGFsbG9jXSBpbml0XTsKKyAgICBhbGxGcmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0PFdL
RnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XSk7CiAKICAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbaGFuZGxlciBzZXRT
dGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVU
YXNrPiB0YXNrKSB7CkBAIC03MDAsNyArNzAxLDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQs
IEphdmFTY3JpcHRJbk1pc3NpbmdGcmFtZUVycm9yKQogCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKIAotICAgIEVYUEVDVF9FUShhbGxGcmFtZXMu
Y291bnQsIDJ1KTsKKyAgICBFWFBFQ1RfRVEoW2FsbEZyYW1lcyBjb3VudF0sIDJ1KTsKIAogICAg
IHN0YXRpYyBib29sIGlzRG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpAInZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0aGVGcmFtZScpOyBm
cmFtZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGZyYW1lKTsiIGluRnJhbWU6bmlsIGluQ29udGVu
dFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxl
cjpbXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewpAQCAtNzEwLDcgKzcxMSw3IEBAIFRF
U1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiAgICAgaXNEb25lID0gZmFsc2U7
CiAKLSAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMpIHsKKyAgICBmb3Ig
KFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0KCkpIHsKICAgICAgICAgaWYgKGZy
YW1lLmlzTWFpbkZyYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKQEAgLTcyOCw3ICs3Mjks
NyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlzc2luZ0ZyYW1lRXJy
b3IpCiAvLyBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBldmFsdWF0aW5nIEphdmFTY3JpcHQgaW4g
YSBmcmFtZSBmcm9tIHRoZSBwcmV2aW91cyBtYWluIG5hdmlnYXRpb24gcmVzdWx0cyBpbiBhbiBl
cnJvcgogVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbk1pc3NpbmdGcmFtZUFm
dGVyTmF2aWdhdGlvbkVycm9yKQogewotICAgIGFsbEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdL
RnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XTsKKyAgICBhbGxGcmFtZXMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XSk7CiAKICAgICBhdXRvIGhhbmRs
ZXIgPSBhZG9wdE5TKFtbVGVzdFVSTFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBb
aGFuZGxlciBzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOlsmXShXS1dlYlZpZXcgKiwgaWQ8
V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7CkBAIC03NzcsMTAgKzc3OCwxMCBAQCBURVNUKEV2YWx1
YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluTWlzc2luZ0ZyYW1lQWZ0ZXJOYXZpZ2F0aW9uRXJy
b3IpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsK
ICAgICBkaWRGaW5pc2hOYXZpZ2F0aW9uID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfRVEoYWxsRnJh
bWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAK
ICAgICBSZXRhaW5QdHI8V0tGcmFtZUluZm8+IGlmcmFtZTsKLSAgICBmb3IgKFdLRnJhbWVJbmZv
ICpmcmFtZSBpbiBhbGxGcmFtZXMpIHsKKyAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBh
bGxGcmFtZXMuZ2V0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGlmcmFtZSA9IGZyYW1lOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRocy5tbQppbmRleCAyODFhYzFiYTIyMTBkYzY1YzY4YjUwZDc5N2M5
OGVhMzEyOWIwNGJhLi5mNjE2YTc0YjQxN2Y2MWU5YWEzZGQyNWM4YmU4NmM5ZTJhMmZkMjhhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRocy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQpAQCAtMTk3LDcgKzE5Nyw3
IEBAIHN0YXRpYyB2b2lkIHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyhTaG91bGRFbmFi
bGVQcm9jZXNzUHJld2FybWluZyBzaG91bGRFCiAgICAgUmV0YWluUHRyPE5TVVJMPiBmaWxlSURC
UGF0aCA9IFtbaWRiUGF0aCBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJ2MSJdIFVSTEJ5
QXBwZW5kaW5nUGF0aENvbXBvbmVudDpAImZpbGVfXzAiXTsKICAgICBFWFBFQ1RfVFJVRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZmlsZUlEQlBhdGgu
Z2V0KCkucGF0aF0pOwogCi0gICAgUmV0YWluUHRyPFdLV2Vic2l0ZURhdGFTdG9yZT4gZGF0YVN0
b3JlID0gW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246
d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgIGF1dG8gZGF0YVN0b3Jl
ID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJh
dGlvbjp3ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFJldGFpblB0
cjxOU1NldD4gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpX
S1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcywgbmlsXSk7CiAKICAgICAvLyBTdWJm
cmFtZSBvZiBkaWZmZXJlbnQgb3JpZ2lucyBtYXkgYWxzbyBjcmVhdGUgSW5kZXhlZERCIGZpbGVz
LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJz
aXRlUG9saWNpZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVQb2xpY2llcy5tbQppbmRleCAwNDE3NGM5OWQwZDZjMzVmODkyMjliMzkwM2IwMDdjMGE0
NzI4MDg0Li5mMDQzMzJhMjBmOTllMWRhZTMwNzI0NmY0ZDY2YmU1YWFhMmIzNmFhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2ll
cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQ
b2xpY2llcy5tbQpAQCAtMTY1Nyw3ICsxNjU3LDcgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGEK
ICAgICBOU1VSTCAqdXJsID0gdGFzay5yZXF1ZXN0LlVSTDsKICAgICBpZiAoW3VybC5wYXRoIGlz
RXF1YWxUb1N0cmluZzpAIi9jaGVja1N0b3JhZ2UiXSkgewogICAgICAgICBOU1N0cmluZyAqaHRt
bCA9IEAiPHNjcmlwdD52YXIgb2xkVmFsdWUgPSB3aW5kb3cuc2Vzc2lvblN0b3JhZ2VbJ3N0b3Jh
Z2VLZXknXTsgd2luZG93LnNlc3Npb25TdG9yYWdlWydzdG9yYWdlS2V5J10gPSAndmFsdWUnOyBh
bGVydCgnb2xkIHZhbHVlOiA8JyArIChvbGRWYWx1ZSA/ICdmYWlsJyA6ICcnKSArICc+Jyk7PC9z
Y3JpcHQ+IjsKLSAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbTlNVUkxSZXNwb25z
ZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6aHRtbC5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdXTsKKyAgICAgICAg
W3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBp
bml0V2l0aFVSTDp1cmwgTUlNRVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0
aDpodG1sLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pLmdldCgpXTsKICAgICAgICAgW3Rh
c2sgZGlkUmVjZWl2ZURhdGE6W2h0bWwgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddXTsKICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICB9CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dl
YlZpZXcubW0KaW5kZXggNGIzZDM1ZWEzOTZmYjM4ZTcwMmM1ZWUwNzg4OWQyZTI0YjJjNDI1Mi4u
OGQ1ZjlmNzM5YTJiZDhmZTg5YjAwNGI4Y2FjZTAxOGRiZTk3Y2VmYiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdhY3kvbWFjL0Nsb3NpbmdXZWJWaWV3Lm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5L21hYy9DbG9zaW5n
V2ViVmlldy5tbQpAQCAtNzksNyArNzksOCBAQCBURVNUKFdlYktpdExlZ2FjeSwgQ2xvc2luZ1dl
YlZpZXdUaGVuU2VuZGluZ0l0QUtleURvd25FdmVudCkKICAgICBVdGlsOjpydW4oJmRpZEZpbmlz
aExvYWQpOwogCiAgICAgLy8gRmlyc3QsIGFkZCBhIG5hdGl2ZSBldmVudCBsaXN0ZW5lciB0aGF0
IGNsb3NlcyB0aGUgV2ViVmlldy4KLSAgICBbW1t3ZWJWaWV3IG1haW5GcmFtZURvY3VtZW50XSBi
b2R5XSBhZGRFdmVudExpc3RlbmVyOkAia2V5cHJlc3MiIGxpc3RlbmVyOltbS2V5Ym9hcmRFdmVu
dExpc3RlbmVyIGFsbG9jXSBpbml0XSB1c2VDYXB0dXJlOk5PXTsKKyAgICBhdXRvIGxpc3RlbmVy
ID0gYWRvcHROUyhbW0tleWJvYXJkRXZlbnRMaXN0ZW5lciBhbGxvY10gaW5pdF0pOworICAgIFtb
W3dlYlZpZXcgbWFpbkZyYW1lRG9jdW1lbnRdIGJvZHldIGFkZEV2ZW50TGlzdGVuZXI6QCJrZXlw
cmVzcyIgbGlzdGVuZXI6bGlzdGVuZXIuZ2V0KCkgdXNlQ2FwdHVyZTpOT107CiAKICAgICAvLyBT
ZWNvbmQsIGFkZCBhIEphdmFTY3JpcHQgZXZlbnQgaGFuZGxlciB0aGF0IGNvbnN1bWVzIHRoZSBl
dmVudC4KICAgICBbW1t3ZWJWaWV3IG1haW5GcmFtZV0gamF2YVNjcmlwdENvbnRleHRdIGV2YWx1
YXRlU2NyaXB0OkAiYWRkS2V5UHJlc3NIYW5kbGVyKCkiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1l
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL0N1c3RvbVByb3RvY29s
c0ludmFsaWRTY2hlbWUubW0KaW5kZXggNDJlNGNjZjBjYzM5YjdjNGYzOGFiZTE2MmFjNzJhMzg4
ZjNjOGJkNy4uOWI4NzJlMzc0MTg2Y2JjMDMyZGJmMWMyOTI0YzQyMzlkZmRkYzM4MSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL0N1c3RvbVByb3RvY29s
c0ludmFsaWRTY2hlbWUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRP
YmpDL0N1c3RvbVByb3RvY29sc0ludmFsaWRTY2hlbWUubW0KQEAgLTYwLDcgKzYwLDggQEAgVEVT
VChXZWJLaXQyQ3VzdG9tUHJvdG9jb2xzVGVzdCwgTG9hZEludmFsaWRTY2hlbWUpCiAgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJDdXN0b21Qcm90b2NvbEludmFsaWRTY2hlbWVUZXN0
IikpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwogCi0gICAg
d2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxl
Z2F0ZSA9IFtbTG9hZEludmFsaWRTY2hlbWVEZWxlZ2F0ZSBhbGxvY10gaW5pdF07CisgICAgYXV0
byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTG9hZEludmFsaWRTY2hlbWVEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgW3dlYlZpZXcu
cGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkUmVxdWVzdDpbTlNV
UkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHQndHA6Ly93
d3cud2Via2l0Lm9yZyJdXV07CiAgICAgCiAgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1ByZXZlbnRJ
bWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCmluZGV4IDI5NmFi
YjBjMmIwODAzZTkwNjg4ODY1MmJiNzJiOTg3NWQ5NmNhZjMuLmUxMjYxOGNhN2M4MzkzZGFiOTU0
NzQ4YmJkNTAyN2JiMTE4YmMzMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvUHJldmVudEltYWdlTG9hZFdpdGhB
dXRvUmVzaXppbmcubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIlBsYXRmb3JtV2ViVmll
dy5oIgogI2ltcG9ydCAiVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZS5oIgogI2ltcG9y
dCA8V2ViS2l0L1dLVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
c3RhdGljIGJvb2wgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAKQEAgLTQ0LDkgKzQ1LDEwIEBAIFRF
U1QoV2ViS2l0LCBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZ1Rlc3QpCiAgICAgUGxh
dGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAKICAgICB3ZWJWaWV3LnBsYXRm
b3JtVmlldygpLm1pbmltdW1TaXplRm9yQXV0b0xheW91dCA9IE5TTWFrZVNpemUoNDAwLCAzMDAp
OwotICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5s
b2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2Vu
ZGVyKSB7CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29u
dGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKICAgICAgICAgdGVzdEZpbmlzaGVkID0g
dHJ1ZTsKLSAgICB9XTsKKyAgICB9XSk7CisgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93
c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsK
ICAgICBbd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxv
YWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHkgc3R5bGU9J2JhY2tncm91bmQtaW1hZ2U6dXJsKGRh
dGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQW9BQUFBS0NBWUFB
QUNOTXMrOUFBQUFHWFJGV0hSVGIyWjBkMkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBB
QUFBRlpKUkVGVWVGNTl6NEVKQURFSVExRjM2azd1NUU3WktYZVVRUEFDSjN3SzdVTm9rVnhWazlr
SG5RSDdiWTloYkR5RGhOWGdqcFJMcUZsbzRNMkdnZnlKSGhqcThWNGFnZnJnUFFYM0p0SlFHYm9m
bUNIZ0EvbkFLa3MrSkFqRkFBQUFBRWxGVGtTdVFtQ0MpOyc+PC9ib2R5PjwvaHRtbD4iIGJhc2VV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJhYm91dDpibGFuayJdXTsKIAogICAgIFV0aWw6OnJ1
bigmdGVzdEZpbmlzaGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0T2JqQy9Vc2VyQ29udGVudFRlc3QubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tCmluZGV4IDJkMGIxNzNmZGE1NmQ3YjhhODUw
YjM3OGM3YjhlYzkyYzhmMWU0YzMuLmEyNDIyNmVmMjRhYzVlZmY0ZjZiNjY1M2ZjNDBkYmRlY2E4
OWVkMTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9V
c2VyQ29udGVudFRlc3QubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRP
YmpDL1VzZXJDb250ZW50VGVzdC5tbQpAQCAtMTIwLDE3ICsxMjAsMTcgQEAgVEVTVF9GKFdlYktp
dDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QmVmb3JlQ3JlYXRpbmdWaWV3KQog
ICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRV
c2VyU3R5bGVTaGVldDp1c2VyU3R5bGVTaGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0
ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9u
bHk6WUVTXTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNz
R3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0
KCldOwotICAgIFdLU3RyaW5nUmVmIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gV0tTdHJpbmdDcmVh
dGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KTsKLSAgICB3a1ZpZXcuYnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRl
eHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZSh3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnksIF4oV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9y
KSB7CisgICAgYXV0byB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAu
Z2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsK
KyAgICBhdXRvIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpKTsKKyAgICBhdXRvIGxvYWREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNl
bmRlcikgeworICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVm
XSwgYmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVS
ZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAgICAgICAg
ICBleHBlY3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZ3JlZW5J
blJHQik7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgV0tS
ZWxlYXNlKGJhY2tncm91bmRDb2xvclF1ZXJ5KTsKICAgICAgICAgfSk7Ci0gICAgfV07CisgICAg
fV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0ubG9hZERlbGVnYXRl
ID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKyAgICBb
W3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkSFRNTFN0cmluZzpodG1sU3Ry
aW5nIGJhc2VVUkw6bmlsXTsKICAgICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRl
c3RGaW5pc2hlZCk7CiB9CkBAIC0xMzksMTkgKzEzOSwxOSBAQCBURVNUX0YoV2ViS2l0MlVzZXJD
b250ZW50VGVzdCwgQWRkVXNlclN0eWxlU2hlZXRBZnRlckNyZWF0aW5nVmlldykKIHsKICAgICB0
ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NH
cm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250
ZXh0R3JvdXAuZ2V0KCldOwotICAgIFdLU3RyaW5nUmVmIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0g
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KTsKLSAg
ICB3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RC
cm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9h
ZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZSh3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnks
IF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vy
cm9yUmVmIGVycm9yKSB7CisgICAgYXV0byB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpw
cm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3Jv
dXAuZ2V0KCldKTsKKyAgICBhdXRvIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gYWRvcHRXSyhXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpKTsKKyAgICBh
dXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgKnNlbmRlcikgeworICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3dr
VmlldyBwYWdlUmVmXSwgYmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7
CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgZ3JlZW5JblJHQik7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAg
ICAgICAgICAgV0tSZWxlYXNlKGJhY2tncm91bmRDb2xvclF1ZXJ5KTsKICAgICAgICAgfSk7Ci0g
ICAgfV07CisgICAgfV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0u
bG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgW2Jyb3dzaW5nQ29udGV4
dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OnVzZXJTdHlsZVNoZWV0IGJhc2VVUkw6bmlsIGluY2x1
ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwg
bWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKyAgICBbW3dr
VmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5n
IGJhc2VVUkw6bmlsXTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlz
aGVkKTsKIH0KQEAgLTE2MSwxOSArMTYxLDE5IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRU
ZXN0LCBSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMpCiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7
CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTdHlsZVNoZWV0OnVzZXJTdHlsZVNo
ZWV0IGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0
Y2hQYXR0ZXJuU3RyaW5nczpuaWwgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAgIFdLVmll
dyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRl
eHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tTdHJpbmdSZWYgYmFj
a2dyb3VuZENvbG9yUXVlcnkgPSBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhiYWNrZ3Jv
dW5kQ29sb3JTY3JpcHQpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxv
YWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5k
ZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdrVmlldy5wYWdlUmVmLCBi
YWNrZ3JvdW5kQ29sb3JRdWVyeSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKKyAgICBhdXRvIHdrVmlldyA9IGFk
b3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91
cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV0pOworICAgIGF1dG8gYmFja2dyb3VuZENvbG9y
UXVlcnkgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRD
b2xvclNjcmlwdCkpOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RCcm93
c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpe
KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgICAgIHJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZShbd2tWaWV3IHBhZ2VSZWZdLCBiYWNrZ3JvdW5kQ29sb3JRdWVyeS5n
ZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUs
IFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVjdFNjcmlwdFZhbHVlSXNTdHJp
bmcoc2VyaWFsaXplZFNjcmlwdFZhbHVlLCByZWRJblJHQik7CiAgICAgICAgICAgICB0ZXN0Rmlu
aXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgV0tSZWxlYXNlKGJhY2tncm91bmRDb2xvclF1ZXJ5
KTsKICAgICAgICAgfSk7Ci0gICAgfV07CisgICAgfV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlcl0ubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAg
IAogICAgIFticm93c2luZ0NvbnRleHRHcm91cCByZW1vdmVBbGxVc2VyU3R5bGVTaGVldHNdOwog
ICAgIAotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmlu
ZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKyAgICBbW3drVmlldyBicm93c2luZ0NvbnRleHRD
b250cm9sbGVyXSBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKICAgICAK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0xODMs
MTcgKzE4MywxNyBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNlclNjcmlw
dEJlZm9yZUNyZWF0aW5nVmlldykKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBbYnJv
d3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclNjcmlwdDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIiVzID0gdHJ1ZTsiLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5XSBiYXNlVVJMOm5pbCBpbmNs
dWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmls
IGluamVjdGlvblRpbWU6a1dLSW5qZWN0QXREb2N1bWVudFN0YXJ0IG1haW5GcmFtZU9ubHk6WUVT
XTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAu
Z2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldOwot
ICAgIFdLU3RyaW5nUmVmIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KTsKLSAgICB3a1ZpZXcu
YnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0Nv
bnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZSh3a1ZpZXcucGFnZVJlZiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZywg
XihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJy
b3JSZWYgZXJyb3IpIHsKKyAgICBhdXRvIHdrVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnBy
b2Nlc3NHcm91cC5nZXQoKSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91
cC5nZXQoKV0pOworICAgIGF1dG8gdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IGFkb3B0
V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQcm9wZXJ0eSkp
OworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CisgICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShbd2tWaWV3IHBhZ2VSZWZdLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLmdldCgp
LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tF
cnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc0Jvb2xlYW4o
c2VyaWFsaXplZFNjcmlwdFZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIHRlc3RGaW5pc2hlZCA9
IHRydWU7Ci0gICAgICAgICAgICBXS1JlbGVhc2UodXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmlu
Zyk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAg
ICAKLSAgICBbd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6
QCIiIGJhc2VVUkw6bmlsXTsKKyAgICBbW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVy
XSBsb2FkSFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOwogICAgIAogICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmdGVzdEZpbmlzaGVkKTsKIH0KQEAgLTIwMiwxOSArMjAyLDE5IEBAIFRF
U1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU2NyaXB0QWZ0ZXJDcmVhdGluZ1Zp
ZXcpCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgCi0gICAgV0tWaWV3ICp3a1Zp
ZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3Vw
OmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0
VGVzdFByb3BlcnR5U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNj
cmlwdFRlc3RQcm9wZXJ0eSk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
bG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNl
bmRlcikgewotICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYs
IHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcsIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVS
ZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0byB3
a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdD
b250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBhdXRvIHVzZXJT
Y3JpcHRUZXN0UHJvcGVydHlTdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0
aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikg
eworICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgdXNl
clNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZy5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZVJlZiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAg
ICAgIGV4cGVjdFNjcmlwdFZhbHVlSXNCb29sZWFuKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdHJ1
ZSk7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgV0tSZWxl
YXNlKHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsKLSAgICB9XTsK
KyAgICB9XSk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2FkRGVs
ZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCiAgICAgW2Jyb3dzaW5nQ29udGV4dEdy
b3VwIGFkZFVzZXJTY3JpcHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyA9IHRydWU7
IiwgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eV0gYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVy
blN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBpbmplY3Rpb25UaW1l
OmtXS0luamVjdEF0RG9jdW1lbnRTdGFydCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAg
W3drVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNl
VVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhU
TUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsKICAgICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0yMjQsMTkgKzIyNCwxOSBAQCBURVNUX0YoV2Vi
S2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclNjcmlwdHMpCiAgICAgdGVzdEZpbmlz
aGVkID0gZmFsc2U7CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTY3JpcHQ6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyA9IHRydWU7IiwgdXNlclNjcmlwdFRlc3RQcm9w
ZXJ0eV0gYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBpbmplY3Rpb25UaW1lOmtXS0luamVjdEF0RG9jdW1lbnRT
dGFydCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dL
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9j
ZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5n
Q29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0VGVzdFByb3Bl
cnR5U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eSk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVn
YXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJs
b2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewot
ICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIHVzZXJTY3Jp
cHRUZXN0UHJvcGVydHlTdHJpbmcsIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFs
aXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0byB3a1ZpZXcgPSBh
ZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3Jv
dXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBhdXRvIHVzZXJTY3JpcHRUZXN0
UHJvcGVydHlTdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVz
ZXJTY3JpcHRUZXN0UHJvcGVydHkpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9S
dW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgICAg
ICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgdXNlclNjcmlwdFRl
c3RQcm9wZXJ0eVN0cmluZy5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVj
dFNjcmlwdFZhbHVlSXNVbmRlZmluZWQoc2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKICAgICAgICAg
ICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgICAgICAgICBXS1JlbGVhc2UodXNlclNjcmlw
dFRlc3RQcm9wZXJ0eVN0cmluZyk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAg
ICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWRE
ZWxlZ2F0ZS5nZXQoKTsKICAgICAKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgcmVtb3ZlQWxs
VXNlclNjcmlwdHNdOwogICAgIAotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKyAgICBbW3drVmlldyBi
cm93c2luZ0NvbnRleHRDb250cm9sbGVyXSBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VV
Ukw6bmlsXTsKICAgICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hl
ZCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5k
RHJvcFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERy
b3BUZXN0c0lPUy5tbQppbmRleCA1ZTY3MzYxMTAzM2YxMWM2YTI4NTRiMmUyMmJmOGFkYzk5ODRk
MjYyLi44YjQwYWEwMDU3NmI3MTQ0OWI5YWFjYWIyZDk5YWZmYWE1YzUzNDAzIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EcmFnQW5kRHJvcFRlc3RzSU9TLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0K
QEAgLTg3OSw4ICs4NzksOCBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNl
Qm9sZFN5c3RlbUF0dHJpYnV0ZWRTdHJpbmdUb0NvbnRlbnRFZGl0YWJsZQogCiAgICAgYXV0byBz
aW11bGF0b3IgPSBhZG9wdE5TKFtbRHJhZ0FuZERyb3BTaW11bGF0b3IgYWxsb2NdIGluaXRXaXRo
V2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAgICAgTlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmlidXRl
cyA9IEB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IFtVSUZvbnQgYm9sZFN5c3RlbUZvbnRPZlNpemU6
MjBdIH07Ci0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpyaWNoVGV4dCA9IFtbTlNBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIlRoaXMgaXMgYSB0ZXN0IiBhdHRyaWJ1dGVz
OnRleHRBdHRyaWJ1dGVzXTsKLSAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0
ZW1Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6cmljaFRleHRdKTsKKyAgICBhdXRvIHJp
Y2hUZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJp
bmc6QCJUaGlzIGlzIGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc10pOworICAgIGF1
dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0V2l0
aE9iamVjdDpyaWNoVGV4dC5nZXQoKV0pOwogICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVt
UHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKICAgICBbc2ltdWxhdG9yIHJ1bkZy
b206Q0dQb2ludE1ha2UoMzAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CiAKQEAg
LTg5NSw4ICs4OTUsOCBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIEV4dGVybmFsU291cmNlQ29s
b3JlZEF0dHJpYnV0ZWRTdHJpbmdUb0NvbnRlbnRFZGl0YWJsZSkKIAogICAgIGF1dG8gc2ltdWxh
dG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZp
ZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIE5TRGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBA
eyBOU0ZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWU6IFtVSUNvbG9yIHJlZENvbG9yXSB9Owot
ICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmljaFRleHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBh
bGxvY10gaW5pdFdpdGhTdHJpbmc6QCJUaGlzIGlzIGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0
cmlidXRlc107Ci0gICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlk
ZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0XSk7CisgICAgYXV0byByaWNoVGV4dCA9
IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhp
cyBpcyBhIHRlc3QiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKKyAgICBhdXRvIGl0ZW1Q
cm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6
cmljaFRleHQuZ2V0KCldKTsKICAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVy
czpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CiAgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9p
bnRNYWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOwogCkBAIC0xODcyLDgg
KzE4NzIsOCBAQCBURVNUKERyYWdBbmREcm9wVGVzdHMsIERhdGFUcmFuc2ZlckdldERhdGFSZWFk
UGxhaW5BbmRSaWNoVGV4dCkKIAogICAgIGF1dG8gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW05T
SXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CiAgICAgTlNEaWN0aW9uYXJ5ICp0ZXh0QXR0cmli
dXRlcyA9IEB7IE5TRm9udEF0dHJpYnV0ZU5hbWU6IFtVSUZvbnQgYm9sZFN5c3RlbUZvbnRPZlNp
emU6MjBdIH07Ci0gICAgTlNBdHRyaWJ1dGVkU3RyaW5nICpyaWNoVGV4dCA9IFtbTlNBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAIldlYktpdCIgYXR0cmlidXRlczp0ZXh0
QXR0cmlidXRlc107Ci0gICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpyaWNoVGV4dCB2
aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKKyAg
ICBhdXRvIHJpY2hUZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5p
dFdpdGhTdHJpbmc6QCJXZWJLaXQiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKKyAgICBb
aXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OnJpY2hUZXh0LmdldCgpIHZpc2liaWxpdHk6TlNJ
dGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOwogICAgIFtpdGVtUHJvdmlk
ZXIgcmVnaXN0ZXJPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy53ZWJr
aXQub3JnLyJdIHZpc2liaWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxp
dHlBbGxdOwogICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6QCJXZWJLaXQiIHZpc2li
aWxpdHk6TlNJdGVtUHJvdmlkZXJSZXByZXNlbnRhdGlvblZpc2liaWxpdHlBbGxdOwogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJ
T1MubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJ
T1MubW0KaW5kZXggMjVkNzgyNDUxZWE2YzIwNDRhZjJkZDFhMmE4Njc1YjI5OTZmNjlhYS4uZDg3
NzA4ODkzNGFjMzU5N2NkYzRlNWM2NzExYmE4MTEzYTlkMzFmNCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQpAQCAt
NzEsMjMgKzcxLDIzIEBAICsgKFVJSW1hZ2UgKiliYXJCdXR0b25JY29uCiArIChVSUJhckJ1dHRv
bkl0ZW1Hcm91cCAqKWxlYWRpbmdJdGVtc0ZvcldlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcK
IHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMgVUlC
YXJCdXR0b25JdGVtR3JvdXAgKnNoYXJlZEl0ZW1zOworICAgIHN0YXRpYyBSZXRhaW5QdHI8VUlC
YXJCdXR0b25JdGVtR3JvdXA+IHNoYXJlZEl0ZW1zOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VU
b2tlbiwgXnsKICAgICAgICAgYXV0byBsZWFkaW5nSXRlbSA9IGFkb3B0TlMoW1tVSUJhckJ1dHRv
bkl0ZW0gYWxsb2NdIGluaXRXaXRoSW1hZ2U6c2VsZi5iYXJCdXR0b25JY29uIHN0eWxlOlVJQmFy
QnV0dG9uSXRlbVN0eWxlUGxhaW4gdGFyZ2V0OndlYlZpZXcgYWN0aW9uOkBzZWxlY3RvcihmYWtl
TGVhZGluZ0JhckJ1dHRvbkl0ZW1BY3Rpb24pXSk7Ci0gICAgICAgIHNoYXJlZEl0ZW1zID0gW1tV
SUJhckJ1dHRvbkl0ZW1Hcm91cCBhbGxvY10gaW5pdFdpdGhCYXJCdXR0b25JdGVtczpAWyBsZWFk
aW5nSXRlbS5nZXQoKSBdIHJlcHJlc2VudGF0aXZlSXRlbTpuaWxdOworICAgICAgICBzaGFyZWRJ
dGVtcyA9IGFkb3B0TlMoW1tVSUJhckJ1dHRvbkl0ZW1Hcm91cCBhbGxvY10gaW5pdFdpdGhCYXJC
dXR0b25JdGVtczpAWyBsZWFkaW5nSXRlbS5nZXQoKSBdIHJlcHJlc2VudGF0aXZlSXRlbTpuaWxd
KTsKICAgICB9KTsKLSAgICByZXR1cm4gc2hhcmVkSXRlbXM7CisgICAgcmV0dXJuIHNoYXJlZEl0
ZW1zLmdldCgpOwogfQogCiArIChVSUJhckJ1dHRvbkl0ZW1Hcm91cCAqKXRyYWlsaW5nSXRlbXNG
b3JXZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29u
Y2VfdCBvbmNlVG9rZW47Ci0gICAgc3RhdGljIFVJQmFyQnV0dG9uSXRlbUdyb3VwICpzaGFyZWRJ
dGVtczsKKyAgICBzdGF0aWMgUmV0YWluUHRyPFVJQmFyQnV0dG9uSXRlbUdyb3VwPiBzaGFyZWRJ
dGVtczsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIGF1dG8gdHJh
aWxpbmdJdGVtID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbSBhbGxvY10gaW5pdFdpdGhJbWFn
ZTpzZWxmLmJhckJ1dHRvbkljb24gc3R5bGU6VUlCYXJCdXR0b25JdGVtU3R5bGVQbGFpbiB0YXJn
ZXQ6d2ViVmlldyBhY3Rpb246QHNlbGVjdG9yKGZha2VUcmFpbGluZ0JhckJ1dHRvbkl0ZW1BY3Rp
b24pXSk7Ci0gICAgICAgIHNoYXJlZEl0ZW1zID0gW1tVSUJhckJ1dHRvbkl0ZW1Hcm91cCBhbGxv
Y10gaW5pdFdpdGhCYXJCdXR0b25JdGVtczpAWyB0cmFpbGluZ0l0ZW0uZ2V0KCkgXSByZXByZXNl
bnRhdGl2ZUl0ZW06bmlsXTsKKyAgICAgICAgc2hhcmVkSXRlbXMgPSBhZG9wdE5TKFtbVUlCYXJC
dXR0b25JdGVtR3JvdXAgYWxsb2NdIGluaXRXaXRoQmFyQnV0dG9uSXRlbXM6QFsgdHJhaWxpbmdJ
dGVtLmdldCgpIF0gcmVwcmVzZW50YXRpdmVJdGVtOm5pbF0pOwogICAgIH0pOwotICAgIHJldHVy
biBzaGFyZWRJdGVtczsKKyAgICByZXR1cm4gc2hhcmVkSXRlbXMuZ2V0KCk7CiB9CiAKIC0gKFVJ
VGV4dElucHV0QXNzaXN0YW50SXRlbSAqKWlucHV0QXNzaXN0YW50SXRlbQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQppbmRl
eCBkMjI4YzIzZDFkZTNhZTRkMDE0NjY4NTYxZTgxODI2NGY2NmU2YWVlLi4yNTQ4ZjE3ZmU3YTM3
NTJhODA1N2YyMjYzMDYzYjY4OWIzNGMwMWIyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZS5tbQpAQCAtNTQsMTYgKzU0LDE2
IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXS1dlYlZpZXcsIFdLU2Nyb2xs
Vmlld0RlbGVnYXRlQ3Jhc2gpCiB7Ci0gICAgV0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIGRlbGVnYXRlRm9yU2Nyb2xsVmlldyA9IGFkb3B0TlMo
W1tUZXN0RGVsZWdhdGVGb3JTY3JvbGxWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgQGF1dG9yZWxl
YXNlcG9vbCB7Ci0gICAgICAgIHdlYlZpZXcuc2Nyb2xsVmlldy5kZWxlZ2F0ZSA9IGRlbGVnYXRl
Rm9yU2Nyb2xsVmlldy5nZXQoKTsKKyAgICAgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uZGVsZWdh
dGUgPSBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcuZ2V0KCk7CiAgICAgfQogICAgIGRlbGVnYXRlSXNE
ZWFsbG9jYXRlZCA9IGZhbHNlOwogICAgIGRlbGVnYXRlRm9yU2Nyb2xsVmlldyA9IG5pbDsKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRlbGVnYXRlSXNEZWFsbG9jYXRlZCk7CiAKLSAg
ICBFWFBFQ1RfTlVMTCh3ZWJWaWV3LnNjcm9sbFZpZXcuZGVsZWdhdGUpOworICAgIEVYUEVDVF9O
VUxMKFt3ZWJWaWV3IHNjcm9sbFZpZXddLmRlbGVnYXRlKTsKIH0KIAogfQpAQCAtOTMsMjMgKzkz
LDIzIEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChXS1dlYlZpZXcsIFdLU2Ny
b2xsVmlld0RlbGVnYXRlQ2Fubm90T3ZlcnJpZGVWaWV3Rm9yWm9vbWluZykKIHsKLSAgICBUZXN0
V0tXZWJWaWV3ICp3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0XTsKLSAgICBX
S1Njcm9sbFZpZXdEZWxlZ2F0ZVdpdGhWaWV3Rm9yWm9vbWluZ092ZXJyaWRkZW4gKmRlbGVnYXRl
Rm9yU2Nyb2xsVmlldyA9IFtbV0tTY3JvbGxWaWV3RGVsZWdhdGVXaXRoVmlld0Zvclpvb21pbmdP
dmVycmlkZGVuIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGVsZWdhdGVGb3JTY3JvbGxWaWV3
ID0gYWRvcHROUyhbW1dLU2Nyb2xsVmlld0RlbGVnYXRlV2l0aFZpZXdGb3Jab29taW5nT3ZlcnJp
ZGRlbiBhbGxvY10gaW5pdF0pOwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICB3ZWJW
aWV3LnNjcm9sbFZpZXcuZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNjcm9sbFZpZXc7CisgICAgICAg
IFt3ZWJWaWV3IHNjcm9sbFZpZXddLmRlbGVnYXRlID0gZGVsZWdhdGVGb3JTY3JvbGxWaWV3Lmdl
dCgpOwogICAgIH0KIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50PSdpbml0aWFsLXNjYWxlPTEnPiJdOwogICAg
IFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKIAogICAgIC8vIEhhdmUg
V0tTY3JvbGxWaWV3J3MgZXh0ZXJuYWwgZGVsZWdhdGUgcmV0dXJuIGEgdmlldyB3aXRoIHNjYWxl
PTIgZnJvbSB2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldy4KLSAgICBkZWxlZ2F0ZUZvclNjcm9s
bFZpZXcub3ZlcnJpZGVTY2FsZSA9IDI7CisgICAgW2RlbGVnYXRlRm9yU2Nyb2xsVmlldyBzZXRP
dmVycmlkZVNjYWxlOjJdOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J2luaXRpYWwtc2NhbGU9Mic+Il07
CiAgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwogCiAgICAgQGF1
dG9yZWxlYXNlcG9vbCB7Ci0gICAgICAgIHdlYlZpZXcuc2Nyb2xsVmlldy5kZWxlZ2F0ZSA9IG5p
bDsKKyAgICAgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uZGVsZWdhdGUgPSBuaWw7CiAgICAgfQog
CiAgICAgRVhQRUNUX0ZBTFNFKGRpZENhbGxWaWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldyk7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tCmluZGV4
IGFiZmNjYTIxMTAxZTBmMTA3Y2ZhZmNlODdmZTU0OWU3NDFhMjA1Y2UuLmM1ODFjNTMwNTFkYTg4
NTMxNjc4NmY5NTM1ZGVlOTA3OWQ4MTk3ZWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL0NhbmRpZGF0ZVRlc3RzLm1tCkBAIC05MCw4ICs5MCw4IEBAIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIFRFU1QoQ2FuZGlkYXRlVGVzdHMsIERJU0FCTEVEX0RvTm90TGVha1Zp
ZXdUaGF0TG9hZHNFZGl0YWJsZUFyZWEpCiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W0RvTm90TGVha1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAx
MDAsIDEwMCldKTsKLSAgICBEb05vdExlYWtGcmFtZUxvYWREZWxlZ2F0ZSAqZGVsZWdhdGUgPSBb
W0RvTm90TGVha0ZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICBbd2ViVmlldyBz
ZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tEb05vdExlYWtGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICAKICAgICBOU1VS
TCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJh
dXRvZm9jdXNlZC10ZXh0LWlucHV0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBbW3dlYlZpZXcgbWFpbkZyYW1lXSBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOmNvbnRlbnRVUkxdXTsKQEAg
LTEwNyw4ICsxMDcsOCBAQCBURVNUKENhbmRpZGF0ZVRlc3RzLCBESVNBQkxFRF9SZXF1ZXN0Q2Fu
ZGlkYXRlc0ZvclRleHRJbnB1dCkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEwMCwgMTAwKV0pOwog
ICAgIFt3ZWJWaWV3IGZvcmNlUmVxdWVzdENhbmRpZGF0ZXNGb3JUZXN0aW5nXTsKLSAgICBDYW5k
aWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgKmRlbGVnYXRlID0gW1tDYW5kaWRhdGVSZXF1
ZXN0RnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFt3ZWJWaWV3IHNldEZyYW1l
TG9hZERlbGVnYXRlOmRlbGVnYXRlXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0Nh
bmRpZGF0ZVJlcXVlc3RGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKICAgICAKICAgICBOU1VS
TCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJm
b2N1cy1pbnB1dHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2Vi
S2l0QVBJLnJlc291cmNlcyJdOwogICAgIFtbd2ViVmlldyBtYWluRnJhbWVdIGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6Y29udGVudFVSTF1dOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5
Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDAxZTc0NGY0OGIw
NGFhYWNlYjY0N2I4ZjEyYjY5NjI1NmQ1ZTUzM2UuLjA0Njc2M2M4MTc3M2U3MTRjOGRiNzFkZmY2
ZjI3NzdkZWFiNDY2ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFj
L01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW0KQEAgLTc4LDE0ICs3OCwxNCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiBURVNUKFdlYktpdExlZ2FjeSwgRElTQUJMRURfTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJl
c291cmNlTG9hZERlbGVnYXRlKQogewogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICBS
ZXRhaW5QdHI8V2ViVmlldz4gd2ViVmlldzEgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3Vw
TmFtZTpuaWxdKTsKLSAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcyID0gYWRvcHRO
UyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIw
MCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7CisgICAgICAgIGF1dG8gd2ViVmlldzEg
PSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdyb3VwTmFtZTpuaWxdKTsKKyAgICAgICAgYXV0byB3
ZWJWaWV3MiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwogCi0gICAg
ICAgIE5TV2luZG93KiB3aW5kb3cgPSBbW05TV2luZG93IGFsbG9jXSBpbml0V2l0aENvbnRlbnRS
ZWN0OndlYlZpZXcyLmdldCgpLmZyYW1lIHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dNYXNr
IGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgICAgICBbd2lu
ZG93LmNvbnRlbnRWaWV3IGFkZFN1YnZpZXc6d2ViVmlldzIuZ2V0KCldOworICAgICAgICBhdXRv
IHdpbmRvdyA9IGFkb3B0TlMoW1tOU1dpbmRvdyBhbGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3
ZWJWaWV3Mi5nZXQoKS5mcmFtZSBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNr
aW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgICAgIFtbd2luZG93
IGNvbnRlbnRWaWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcyLmdldCgpXTsKIAotICAgICAgICBSZXRh
aW5QdHI8TWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gcmVzb3VyY2VM
b2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNvdXJjZUxvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgICAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQo
KS0+X3dpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgYXV0byByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tNZW1vcnlDYWNoZVBydW5lVGVzdFJlc291cmNlTG9hZERlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgICAgIHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpLT5fd2luZG93ID0g
d2luZG93LmdldCgpOwogICAgICAgICB3ZWJWaWV3MS5nZXQoKS5yZXNvdXJjZUxvYWREZWxlZ2F0
ZSA9IHJlc291cmNlTG9hZERlbGVnYXRlLmdldCgpOwogCiAgICAgICAgIFtbd2ViVmlldzEuZ2V0
KCkgbWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJNZW1vcnlDYWNoZVBydW5lV2l0
aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXV07CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklP
Uy5tbQppbmRleCAyMzg5MTIzN2VjYzZkYTZhMGY5ODFjMzk5ZmRmNDI2N2RlNjU5OTNjLi42ZWQ3
NjdlOTI5NDc1MjkwOTJjZGVmM2M4OGNiNmU3MDQzNTBmNDZkIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L21haW5JT1MubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIlRlc3RzQ29udHJvbGxlci5o
IgogCiAjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogewpAQCAt
MzUsMTEgKzM2LDExIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKICAgICAgICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlUGVyc2lzdGVudERv
bWFpbkZvck5hbWU6QCJUZXN0V2ViS2l0QVBJIl07CiAKICAgICAgICAgLy8gU2V0IHVwIHVzZXIg
ZGVmYXVsdHMuCi0gICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0g
W1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9y
TmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxlQ29weV07CisgICAgICAgIGF1dG8gYXJndW1l
bnREb21haW4gPSBhZG9wdE5TKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHldKTsK
ICAgICAgICAgaWYgKCFhcmd1bWVudERvbWFpbikKLSAgICAgICAgICAgIGFyZ3VtZW50RG9tYWlu
ID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAgIGFyZ3Vt
ZW50RG9tYWluID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
IAotICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xh
dGlsZURvbWFpbjphcmd1bWVudERvbWFpbiBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOworICAg
ICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURv
bWFpbjphcmd1bWVudERvbWFpbi5nZXQoKSBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwogCiAj
aWZuZGVmIEJVSUxESU5HX1RFU1RfV1RGCiAgICAgICAgIFtXS1Byb2Nlc3NQb29sIF9zZXRMaW5r
ZWRPbk9yQWZ0ZXJFdmVyeXRoaW5nRm9yVGVzdGluZ107CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21h
Yy9UZXN0Rm9udE9wdGlvbnMubW0KaW5kZXggOTM1NzZiOTE0ZjJhNjlkMjVlNWY0ODA5ZGU3Y2I2
MDgxYmRjZjNmMS4uY2I0NWM1ZGM3ZjNiOWQ5ZGQ4MDZjNGFiOTEwZmE1NTBjNTQ4M2RkZiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rlc3RGb250T3B0aW9ucy5tbQpAQCAtNjUsMTMgKzY1
LDEzIEBAIEBzeW50aGVzaXplIGhhc011bHRpcGxlRm9udHMgPSBfaGFzTXVsdGlwbGVGb250czsK
IAogKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlCiB7Ci0gICAgc3RhdGljIFRlc3RGb250
T3B0aW9ucyAqc2hhcmVkSW5zdGFuY2U7CisgICAgc3RhdGljIFJldGFpblB0cjxUZXN0Rm9udE9w
dGlvbnM+IHNoYXJlZEluc3RhbmNlOwogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRv
a2VuOwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKICAgICAgICAgTlNGb250T3B0
aW9ucyAqc2hhcmVkRm9udE9wdGlvbnMgPSBbTlNDbGFzc0Zyb21TdHJpbmcoQCJOU0ZvbnRPcHRp
b25zIikgc2hhcmVkRm9udE9wdGlvbnNdOwotICAgICAgICBzaGFyZWRJbnN0YW5jZSA9IFtbVGVz
dEZvbnRPcHRpb25zIGFsbG9jXSBpbml0V2l0aEZvbnRPcHRpb25zOnNoYXJlZEZvbnRPcHRpb25z
XTsKKyAgICAgICAgc2hhcmVkSW5zdGFuY2UgPSBhZG9wdE5TKFtbVGVzdEZvbnRPcHRpb25zIGFs
bG9jXSBpbml0V2l0aEZvbnRPcHRpb25zOnNoYXJlZEZvbnRPcHRpb25zXSk7CiAgICAgfSk7Ci0g
ICAgcmV0dXJuIHNoYXJlZEluc3RhbmNlOworICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZS5nZXQo
KTsKIH0KIAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRm9udE9wdGlvbnM6KE5TRm9udE9wdGlv
bnMgKilmb250T3B0aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvbWFp
bk1hYy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0KaW5kZXggZDlkNmM2
MThjMjIyMzU0YjllYTVmODQ0ODI2NzUwYmM1MTIyODdhZi4uNzBiMWZkZWM4OGFiZjRhZmQ3OTU5
M2FjMGIyNWFlMGU0Y2M3M2Y2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMv
bWFpbk1hYy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9tYWluTWFjLm1tCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW1wb3J0ICJUZXN0c0NvbnRyb2xsZXIuaCIKIAogI2ltcG9ydCA8V2Vi
S2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAK
IGV4dGVybiAiQyIgdm9pZCBfQmVnaW5FdmVudFJlY2VpcHRPblRocmVhZCh2b2lkKTsKIApAQCAt
MzcsOSArMzgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIFtb
TlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlbW92ZVBlcnNpc3RlbnREb21h
aW5Gb3JOYW1lOkAiVGVzdFdlYktpdEFQSSJdOwogCiAgICAgICAgIC8vIFNldCBhIHVzZXIgZGVm
YXVsdCBmb3IgVGVzdFdlYktpdEFQSSB0byBieXBhc3MgYWxsIGxpbmtlZC1vbi1vci1hZnRlciBj
aGVja3MgaW4gV2ViS2l0Ci0gICAgICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmFyZ3VtZW50RG9t
YWluID0gW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHZvbGF0aWxlRG9t
YWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxlQ29weV07CisgICAgICAgIGF1dG8g
YXJndW1lbnREb21haW4gPSBhZG9wdE5TKFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNv
cHldKTsKICAgICAgICAgaWYgKCFhcmd1bWVudERvbWFpbikKLSAgICAgICAgICAgIGFyZ3VtZW50
RG9tYWluID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAgICAgICAg
IGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdKTsKIAogICAgICAgICAvLyBDQVVUSU9OOiBEZWZhdWx0cyBzZXQgaGVyZSBhcmUgbm90IGF1
dG9tYXRpY2FsbHkgcHJvcGFnYXRlZCB0byB0aGUKICAgICAgICAgLy8gV2ViIENvbnRlbnQgcHJv
Y2Vzcy4gVGhvc2UgbGlzdGVkIGJlbG93IGFyZSBwcm9wYWdhdGVkIG1hbnVhbGx5LgpAQCAtNTIs
NyArNTMsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgICAgIH07CiAK
ICAgICAgICAgW2FyZ3VtZW50RG9tYWluIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpkaWN0XTsK
LSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRp
bGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKKyAgICAg
ICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21h
aW46YXJndW1lbnREb21haW4uZ2V0KCkgZm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXTsKIAogI2lm
bmRlZiBCVUlMRElOR19URVNUX1dURgogICAgICAgICBbV0tQcm9jZXNzUG9vbCBfc2V0TGlua2Vk
T25PckFmdGVyRXZlcnl0aGluZ0ZvclRlc3RpbmddOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1Mu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmls
aXR5Q29udHJvbGxlcklPUy5tbQppbmRleCBjNDE4MjMwZjNiNGZkZTcxOWFjNmNjYzg0Yjc0MmRi
ZWNhMTRkMjRhLi5jOThiOWU5OTZjZDFjOGRlOTg5ZjhlZWNhZmZjYWY2Y2Q0NWNiOGIxIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2lvcy9BY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2lvcy9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlcklPUy5tbQpAQCAtNDcsNyArNDcs
OCBAQCBib29sIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cihKU1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhYwogICAgIC8vIE90aGVyIHBsYXRmb3JtcyBtYXkg
YmUgZGlmZmVyZW50LgogICAgIGlmIChtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBbW0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyIGFsbG9jXSBpbml0XTsKKworICAgIG1fZ2xv
YmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IGFkb3B0TlMoW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFttX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRs
ZXIgc2V0Q2FsbGJhY2s6ZnVuY3Rpb25DYWxsYmFja107CiAgICAgW21fZ2xvYmFsTm90aWZpY2F0
aW9uSGFuZGxlciBzdGFydE9ic2VydmluZ107CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0gYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KaW5kZXggY2UzNmZiYTJkNGJi
MTUxZjg3OWUzMWExNTQyZDRkMDZlOWUyOWRlNi4uMzkyMGM0YTcwMzA0MmZlZWU2MTQ5NmUxZTFk
NzM4YmJjYzlmNzgwYiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9U
ZXN0Q29udHJvbGxlckNvY29hLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY29jb2Ev
VGVzdENvbnRyb2xsZXJDb2NvYS5tbQpAQCAtNTksMzYgKzU5LDQ2IEBACiAKIG5hbWVzcGFjZSBX
VFIgewogCi1zdGF0aWMgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb247Ci1zdGF0aWMgVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSAqZ2xvYmFsV2Vi
c2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50Oworc3RhdGljIFJldGFpblB0cjxXS1dlYlZpZXdD
b25maWd1cmF0aW9uPiYgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4+IGdsb2Jh
bFdlYlZpZXdDb25maWd1cmF0aW9uOworICAgIHJldHVybiBnbG9iYWxXZWJWaWV3Q29uZmlndXJh
dGlvbjsKK30KKworc3RhdGljIFJldGFpblB0cjxUZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
PiYgZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50KCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFRlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGU+PiBn
bG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQ7CisgICAgcmV0dXJuIGdsb2JhbFdl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudDsKK30KIAogdm9pZCBpbml0aWFsaXplV2ViVmll
d0NvbmZpZ3VyYXRpb24oY29uc3QgY2hhciogbGlicmFyeVBhdGgsIFdLU3RyaW5nUmVmIGluamVj
dGVkQnVuZGxlUGF0aCwgV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCiB7Ci0gICAgYXV0byBvbGRHbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24pOwotICAg
IGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uID0gW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XTsKKyAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpID0gWyZdIHsKKyAg
ICAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKIAotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nl
c3NQb29sID0gKF9fYnJpZGdlIFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0OwotICAgIGdsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlkZ2UgV0tXZWJzaXRl
RGF0YVN0b3JlICopVGVzdENvbnRyb2xsZXI6OmRlZmF1bHRXZWJzaXRlRGF0YVN0b3JlKCk7Ci0g
ICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2FsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZp
bGVVUkxzID0gWUVTOwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9hbGxvd1RvcE5h
dmlnYXRpb25Ub0RhdGFVUkxzID0gWUVTOwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9u
Ll9hcHBsZVBheUVuYWJsZWQgPSBZRVM7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nl
c3NQb29sOihfX2JyaWRnZSBXS1Byb2Nlc3NQb29sICopY29udGV4dF07CisgICAgICAgIFtjb25m
aWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6KF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9y
ZSAqKVRlc3RDb250cm9sbGVyOjpkZWZhdWx0V2Vic2l0ZURhdGFTdG9yZSgpXTsKKyAgICAgICAg
W2NvbmZpZ3VyYXRpb24gX3NldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOllFU107
CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRBbGxvd1RvcE5hdmlnYXRpb25Ub0RhdGFVUkxz
OllFU107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRBcHBsZVBheUVuYWJsZWQ6WUVTXTsK
IAotICAgIGF1dG8gb2xkR2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50ID0gYWRv
cHROUyhnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQpOwotICAgIGdsb2JhbFdl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCA9IFtbVGVzdFdlYnNpdGVEYXRhU3RvcmVEZWxl
Z2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNp
dGVEYXRhU3RvcmUgc2V0X2RlbGVnYXRlOmdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNs
aWVudF07CisgICAgICAgIGdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCgpID0g
YWRvcHROUyhbW1Rlc3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIHNldF9kZWxlZ2F0ZTpnbG9i
YWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQoKS5nZXQoKV07CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLmFsbG93c0lubGlu
ZU1lZGlhUGxheWJhY2sgPSBZRVM7Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2lu
bGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlID0gTk87Ci0gICAg
Z2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX2ludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0dGVk
ID0gTk87Ci0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24uX21lZGlhRGF0YUxvYWRzQXV0
b21hdGljYWxseSA9IFlFUzsKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5yZXF1aXJl
c1VzZXJBY3Rpb25Gb3JNZWRpYVBsYXliYWNrID0gTk87CisgICAgICAgIFtjb25maWd1cmF0aW9u
IHNldEFsbG93c0lubGluZU1lZGlhUGxheWJhY2s6WUVTXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRp
b24gX3NldElubGluZU1lZGlhUGxheWJhY2tSZXF1aXJlc1BsYXlzSW5saW5lQXR0cmlidXRlOk5P
XTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldEludmlzaWJsZUF1dG9wbGF5Tm90UGVybWl0
dGVkOk5PXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldE1lZGlhRGF0YUxvYWRzQXV0b21h
dGljYWxseTpZRVNdOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRSZXF1aXJlc1VzZXJBY3Rp
b25Gb3JNZWRpYVBsYXliYWNrOk5PXTsKICNlbmRpZgotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uLm1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2sgPSBXS0F1ZGlv
dmlzdWFsTWVkaWFUeXBlTm9uZTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TWVkaWFUeXBl
c1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjazpXS0F1ZGlvdmlzdWFsTWVkaWFUeXBlTm9u
ZV07CiAKICNpZiBVU0UoU1lTVEVNX1BSRVZJRVcpCi0gICAgZ2xvYmFsV2ViVmlld0NvbmZpZ3Vy
YXRpb24uX3N5c3RlbVByZXZpZXdFbmFibGVkID0gWUVTOworICAgICAgICBbY29uZmlndXJhdGlv
biBfc2V0U3lzdGVtUHJldmlld0VuYWJsZWQ6WUVTXTsKICNlbmRpZgorICAgICAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKKyAgICB9KCk7CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNvY29h
UGxhdGZvcm1Jbml0aWFsaXplKCkKQEAgLTEwNywxMiArMTE3LDEyIEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmNvY29hUGxhdGZvcm1Jbml0aWFsaXplKCkKIAogV0tDb250ZXh0UmVmIFRlc3RDb250
cm9sbGVyOjpwbGF0Zm9ybUNvbnRleHQoKQogewotICAgIHJldHVybiAoX19icmlkZ2UgV0tDb250
ZXh0UmVmKWdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLnByb2Nlc3NQb29sOworICAgIHJldHVy
biAoX19icmlkZ2UgV0tDb250ZXh0UmVmKVtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHBy
b2Nlc3NQb29sXTsKIH0KIAogV0tQcmVmZXJlbmNlc1JlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZv
cm1QcmVmZXJlbmNlcygpCiB7Ci0gICAgcmV0dXJuIChfX2JyaWRnZSBXS1ByZWZlcmVuY2VzUmVm
KWdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLnByZWZlcmVuY2VzOworICAgIHJldHVybiAoX19i
cmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBwcmVm
ZXJlbmNlc107CiB9CiAKIFRlc3RGZWF0dXJlcyBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1TcGVj
aWZpY0ZlYXR1cmVPdmVycmlkZXNEZWZhdWx0c0ZvclRlc3QoY29uc3QgVGVzdENvbW1hbmQmKSBj
b25zdApAQCAtMTQzLDEyICsxNTMsMTIgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1J
bml0aWFsaXplRGF0YVN0b3JlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFQKICNlbmRp
ZgogICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlkZ2UgV0tXZWJzaXRlRGF0YVN0
b3JlUmVmKWFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZy5nZXQoKV0pLmdldCgpOwogICAgIH0gZWxz
ZQotICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlkZ2UgV0tXZWJzaXRlRGF0YVN0
b3JlUmVmKWdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3RvcmU7CisgICAg
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IChfX2JyaWRnZSBXS1dlYnNpdGVEYXRhU3RvcmVSZWYp
W2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgd2Vic2l0ZURhdGFTdG9yZV07CiB9CiAKIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtQ3JlYXRlV2ViVmlldyhXS1BhZ2VDb25maWd1cmF0
aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGNvcGllZENv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5XSk7
CisgICAgYXV0byBjb3BpZWRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2ViVmlld0Nv
bmZpZ3VyYXRpb24oKSBjb3B5XSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlm
IChvcHRpb25zLnVzZURhdGFEZXRlY3Rpb24oKSkKQEAgLTE5MSw3ICsyMDEsNyBAQCB2b2lkIFRl
c3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiwgY29uc3QgVGVzdE9wdAogCiBQbGF0Zm9ybVdlYlZpZXcqIFRlc3RDb250cm9sbGVyOjpwbGF0
Zm9ybUNyZWF0ZU90aGVyUGFnZShQbGF0Zm9ybVdlYlZpZXcqIHBhcmVudFZpZXcsIFdLUGFnZUNv
bmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8g
bmV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIGNv
cHldKTsKKyAgICBhdXRvIG5ld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9iYWxXZWJWaWV3
Q29uZmlndXJhdGlvbigpIGNvcHldKTsKICAgICBbbmV3Q29uZmlndXJhdGlvbiBfc2V0UmVsYXRl
ZFdlYlZpZXc6c3RhdGljX2Nhc3Q8V0tXZWJWaWV3Kj4ocGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3
KCkpXTsKICAgICBpZiAoW25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XSkKICAgICAg
ICAgW25ld0NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpbbmV3Q29uZmlndXJhdGlv
biBfcmVsYXRlZFdlYlZpZXddLmNvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZV07CkBAIC0y
MTQsNyArMjI0LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6ZmluaXNoQ3JlYXRpbmdQbGF0Zm9y
bVdlYlZpZXcoUGxhdGZvcm1XZWJWaWV3KiB2aWV3LCBjb25zdAogV0tDb250ZXh0UmVmIFRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUFkanVzdENvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdL
Q29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29udGV4dENvbmZpZ3VyYXRpb24pCiB7CiAgICAgaW5p
dGlhbGl6ZVdlYlZpZXdDb25maWd1cmF0aW9uKGxpYnJhcnlQYXRoRm9yVGVzdGluZygpLCBpbmpl
Y3RlZEJ1bmRsZVBhdGgoKSwgY29udGV4dCwgY29udGV4dENvbmZpZ3VyYXRpb24pOwotICAgIHJl
dHVybiAoX19icmlkZ2UgV0tDb250ZXh0UmVmKWdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLnBy
b2Nlc3NQb29sOworICAgIHJldHVybiAoX19icmlkZ2UgV0tDb250ZXh0UmVmKVtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbigpIHByb2Nlc3NQb29sXTsKIH0KIAogdm9pZCBUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1SdW5VbnRpbChib29sJiBkb25lLCBXVEY6OlNlY29uZHMgdGltZW91dCkKQEAg
LTI5Myw3ICszMDMsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVJlc2V0U3RhdGVUb0Nv
bnNpc3RlbnRWYWx1ZXMoY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbgogICAgICAgICBbcGxhdGZv
cm1WaWV3LmNvbmZpZ3VyYXRpb24ucHJlZmVyZW5jZXMgc2V0VGV4dEludGVyYWN0aW9uRW5hYmxl
ZDpvcHRpb25zLnRleHRJbnRlcmFjdGlvbkVuYWJsZWQoKV07CiAgICAgfQogCi0gICAgW2dsb2Jh
bFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCBzZXRBbGxvd1JhaXNpbmdRdW90YTpZRVNd
OworICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQoKSBzZXRBbGxvd1Jh
aXNpbmdRdW90YTpZRVNdOwogCiAgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBZGRpdGlvbmFs
U3VwcG9ydGVkSW1hZ2VUeXBlc0ZvclRlc3Rpbmcob3B0aW9ucy5hZGRpdGlvbmFsU3VwcG9ydGVk
SW1hZ2VUeXBlcygpLmNfc3RyKCkpOwogfQpAQCAtMzM3LDcgKzM0Nyw3IEBAIHVuc2lnbmVkIFRl
c3RDb250cm9sbGVyOjppbWFnZUNvdW50SW5HZW5lcmFsUGFzdGVib2FyZCgpIGNvbnN0CiB2b2lk
IFRlc3RDb250cm9sbGVyOjpyZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKQogewogICAgIGF1
dG8gdHlwZXMgPSBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpfV0tXZWJz
aXRlRGF0YVR5cGVDcmVkZW50aWFscywgbmlsXSk7Ci0gICAgW2dsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uLndlYnNpdGVEYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgbW9k
aWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewor
ICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRlRGF0YVN0b3JlXSByZW1v
dmVEYXRhT2ZUeXBlczp0eXBlcy5nZXQoKSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBh
c3RdIGNvbXBsZXRpb25IYW5kbGVyOl4oKSB7CiAgICAgICAgIG1fY3VycmVudEludm9jYXRpb24t
PmRpZFJlbW92ZUFsbFNlc3Npb25DcmVkZW50aWFscygpOwogICAgIH1dOwogfQpAQCAtMzQ4LDcg
KzM1OCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KCkKICAgICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9nZXRBbGxTdG9yYWdlQWNjZXNz
RW50cmllc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21wbGV0aW9uSGFuZGxlcjpe
KE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKKyAgICBbW2dsb2JhbFdlYlZpZXdDb25m
aWd1cmF0aW9uKCkgd2Vic2l0ZURhdGFTdG9yZV0gX2dldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
Rm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxOU1N0cmluZyAqPiAqZG9tYWlucykgewogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5k
aWRSZWNlaXZlQWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMobWFrZVZlY3RvcjxTdHJpbmc+KGRvbWFp
bnMpKTsKICAgICB9XTsKIH0KQEAgLTM1OSw3ICszNjksNyBAQCB2b2lkIFRlc3RDb250cm9sbGVy
Ojpsb2FkZWRTdWJyZXNvdXJjZURvbWFpbnMoKQogICAgIGlmICghcGFyZW50VmlldykKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRl
RGF0YVN0b3JlIF9sb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZv
cm1WaWV3KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5z
KSB7CisgICAgW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdlYnNpdGVEYXRhU3RvcmVd
IF9sb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7CiAgICAg
ICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFJlY2VpdmVMb2FkZWRTdWJyZXNvdXJjZURvbWFp
bnMobWFrZVZlY3RvcjxTdHJpbmc+KGRvbWFpbnMpKTsKICAgICB9XTsKIH0KQEAgLTM3MCwxNCAr
MzgwLDE0IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OmNsZWFyTG9hZGVkU3VicmVzb3VyY2VEb21h
aW5zKCkKICAgICBpZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKIAotICAgIFtnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIF9jbGVhckxvYWRlZFN1YnJl
c291cmNlRG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKV07CisgICAgW1tnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdlYnNpdGVEYXRhU3RvcmVdIF9jbGVhckxvYWRlZFN1
YnJlc291cmNlRG9tYWluc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKV07CiB9CiAKIHZv
aWQgVGVzdENvbnRyb2xsZXI6OmluamVjdFVzZXJTY3JpcHQoV0tTdHJpbmdSZWYgc2NyaXB0KQog
ewogICAgIGF1dG8gdXNlclNjcmlwdCA9IGFkb3B0TlMoW1tXS1VzZXJTY3JpcHQgYWxsb2NdIGlu
aXRXaXRoU291cmNlOiB0b1dURlN0cmluZyhzY3JpcHQpIGluamVjdGlvblRpbWU6V0tVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5Ok5PXSk7CiAK
LSAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0g
YWRkVXNlclNjcmlwdDogdXNlclNjcmlwdC5nZXQoKV07CisgICAgW1tnbG9iYWxXZWJWaWV3Q29u
ZmlndXJhdGlvbigpIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkVXNlclNjcmlwdDogdXNlclNj
cmlwdC5nZXQoKV07CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OmFkZFRlc3RLZXlUb0tleWNo
YWluKGNvbnN0IFN0cmluZyYgcHJpdmF0ZUtleUJhc2U2NCwgY29uc3QgU3RyaW5nJiBhdHRyTGFi
ZWwsIGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25UYWdCYXNlNjQpCkBAIC00NDksMTQgKzQ1OSwx
NCBAQCBib29sIFRlc3RDb250cm9sbGVyOjprZXlFeGlzdHNJbktleWNoYWluKGNvbnN0IFN0cmlu
ZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFs
bG93U3RvcmFnZVF1b3RhSW5jcmVhc2UoYm9vbCB2YWx1ZSkKIHsKLSAgICBbZ2xvYmFsV2Vic2l0
ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50IHNldEFsbG93UmFpc2luZ1F1b3RhOiB2YWx1ZV07Cisg
ICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCgpIHNldEFsbG93UmFpc2lu
Z1F1b3RhOiB2YWx1ZV07CiB9CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnNldEFsbG93c0FueVNT
TENlcnRpZmljYXRlKGJvb2wgYWxsb3dzKQogewogICAgIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNh
dGUgPSBhbGxvd3M7CiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0QWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5nKHdlYnNpdGVEYXRhU3RvcmUoKSwgYWxsb3dzKTsKLSAg
ICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50IHNldEFsbG93QW55U1NMQ2Vy
dGlmaWNhdGU6IGFsbG93c107CisgICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNs
aWVudCgpIHNldEFsbG93QW55U1NMQ2VydGlmaWNhdGU6IGFsbG93c107CiB9CiAKIHZvaWQgVGVz
dENvbnRyb2xsZXI6Omluc3RhbGxDdXN0b21NZW51QWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwg
Ym9vbCBkaXNtaXNzZXNBdXRvbWF0aWNhbGx5KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93Lm1tIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93Lm1tCmluZGV4IDdkNjNm
MzM4NTlkNmQ4M2M2MTYzOGVlYzU0NGI4YjQ5Yjk0NzEzNWIuLjNmODdlNjkwYWMyZWIxZjRkZmNk
YzE1YzEwM2UwZTdhZGY3NWY2MjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9HZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cubW0KQEAgLTQzLDExICs0Mywx
MSBAQCBAaW1wbGVtZW50YXRpb24gR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93CiArIChHZW5l
cmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cgKilzaGFyZWRHZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5k
b3cKIHsKICAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBzdGF0aWMg
R2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93ICp0b3VjaFdpbmRvdyA9IG5pbDsKKyAgICBzdGF0
aWMgUmV0YWluUHRyPEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdz4gdG91Y2hXaW5kb3c7CiAg
ICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2VuLCBeewotICAgICAgICB0b3VjaFdpbmRvdyA9IFtb
R2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93IGFsbG9jXSBpbml0XTsKKyAgICAgICAgdG91Y2hX
aW5kb3cgPSBhZG9wdE5TKFtbR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93IGFsbG9jXSBpbml0
XSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIHRvdWNoV2luZG93OworICAgIHJldHVybiB0b3VjaFdp
bmRvdy5nZXQoKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbSBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCmluZGV4IDEyYjM1NjE3MzJhN2U0MzNlMzcw
MjdmMTMyZWY0M2Q4MWY5MDBkZDUuLjMxYjQ2NTBlMzU2MTE5YzAyNDAxNjY0Y2UwMjc2OTQ4ZGEw
MzVlZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2Vu
ZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJh
dG9yLm1tCkBAIC0xNjAsMTEgKzE2MCw4IEBAIEBpbXBsZW1lbnRhdGlvbiBISURFdmVudEdlbmVy
YXRvciB7CiAKICsgKEhJREV2ZW50R2VuZXJhdG9yICopc2hhcmVkSElERXZlbnRHZW5lcmF0b3IK
IHsKLSAgICBzdGF0aWMgSElERXZlbnRHZW5lcmF0b3IgKmV2ZW50R2VuZXJhdG9yID0gbmlsOwot
ICAgIGlmICghZXZlbnRHZW5lcmF0b3IpCi0gICAgICAgIGV2ZW50R2VuZXJhdG9yID0gW1tISURF
dmVudEdlbmVyYXRvciBhbGxvY10gaW5pdF07Ci0KLSAgICByZXR1cm4gZXZlbnRHZW5lcmF0b3I7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxISURFdmVudEdlbmVyYXRvcj4+
IGV2ZW50R2VuZXJhdG9yID0gYWRvcHROUyhbW0hJREV2ZW50R2VuZXJhdG9yIGFsbG9jXSBpbml0
XSk7CisgICAgcmV0dXJuIGV2ZW50R2VuZXJhdG9yLmdldCgpLmdldCgpOwogfQogCiArIChDRklu
ZGV4KW5leHRFdmVudENhbGxiYWNrSUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggNGRiNTEzOWRiZTg5NmVmYTBmNzVkNzMzMTIzODZl
OWM1YmNlM2NhNy4uODVhMmM3NGQyZDhiNzBhY2ViOGUxZjEyN2FmZWVhOGQ1MmUyNzdhOSAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvVGVzdENvbnRyb2xsZXJNYWMubW0KQEAg
LTE4Nyw3ICsxODcsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1cmVDb250ZW50RXh0
ZW5zaW9uRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdAogICAgIGF1dG8gdGVzdFVS
TCA9IGFkb3B0Q0YoV0tVUkxDb3B5Q0ZVUkwoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdGVzdC51cmwo
KSkpOwogICAgIE5TVVJMICpmaWx0ZXJVUkwgPSBbKF9fYnJpZGdlIE5TVVJMICopdGVzdFVSTC5n
ZXQoKSBVUkxCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJqc29uIl07CiAKLSAgICBfX2Jsb2Nr
IE5TU3RyaW5nICpjb250ZW50RXh0ZW5zaW9uU3RyaW5nOworICAgIF9fYmxvY2sgUmV0YWluUHRy
PE5TU3RyaW5nPiBjb250ZW50RXh0ZW5zaW9uU3RyaW5nOwogICAgIF9fYmxvY2sgYm9vbCBkb25l
RmV0Y2hpbmdDb250ZW50RXh0ZW5zaW9uID0gZmFsc2U7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFk
b3B0TlMoW1dLVFJTZXNzaW9uRGVsZWdhdGUgbmV3XSk7CiAgICAgTlNVUkxTZXNzaW9uICpzZXNz
aW9uID0gW05TVVJMU2Vzc2lvbiBzZXNzaW9uV2l0aENvbmZpZ3VyYXRpb246W05TVVJMU2Vzc2lv
bkNvbmZpZ3VyYXRpb24gZXBoZW1lcmFsU2Vzc2lvbkNvbmZpZ3VyYXRpb25dIGRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpIGRlbGVnYXRlUXVldWU6W05TT3BlcmF0aW9uUXVldWUgbWFpblF1ZXVlXV07
CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29udGVu
dEV4dGVuc2lvbkZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24mIHRlc3QKICAgICAgICAgQVNT
RVJUKGRhdGEpOwogICAgICAgICBBU1NFUlQocmVzcG9uc2UpOwogICAgICAgICBBU1NFUlQoIWVy
cm9yKTsKLSAgICAgICAgY29udGVudEV4dGVuc2lvblN0cmluZyA9IFtbTlNTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXTsKKyAgICAg
ICAgY29udGVudEV4dGVuc2lvblN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5p
dFdpdGhEYXRhOmRhdGEgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddKTsKICAgICAgICAg
ZG9uZUZldGNoaW5nQ29udGVudEV4dGVuc2lvbiA9IHRydWU7CiAgICAgfV07CiAgICAgW3Rhc2sg
cmVzdW1lXTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb25maWd1
cmVDb250ZW50RXh0ZW5zaW9uRm9yVGVzdChjb25zdCBUZXN0SW52b2NhdGlvbiYgdGVzdAogICAg
IH0gZWxzZQogICAgICAgICB0ZW1wRGlyID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbTlNUZW1w
b3JhcnlEaXJlY3RvcnkoKSBzdHJpbmdCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJDb250ZW50
RXh0ZW5zaW9ucyJdIGlzRGlyZWN0b3J5OllFU107CiAKLSAgICBbW19XS1VzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRlbXBEaXJdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9u
Rm9ySWRlbnRpZmllcjpAIlRlc3RDb250ZW50RXh0ZW5zaW9ucyIgZW5jb2RlZENvbnRlbnRFeHRl
bnNpb246Y29udGVudEV4dGVuc2lvblN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS1VzZXJD
b250ZW50RmlsdGVyICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKQorICAgIFtbX1dLVXNlckNvbnRl
bnRFeHRlbnNpb25TdG9yZSBzdG9yZVdpdGhVUkw6dGVtcERpcl0gY29tcGlsZUNvbnRlbnRFeHRl
bnNpb25Gb3JJZGVudGlmaWVyOkAiVGVzdENvbnRlbnRFeHRlbnNpb25zIiBlbmNvZGVkQ29udGVu
dEV4dGVuc2lvbjpjb250ZW50RXh0ZW5zaW9uU3RyaW5nLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpCiAgICAgewog
ICAgICAgICBpZiAoIWVycm9yKQogICAgICAgICAgICAgW21haW5XZWJWaWV3KCktPnBsYXRmb3Jt
VmlldygpLmNvbmZpZ3VyYXRpb24udXNlckNvbnRlbnRDb250cm9sbGVyIF9hZGRVc2VyQ29udGVu
dEZpbHRlcjpmaWx0ZXJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMv
V2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21h
Yy9XZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQppbmRleCAxMzE5OWQyNGY1NDk1YjhjMjIy
MDZmODMwZWNlMjczZjgzZmRlZjkwLi41ZTMxNjMyNzI2NWM1NDZiOGZiYjkwODc3ZjVhOTcxYWRl
MjM4ZDdmIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZC5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9XZWJL
aXRUZXN0UnVubmVyUGFzdGVib2FyZC5tbQpAQCAtNDUsNyArNDUsNyBAQCBAaW50ZXJmYWNlIExv
Y2FsUGFzdGVib2FyZCA6IE5TUGFzdGVib2FyZAogLShpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5n
ICopbmFtZTsKIEBlbmQKIAotc3RhdGljIE5TTXV0YWJsZURpY3Rpb25hcnkgKmxvY2FsUGFzdGVi
b2FyZHM7CitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGxvY2FsUGFzdGVi
b2FyZHM7CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJLaXRUZXN0UnVubmVyUGFzdGVib2FyZAogCkBA
IC01NiwxMiArNTYsMTIgQEAgKyAoTlNQYXN0ZWJvYXJkICopX3Bhc3RlYm9hcmRXaXRoTmFtZToo
TlNTdHJpbmcgKiluYW1lCiAgICAgaWYgKCFuYW1lKQogICAgICAgICBuYW1lID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCJMb2NhbFBhc3RlYm9hcmQlZCIsICsrbnVtYmVyXTsKICAgICBp
ZiAoIWxvY2FsUGFzdGVib2FyZHMpCi0gICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOworICAgICAgICBsb2NhbFBhc3RlYm9hcmRzID0g
YWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoTG9j
YWxQYXN0ZWJvYXJkICpwYXN0ZWJvYXJkID0gW2xvY2FsUGFzdGVib2FyZHMgb2JqZWN0Rm9yS2V5
Om5hbWVdKQogICAgICAgICByZXR1cm4gcGFzdGVib2FyZDsKICAgICBhdXRvIHBhc3RlYm9hcmQg
PSBhZG9wdE5TKFtbTG9jYWxQYXN0ZWJvYXJkIGFsbG9jXSBpbml0V2l0aE5hbWU6bmFtZV0pOwog
ICAgIFtsb2NhbFBhc3RlYm9hcmRzIHNldE9iamVjdDpwYXN0ZWJvYXJkLmdldCgpIGZvcktleTpu
YW1lXTsKLSAgICByZXR1cm4gcGFzdGVib2FyZC5nZXQoKTsKKyAgICByZXR1cm4gcGFzdGVib2Fy
ZC5hdXRvcmVsZWFzZSgpOwogfQogCiAvLyBUaGlzIG1ldGhvZCBjcmFzaGVzIHdoZW4gY2FsbGVk
IG9uIExvY2FsUGFzdGVib2FyZC4KQEAgLTcyLDcgKzcyLDcgQEAgLSAodm9pZClfdXBkYXRlVHlw
ZUNhY2hlSWZOZWVkZWQKIAogKyAodm9pZClyZWxlYXNlTG9jYWxQYXN0ZWJvYXJkcwogewotICAg
IGF1dG8gb2xkTG9jYWxQYXN0ZUJvYXJkcyA9IGFkb3B0TlMoc3RkOjpleGNoYW5nZShsb2NhbFBh
c3RlYm9hcmRzLCBuaWwpKTsKKyAgICBsb2NhbFBhc3RlYm9hcmRzID0gbmlsOwogfQogCiAvLyBD
b252ZW5pZW5jZSBtZXRob2QgZm9yIEpTIHNvIHRoYXQgaXQgZG9lc24ndCBoYXZlIHRvIHRyeSBh
bmQgY3JlYXRlIGEgTlNBcnJheSBvbiB0aGUgb2JqYyBzaWRlIGluc3RlYWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>421270</attachid>
            <date>2021-02-22 17:09:14 -0800</date>
            <delta_ts>2021-02-23 11:25:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222288-20210222170913.patch</filename>
            <type>text/plain</type>
            <size>150319</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjczMjY5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNGFlZDY5YjRkNTc2MTZhYThmMzVlZTgwOWJkZjcyOTgz
ZGM2MzM4OS4uOTZkMDJiMTVjOWFjMWIxNjk2OTQzMWI3YTc0ODVlYTQ5ODQ0NDYxZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
NyBAQAorMjAyMS0wMi0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhZG9wdE5TKCkgYXMgc29vbiBhcyB3ZSBbW09iamNDbGFzcyBhbGxvY10gaW5pdF0g
dG8gYXZvaWQgbGVha3MgaW4gVG9vbHMvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjIyODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9QaXhlbER1bXBTdXBwb3J0SU9T
Lm1tOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVNjYWxlIGNvbnN0
KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzY3JvbGxUb09mZnNldCk6
CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlU2Nyb2xsVG9P
ZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1pbmltdW1ab29t
U2NhbGUgY29uc3QpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6Om1heGlt
dW1ab29tU2NhbGUgY29uc3QpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbToKKyAgICAgICAgKGZvbnRBbGxvd0xpc3QpOgorICAgICAgICAoYWRqdXN0V2Vi
RG9jdW1lbnRGb3JGbGV4aWJsZVZpZXdwb3J0KToKKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdBbmRP
ZmZzY3JlZW5XaW5kb3cpOgorICAgICAgICAoYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycyk6Cisg
ICAgICAgIChyZWxlYXNlR2xvYmFsQ29udHJvbGxlcnMpOgorICAgICAgICAocmVzZXRXZWJWaWV3
VG9Db25zaXN0ZW50U3RhdGUpOgorICAgICAgICAocnVuVGVzdCk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlTWFjLmg6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlUGFzdGVib2FyZC5tbToKKyAgICAgICAgKCtbRHVtcFJlbmRl
clRyZWVQYXN0ZWJvYXJkIF9wYXN0ZWJvYXJkV2l0aE5hbWU6XSk6CisgICAgICAgICgrW0R1bXBS
ZW5kZXJUcmVlUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9FdmVudFNlbmRpbmdDb250cm9sbGVyLm1tOgorICAgICAgICAo
ZHJ0X1dlYkhUTUxWaWV3X2JlZ2luRHJhZ2dpbmdTZXNzaW9uV2l0aEl0ZW1zRXZlbnRTb3VyY2Up
OgorICAgICAgICAoK1tFdmVudFNlbmRpbmdDb250cm9sbGVyIGluaXRpYWxpemVdKToKKyAgICAg
ICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBiZWdpbkRyYWdXaXRoRmlsZXM6XSk6CisgICAg
ICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgYmVnaW5EcmFnV2l0aEZpbGVQcm9taXNlczpd
KToKKyAgICAgICAgKC1bRXZlbnRTZW5kaW5nQ29udHJvbGxlciBtb3VzZVVwOndpdGhNb2RpZmll
cnM6XSk6CisgICAgICAgICgtW0V2ZW50U2VuZGluZ0NvbnRyb2xsZXIgbW91c2VNb3ZlVG9YOlk6
XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tOgor
ICAgICAgICAoLVtGcmFtZUxvYWREZWxlZ2F0ZSBkaWRDbGVhcldpbmRvd09iamVjdEluU3RhbmRh
cmRXb3JsZEZvckZyYW1lOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVu
bmVyTWFjLm1tOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUp
OgorICAgICAgICAoVGVzdFJ1bm5lcjo6d2FpdEZvclBvbGljeURlbGVnYXRlKToKKyAgICAgICAg
KFRlc3RSdW5uZXI6OmFwaVRlc3ROZXdXaW5kb3dEYXRhTG9hZEJhc2VVUkwpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVnYXRl
IHdlYlZpZXc6ZHJhZ0ltYWdlOmF0Om9mZnNldDpldmVudDpwYXN0ZWJvYXJkOnNvdXJjZTpzbGlk
ZUJhY2s6Zm9yVmlldzpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBkZWFsbG9jXSk6CisgICAg
ICAgICogVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tOgor
ICAgICAgICAoZW5zdXJlR2xvYmFsTGF5b3V0VGVzdFNwZWxsQ2hlY2tlcik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJv
bXB0Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9y
d2FyZC5tbToKKyAgICAgICAgKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldzo6
U2V0VXApOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxv
YWQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5aW5nQ29udHJvbHNUZXN0cy5tbToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50
V2ViVmlld1RpbWVvdXQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9TeXN0ZW1QcmV2aWV3Lm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0U09BdXRob3JpemF0aW9u
Lm1tOgorICAgICAgICAoLVtUZXN0U09BdXRob3JpemF0aW9uRGVsZWdhdGUgd2ViVmlldzpjcmVh
dGVXZWJWaWV3V2l0aENvbmZpZ3VyYXRpb246Zm9yTmF2aWdhdGlvbkFjdGlvbjp3aW5kb3dGZWF0
dXJlczpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJJ
bml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW06CisgICAgICAgIChVc2VySW5pdGlh
dGVkQWN0aW9uVGVzdDo6VVJMV2l0aEZyYWdtZW50KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VzZXJNZWRpYURpc2FibGVkLm1tOgorICAgICAgICAoVEVTVF9G
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSFRUUENvb2tp
ZVN0b3JlLm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tOgorICAgICAgICAoLVtVSURlbGVn
YXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbToKKyAgICAgICAg
KFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJW
aWV3Q2FuZGlkYXRlVGVzdHMubW06CisgICAgICAgICgrW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNl
dFVwV2l0aEZyYW1lOnRlc3RQYWdlOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5p
dGlhbGl6YXRpb24ubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbToKKyAgICAgICAgKHJ1bldlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMu
bW06CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc1dlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZSB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW06CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMv
Q3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50
SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVu
dFRlc3QubW06CisgICAgICAgIChURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpU
RVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVz
dHNJT1MubW06CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRlc3RpbmdXZWJWaWV3IGxl
YWRpbmdJdGVtc0ZvcldlYlZpZXc6XSk6CisgICAgICAgICgrW0lucHV0QXNzaXN0YW50SXRlbVRl
c3RpbmdXZWJWaWV3IHRyYWlsaW5nSXRlbXNGb3JXZWJWaWV3Ol0pOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvQ2Fu
ZGlkYXRlVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VM
b2FkRGVsZWdhdGUubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tOgorICAgICAgICAoK1tUZXN0
Rm9udE9wdGlvbnMgc2hhcmVkSW5zdGFuY2VdKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL21h
Yy9tYWluTWFjLm1tOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW06CisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjphZGROb3RpZmljYXRpb25MaXN0ZW5l
cik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tOgorICAgICAgICAoV1RSOjpnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAg
IChXVFI6Omdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCk6CisgICAgICAgIChX
VFI6OmluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbik6CisgICAgICAgIChXVFI6OlRlc3RD
b250cm9sbGVyOjpwbGF0Zm9ybUNvbnRleHQpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1QcmVmZXJlbmNlcyk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpw
bGF0Zm9ybUluaXRpYWxpemVEYXRhU3RvcmUpOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxl
cjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3KToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQ3JlYXRlT3RoZXJQYWdlKToKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6
OnBsYXRmb3JtQWRqdXN0Q29udGV4dCk6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpj
b2NvYVJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoV1RSOjpUZXN0Q29u
dHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNyZWRlbnRpYWxzKToKKyAgICAgICAgKFdUUjo6VGVz
dENvbnRyb2xsZXI6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OmxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAgIChXVFI6
OlRlc3RDb250cm9sbGVyOjpjbGVhckxvYWRlZFN1YnJlc291cmNlRG9tYWlucyk6CisgICAgICAg
IChXVFI6OlRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0KToKKyAgICAgICAgKFdUUjo6
VGVzdENvbnRyb2xsZXI6OnNldEFsbG93U3RvcmFnZVF1b3RhSW5jcmVhc2UpOgorICAgICAgICAo
V1RSOjpUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGUpOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdy5tbToK
KyAgICAgICAgKCtbR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93IHNoYXJlZEdlbmVyYXRlZFRv
dWNoZXNEZWJ1Z1dpbmRvd10pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2
ZW50R2VuZXJhdG9yLm1tOgorICAgICAgICAoK1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURF
dmVudEdlbmVyYXRvcl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250
cm9sbGVyTWFjLm1tOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29u
dGVudEV4dGVuc2lvbkZvclRlc3QpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvbWFjL1dl
YktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tOgorICAgICAgICAoK1tXZWJLaXRUZXN0UnVubmVy
UGFzdGVib2FyZCBfcGFzdGVib2FyZFdpdGhOYW1lOl0pOgorICAgICAgICAoK1tXZWJLaXRUZXN0
UnVubmVyUGFzdGVib2FyZCByZWxlYXNlTG9jYWxQYXN0ZWJvYXJkc10pOgorCiAyMDIxLTAyLTIy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGFkb3B0TlMo
KSBhcyBzb29uIGFzIHdlIFtbT2JqY0NsYXNzIGFsbG9jXSBpbml0XSB0byBhdm9pZCBsZWFrcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1BpeGVsRHVtcFN1cHBvcnRJT1Mu
bW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQppbmRl
eCBkNzA5YTJlOTE2YTUxMWI3MDYxOGU5MTJhNDZkNzZiYjgwNzliZTE0Li4xZmViNGFkNDQ5ZGNk
NzM4MGRmZmU0YzhhMmI3MTJjNzA1NDI2NjEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvUGl4ZWxEdW1wU3VwcG9ydElPUy5tbQpAQCAtNDksOCArNDksOCBAQAogI2ltcG9ydCA8
d3RmL1JlZlB0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1leHRlcm4gRHVtcFJl
bmRlclRyZWVXaW5kb3cgKmdEcnRXaW5kb3c7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVCcm93c2Vy
VmlldyAqZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdp
bmRvdz4gZ0RydFdpbmRvdzsKK2V4dGVybiBSZXRhaW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2Vy
Vmlldz4gZ1dlYkJyb3dzZXJWaWV3OwogCiBSZWZQdHI8Qml0bWFwQ29udGV4dD4gY3JlYXRlQml0
bWFwQ29udGV4dEZyb21XZWJWaWV3KGJvb2wgb25zY3JlZW4sIGJvb2wgaW5jcmVtZW50YWxSZXBh
aW50LCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5LCBib29sIGRyYXdTZWxlY3Rpb25SZWN0KQogewpk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggMjExZjg2MGZiMWM2NWY1MTg0NzZjOTkxNzU1MzBlZWU3NjJiMGI0MS4uYTFlZjJlZDA5
NzkwMTIxNDdmNjllMDk0NTNmNmVlY2U4MGEzZjRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC0zNSw4ICszNSw4IEBACiAj
aW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFkLmg+CiAKLWV4
dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7Ci1leHRlcm4g
RHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmlldzsKK2V4dGVybiBSZXRh
aW5QdHI8RHVtcFJlbmRlclRyZWVCcm93c2VyVmlldz4gZ1dlYkJyb3dzZXJWaWV3OworZXh0ZXJu
IFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3Owog
CiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtNzIsNyArNzIsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6em9vbVRvU2NhbGUoZG91YmxlIHNjYWxlLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQog
CiBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVySU9TOjp6b29tU2NhbGUoKSBjb25zdAogewotICAg
IHJldHVybiBnV2ViU2Nyb2xsVmlldy56b29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xs
VmlldyB6b29tU2NhbGVdOwogfQogCiBzdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgbG9uZyB4LCBsb25nIHksIFNj
cm9sbFRvT3B0aW9ucyogb3B0aW9ucykKQEAgLTEwOCwxMyArMTA4LDEzIEBAIGRvdWJsZSBVSVNj
cmlwdENvbnRyb2xsZXJJT1M6OmNvbnRlbnRPZmZzZXRZKCkgY29uc3QKIAogdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09w
dGlvbnMqIG9wdGlvbnMpCiB7Ci0gICAgYXV0byBvZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRl
ZElmTmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBhdXRvIG9m
ZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3NhcnkoZ1dlYlNjcm9sbFZpZXcuZ2V0
KCksIHgsIHksIG9wdGlvbnMpOwogICAgIFtnV2ViU2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0
Om9mZnNldCBhbmltYXRlZDpZRVNdOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6
aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyog
b3B0aW9ucykKIHsKLSAgICBhdXRvIG9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNl
c3NhcnkoZ1dlYlNjcm9sbFZpZXcsIHgsIHksIG9wdGlvbnMpOworICAgIGF1dG8gb2Zmc2V0ID0g
Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeShnV2ViU2Nyb2xsVmlldy5nZXQoKSwgeCwg
eSwgb3B0aW9ucyk7CiAgICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0
IGFuaW1hdGVkOk5PXTsKIH0KIApAQCAtMTI1LDEyICsxMjUsMTIgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OmltbWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkKIAogZG91Ymxl
IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6bWluaW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGdXZWJTY3JvbGxWaWV3Lm1pbmltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2Vi
U2Nyb2xsVmlldyBtaW5pbXVtWm9vbVNjYWxlXTsKIH0KIAogZG91YmxlIFVJU2NyaXB0Q29udHJv
bGxlcklPUzo6bWF4aW11bVpvb21TY2FsZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdXZWJTY3Jv
bGxWaWV3Lm1heGltdW1ab29tU2NhbGU7CisgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBtYXhp
bXVtWm9vbVNjYWxlXTsKIH0KIAogSlNPYmplY3RSZWYgVUlTY3JpcHRDb250cm9sbGVySU9TOjpj
b250ZW50VmlzaWJsZVJlY3QoKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCmluZGV4IDM3OWQ1MjBkNzM5NzkyN2JmZThhOGY5ODYwODU5ZjZlYzgxMzUy
YTUuLjNmM2JkNTE5ZmU4ODJlODRmZmYwMWNhNGY1ZmQ1NmI4N2ViY2ZiZWIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCBz
dGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0VVJMKTsKIAogdm9sYXRp
bGUgYm9vbCBkb25lOwogCi1OYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250cm9s
bGVyID0gbnVsbHB0cjsKK1JldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmlnYXRp
b25Db250cm9sbGVyOwogUmVmUHRyPFRlc3RSdW5uZXI+IGdUZXN0UnVubmVyOwogCiBPcHRpb25h
bDxXVFI6OlRlc3RPcHRpb25zPiBtYWluRnJhbWVUZXN0T3B0aW9uczsKQEAgLTIwNSw3ICsyMDUs
NyBAQCBXZWJGcmFtZSAqbWFpbkZyYW1lID0gbmlsOwogV2ViRnJhbWUgKnRvcExvYWRpbmdGcmFt
ZSA9IG5pbDsgLy8gIW5pbCBpZmYgYSBsb2FkIGlzIGluIHByb2dyZXNzCiAKICNpZiBQTEFURk9S
TShNQUMpCi1OU1dpbmRvdyAqbWFpbldpbmRvdyA9IG5pbDsKK1JldGFpblB0cjxOU1dpbmRvdz4g
bWFpbldpbmRvdzsKICNlbmRpZgogCiBDRk11dGFibGVTZXRSZWYgZGlzYWxsb3dlZFVSTHM9IG51
bGxwdHI7CkBAIC0yMTgsMTUgKzIxOCwxNSBAQCBzdGF0aWMgUmV0YWluUHRyPFdlYlZpZXc+JiBn
bG9iYWxXZWJWaWV3KCkKIH0KIAogLy8gRGVsZWdhdGVzCi1zdGF0aWMgRnJhbWVMb2FkRGVsZWdh
dGUgKmZyYW1lTG9hZERlbGVnYXRlOwotc3RhdGljIFVJRGVsZWdhdGUgKnVpRGVsZWdhdGU7Ci1z
dGF0aWMgRWRpdGluZ0RlbGVnYXRlICplZGl0aW5nRGVsZWdhdGU7Ci1zdGF0aWMgUmVzb3VyY2VM
b2FkRGVsZWdhdGUgKnJlc291cmNlTG9hZERlbGVnYXRlOwotc3RhdGljIEhpc3RvcnlEZWxlZ2F0
ZSAqaGlzdG9yeURlbGVnYXRlOwotUG9saWN5RGVsZWdhdGUgKnBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKLURlZmF1bHRQb2xpY3lEZWxlZ2F0ZSAqZGVmYXVsdFBvbGljeURlbGVnYXRlID0gbnVs
bHB0cjsKK3N0YXRpYyBSZXRhaW5QdHI8RnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVn
YXRlOworc3RhdGljIFJldGFpblB0cjxVSURlbGVnYXRlPiB1aURlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxFZGl0aW5nRGVsZWdhdGU+IGVkaXRpbmdEZWxlZ2F0ZTsKK3N0YXRpYyBSZXRhaW5Q
dHI8UmVzb3VyY2VMb2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlOworc3RhdGljIFJl
dGFpblB0cjxIaXN0b3J5RGVsZWdhdGU+IGhpc3RvcnlEZWxlZ2F0ZTsKK1JldGFpblB0cjxQb2xp
Y3lEZWxlZ2F0ZT4gcG9saWN5RGVsZWdhdGU7CitSZXRhaW5QdHI8RGVmYXVsdFBvbGljeURlbGVn
YXRlPiBkZWZhdWx0UG9saWN5RGVsZWdhdGU7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0
YXRpYyBTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlICpzY3JvbGxWaWV3UmVzaXplckRlbGVnYXRl
Oworc3RhdGljIFJldGFpblB0cjxTY3JvbGxWaWV3UmVzaXplckRlbGVnYXRlPiBzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlOwogI2VuZGlmCiAKIHN0YXRpYyBpbnQgZHVtcFBpeGVsc0ZvckFsbFRl
c3RzOwpAQCAtMjUzLDkgKzI1Myw5IEBAIHN0YXRpYyBSZXRhaW5QdHI8V2ViSGlzdG9yeUl0ZW0+
JiBwcmV2VGVzdEJGSXRlbSgpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogY29uc3QgQ0dS
ZWN0IGxheW91dFRlc3RWaWV3cG9ydFJlY3QgPSB7IHswLCAwfSwge3N0YXRpY19jYXN0PENHRmxv
YXQ+KFRlc3RSdW5uZXI6OnZpZXdXaWR0aCksIHN0YXRpY19jYXN0PENHRmxvYXQ+KFRlc3RSdW5u
ZXI6OnZpZXdIZWlnaHQpfSB9OwotRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldyAqZ1dlYkJyb3dz
ZXJWaWV3ID0gbmlsOwotRHVtcFJlbmRlclRyZWVXZWJTY3JvbGxWaWV3ICpnV2ViU2Nyb2xsVmll
dyA9IG5pbDsKLUR1bXBSZW5kZXJUcmVlV2luZG93ICpnRHJ0V2luZG93ID0gbmlsOworUmV0YWlu
UHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsKK1JldGFpblB0
cjxEdW1wUmVuZGVyVHJlZVdlYlNjcm9sbFZpZXc+IGdXZWJTY3JvbGxWaWV3OworUmV0YWluUHRy
PER1bXBSZW5kZXJUcmVlV2luZG93PiBnRHJ0V2luZG93OwogI2VuZGlmCiAKIHZvaWQgc2V0UGVy
c2lzdGVudFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oQ0ZTdHJpbmdSZWYgdXJsKQpAQCAtNDE3LDIy
ICs0MTcsMTkgQEAgc3RhdGljIE5TU2V0ICphbGxvd2VkRm9udEZhbWlseVNldCgpCiAKIHN0YXRp
YyBOU0FycmF5ICpmb250QWxsb3dMaXN0KCkKIHsKLSAgICBzdGF0aWMgTlNBcnJheSAqYXZhaWxh
YmxlRm9udHM7Ci0gICAgaWYgKGF2YWlsYWJsZUZvbnRzKQotICAgICAgICByZXR1cm4gYXZhaWxh
YmxlRm9udHM7Ci0KLSAgICBOU011dGFibGVBcnJheSAqYXZhaWxhYmxlRm9udExpc3QgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XTsKLSAgICBmb3IgKE5TU3RyaW5nICpmb250RmFtaWx5
IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKLSAgICAgICAgTlNBcnJheSogZm9udHNGb3JG
YW1pbHkgPSBbW05TRm9udE1hbmFnZXIgc2hhcmVkRm9udE1hbmFnZXJdIGF2YWlsYWJsZU1lbWJl
cnNPZkZvbnRGYW1pbHk6Zm9udEZhbWlseV07Ci0gICAgICAgIFthdmFpbGFibGVGb250TGlzdCBh
ZGRPYmplY3Q6Zm9udEZhbWlseV07Ci0gICAgICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4g
Zm9udHNGb3JGYW1pbHkpIHsKLSAgICAgICAgICAgIC8vIEZvbnQgbmFtZSBpcyB0aGUgZmlyc3Qg
ZW50cnkgaW4gdGhlIGFycmF5LgotICAgICAgICAgICAgW2F2YWlsYWJsZUZvbnRMaXN0IGFkZE9i
amVjdDpbZm9udEluZm8gb2JqZWN0QXRJbmRleDowXV07CisgICAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBhdmFpbGFibGVGb250cyA9IFtdIHsKKyAgICAgICAgYXV0byBhdmFpbGFibGVGb250
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgICAgICBmb3Ig
KE5TU3RyaW5nICpmb250RmFtaWx5IGluIGFsbG93ZWRGb250RmFtaWx5U2V0KCkpIHsKKyAgICAg
ICAgICAgIE5TQXJyYXkqIGZvbnRzRm9yRmFtaWx5ID0gW1tOU0ZvbnRNYW5hZ2VyIHNoYXJlZEZv
bnRNYW5hZ2VyXSBhdmFpbGFibGVNZW1iZXJzT2ZGb250RmFtaWx5OmZvbnRGYW1pbHldOworICAg
ICAgICAgICAgW2F2YWlsYWJsZUZvbnRzIGFkZE9iamVjdDpmb250RmFtaWx5XTsKKyAgICAgICAg
ICAgIGZvciAoTlNBcnJheSogZm9udEluZm8gaW4gZm9udHNGb3JGYW1pbHkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBGb250IG5hbWUgaXMgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSBhcnJheS4KKyAg
ICAgICAgICAgICAgICBbYXZhaWxhYmxlRm9udHMgYWRkT2JqZWN0Oltmb250SW5mbyBvYmplY3RB
dEluZGV4OjBdXTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0KLQotICAgIGF2YWls
YWJsZUZvbnRzID0gYXZhaWxhYmxlRm9udExpc3Q7Ci0gICAgcmV0dXJuIGF2YWlsYWJsZUZvbnRz
OworICAgICAgICByZXR1cm4gYXZhaWxhYmxlRm9udHM7CisgICAgfSgpOworICAgIHJldHVybiBh
dmFpbGFibGVGb250cy5nZXQoKTsKIH0KIAogLy8gQWN0aXZhdGluZyBzeXN0ZW0gY29waWVzIG9m
IHRoZXNlIGZvbnRzIG92ZXJyaWRlcyBhbnkgb3RoZXJzIHRoYXQgY291bGQgYmUgcHJlZmVycmVk
LCBzdWNoIGFzIG9uZXMKQEAgLTU3Niw3ICs1NzMsNyBAQCBzdGF0aWMgdm9pZCBhZGp1c3RXZWJE
b2N1bWVudEZvckZsZXhpYmxlVmlld3BvcnQoVUlXZWJCcm93c2VyVmlldyAqd2ViQnJvd3NlclZp
ZQogICAgIC8vIEFkanVzdCB0aGUgdmlld3BvcnQgdmlldyBhbmQgdmlld3BvcnQgdG8gaGF2ZSBz
aW1pbGFyIGJlaGF2aW9yCiAgICAgLy8gYXMgdGhlIGJyb3dzZXIuCiAgICAgWyhEdW1wUmVuZGVy
VHJlZUJyb3dzZXJWaWV3ICopd2ViQnJvd3NlclZpZXcgc2V0U2Nyb2xsaW5nVXNlc1VJV2ViU2Ny
b2xsVmlldzpZRVNdOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXREZWxlZ2F0ZTpzY3JvbGxWaWV3
UmVzaXplckRlbGVnYXRlXTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0RGVsZWdhdGU6c2Nyb2xs
Vmlld1Jlc2l6ZXJEZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBDR1JlY3Qgc2NyZWVuQm91bmRzID0g
W1VJU2NyZWVuIG1haW5TY3JlZW5dLmJvdW5kczsKICAgICBDR1JlY3Qgdmlld3BvcnRSZWN0ID0g
Q0dSZWN0TWFrZSgwLCAwLCBzY3JlZW5Cb3VuZHMuc2l6ZS53aWR0aCwgc2NyZWVuQm91bmRzLnNp
emUuaGVpZ2h0KTsKQEAgLTY4NywxMCArNjg0LDEwIEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVh
dGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAgICBbd2ViVmlldyBzZXRHcm91cE5hbWU6
QCJvcmcud2Via2l0LkR1bXBSZW5kZXJUcmVlIl07CiAjZW5kaWYKIAotICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZV07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdh
dGU6ZnJhbWVMb2FkRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldEVkaXRpbmdEZWxlZ2F0ZTpl
ZGl0aW5nRGVsZWdhdGVdOwotICAgIFt3ZWJWaWV3IHNldFJlc291cmNlTG9hZERlbGVnYXRlOnJl
c291cmNlTG9hZERlbGVnYXRlXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldEZyYW1lTG9hZERlbGVnYXRlOmZyYW1lTG9hZERl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRFZGl0aW5nRGVsZWdhdGU6ZWRpdGluZ0Rl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRSZXNvdXJjZUxvYWREZWxlZ2F0ZTpyZXNv
dXJjZUxvYWREZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgX3NldEdlb2xvY2F0aW9uUHJv
dmlkZXI6W01vY2tHZW9sb2NhdGlvblByb3ZpZGVyIHNoYXJlZF1dOwogICAgIFt3ZWJWaWV3IF9z
ZXREZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOltXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVy
TW9jayBzaGFyZWRdXTsKICAgICBbd2ViVmlldyBfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6W01v
Y2tXZWJOb3RpZmljYXRpb25Qcm92aWRlciBzaGFyZWRdXTsKQEAgLTcyMiwyMyArNzE5LDIyIEBA
IFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zmc2NyZWVuV2luZG93KCkKICAg
ICAvLyBQdXQgaXQgYXQgLTEwMDAwLCAtMTAwMDAgaW4gImZsaXBwZWQgY29vcmRpbmF0ZXMiLCBz
aW5jZSBXZWJDb3JlIGFuZCB0aGUgRE9NIHVzZSBmbGlwcGVkIGNvb3JkaW5hdGVzLgogICAgIE5T
U2NyZWVuICpmaXJzdFNjcmVlbiA9IFtbTlNTY3JlZW4gc2NyZWVuc10gZmlyc3RPYmplY3RdOwog
ICAgIE5TUmVjdCB3aW5kb3dSZWN0ID0gKHNob3dXZWJWaWV3KSA/IE5TT2Zmc2V0UmVjdChyZWN0
LCAxMDAsIDEwMCkgOiBOU09mZnNldFJlY3QocmVjdCwgLTEwMDAwLCBbZmlyc3RTY3JlZW4gZnJh
bWVdLnNpemUuaGVpZ2h0IC0gcmVjdC5zaXplLmhlaWdodCArIDEwMDAwKTsKLSAgICBEdW1wUmVu
ZGVyVHJlZVdpbmRvdyAqd2luZG93ID0gW1tEdW1wUmVuZGVyVHJlZVdpbmRvdyBhbGxvY10gaW5p
dFdpdGhDb250ZW50UmVjdDp3aW5kb3dSZWN0IHN0eWxlTWFzazpOU0JvcmRlcmxlc3NXaW5kb3dN
YXNrIGJhY2tpbmc6TlNCYWNraW5nU3RvcmVCdWZmZXJlZCBkZWZlcjpZRVNdOwotICAgIG1haW5X
aW5kb3cgPSB3aW5kb3c7Ci0KLSAgICBbd2luZG93IHNldENvbG9yU3BhY2U6W2ZpcnN0U2NyZWVu
IGNvbG9yU3BhY2VdXTsKLSAgICBbd2luZG93IHNldENvbGxlY3Rpb25CZWhhdmlvcjpOU1dpbmRv
d0NvbGxlY3Rpb25CZWhhdmlvclN0YXRpb25hcnldOwotICAgIFtbd2luZG93IGNvbnRlbnRWaWV3
XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOworICAgIG1haW5XaW5kb3cgPSBhZG9wdE5TKFtb
RHVtcFJlbmRlclRyZWVXaW5kb3cgYWxsb2NdIGluaXRXaXRoQ29udGVudFJlY3Q6d2luZG93UmVj
dCBzdHlsZU1hc2s6TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3Jl
QnVmZmVyZWQgZGVmZXI6WUVTXSk7CisgICAgW21haW5XaW5kb3cgc2V0UmVsZWFzZWRXaGVuQ2xv
c2VkOk5PXTsKKyAgICBbbWFpbldpbmRvdyBzZXRDb2xvclNwYWNlOltmaXJzdFNjcmVlbiBjb2xv
clNwYWNlXV07CisgICAgW21haW5XaW5kb3cgc2V0Q29sbGVjdGlvbkJlaGF2aW9yOk5TV2luZG93
Q29sbGVjdGlvbkJlaGF2aW9yU3RhdGlvbmFyeV07CisgICAgW1ttYWluV2luZG93IGNvbnRlbnRW
aWV3XSBhZGRTdWJ2aWV3OndlYlZpZXcuZ2V0KCldOwogICAgIGlmIChzaG93V2ViVmlldykKLSAg
ICAgICAgW3dpbmRvdyBvcmRlckZyb250Om5pbF07CisgICAgICAgIFttYWluV2luZG93IG9yZGVy
RnJvbnQ6bmlsXTsKICAgICBlbHNlCi0gICAgICAgIFt3aW5kb3cgb3JkZXJCYWNrOm5pbF07Ci0g
ICAgW3dpbmRvdyBzZXRBdXRvZGlzcGxheTpOT107CisgICAgICAgIFttYWluV2luZG93IG9yZGVy
QmFjazpuaWxdOworICAgIFttYWluV2luZG93IHNldEF1dG9kaXNwbGF5Ok5PXTsKIAotICAgIFt3
aW5kb3cgc3RhcnRMaXN0ZW5pbmdGb3JBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ2hhbmdlc107Cisg
ICAgWyhEdW1wUmVuZGVyVHJlZVdpbmRvdyAqKW1haW5XaW5kb3cuZ2V0KCkgc3RhcnRMaXN0ZW5p
bmdGb3JBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ2hhbmdlc107CiAjZWxzZQotICAgIER1bXBSZW5k
ZXJUcmVlV2luZG93ICpkcnRXaW5kb3cgPSBbW0R1bXBSZW5kZXJUcmVlV2luZG93IGFsbG9jXSBp
bml0V2l0aExheWVyOlt3ZWJCcm93c2VyVmlldyBsYXllcl1dOworICAgIGF1dG8gZHJ0V2luZG93
ID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlV2luZG93IGFsbG9jXSBpbml0V2l0aExheWVyOlt3
ZWJCcm93c2VyVmlldyBsYXllcl1dKTsKICAgICBbZHJ0V2luZG93IHNldENvbnRlbnRWaWV3Ondl
YlZpZXcuZ2V0KCldOwotICAgIFt3ZWJCcm93c2VyVmlldyBzZXRXQUtXaW5kb3c6ZHJ0V2luZG93
XTsKKyAgICBbd2ViQnJvd3NlclZpZXcgc2V0V0FLV2luZG93OmRydFdpbmRvdy5nZXQoKV07CiAK
ICAgICBbW3dlYlZpZXcgd2luZG93XSBtYWtlRmlyc3RSZXNwb25kZXI6W1tbd2ViVmlldyBtYWlu
RnJhbWVdIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XV07CiAKQEAgLTc1MCw4ICs3NDYsOCBAQCBS
ZXRhaW5QdHI8V2ViVmlldz4gY3JlYXRlV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAgICAg
W3VpV2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlci5nZXQoKV07CiAK
ICAgICAvLyBUaGUgVUlXaW5kb3cgYW5kIFVJV2ViQnJvd3NlclZpZXcgYXJlIHJlbGVhc2VkIHdo
ZW4gdGhlIER1bXBSZW5kZXJUcmVlV2luZG93IGlzIGNsb3NlZC4KLSAgICBkcnRXaW5kb3cudWlX
aW5kb3cgPSB1aVdpbmRvdy5nZXQoKTsKLSAgICBkcnRXaW5kb3cuYnJvd3NlclZpZXcgPSB3ZWJC
cm93c2VyVmlldy5nZXQoKTsKKyAgICBkcnRXaW5kb3cuZ2V0KCkudWlXaW5kb3cgPSB1aVdpbmRv
dy5nZXQoKTsKKyAgICBkcnRXaW5kb3cuZ2V0KCkuYnJvd3NlclZpZXcgPSB3ZWJCcm93c2VyVmll
dy5nZXQoKTsKIAogICAgIGF1dG8gc2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJl
ZVdlYlNjcm9sbFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6bGF5b3V0VGVzdFZpZXdwb3J0UmVj
dF0pOwogICAgIFtzY3JvbGxWaWV3IGFkZFN1YnZpZXc6d2ViQnJvd3NlclZpZXcuZ2V0KCldOwpA
QCAtNzY5LDkgKzc2NSw5IEBAIFJldGFpblB0cjxXZWJWaWV3PiBjcmVhdGVXZWJWaWV3QW5kT2Zm
c2NyZWVuV2luZG93KCkKICNlbHNlCiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIFVJVmll
d3MsIGFuZCBzZXQgdGhlIGtleSBVSVdpbmRvdyB0byBiZSBwYWludGVkLgogICAgIGlmICghZ1dl
YkJyb3dzZXJWaWV3KSB7Ci0gICAgICAgIGdXZWJCcm93c2VyVmlldyA9IFt3ZWJCcm93c2VyVmll
dyByZXRhaW5dOwotICAgICAgICBnV2ViU2Nyb2xsVmlldyA9IFtzY3JvbGxWaWV3IHJldGFpbl07
Ci0gICAgICAgIGdEcnRXaW5kb3cgPSBbZHJ0V2luZG93IHJldGFpbl07CisgICAgICAgIGdXZWJC
cm93c2VyVmlldyA9IFdURk1vdmUod2ViQnJvd3NlclZpZXcpOworICAgICAgICBnV2ViU2Nyb2xs
VmlldyA9IFdURk1vdmUoc2Nyb2xsVmlldyk7CisgICAgICAgIGdEcnRXaW5kb3cgPSBXVEZNb3Zl
KGRydFdpbmRvdyk7CiAgICAgICAgIFt1aVdpbmRvdyBtYWtlS2V5QW5kVmlzaWJsZV07CiAgICAg
ICAgIFt1aVdpbmRvdyByZXRhaW5dOwogICAgIH0KQEAgLTgwMiw3ICs3OTgsOCBAQCBzdGF0aWMg
dm9pZCBkZXN0cm95R2xvYmFsV2ViVmlld0FuZE9mZnNjcmVlbldpbmRvdygpCiAgICAgLy8gaXQg
cHJvYmFibHkgd29uJ3QgY2F1c2UgYW55IHRyb3VibGUgKGFuZCB0aGlzIGlzIGp1c3QgYSB0ZXN0
IHRvb2wsIGFmdGVyIGFsbCkuCiAgICAgW05TT2JqZWN0IGNhbmNlbFByZXZpb3VzUGVyZm9ybVJl
cXVlc3RzV2l0aFRhcmdldDp3aW5kb3ddOwogCi0gICAgW3dpbmRvdyBjbG9zZV07IC8vIHJlbGVh
c2VzIHdoZW4gY2xvc2VkCisgICAgW3dpbmRvdyBjbG9zZV07CisgICAgbWFpbldpbmRvdyA9IG5p
bDsKICNlbHNlCiAgICAgYXV0byB1aVdpbmRvdyA9IGFkb3B0TlMoW2dXZWJCcm93c2VyVmlldyB3
aW5kb3ddKTsKICAgICBbdWlXaW5kb3cgcmVtb3ZlRnJvbVN1cGVydmlld107CkBAIC05OTIsMzYg
Kzk4OSwzMSBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlc0ZvclRl
c3RpbmcoKQogc3RhdGljIHZvaWQgYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycygpCiB7CiAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCByZW1vdmUgdGhlc2UgYW5kIG1vdmUgdG8gdGhlIE9iakMgc3Rh
bmRhcmQgW0ZvbyBzaGFyZWRJbnN0YW5jZV0gbW9kZWwKLSAgICBnTmF2aWdhdGlvbkNvbnRyb2xs
ZXIgPSBbW05hdmlnYXRpb25Db250cm9sbGVyIGFsbG9jXSBpbml0XTsKLSAgICBmcmFtZUxvYWRE
ZWxlZ2F0ZSA9IFtbRnJhbWVMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIHVpRGVsZWdh
dGUgPSBbW1VJRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGVkaXRpbmdEZWxlZ2F0ZSA9IFtb
RWRpdGluZ0RlbGVnYXRlIGFsbG9jXSBpbml0XTsKLSAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9
IFtbUmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIHBvbGljeURlbGVnYXRl
ID0gW1tQb2xpY3lEZWxlZ2F0ZSBhbGxvY10gaW5pdF07Ci0gICAgaGlzdG9yeURlbGVnYXRlID0g
W1tIaXN0b3J5RGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIGRlZmF1bHRQb2xpY3lEZWxlZ2F0
ZSA9IFtbRGVmYXVsdFBvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XTsKKyAgICBnTmF2aWdhdGlv
bkNvbnRyb2xsZXIgPSBhZG9wdE5TKFtbTmF2aWdhdGlvbkNvbnRyb2xsZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBmcmFtZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tGcmFtZUxvYWREZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtbVUlEZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIGVkaXRpbmdEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tFZGl0aW5nRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tS
ZXNvdXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIHBvbGljeURlbGVnYXRlID0g
YWRvcHROUyhbW1BvbGljeURlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgaGlzdG9yeURlbGVn
YXRlID0gYWRvcHROUyhbW0hpc3RvcnlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGRlZmF1
bHRQb2xpY3lEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tEZWZhdWx0UG9saWN5RGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIHNjcm9sbFZpZXdSZXNpemVy
RGVsZWdhdGUgPSBbW1Njcm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAg
IHNjcm9sbFZpZXdSZXNpemVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbU2Nyb2xsVmlld1Jlc2l6ZXJE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogI2VuZGlmCiB9CiAKLS8vIE9iakMrKyBkb2Vzbid0IHNl
ZW0gdG8gbGV0IG1lIHBhc3MgTlNPYmplY3QqJiBzYWRseS4KLXN0YXRpYyBpbmxpbmUgdm9pZCBy
ZWxlYXNlQW5kWmVybyhOU09iamVjdCoqIG9iamVjdCkKLXsKLSAgICBhdXRvIG9sZE9iamVjdCA9
IGFkb3B0TlMoKm9iamVjdCk7Ci0gICAgKm9iamVjdCA9IG5pbDsKLX0KLQogc3RhdGljIHZvaWQg
cmVsZWFzZUdsb2JhbENvbnRyb2xsZXJzKCkKIHsKLSAgICByZWxlYXNlQW5kWmVybygmZ05hdmln
YXRpb25Db250cm9sbGVyKTsKLSAgICByZWxlYXNlQW5kWmVybygmZnJhbWVMb2FkRGVsZWdhdGUp
OwotICAgIHJlbGVhc2VBbmRaZXJvKCZlZGl0aW5nRGVsZWdhdGUpOwotICAgIHJlbGVhc2VBbmRa
ZXJvKCZyZXNvdXJjZUxvYWREZWxlZ2F0ZSk7Ci0gICAgcmVsZWFzZUFuZFplcm8oJnVpRGVsZWdh
dGUpOwotICAgIHJlbGVhc2VBbmRaZXJvKCZwb2xpY3lEZWxlZ2F0ZSk7CisgICAgZ05hdmlnYXRp
b25Db250cm9sbGVyID0gbmlsOworICAgIGZyYW1lTG9hZERlbGVnYXRlID0gbmlsOworICAgIGVk
aXRpbmdEZWxlZ2F0ZSA9IG5pbDsKKyAgICByZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IG5pbDsKKyAg
ICB1aURlbGVnYXRlID0gbmlsOworICAgIGhpc3RvcnlEZWxlZ2F0ZSA9IG5pbDsKKyAgICBwb2xp
Y3lEZWxlZ2F0ZSA9IG5pbDsKKyAgICBkZWZhdWx0UG9saWN5RGVsZWdhdGUgPSBuaWw7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICByZWxlYXNlQW5kWmVybygmc2Nyb2xsVmlld1Jlc2l6
ZXJEZWxlZ2F0ZSk7CisgICAgc2Nyb2xsVmlld1Jlc2l6ZXJEZWxlZ2F0ZSA9IG5pbDsKICNlbmRp
ZgogfQogCkBAIC0xNzU4LDcgKzE3NTAsNyBAQCBzdGF0aWMgdm9pZCByZXNldFdlYlZpZXdUb0Nv
bnNpc3RlbnRTdGF0ZShjb25zdCBXVFI6OlRlc3RPcHRpb25zJiBvcHRpb25zLCBSZXNldAogICAg
IFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBhZGp1c3RXZWJEb2N1bWVudEZvclN0YW5kYXJkVmlld3BvcnQoZ1dl
YkJyb3dzZXJWaWV3LCBnV2ViU2Nyb2xsVmlldyk7CisgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JT
dGFuZGFyZFZpZXdwb3J0KGdXZWJCcm93c2VyVmlldy5nZXQoKSwgZ1dlYlNjcm9sbFZpZXcuZ2V0
KCkpOwogICAgIFt3ZWJWaWV3IF9zZXRBbGxvd3NNZXNzYWdpbmc6WUVTXTsKICNlbmRpZgogICAg
IFt3ZWJWaWV3IHNldEVkaXRhYmxlOk5PXTsKQEAgLTE3NzAsNyArMTc2Miw3IEBAIHN0YXRpYyB2
b2lkIHJlc2V0V2ViVmlld1RvQ29uc2lzdGVudFN0YXRlKGNvbnN0IFdUUjo6VGVzdE9wdGlvbnMm
IG9wdGlvbnMsIFJlc2V0CiAgICAgW3dlYlZpZXcgX3NldEN1c3RvbUJhY2tpbmdTY2FsZUZhY3Rv
cjowXTsKICNlbmRpZgogICAgIFt3ZWJWaWV3IHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50
czpZRVNdOwotICAgIFt3ZWJWaWV3IHNldFBvbGljeURlbGVnYXRlOmRlZmF1bHRQb2xpY3lEZWxl
Z2F0ZV07CisgICAgW3dlYlZpZXcgc2V0UG9saWN5RGVsZWdhdGU6ZGVmYXVsdFBvbGljeURlbGVn
YXRlLmdldCgpXTsKICAgICBbcG9saWN5RGVsZWdhdGUgc2V0UGVybWlzc2l2ZTpOT107CiAgICAg
W3BvbGljeURlbGVnYXRlIHNldENvbnRyb2xsZXJUb05vdGlmeURvbmU6MF07CiAgICAgW3VpRGVs
ZWdhdGUgcmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUJlZm9yZVRlc3Rpbmc6b3B0aW9uc107CkBAIC0x
OTQzLDcgKzE5MzUsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBp
bnB1dExpbmUpCiAgICAgdG9wTG9hZGluZ0ZyYW1lID0gbmlsOwogI2lmICFQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIEFTU0VSVCghZHJhZ2dpbmdJbmZvKTsgLy8gdGhlIHByZXZpb3VzIHRlc3Qg
c2hvdWxkIGhhdmUgY2FsbGVkIGV2ZW50U2VuZGVyLm1vdXNlVXAgdG8gZHJvcCEKLSAgICByZWxl
YXNlQW5kWmVybygmZHJhZ2dpbmdJbmZvKTsKKyAgICBkcmFnZ2luZ0luZm8gPSBuaWw7CiAjZW5k
aWYKICAgICBkb25lID0gTk87CiAKQEAgLTE5NTksNyArMTk1MSw3IEBAIHN0YXRpYyB2b2lkIHJ1
blRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlucHV0TGluZSkKICAgICAgICAgZ1Rlc3RSdW5uZXIt
PnNldER1bXBGcmFtZUxvYWRDYWxsYmFja3ModHJ1ZSk7CiAKICAgICBpZiAoc2hvdWxkTG9nSGlz
dG9yeURlbGVnYXRlcyhwYXRoT3JVUkwuY19zdHIoKSkpCi0gICAgICAgIFtbbWFpbkZyYW1lIHdl
YlZpZXddIHNldEhpc3RvcnlEZWxlZ2F0ZTpoaXN0b3J5RGVsZWdhdGVdOworICAgICAgICBbW21h
aW5GcmFtZSB3ZWJWaWV3XSBzZXRIaXN0b3J5RGVsZWdhdGU6aGlzdG9yeURlbGVnYXRlLmdldCgp
XTsKICAgICBlbHNlCiAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIHNldEhpc3RvcnlEZWxl
Z2F0ZTpuaWxdOwogCkBAIC0xOTcwLDcgKzE5NjIsNyBAQCBzdGF0aWMgdm9pZCBydW5UZXN0KGNv
bnN0IHN0ZDo6c3RyaW5nJiBpbnB1dExpbmUpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGlmIChzaG91bGRNYWtlVmlld3BvcnRGbGV4aWJsZShwYXRoT3JVUkwuY19zdHIoKSkpCi0g
ICAgICAgIGFkanVzdFdlYkRvY3VtZW50Rm9yRmxleGlibGVWaWV3cG9ydChnV2ViQnJvd3NlclZp
ZXcsIGdXZWJTY3JvbGxWaWV3KTsKKyAgICAgICAgYWRqdXN0V2ViRG9jdW1lbnRGb3JGbGV4aWJs
ZVZpZXdwb3J0KGdXZWJCcm93c2VyVmlldy5nZXQoKSwgZ1dlYlNjcm9sbFZpZXcuZ2V0KCkpOwog
I2VuZGlmCiAKICAgICBpZiAoc2hvdWxkVXNlRXBoZW1lcmFsU2Vzc2lvbihwYXRoT3JVUkwuY19z
dHIoKSkpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVNYWMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCmlu
ZGV4IDQzNDdkYmU1MGVmZWUxZTQ0Nzc5OTA1N2ViOTNiMmE2MzY3ZGJjYjUuLjNkNDFiNWI3NGJi
NzI4YTUxMmRlOTY3ZDk5NThmMDY4ODJkODU2M2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZU1hYy5oCkBAIC00NywxNyArNDcsMTkgQEAgZXh0ZXJuIENGTXV0
YWJsZUFycmF5UmVmIG9wZW5XaW5kb3dzUmVmOwogZXh0ZXJuIENGTXV0YWJsZVNldFJlZiBkaXNh
bGxvd2VkVVJMczsKIGV4dGVybiBXZWJGcmFtZSogbWFpbkZyYW1lOwogZXh0ZXJuIFdlYkZyYW1l
KiB0b3BMb2FkaW5nRnJhbWU7Ci1leHRlcm4gRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8gKmRy
YWdnaW5nSW5mbzsKLWV4dGVybiBOYXZpZ2F0aW9uQ29udHJvbGxlciogZ05hdmlnYXRpb25Db250
cm9sbGVyOwotZXh0ZXJuIFBvbGljeURlbGVnYXRlKiBwb2xpY3lEZWxlZ2F0ZTsKLWV4dGVybiBE
ZWZhdWx0UG9saWN5RGVsZWdhdGUgKmRlZmF1bHRQb2xpY3lEZWxlZ2F0ZTsKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuIFJldGFpblB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbz4gZHJh
Z2dpbmdJbmZvOworZXh0ZXJuIFJldGFpblB0cjxOYXZpZ2F0aW9uQ29udHJvbGxlcj4gZ05hdmln
YXRpb25Db250cm9sbGVyOworZXh0ZXJuIFJldGFpblB0cjxQb2xpY3lEZWxlZ2F0ZT4gcG9saWN5
RGVsZWdhdGU7CitleHRlcm4gUmV0YWluUHRyPERlZmF1bHRQb2xpY3lEZWxlZ2F0ZT4gZGVmYXVs
dFBvbGljeURlbGVnYXRlOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIE9CSkNfQ0xBU1Mg
VUlXaW5kb3c7Ci1leHRlcm4gVUlXaW5kb3cgKm1haW5XaW5kb3c7CitleHRlcm4gUmV0YWluUHRy
PFVJV2luZG93PiBtYWluV2luZG93OwogI2Vsc2UKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7Ci1leHRl
cm4gTlNXaW5kb3cgKm1haW5XaW5kb3c7CitleHRlcm4gUmV0YWluUHRyPE5TV2luZG93PiBtYWlu
V2luZG93OworI2VuZGlmCiAjZW5kaWYKIAogdm9pZCBzZXRXYWl0VG9EdW1wV2F0Y2hkb2coQ0ZS
dW5Mb29wVGltZXJSZWYpOwpAQCAtODEsOCArODMsMTAgQEAgQGludGVyZmFjZSBEdW1wUmVuZGVy
VHJlZSA6IFVJQXBwbGljYXRpb24gewogLSAodm9pZClfd2FpdEZvcldlYlRocmVhZDsKIEBlbmQK
IAorI2lmZGVmIF9fY3BsdXNwbHVzCiBAY2xhc3MgRHVtcFJlbmRlclRyZWVCcm93c2VyVmlldzsK
LWV4dGVybiBEdW1wUmVuZGVyVHJlZUJyb3dzZXJWaWV3ICpnV2ViQnJvd3NlclZpZXc7CitleHRl
cm4gUmV0YWluUHRyPER1bXBSZW5kZXJUcmVlQnJvd3NlclZpZXc+IGdXZWJCcm93c2VyVmlldzsK
KyNlbmRpZgogI2VuZGlmCiAKIGludCBEdW1wUmVuZGVyVHJlZU1haW4oaW50LCBjb25zdCBjaGFy
ICpbXSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWVQYXN0ZWJvYXJkLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
UGFzdGVib2FyZC5tbQppbmRleCBlOTQ0YjQxN2RiZjU3ZmY2ZDk3ODJhOThiNDU0MGQ5OTMzZjBi
ZDk1Li41Y2YyOWFjNjY2ODgxYWYyZGI2NzBkMjFhOThmMTBlYzJlYmRjOWY3IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWVQYXN0ZWJvYXJkLm1tCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQubW0K
QEAgLTU2LDcgKzU2LDcgQEAgQGludGVyZmFjZSBMb2NhbFBhc3RlYm9hcmQgOiBOU1Bhc3RlYm9h
cmQgewogLShpZClpbml0V2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZTsKIEBlbmQKIAotc3RhdGlj
IE5TTXV0YWJsZURpY3Rpb25hcnkgKmxvY2FsUGFzdGVib2FyZHM7CitzdGF0aWMgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IGxvY2FsUGFzdGVib2FyZHM7CiAKIEBpbXBsZW1lbnRhdGlv
biBEdW1wUmVuZGVyVHJlZVBhc3RlYm9hcmQKIApAQCAtNjcsNyArNjcsNyBAQCArIChOU1Bhc3Rl
Ym9hcmQgKilfcGFzdGVib2FyZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUKICAgICBpZiAoIW5h
bWUpCiAgICAgICAgIG5hbWUgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkxvY2FsUGFz
dGVib2FyZCVkIiwgKytudW1iZXJdOwogICAgIGlmICghbG9jYWxQYXN0ZWJvYXJkcykKLSAgICAg
ICAgbG9jYWxQYXN0ZWJvYXJkcyA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF07
CisgICAgICAgIGxvY2FsUGFzdGVib2FyZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pOwogICAgIGlmIChMb2NhbFBhc3RlYm9hcmQgKnBhc3RlYm9hcmQgPSBb
bG9jYWxQYXN0ZWJvYXJkcyBvYmplY3RGb3JLZXk6bmFtZV0pCiAgICAgICAgIHJldHVybiBwYXN0
ZWJvYXJkOwogICAgIGF1dG8gcGFzdGVib2FyZCA9IGFkb3B0TlMoW1tMb2NhbFBhc3RlYm9hcmQg
YWxsb2NdIGluaXRXaXRoTmFtZTpuYW1lXSk7CkBAIC03Nyw3ICs3Nyw3IEBAICsgKE5TUGFzdGVi
b2FyZCAqKV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQogCiArICh2b2lkKXJl
bGVhc2VMb2NhbFBhc3RlYm9hcmRzCiB7Ci0gICAgYXV0byBvbGRQYXN0ZWJvYWRzID0gYWRvcHRO
UyhzdGQ6OmV4Y2hhbmdlKGxvY2FsUGFzdGVib2FyZHMsIG5pbCkpOworICAgIGxvY2FsUGFzdGVi
b2FyZHMgPSBuaWw7CiB9CiAKIC8vIENvbnZlbmllbmNlIG1ldGhvZCBmb3IgSlMgc28gdGhhdCBp
dCBkb2Vzbid0IGhhdmUgdG8gdHJ5IGFuZCBjcmVhdGUgYSBOU0FycmF5IG9uIHRoZSBvYmpjIHNp
ZGUgaW5zdGVhZApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0V2ZW50U2Vu
ZGluZ0NvbnRyb2xsZXIubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5n
Q29udHJvbGxlci5tbQppbmRleCA1MjY2NzA1OWRjOGE5ZjdjMGEwNzk2MjA4ZjAwZmIwYjk0MmY0
ZTA5Li4xNmE2MDUxYmI3ZmI2NGI5ZGYwYWE5ZTM3MzIyYjg5YjAxMWQ3NTcwIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRXZlbnRTZW5kaW5nQ29udHJvbGxlci5tbQpAQCAt
OTEsNyArOTEsNyBAQCBzdHJ1Y3QgS2V5TWFwcGluZ0VudHJ5IHsKIE5TUG9pbnQgbGFzdE1vdXNl
UG9zaXRpb247CiBOU1BvaW50IGxhc3RDbGlja1Bvc2l0aW9uOwogaW50IGxhc3RDbGlja0J1dHRv
biA9IE5vTW91c2VCdXR0b247Ci1OU0FycmF5ICp3ZWJraXREb21FdmVudE5hbWVzOworc3RhdGlj
IFJldGFpblB0cjxOU0FycmF5PiB3ZWJraXREb21FdmVudE5hbWVzOwogQk9PTCByZXBsYXlpbmdT
YXZlZEV2ZW50czsKIHVuc2lnbmVkIG1vdXNlQnV0dG9uc0N1cnJlbnRseURvd24gPSAwOwogCkBA
IC0xNjksOCArMTY5LDggQEAgc3RhdGljIE5TRHJhZ2dpbmdTZXNzaW9uICpkcnRfV2ViSFRNTFZp
ZXdfYmVnaW5EcmFnZ2luZ1Nlc3Npb25XaXRoSXRlbXNFdmVudFNvdXIKICAgICBmb3IgKE5TRHJh
Z2dpbmdJdGVtICppdGVtIGluIGl0ZW1zKQogICAgICAgICBbcGFzdGVib2FyZCB3cml0ZU9iamVj
dHM6QFsgaXRlbS5pdGVtIF1dOwogCi0gICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJl
ZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVyb1NpemUg
cGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VdOwotICAgIFt3ZWJWaWV3IGRyYWdn
aW5nVXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tE
dW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0
Ok5TWmVyb1NpemUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2VdKTsKKyAgICBb
d2ViVmlldyBkcmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvLmdldCgpXTsKICAgICBbRXZlbnRT
ZW5kaW5nQ29udHJvbGxlciByZXBsYXlTYXZlZEV2ZW50c107CiAKICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgTlNEcmFnZ2luZ1Nlc3Npb24gKmRydF9XZWJI
VE1MVmlld19iZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtc0V2ZW50U291cgogCiArICh2b2lk
KWluaXRpYWxpemUKIHsKLSAgICB3ZWJraXREb21FdmVudE5hbWVzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aE9iamVjdHM6CisgICAgd2Via2l0RG9tRXZlbnROYW1lcyA9IEBbCiAgICAgICAg
IEAiYWJvcnQiLAogICAgICAgICBAImJlZm9yZWNvcHkiLAogICAgICAgICBAImJlZm9yZWN1dCIs
CkBAIC0yMjYsNyArMjI2LDcgQEAgKyAodm9pZClpbml0aWFsaXplCiAgICAgICAgIEAidGV4dHpv
b21vdXQiLAogICAgICAgICBAInVubG9hZCIsCiAgICAgICAgIEAiem9vbSIsCi0gICAgICAgIG5p
bF07CisgICAgXTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBBZGQgYW4gaW1wbGVtZW50
YXRpb24gb2YgLVtXZWJIVE1MVmlldyBiZWdpbkRyYWdnaW5nU2Vzc2lvbldpdGhJdGVtczpldmVu
dDpzb3VyY2U6XS4KQEAgLTQ2Myw4ICs0NjMsOCBAQCAtICh2b2lkKWJlZ2luRHJhZ1dpdGhGaWxl
czooV2ViU2NyaXB0T2JqZWN0Kilqc0ZpbGVQYXRocwogCiAgICAgLy8gUHJvdmlkZSBhIHNvdXJj
ZSwgb3RoZXJ3aXNlIFtEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2tdIGRlZmF1bHRzIHRvIE5TRHJhZ09wZXJhdGlvbk5vbmUKICAgICBhdXRvIHNv
dXJjZSA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZUZpbGVEcmFnZ2luZ1NvdXJjZSBhbGxvY10g
aW5pdF0pOwotICAgIGRyYWdnaW5nSW5mbyA9IFtbRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0luZm8g
YWxsb2NdIGluaXRXaXRoSW1hZ2U6bmlsIG9mZnNldDpOU1plcm9TaXplIHBhc3RlYm9hcmQ6cGJv
YXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCldOwotICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIGRyYWdn
aW5nRW50ZXJlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tE
dW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0
Ok5TWmVyb1NpemUgcGFzdGVib2FyZDpwYm9hcmQgc291cmNlOnNvdXJjZS5nZXQoKV0pOworICAg
IFtbbWFpbkZyYW1lIHdlYlZpZXddIGRyYWdnaW5nRW50ZXJlZDpkcmFnZ2luZ0luZm8uZ2V0KCld
OwogCiAgICAgZHJhZ01vZGUgPSBOTzsgLy8gZHJhZ01vZGUgc2F2ZXMgZXZlbnRzIGFuZCB0aGVu
IHJlcGxheXMgdGhlbSBsYXRlci4gIFdlIGRvbid0IG5lZWQvd2FudCB0aGF0LgogICAgIGxlZnRN
b3VzZUJ1dHRvbkRvd24gPSBZRVM7IC8vIE1ha2UgdGhlIHJlc3Qgb2YgZXZlbnRTZW5kZXIgdGhp
bmsgYSBkcmFnIGlzIGluIHByb2dyZXNzCkBAIC01MDMsOCArNTAzLDggQEAgLSAodm9pZCliZWdp
bkRyYWdXaXRoRmlsZVByb21pc2VzOihXZWJTY3JpcHRPYmplY3QgKilmaWxlUGF0aHMKICAgICBh
c3NlcnQoW3Bhc3RlYm9hcmQgcHJvcGVydHlMaXN0Rm9yVHlwZTpOU0ZpbGVuYW1lc1Bib2FyZFR5
cGVdKTsKIAogICAgIGF1dG8gc291cmNlID0gYWRvcHROUyhbW0R1bXBSZW5kZXJUcmVlRmlsZURy
YWdnaW5nU291cmNlIGFsbG9jXSBpbml0V2l0aFByb21pc2VkRmlsZVVSTHM6ZmlsZVVSTHNdKTsK
LSAgICBkcmFnZ2luZ0luZm8gPSBbW0R1bXBSZW5kZXJUcmVlRHJhZ2dpbmdJbmZvIGFsbG9jXSBp
bml0V2l0aEltYWdlOm5pbCBvZmZzZXQ6TlNaZXJvU2l6ZSBwYXN0ZWJvYXJkOnBhc3RlYm9hcmQg
c291cmNlOnNvdXJjZS5nZXQoKV07Ci0gICAgW21haW5GcmFtZS53ZWJWaWV3IGRyYWdnaW5nRW50
ZXJlZDpkcmFnZ2luZ0luZm9dOworICAgIGRyYWdnaW5nSW5mbyA9IGFkb3B0TlMoW1tEdW1wUmVu
ZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJbWFnZTpuaWwgb2Zmc2V0Ok5TWmVy
b1NpemUgcGFzdGVib2FyZDpwYXN0ZWJvYXJkIHNvdXJjZTpzb3VyY2UuZ2V0KCldKTsKKyAgICBb
bWFpbkZyYW1lLndlYlZpZXcgZHJhZ2dpbmdFbnRlcmVkOmRyYWdnaW5nSW5mby5nZXQoKV07CiAK
ICAgICBkcmFnTW9kZSA9IE5POwogICAgIGxlZnRNb3VzZUJ1dHRvbkRvd24gPSBZRVM7CkBAIC03
MTksMTYgKzcxOSwxNCBAQCAtICh2b2lkKW1vdXNlVXA6KGludClidXR0b25OdW1iZXIgd2l0aE1v
ZGlmaWVyczooV2ViU2NyaXB0T2JqZWN0Kiltb2RpZmllcnMKICAgICBpZiAoZHJhZ2dpbmdJbmZv
KSB7CiAgICAgICAgIFdlYlZpZXcgKndlYlZpZXcgPSBbbWFpbkZyYW1lIHdlYlZpZXddOwogICAg
ICAgICAKLSAgICAgICAgTlNEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24gPSBbd2ViVmlldyBk
cmFnZ2luZ1VwZGF0ZWQ6ZHJhZ2dpbmdJbmZvXTsKLSAgICAgICAgCisgICAgICAgIE5TRHJhZ09w
ZXJhdGlvbiBkcmFnT3BlcmF0aW9uID0gW3dlYlZpZXcgZHJhZ2dpbmdVcGRhdGVkOmRyYWdnaW5n
SW5mby5nZXQoKV07CiAgICAgICAgIGlmIChkcmFnT3BlcmF0aW9uICE9IE5TRHJhZ09wZXJhdGlv
bk5vbmUpCi0gICAgICAgICAgICBbd2ViVmlldyBwZXJmb3JtRHJhZ09wZXJhdGlvbjpkcmFnZ2lu
Z0luZm9dOworICAgICAgICAgICAgW3dlYlZpZXcgcGVyZm9ybURyYWdPcGVyYXRpb246ZHJhZ2dp
bmdJbmZvLmdldCgpXTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgW3dlYlZpZXcgZHJhZ2dp
bmdFeGl0ZWQ6ZHJhZ2dpbmdJbmZvXTsKKyAgICAgICAgICAgIFt3ZWJWaWV3IGRyYWdnaW5nRXhp
dGVkOmRyYWdnaW5nSW5mby5nZXQoKV07CiAgICAgICAgIC8vIFBlciBOU0RyYWdnaW5nLmg6IGRy
YWdnaW5nU291cmNlcyBtYXkgbm90IGltcGxlbWVudCBkcmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVy
YXRpb246CiAgICAgICAgIGlmIChbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihkcmFnZ2VkSW1hZ2U6ZW5kZWRBdDpvcGVyYXRpb246KV0p
CiAgICAgICAgICAgICBbW2RyYWdnaW5nSW5mbyBkcmFnZ2luZ1NvdXJjZV0gZHJhZ2dlZEltYWdl
OltkcmFnZ2luZ0luZm8gZHJhZ2dlZEltYWdlXSBlbmRlZEF0Omxhc3RNb3VzZVBvc2l0aW9uIG9w
ZXJhdGlvbjpkcmFnT3BlcmF0aW9uXTsKLSAgICAgICAgW2RyYWdnaW5nSW5mbyByZWxlYXNlXTsK
ICAgICAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogICAgIH0KICNlbmRpZgpAQCAtNzg3LDcgKzc4
NSw3IEBAIC0gKHZvaWQpbW91c2VNb3ZlVG9YOihpbnQpeCBZOihpbnQpeQogICAgICAgICAgICAg
ICAgIC8vIFBlciBOU0RyYWdnaW5nLmg6IGRyYWdnaW5nU291cmNlcyBtYXkgbm90IGltcGxlbWVu
dCBkcmFnZ2VkSW1hZ2U6bW92ZWRUbzoKICAgICAgICAgICAgICAgICBpZiAoW1tkcmFnZ2luZ0lu
Zm8gZHJhZ2dpbmdTb3VyY2VdIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZHJhZ2dlZElt
YWdlOm1vdmVkVG86KV0pCiAgICAgICAgICAgICAgICAgICAgIFtbZHJhZ2dpbmdJbmZvIGRyYWdn
aW5nU291cmNlXSBkcmFnZ2VkSW1hZ2U6W2RyYWdnaW5nSW5mbyBkcmFnZ2VkSW1hZ2VdIG1vdmVk
VG86bGFzdE1vdXNlUG9zaXRpb25dOwotICAgICAgICAgICAgICAgIFtbbWFpbkZyYW1lIHdlYlZp
ZXddIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm9dOworICAgICAgICAgICAgICAgIFtbbWFp
bkZyYW1lIHdlYlZpZXddIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8uZ2V0KCldOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgICAg
ICAgICBhdXRvIGV2ZW50UHJlc3NlZE1vdXNlQnV0dG9uc1N3aXp6bGVyID0gZXZlbnRQcmVzc2Vk
TW91c2VCdXR0b25zU3dpenpsZXJGb3JWaWV3QW5kRXZlbnQoc3ViVmlldywgZXZlbnQuZ2V0KCkp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRl
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCmluZGV4
IDM0MmIzYTAxZGM3ZWE4NzlhZjFiNTRiMGVlMjczZDY4MTJmOGY3YTcuLjFhYmE4MTIwODI3NzE5
YTlmMjI1ZTk2ODY2NjBlOGY5M2FiZmRkMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KQEAgLTMyNiw3ICszMjYsNyBAQCAtICh2b2lkKWRpZENs
ZWFyV2luZG93T2JqZWN0SW5TdGFuZGFyZFdvcmxkRm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWUK
ICNlbmRpZgogCiAgICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTphZG9wdE5TKFtbRXZlbnRTZW5k
aW5nQ29udHJvbGxlciBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAImV2ZW50U2VuZGVyIl07
Ci0gICAgW3dpbmRvd09iamVjdCBzZXRWYWx1ZTpnTmF2aWdhdGlvbkNvbnRyb2xsZXIgZm9yS2V5
OkAibmF2aWdhdGlvbkNvbnRyb2xsZXIiXTsKKyAgICBbd2luZG93T2JqZWN0IHNldFZhbHVlOmdO
YXZpZ2F0aW9uQ29udHJvbGxlci5nZXQoKSBmb3JLZXk6QCJuYXZpZ2F0aW9uQ29udHJvbGxlciJd
OwogICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHROUyhbW09iakNDb250cm9sbGVyIGFs
bG9jXSBpbml0XSkuZ2V0KCkgZm9yS2V5OkAib2JqQ0NvbnRyb2xsZXIiXTsKICAgICBbd2luZG93
T2JqZWN0IHNldFZhbHVlOmFkb3B0TlMoW1tPYmpDUGx1Z2luIGFsbG9jXSBpbml0XSkuZ2V0KCkg
Zm9yS2V5OkAib2JqQ1BsdWdpbiJdOwogICAgIFt3aW5kb3dPYmplY3Qgc2V0VmFsdWU6YWRvcHRO
UyhbW09iakNQbHVnaW5GdW5jdGlvbiBhbGxvY10gaW5pdF0pLmdldCgpIGZvcktleTpAIm9iakNQ
bHVnaW5GdW5jdGlvbiJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rl
c3RSdW5uZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5t
bQppbmRleCBjNThkNTQ2NWZhMDNkYmRiYWUwOTU4ZGE5NTU5YjdiNjYwMmIzYTVjLi4yNGNlMjJm
N2ZkYTc2ZDU1Zjg2ZTZhNWQ0YTFmYmJiYThlYzJiNjBmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvVGVzdFJ1bm5lck1hYy5tbQpAQCAtNDAwLDEyICs0MDAsMTIgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBzaXplKQogdm9p
ZCBUZXN0UnVubmVyOjpzZXRDdXN0b21Qb2xpY3lEZWxlZ2F0ZShib29sIHNldERlbGVnYXRlLCBi
b29sIHBlcm1pc3NpdmUpCiB7CiAgICAgaWYgKCFzZXREZWxlZ2F0ZSkgewotICAgICAgICBbW21h
aW5GcmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0UG9saWN5RGVsZWdhdGVd
OworICAgICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpkZWZhdWx0
UG9saWN5RGVsZWdhdGUuZ2V0KCldOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgW3Bv
bGljeURlbGVnYXRlIHNldFBlcm1pc3NpdmU6cGVybWlzc2l2ZV07Ci0gICAgW1ttYWluRnJhbWUg
d2ViVmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGVdOworICAgIFtbbWFpbkZy
YW1lIHdlYlZpZXddIHNldFBvbGljeURlbGVnYXRlOnBvbGljeURlbGVnYXRlLmdldCgpXTsKIH0K
IAogdm9pZCBUZXN0UnVubmVyOjpzZXREYXRhYmFzZVF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBx
dW90YSkKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIFRlc3RSdW5uZXI6OndhaXRGb3JQb2xpY3lE
ZWxlZ2F0ZSgpCiB7CiAgICAgc2V0V2FpdFRvRHVtcCh0cnVlKTsKICAgICBbcG9saWN5RGVsZWdh
dGUgc2V0Q29udHJvbGxlclRvTm90aWZ5RG9uZTp0aGlzXTsKLSAgICBbW21haW5GcmFtZSB3ZWJW
aWV3XSBzZXRQb2xpY3lEZWxlZ2F0ZTpwb2xpY3lEZWxlZ2F0ZV07CisgICAgW1ttYWluRnJhbWUg
d2ViVmlld10gc2V0UG9saWN5RGVsZWdhdGU6cG9saWN5RGVsZWdhdGUuZ2V0KCldOwogfQogCiB2
b2lkIFRlc3RSdW5uZXI6OmFkZE9yaWdpbkFjY2Vzc0FsbG93TGlzdEVudHJ5KEpTU3RyaW5nUmVm
IHNvdXJjZU9yaWdpbiwgSlNTdHJpbmdSZWYgZGVzdGluYXRpb25Qcm90b2NvbCwgSlNTdHJpbmdS
ZWYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQpAQCAt
OTE0LDggKzkxNCw4IEBAIHZvaWQgVGVzdFJ1bm5lcjo6YXBpVGVzdE5ld1dpbmRvd0RhdGFMb2Fk
QmFzZVVSTChKU1N0cmluZ1JlZiB1dGY4RGF0YSwgSlNTdHJpbmdSCiAgICAgLy8gYW5kIGNsb3Nl
cyBhIFdlYlZpZXcsIGl0IHNob3VsZCBiZSBydW4gb24gdGhlIG1haW4gdGhyZWFkLiBNYWtlIHRo
ZSBzd2l0Y2gKICAgICAvLyBmcm9tIHRoZSB3ZWIgdGhyZWFkIHRvIHRoZSBtYWluIHRocmVhZCBh
bmQgbWFrZSB0aGUgdGVzdCBhc3luY2hyb25vdXMuCiAgICAgaWYgKFdlYlRocmVhZElzQ3VycmVu
dCgpKSB7Ci0gICAgICAgIEFQSVRlc3REZWxlZ2F0ZUlQaG9uZSAqZGlzcGF0Y2hlciA9IFtbQVBJ
VGVzdERlbGVnYXRlSVBob25lIGFsbG9jXSBpbml0V2l0aFRlc3RSdW5uZXI6dGhpcyB1dGY4RGF0
YTp1dGY4RGF0YSBiYXNlVVJMOmJhc2VVUkxdOwotICAgICAgICBOU0ludm9jYXRpb24gKmludm9j
YXRpb24gPSBXZWJUaHJlYWRNYWtlTlNJbnZvY2F0aW9uKGRpc3BhdGNoZXIsIEBzZWxlY3Rvcihy
dW4pKTsKKyAgICAgICAgYXV0byBkaXNwYXRjaGVyID0gYWRvcHROUyhbW0FQSVRlc3REZWxlZ2F0
ZUlQaG9uZSBhbGxvY10gaW5pdFdpdGhUZXN0UnVubmVyOnRoaXMgdXRmOERhdGE6dXRmOERhdGEg
YmFzZVVSTDpiYXNlVVJMXSk7CisgICAgICAgIE5TSW52b2NhdGlvbiAqaW52b2NhdGlvbiA9IFdl
YlRocmVhZE1ha2VOU0ludm9jYXRpb24oZGlzcGF0Y2hlci5nZXQoKSwgQHNlbGVjdG9yKHJ1bikp
OwogICAgICAgICBXZWJUaHJlYWRDYWxsRGVsZWdhdGUoaW52b2NhdGlvbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxl
Z2F0ZS5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRlLm1tCmluZGV4IDEy
ZjVhYTc5MDMxYTgxNzExNWRkZWQwMjZhYjY4YjFhZjhiZDFiNGMuLmJiYTUzYmRiZjk0ZTE5YjNm
NzU3MDBlY2FiYWExYzg3ZWY0ZmMyZDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVn
YXRlLm1tCkBAIC00OCw3ICs0OCw3IEBACiAjaW1wb3J0IDx3dGYvY29jb2EvVmVjdG9yQ29jb2Eu
aD4KIAogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotRHVtcFJlbmRlclRyZWVEcmFnZ2luZ0lu
Zm8gKmRyYWdnaW5nSW5mbyA9IG5pbDsKK1JldGFpblB0cjxEdW1wUmVuZGVyVHJlZURyYWdnaW5n
SW5mbz4gZHJhZ2dpbmdJbmZvOwogI2VuZGlmCiAKIEBpbXBsZW1lbnRhdGlvbiBVSURlbGVnYXRl
CkBAIC0xNTMsMTAgKzE1MywxMCBAQCAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKiljIHJ1bkJl
Zm9yZVVubG9hZENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKQogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRyYWdJ
bWFnZTooTlNJbWFnZSAqKWFuSW1hZ2UgYXQ6KE5TUG9pbnQpdmlld0xvY2F0aW9uIG9mZnNldDoo
TlNTaXplKWluaXRpYWxPZmZzZXQgZXZlbnQ6KE5TRXZlbnQgKilldmVudCBwYXN0ZWJvYXJkOihO
U1Bhc3RlYm9hcmQgKilwYm9hcmQgc291cmNlOihpZClzb3VyY2VPYmogc2xpZGVCYWNrOihCT09M
KXNsaWRlRmxhZyBmb3JWaWV3OihOU1ZpZXcgKil2aWV3CiB7Ci0gICAgIGFzc2VydCghZHJhZ2dp
bmdJbmZvKTsKLSAgICAgZHJhZ2dpbmdJbmZvID0gW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5m
byBhbGxvY10gaW5pdFdpdGhJbWFnZTphbkltYWdlIG9mZnNldDppbml0aWFsT2Zmc2V0IHBhc3Rl
Ym9hcmQ6cGJvYXJkIHNvdXJjZTpzb3VyY2VPYmpdOwotICAgICBbc2VuZGVyIGRyYWdnaW5nVXBk
YXRlZDpkcmFnZ2luZ0luZm9dOwotICAgICBbRXZlbnRTZW5kaW5nQ29udHJvbGxlciByZXBsYXlT
YXZlZEV2ZW50c107CisgICAgYXNzZXJ0KCFkcmFnZ2luZ0luZm8pOworICAgIGRyYWdnaW5nSW5m
byA9IGFkb3B0TlMoW1tEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyBhbGxvY10gaW5pdFdpdGhJ
bWFnZTphbkltYWdlIG9mZnNldDppbml0aWFsT2Zmc2V0IHBhc3RlYm9hcmQ6cGJvYXJkIHNvdXJj
ZTpzb3VyY2VPYmpdKTsKKyAgICBbc2VuZGVyIGRyYWdnaW5nVXBkYXRlZDpkcmFnZ2luZ0luZm8u
Z2V0KCldOworICAgIFtFdmVudFNlbmRpbmdDb250cm9sbGVyIHJlcGxheVNhdmVkRXZlbnRzXTsK
IH0KICNlbmRpZgogCkBAIC00MzMsNyArNDMzLDYgQEAgLSAoTlNVSW50ZWdlcil3ZWJWaWV3OihX
ZWJWaWV3ICopd2ViVmlldyBkcmFnRGVzdGluYXRpb25BY3Rpb25NYXNrRm9yRHJhZ2dpbmdJbmYK
IC0gKHZvaWQpZGVhbGxvYwogewogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFtkcmFn
Z2luZ0luZm8gcmVsZWFzZV07CiAgICAgZHJhZ2dpbmdJbmZvID0gbmlsOwogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5tbSBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvY29jb2EvTGF5b3V0VGVzdFNwZWxsQ2hl
Y2tlci5tbQppbmRleCA5NDc1NTM3ZjZmNjkxYWZmNzZjYTUzODkyMDcxNTM0ZjMzMmQ3Y2QwLi4x
NTM5NDQ1OTAzMDViOGI1YTIxMmI3Mjg0NTIwNjBmYzZiOWIzY2ZlIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0UnVubmVyU2hhcmVkL2NvY29hL0xheW91dFRlc3RTcGVsbENoZWNrZXIubW0KKysrIGIv
VG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9jb2NvYS9MYXlvdXRUZXN0U3BlbGxDaGVja2VyLm1tCkBA
IC0zNSw3ICszNSw3IEBACiAKIHVzaW5nIFRleHRDaGVja2luZ0NvbXBsZXRpb25IYW5kbGVyID0g
dm9pZCheKShOU0ludGVnZXIsIE5TQXJyYXk8TlNUZXh0Q2hlY2tpbmdSZXN1bHQgKj4gKiwgTlNP
cnRob2dyYXBoeSAqLCBOU0ludGVnZXIpOwogCi1zdGF0aWMgTGF5b3V0VGVzdFNwZWxsQ2hlY2tl
ciAqZ2xvYmFsU3BlbGxDaGVja2VyID0gbmlsOworc3RhdGljIFJldGFpblB0cjxMYXlvdXRUZXN0
U3BlbGxDaGVja2VyPiBnbG9iYWxTcGVsbENoZWNrZXI7CiBzdGF0aWMgQk9PTCBoYXNTd2l6emxl
ZExheW91dFRlc3RTcGVsbENoZWNrZXIgPSBOTzsKIHN0YXRpYyBJTVAgZ2xvYmFsbHlTd2l6emxl
ZFNoYXJlZFNwZWxsQ2hlY2tlckltcGxlbWVudGF0aW9uOwogc3RhdGljIE1ldGhvZCBvcmlnaW5h
bFNoYXJlZFNwZWxsQ2hlY2tlck1ldGhvZDsKQEAgLTQ0LDkgKzQ0LDkgQEAgc3RhdGljIExheW91
dFRlc3RTcGVsbENoZWNrZXIgKmVuc3VyZUdsb2JhbExheW91dFRlc3RTcGVsbENoZWNrZXIoKQog
ewogICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwogICAgIGRpc3BhdGNoX29u
Y2UoJm9uY2VUb2tlbiwgXnsKLSAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2VyID0gW1tMYXlvdXRU
ZXN0U3BlbGxDaGVja2VyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgZ2xvYmFsU3BlbGxDaGVja2Vy
ID0gYWRvcHROUyhbW0xheW91dFRlc3RTcGVsbENoZWNrZXIgYWxsb2NdIGluaXRdKTsKICAgICB9
KTsKLSAgICByZXR1cm4gZ2xvYmFsU3BlbGxDaGVja2VyOworICAgIHJldHVybiBnbG9iYWxTcGVs
bENoZWNrZXIuZ2V0KCk7CiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICpzdHJpbmdGb3JDb3JyZWN0
aW9uUmVzcG9uc2UoTlNDb3JyZWN0aW9uUmVzcG9uc2UgY29ycmVjdGlvblJlc3BvbnNlKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhLm1tCmluZGV4
IDQ0NGMwNjdiZTczMDJhMzVhNzdkYzIzZWUwZjM5MTFlYzBkMzMxNjguLmI3YmM3ODNlOWI0YTk5
NDZiOGYwZmEwMzRkMjkxYjUwNzc1MWVhMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdC9HZXRVc2VyTWVkaWEubW0KQEAgLTEwNiw0NSArMTA2LDQ1IEBAIFRFU1Qo
V2ViS2l0MiwgQ2FwdHVyZU11dGUpCiAgICAgcHJlZmVyZW5jZXMuX21lZGlhQ2FwdHVyZVJlcXVp
cmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuX21lZGlh
Q2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tDYXB0dXJlRGV2aWNl
c0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vz
c1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1VzZXJN
ZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVn
YXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CiAKLSAgICB3ZWJWaWV3Ll9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRl
c3RpbmcgPSAwOworICAgIFt3ZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZv
clRlc3Rpbmc6MF07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJN
ZWRpYSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBf
V0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRV
bnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZUNhbWVyYSkpOwogCiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFDYXB0dXJl
RGV2aWNlc011dGVkXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2Vi
VmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVNdXRlZENhbWVyYSkpOworICAgIEVYUEVDVF9UUlVF
KHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZU11dGVkQ2FtZXJhKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDogX1dLTWVkaWFOb25l
TXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBf
V0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRV
bnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZUNhbWVyYSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InN0b3AoKSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3
LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxD
YXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAK
ICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlv
KCkiXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dL
TWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2Fp
dFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0
aXZlTWljcm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2Fw
dHVyZURldmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRl
KHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CisgICAgRVhQ
RUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2Fw
dHVyZVN0YXRlTXV0ZWRNaWNyb3Bob25lKSk7CiAgICAgW3dlYlZpZXcgX3NldFBhZ2VNdXRlZDog
X1dLTWVkaWFOb25lTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0
ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZU1pY3JvcGhvbmUpKTsKKyAgICBF
WFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFD
YXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAKICAgICBbd2ViVmlldyBfc2V0UGFnZU11
dGVkOiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRV
bnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9w
aG9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3Lmdl
dCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkTWljcm9waG9uZSkpOwogCiAgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInN0b3AoKSJdOwotICAgIEVYUEVDVF9U
UlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5v
bmUpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQo
KSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CiAKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2FwdHVyZUF1ZGlvQW5kVmlkZW8oKSJdOwotICAgIEVYUEVD
VF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZUFjdGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlTWljcm9waG9uZSkpOwor
ICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tN
ZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSB8IF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZl
TWljcm9waG9uZSkpOwogICAgIFt3ZWJWaWV3IF9zZXRQYWdlTXV0ZWQ6IF9XS01lZGlhQ2FwdHVy
ZURldmljZXNNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdl
YlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEgfCBfV0tNZWRpYUNhcHR1cmVT
dGF0ZU11dGVkTWljcm9waG9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVT
dGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU11dGVkQ2FtZXJhIHwgX1dL
TWVkaWFDYXB0dXJlU3RhdGVNdXRlZE1pY3JvcGhvbmUpKTsKICAgICBbd2ViVmlldyBfc2V0UGFn
ZU11dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2Fw
dHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhIHwgX1dL
TWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CisgICAgRVhQRUNUX1RSVUUod2Fp
dFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0
aXZlQ2FtZXJhIHwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVNaWNyb3Bob25lKSk7CiAKICAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic3RvcCgpIl07Ci0gICAg
RVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVy
ZVN0YXRlTm9uZSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJW
aWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZU5vbmUpKTsKIH0KIAogVEVTVChXZWJLaXQy
LCBDYXB0dXJlU3RvcCkKQEAgLTE1OSwxOSArMTU5LDE5IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVy
ZVN0b3ApCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29s
Q29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nl
c3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2Vy
TWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxl
Z2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVk
aWEiXTsKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dL
TWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50
aWxDYXB0dXJlU3RhdGUod2ViVmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVD
YW1lcmEpKTsKIAogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKICAgICBbd2Vi
VmlldyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYUNhcHR1cmVEZXZpY2VzTXV0ZWRdOwotICAgIEVY
UEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBfV0tNZWRpYUNhcHR1cmVT
dGF0ZU11dGVkQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRl
KHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTXV0ZWRDYW1lcmEpKTsKICAgICBb
d2ViVmlldyBfc2V0UGFnZU11dGVkOiBfV0tNZWRpYU5vbmVNdXRlZF07Ci0gICAgRVhQRUNUX1RS
VUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0
aXZlQ2FtZXJhKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZp
ZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAibm90aWZ5RW5kZWRFdmVudCgpIl07
CiAgICAgW3dlYlZpZXcgX3N0b3BNZWRpYUNhcHR1cmVdOwpAQCAtMTc5LDcgKzE3OSw3IEBAIFRF
U1QoV2ViS2l0MiwgQ2FwdHVyZVN0b3ApCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKICAgICBkb25lID0gZmFsc2U7CiAKLSAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0
dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVOb25lKSk7CisgICAgRVhQRUNU
X1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlhQ2FwdHVy
ZVN0YXRlTm9uZSkpOwogCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAInByb21wdEZvckNhcHR1cmUoKSJdOwogICAgIFtkZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRl
ZF07CkBAIC0xOTcsMTQgKzE5NywxNCBAQCBURVNUKFdlYktpdDIsIENhcHR1cmVJbmRpY2F0b3JE
ZWxheSkKICAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW0dVTU1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW1tjb25maWd1cmF0aW9uLmdldCgpIHVzZXJDb250ZW50
Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkg
bmFtZTpAImd1bSJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xD
b25maWcuZ2V0KCldOwotICAgIHdlYlZpZXcuX21lZGlhQ2FwdHVyZVJlcG9ydGluZ0RlbGF5Rm9y
VGVzdGluZyA9IDI7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNz
UG9vbENvbmZpZy5nZXQoKV0pOworICAgIFt3ZWJWaWV3IF9zZXRNZWRpYUNhcHR1cmVSZXBvcnRp
bmdEZWxheUZvclRlc3Rpbmc6Ml07CiAKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1Vz
ZXJNZWRpYUNhcHR1cmVVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURl
bGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJN
ZWRpYSJdOwotICAgIEVYUEVDVF9UUlVFKHdhaXRVbnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LCBf
V0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2ZUNhbWVyYSkpOworICAgIEVYUEVDVF9UUlVFKHdhaXRV
bnRpbENhcHR1cmVTdGF0ZSh3ZWJWaWV3LmdldCgpLCBfV0tNZWRpYUNhcHR1cmVTdGF0ZUFjdGl2
ZUNhbWVyYSkpOwogCiAgICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKIApAQCAtMjE1
LDcgKzIxNSw3IEBAIFRFU1QoV2ViS2l0MiwgQ2FwdHVyZUluZGljYXRvckRlbGF5KQogICAgIEVY
UEVDVF9FUShbd2ViVmlldyBfbWVkaWFDYXB0dXJlU3RhdGVdLCBfV0tNZWRpYUNhcHR1cmVTdGF0
ZUFjdGl2ZUNhbWVyYSk7CiAKICAgICAvLyBPbmUgYWRkaXRpb25hbCBzZWNvbmQgc2hvdWxkIGFs
bG93IHVzIHRvIGdvIGJhY2sgdG8gbm8gY2FwdHVyZSBiZWluZyByZXBvcnRlZC4KLSAgICBFWFBF
Q1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3Rh
dGVOb25lKSk7CisgICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcu
Z2V0KCksIF9XS01lZGlhQ2FwdHVyZVN0YXRlTm9uZSkpOwogfQogCiBURVNUKFdlYktpdDIsIENh
cHR1cmVJbmRpY2F0b3JEZWxheVdoZW5DbG9zZWQpCkBAIC0yMzAsMTQgKzIzMCwxNCBAQCBURVNU
KFdlYktpdDIsIENhcHR1cmVJbmRpY2F0b3JEZWxheVdoZW5DbG9zZWQpCiAgICAgYXV0byBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwog
ICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlw
dE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJndW0iXTsKIAotICAg
IGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkg
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKLSAgICB3
ZWJWaWV3Ll9tZWRpYUNhcHR1cmVSZXBvcnRpbmdEZWxheUZvclRlc3RpbmcgPSAyOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsK
KyAgICBbd2ViVmlldyBfc2V0TWVkaWFDYXB0dXJlUmVwb3J0aW5nRGVsYXlGb3JUZXN0aW5nOjJd
OwogCiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAg
W3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKLSAgICBFWFBFQ1Rf
VFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2ViVmlldywgX1dLTWVkaWFDYXB0dXJlU3RhdGVB
Y3RpdmVDYW1lcmEpKTsKKyAgICBFWFBFQ1RfVFJVRSh3YWl0VW50aWxDYXB0dXJlU3RhdGUod2Vi
Vmlldy5nZXQoKSwgX1dLTWVkaWFDYXB0dXJlU3RhdGVBY3RpdmVDYW1lcmEpKTsKIAogICAgIFtk
ZWxlZ2F0ZSB3YWl0VW50aWxQcm9tcHRlZF07CiAKQEAgLTI1OCwxMiArMjU4LDEyIEBAIFRFU1Qo
V2ViS2l0MiwgR2V0Q2FwYWJpbGl0aWVzKQogICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9w
dE5TKFtbR1VNTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbW2NvbmZpZ3VyYXRp
b24uZ2V0KCkgdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpt
ZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAiZ3VtIl07CiAKLSAgICBhdXRvIHdlYlZpZXcgPSBb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
LSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBz
ZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFn
ZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07Ci0gICAgRVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVy
ZVN0YXRlKHdlYlZpZXcsIF9XS01lZGlhQ2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CisgICAg
RVhQRUNUX1RSVUUod2FpdFVudGlsQ2FwdHVyZVN0YXRlKHdlYlZpZXcuZ2V0KCksIF9XS01lZGlh
Q2FwdHVyZVN0YXRlQWN0aXZlQ2FtZXJhKSk7CiAKICAgICBbZGVsZWdhdGUgd2FpdFVudGlsUHJv
bXB0ZWRdOwogCkBAIC0zMzEsMTAgKzMzMSwxMCBAQCBURVNUKFdlYktpdCwgV2ViQXVkaW9BbmRH
ZXRVc2VyTWVkaWEpCiAgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tHVU1NZXNz
YWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbi5nZXQoKSB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVy
LmdldCgpIG5hbWU6QCJndW0iXTsKIAotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1
cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogCiAgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tVc2VyTWVkaWFDYXB0dXJlVUlEZWxlZ2F0ZSBhbGxvY10gaW5p
dF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdldCgpOworICAgIFt3ZWJW
aWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgYXV0byB1cmwgPSBhZG9w
dFdLKFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJnZXRVc2VyTWVkaWEtd2ViYXVkaW8iLCAi
aHRtbCIpKTsKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImdldFVzZXJNZWRpYS13
ZWJhdWRpbyJdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQv
R2V0VXNlck1lZGlhTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0L0dldFVzZXJNZWRpYU5hdmlnYXRpb24ubW0KaW5kZXggOWJmZmRhYzY1Nzk5NmUwOWIxNTc2
YzE3MmRhZTcwODdjZGE4MGI1My4uMTc4YzQ0Nzc2MGY1M2U2ODQ4NmYwZTUxODIwZWY3MTQzYWE0
ZDBiNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNl
ck1lZGlhTmF2aWdhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dC9HZXRVc2VyTWVkaWFOYXZpZ2F0aW9uLm1tCkBAIC03NSw5ICs3NSw5IEBAIFRFU1QoV2ViS2l0
LCBOYXZpZ2F0ZUR1cmluZ0dldFVzZXJNZWRpYVByb21wdCkKICAgICBwcmVmZXJlbmNlcy5fbWVk
aWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlv
bi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9j
a0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkg
Y29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbTmF2aWdhdGlvbldoaWxlR2V0VXNlck1lZGlhUHJvbXB0RGlzcGxheWVkVUlEZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOwotICAgIHdlYlZpZXcuVUlEZWxlZ2F0ZSA9IGRlbGVnYXRlLmdl
dCgpOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAg
c2hvdWxkUmVsZWFzZUluRW51bWVyYXRlID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQ
YWdlTmFtZWQ6QCJnZXRVc2VyTWVkaWEiXTsKQEAgLTkyLDkgKzkyLDkgQEAgVEVTVChXZWJLaXQs
IE5hdmlnYXRlRHVyaW5nRGV2aWNlRW51bWVyYXRpb24pCiAgICAgcHJlZmVyZW5jZXMuX21lZGlh
Q2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IE5POwogICAgIGNvbmZpZ3VyYXRpb24u
Z2V0KCkuX21lZGlhQ2FwdHVyZUVuYWJsZWQgPSBZRVM7CiAgICAgcHJlZmVyZW5jZXMuX21vY2tD
YXB0dXJlRGV2aWNlc0VuYWJsZWQgPSBZRVM7Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb246
cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246cHJvY2Vzc1Bvb2xDb25maWcuZ2V0KCldKTsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW05hdmlnYXRpb25XaGlsZUdldFVzZXJNZWRpYVByb21wdERpc3BsYXllZFVJRGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5nZXQo
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIHNo
b3VsZFJlbGVhc2VJbkVudW1lcmF0ZSA9IHRydWU7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKQEAgLTEyMSw5ICsxMjEsOSBAQCBURVNU
KFdlYktpdCwgRGVmYXVsdERldmljZUlkSGFzaFNhbHRzRGlyZWN0b3J5KQogICAgIHByZWZlcmVu
Y2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb24gPSBOTzsKICAgICBjb25m
aWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFibGVkID0gWUVTOwogICAgIHByZWZlcmVu
Y2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8gd2ViVmlldyA9
IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMy
MCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgpXSk7CiAgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVHZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5
ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVs
ZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAImVudW1lcmF0ZU1lZGlhRGV2aWNl
cyJdOwogCkBAIC0xNTEsOSArMTUxLDkgQEAgVEVTVChXZWJLaXQsIERldmljZUlkSGFzaFNhbHRz
RGlyZWN0b3J5KQogICAgIHByZWZlcmVuY2VzLl9tZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNv
bm5lY3Rpb24gPSBOTzsKICAgICBjb25maWd1cmF0aW9uLmdldCgpLl9tZWRpYUNhcHR1cmVFbmFi
bGVkID0gWUVTOwogICAgIHByZWZlcmVuY2VzLl9tb2NrQ2FwdHVyZURldmljZXNFbmFibGVkID0g
WUVTOwotICAgIGF1dG8gd2ViVmlldyA9IFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlnLmdldCgp
XTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCkgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmln
LmdldCgpXSk7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tOYXZpZ2F0aW9uV2hpbGVH
ZXRVc2VyTWVkaWFQcm9tcHREaXNwbGF5ZWRVSURlbGVnYXRlIGFsbG9jXSBpbml0XSk7Ci0gICAg
d2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAgICAgCiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJlbnVtZXJhdGVNZWRpYURldmljZXMiXTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L0dldFVzZXJNZWRpYVJlcHJvbXB0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KaW5k
ZXggZDA2Mjc2NWZjMjBhYTc4NGFlNWNmMWZlNjVlZjYxMDBhZmQ2NjMxOS4uOTQxNTE0MGRjMGFk
ZDIzYjM2ZDUzNGFiMDkxNDJjZjIyMGFhYTQ4MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvR2V0VXNlck1lZGlhUmVwcm9tcHQubW0KQEAgLTY4LDkg
KzY4LDkgQEAgVEVTVChXZWJLaXQyLCBHZXRVc2VyTWVkaWFSZXByb21wdCkKICAgICBwcmVmZXJl
bmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJl
bmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcg
PSBbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9v
bENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlh
Q2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUg
PSBkZWxlZ2F0ZS5nZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKIAogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07
CiAgICAgW2RlbGVnYXRlIHdhaXRVbnRpbFByb21wdGVkXTsKQEAgLTEwNCwxMSArMTA0LDExIEBA
IFRFU1QoV2ViS2l0MiwgR2V0VXNlck1lZGlhUmVwcm9tcHRBZnRlckF1ZGlvVmlkZW9CZWluZ0Rl
bmllZCkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0
aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5nZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9
IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0NhcHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsK
LSAgICBhdXRvIHdlYlZpZXcgPSBbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENv
bmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJl
cHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmln
dXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBb
ZGVsZWdhdGUgc2V0QXVkaW9EZWNpc2lvbjpfV0tQZXJtaXNzaW9uRGVjaXNpb25HcmFudF07CiAg
ICAgW2RlbGVnYXRlIHNldFZpZGVvRGVjaXNpb246X1dLUGVybWlzc2lvbkRlY2lzaW9uRGVueV07
Ci0gICAgd2ViVmlldy5VSURlbGVnYXRlID0gZGVsZWdhdGUuZ2V0KCk7CisgICAgW3dlYlZpZXcg
c2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CiAKICAgICBbd2ViVmlldyBsb2FkVGVzdFBh
Z2VOYW1lZDpAImdldFVzZXJNZWRpYUF1ZGlvVmlkZW9DYXB0dXJlIl07CiAgICAgW2RlbGVnYXRl
IHdhaXRVbnRpbFByb21wdGVkXTsKQEAgLTEyNyw5ICsxMjcsOSBAQCBURVNUKFdlYktpdDIsIE11
bHRpcGxlR2V0VXNlck1lZGlhU3luY2hyb25vdXNseSkKICAgICBwcmVmZXJlbmNlcy5fbWVkaWFD
YXB0dXJlUmVxdWlyZXNTZWN1cmVDb25uZWN0aW9uID0gTk87CiAgICAgY29uZmlndXJhdGlvbi5n
ZXQoKS5fbWVkaWFDYXB0dXJlRW5hYmxlZCA9IFlFUzsKICAgICBwcmVmZXJlbmNlcy5fbW9ja0Nh
cHR1cmVEZXZpY2VzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRvIHdlYlZpZXcgPSBbW0dldFVzZXJN
ZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAw
LCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQoKV07CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW0dldFVzZXJNZWRpYVJlcHJvbXB0VGVzdFZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpIHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZy5nZXQo
KV0pOwogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVXNlck1lZGlhQ2FwdHVyZVVJRGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICB3ZWJWaWV3LlVJRGVsZWdhdGUgPSBkZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAiZ2V0VXNlck1lZGlhIl07CiAgICAgW2RlbGVn
YXRlIHdhaXRVbnRpbFByb21wdGVkXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdC9tYWMvQ3VzdG9tQnVuZGxlUGFyYW1ldGVyLm1tCmluZGV4IDNk
M2M2MTYyZDM5NWU2NmVkNWQ1N2VhNzgwYTU5NDY2OWU3OTc1NGYuLjk1NmMxNzc0YzY1M2QwODI4
ODg2MTIzZDJiOTE5NWRlMjRkYTFjM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0L21hYy9DdXN0b21CdW5kbGVQYXJhbWV0ZXIubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvbWFjL0N1c3RvbUJ1bmRsZVBhcmFtZXRlci5tbQpAQCAt
NjAsOCArNjAsOCBAQCBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1
bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZQogICAgIC8vIEF0dGVtcHQgdG8g
c2V0IGEgcGFyYW1ldGVyIHVzaW5nIHRoZSBPYmplY3RpdmUgQyBBUEk6CiAgICAgUmV0YWluUHRy
PFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCi0gICAgQ3VzdG9tQnVuZGxlT2JqZWN0
ICpjdXN0b21PYmplY3QgPSBbW0N1c3RvbUJ1bmRsZU9iamVjdCBhbGxvY10gaW5pdFdpdGhWYWx1
ZToxMjM0XTsKLSAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRPYmplY3Q6Y3Vz
dG9tT2JqZWN0IGZvckJ1bmRsZVBhcmFtZXRlcjpAIlRlc3RQYXJhbWV0ZXIxIl07CisgICAgYXV0
byBjdXN0b21PYmplY3QgPSBhZG9wdE5TKFtbQ3VzdG9tQnVuZGxlT2JqZWN0IGFsbG9jXSBpbml0
V2l0aFZhbHVlOjEyMzRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9zZXRP
YmplY3Q6Y3VzdG9tT2JqZWN0LmdldCgpIGZvckJ1bmRsZVBhcmFtZXRlcjpAIlRlc3RQYXJhbWV0
ZXIxIl07CiAKICAgICBpZiAobG9hZERvbmUpCiAgICAgICAgIGRvbmUgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0Zv
cndhcmQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRC
YWNrRm9yd2FyZC5tbQppbmRleCA2N2JhZWViYTZkYzZmOTZmZjFmMjdhMzUzYzczMzU2OTYxNjdm
YmQ3Li4yOGIxODMxNjU5MDMwY2E0ZjhlMjcyNTI5Yjc1OTA1Y2ZkMzhjNmVkIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2Fy
ZC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRC
YWNrRm9yd2FyZC5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgV0tSZXRh
aW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQ
YWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsgICAgICAgIAogICAgICAgICBXS1BhZ2VDb25maWd1
cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0LmdldCgpKTsKIAot
ICAgICAgICB3ZWJWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9uLmdldCgpXTsK
KyAgICAgICAgd2ViVmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCAxMDAsIDEwMCkgY29uZmlndXJhdGlvblJlZjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CiAKICAgICAgICAgV0tQYWdlTmF2aWdhdGlvbkNsaWVudFYwIGxvYWRlckNsaWVu
dDsKICAgICAgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93
bmxvYWQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rvd25sb2Fk
Lm1tCmluZGV4IGIxYWYxNWFjYjQzYjZkYmFkN2Y3NWRiYjkwNGI5NzA2NmEzNjIxNjkuLjQ0YWI4
NGJmYjk3Y2Y5ODNkNTc4ZDMzOGExODE1YWYyNDhiMTZkZDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRG93bmxvYWQubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Eb3dubG9hZC5tbQpAQCAtMzYwLDcgKzM2MCw4
IEBAIFRFU1QoX1dLRG93bmxvYWQsIERvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGlyZWN0RG93
bmxvYWRXaXRoTG9hZGVkQ29udGVudCkKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7
CiAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbRG93bmxvYWRSZXF1ZXN0
T3JpZ2luYWxVUkxOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKICAgICBbd2ViVmll
dyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKLSAgICBb
W1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc2V0RG93bmxvYWREZWxlZ2F0
ZTpbW0Rvd25sb2FkUmVxdWVzdE9yaWdpbmFsVVJMRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoRXhw
ZWN0ZWRPcmlnaW5hbFVSTDpzb3VyY2VVUkxdXTsKKyAgICBhdXRvIGRvd25sb2FkRGVsZWdhdGUg
PSBhZG9wdE5TKFtbRG93bmxvYWRSZXF1ZXN0T3JpZ2luYWxVUkxEZWxlZ2F0ZSBhbGxvY10gaW5p
dFdpdGhFeHBlY3RlZE9yaWdpbmFsVVJMOnNvdXJjZVVSTF0pOworICAgIFtbW3dlYlZpZXcgY29u
ZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zZXREb3dubG9hZERlbGVnYXRlOmRvd25sb2FkRGVs
ZWdhdGUuZ2V0KCldOwogCiAgICAgZXhwZWN0ZWRVc2VySW5pdGlhdGVkU3RhdGUgPSBmYWxzZTsK
ICAgICBOU1VSTCAqY29udGVudFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVz
b3VyY2U6QCJzaW1wbGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5BcHBCcm93c2VyUHJpdmFjeS5tbQppbmRleCA0YjM2
NWU4YmI5MzdlZWQxNWU0YWZiY2I1NjRmYmM4Yjc3OGU1NGU4Li5mMGI4YWQ5OTg2ZWY3MTEwOGJj
ODZiOTc4NTc2ZWU1NThkNDNkNmNmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0luQXBwQnJvd3NlclByaXZhY3kubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbkFwcEJyb3dzZXJQcml2YWN5Lm1tCkBAIC0xMTIz
LDExICsxMTIzLDExIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSW5qZWN0U2NyaXB0SW5O
b25BcHBCb3VuZFN1YmZyYW1lQXBwQm91bmRNYWluZnJhbWVGYWlsCiAgICAgY2xlYW5VcEluQXBw
QnJvd3NlclByaXZhY3lUZXN0U2V0dGluZ3MoKTsKIH0KIAotc3RhdGljIE5TTXV0YWJsZVNldDxX
S0ZyYW1lSW5mbyAqPiAqYWxsRnJhbWVzOworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVTZXQ8
V0tGcmFtZUluZm8gKj4+IGFsbEZyYW1lczsKIAogVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBK
YXZhU2NyaXB0SW5Ob25BcHBCb3VuZEZyYW1lRmFpbHMpCiB7Ci0gICAgYWxsRnJhbWVzID0gW1tO
U011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdOworICAgIGFsbEZyYW1lcyA9
IGFkb3B0TlMoW1tOU011dGFibGVTZXQ8V0tGcmFtZUluZm8gKj4gYWxsb2NdIGluaXRdKTsKIAog
ICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2YWN5VGVz
dFNldHRpbmdzKCk7CkBAIC0xMTY0LDEyICsxMTY0LDEyIEBAIFRFU1QoSW5BcHBCcm93c2VyUHJp
dmFjeSwgSmF2YVNjcmlwdEluTm9uQXBwQm91bmRGcmFtZUZhaWxzKQogCiAgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkaWRGaW5pc2hOYXZpZ2F0aW9uKTsKIAotICAgIEVYUEVDVF9FUShh
bGxGcmFtZXMuY291bnQsIDN1KTsKKyAgICBFWFBFQ1RfRVEoW2FsbEZyYW1lcyBjb3VudF0sIDN1
KTsKIAogICAgIHN0YXRpYyBzaXplX3QgZmluaXNoZWRGcmFtZXMgPSAwOwogICAgIHN0YXRpYyBi
b29sIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxs
RnJhbWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgp
KSB7CiAgICAgICAgIGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZS5pc01haW5GcmFtZTsKICAgICAg
ICAgW3dlYlZpZXcgY2FsbEFzeW5jSmF2YVNjcmlwdDpAInJldHVybiBsb2NhdGlvbi5ocmVmOyIg
YXJndW1lbnRzOm5pbCBpbkZyYW1lOmZyYW1lIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxk
LmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbaXNNYWluRnJhbWVdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgICAgICBpZiAoaXNNYWluRnJhbWUpIHsK
QEAgLTExODEsNyArMTE4MSw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwgSmF2YVNjcmlw
dEluTm9uQXBwQm91bmRGcmFtZUZhaWxzKQogICAgICAgICAgICAgICAgIEVYUEVDVF9FUShlcnJv
ci5jb2RlLCBXS0Vycm9ySmF2YVNjcmlwdEFwcEJvdW5kRG9tYWluKTsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gYWxsRnJhbWVzLmNvdW50ICog
MikKKyAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRd
ICogMikKICAgICAgICAgICAgICAgICBpc0RvbmUgPSB0cnVlOwogICAgICAgICB9XTsKIApAQCAt
MTE5Niw3ICsxMTk2LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5LCBKYXZhU2NyaXB0SW5O
b25BcHBCb3VuZEZyYW1lRmFpbHMpCiAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGVycm9yLmNv
ZGUsIFdLRXJyb3JKYXZhU2NyaXB0QXBwQm91bmREb21haW4pOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQor
ICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAy
KQogICAgICAgICAgICAgICAgIGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH0KQEAg
LTEzNTEsNyArMTM1MSw3IEBAIHN0YXRpYyB2b2lkIGxvYWRSZXF1ZXN0KFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiB3ZWJWaWV3LCBOU1N0cmluZyAqdXJsKQogCiBURVNUKEluQXBwQnJvd3NlclBy
aXZhY3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogewotICAg
IGFsbEZyYW1lcyA9IFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFsbG9jXSBpbml0XTsK
KyAgICBhbGxGcmFtZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+IGFs
bG9jXSBpbml0XSk7CiAgICAgaW5pdGlhbGl6ZUluQXBwQnJvd3NlclByaXZhY3lUZXN0U2V0dGlu
Z3MoKTsKIAogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFz
c05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVz
dGluZzpZRVNdOwpAQCAtMTM2MywxMiArMTM2MywxMiBAQCBURVNUKEluQXBwQnJvd3NlclByaXZh
Y3ksIEFib3V0QmxhbmtTdWJGcmFtZU1hdGNoZXNUb3BGcmFtZUFwcEJvdW5kKQogICAgIE5TU3Ry
aW5nICp1cmwgPSBAImluLWFwcC1icm93c2VyOi8vYXBwbGUuY29tL2luLWFwcC1icm93c2VyLXBy
aXZhY3ktdGVzdC1hYm91dC1ibGFuay1zdWJmcmFtZSI7CiAgICAgbG9hZFJlcXVlc3Qod2ViVmll
dywgdXJsKTsKICAgICAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAg
RVhQRUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZp
bmlzaGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAg
IGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFt
ZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZy
YW1lID0gZnJhbWUuaXNNYWluRnJhbWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFT
Y3JpcHQ6QCJyZXR1cm4gbG9jYXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFt
ZSBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6W2lzTWFpbkZyYW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewog
ICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBj
bGFzc11dKTsKQEAgLTEzODAsNyArMTM4MCw3IEBAIFRFU1QoSW5BcHBCcm93c2VyUHJpdmFjeSwg
QWJvdXRCbGFua1N1YkZyYW1lTWF0Y2hlc1RvcEZyYW1lQXBwQm91bmQpCiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6
QCJhYm91dDpibGFuayJdKTsKIAotICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0g
YWxsRnJhbWVzLmNvdW50KQorICAgICAgICAgICAgaWYgKCsrZmluaXNoZWRGcmFtZXMgPT0gW2Fs
bEZyYW1lcyBjb3VudF0pCiAgICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAg
fV07CiAgICAgfQpAQCAtMTM4OSw3ICsxMzg5LDcgQEAgVEVTVChJbkFwcEJyb3dzZXJQcml2YWN5
LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVBcHBCb3VuZCkKIAogVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBC
b3VuZCkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBh
bGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0Zy
YW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogICAgIGluaXRpYWxpemVJbkFwcEJyb3dzZXJQcml2
YWN5VGVzdFNldHRpbmdzKCk7CiAKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKQEAgLTE0MDAsMTUgKzE0MDAsMTUgQEAgVEVTVChJbkFw
cEJyb3dzZXJQcml2YWN5LCBBYm91dEJsYW5rU3ViRnJhbWVNYXRjaGVzVG9wRnJhbWVOb25BcHBC
b3VuZCkKICAgICBOU1N0cmluZyAqdXJsID0gQCJpbi1hcHAtYnJvd3NlcjovL2FwcGxlLmNvbS9p
bi1hcHAtYnJvd3Nlci1wcml2YWN5LXRlc3QtYWJvdXQtYmxhbmstc3ViZnJhbWUiOwogICAgIGxv
YWRSZXF1ZXN0KHdlYlZpZXcsIHVybCk7CiAKLSAgICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50
LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFtZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0
aWMgc2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBm
YWxzZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcykgeworICAg
IGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFsbEZyYW1lcy5nZXQoKSkgewogICAgICAgICBb
d2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7IiBhcmd1
bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29ybGQuZGVm
YXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CiAgICAgICAgICAgICBFWFBFQ1RfVFJVRSghIWVycm9yKTsKLSAgICAgICAgICAg
IGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCkKKyAgICAgICAgICAgIGlm
ICgrK2ZpbmlzaGVkRnJhbWVzID09IFthbGxGcmFtZXMgY291bnRdKQogICAgICAgICAgICAgICAg
IGlzRG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVzdHMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL05vd1BsYXlpbmdDb250cm9s
c1Rlc3RzLm1tCmluZGV4IGY3YjgxZjBhYmQ1ZWY1M2E3NTc2YTAzZDg3NTczY2FmNTQ3YTViZDEu
LjZkZjIwN2IyZjIwNzljMDBhZTBmMmEyZjJjMWE4ODhlZmZmODkwNDIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvTm93UGxheWluZ0NvbnRyb2xzVGVz
dHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Ob3dQbGF5
aW5nQ29udHJvbHNUZXN0cy5tbQpAQCAtOTIsOSArOTIsOSBAQCBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSSB7CiAjaWYgUExBVEZPUk0oTUFDKQogVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywg
Tm93UGxheWluZ0NvbnRyb2xzRG9Ob3RTaG93Rm9yRm9yZWdyb3VuZFBhZ2UpCiB7Ci0gICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF07Ci0gICAgY29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5n
VXNlckFjdGlvbkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7Ci0gICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW05vd1BsYXlpbmdUZXN0V2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb25dKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldE1lZGlh
VHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tBdWRpb3Zpc3VhbE1lZGlhVHlw
ZU5vbmVdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdl
TmFtZWQ6QCJsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nIl07CiAgICAgW3dlYlZpZXcgd2Fp
dEZvck1lc3NhZ2U6QCJwbGF5aW5nIl07CiAKQEAgLTExMyw5ICsxMTMsOSBAQCBURVNUKE5vd1Bs
YXlpbmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNEb05vdFNob3dGb3JGb3JlZ3Jv
dW5kUGFnZSkKIAogVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRy
b2xzU2hvd0ZvckJhY2tncm91bmRQYWdlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwot
ICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFj
ayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFj
dGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8t
dGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWlu
ZyJdOwogCkBAIC0xMzAsOSArMTMwLDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywg
Tm93UGxheWluZ0NvbnRyb2xzU2hvd0ZvckJhY2tncm91bmRQYWdlKQogCiBURVNUKE5vd1BsYXlp
bmdDb250cm9sc1Rlc3RzLCBOb3dQbGF5aW5nQ29udHJvbHNIaWRlQWZ0ZXJTaG93aW5nS2VlcHNT
ZXNzaW9uQWN0aXZlKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3Vy
YXRpb24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92
aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5
aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXli
YWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxh
eWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0x
NTMsOSArMTUzLDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0Nv
bnRyb2xzSGlkZUFmdGVyU2hvd2luZ0tlZXBzU2Vzc2lvbkFjdGkKIAogVEVTVChOb3dQbGF5aW5n
Q29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2xlYXJJbmZvQWZ0ZXJTZXNzaW9uSXNO
b0xvbmdlclZhbGlkKQogewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3Vy
YXRpb24ubWVkaWFUeXBlc1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92
aXN1YWxNZWRpYVR5cGVOb25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5
aW5nVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAs
IDMyMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBbY29uZmlndXJhdGlvbiBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXli
YWNrOldLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbTm93UGxheWluZ1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgNDgwLCAzMjApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwog
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxh
eWluZyJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCkBAIC0x
OTQsOSArMTk0LDkgQEAgVEVTVChOb3dQbGF5aW5nQ29udHJvbHNUZXN0cywgTm93UGxheWluZ0Nv
bnRyb2xzQ2xlYXJJbmZvQWZ0ZXJTZXNzaW9uSXNOb0xvbmdlclYKIAogVEVTVChOb3dQbGF5aW5n
Q29udHJvbHNUZXN0cywgTm93UGxheWluZ0NvbnRyb2xzQ2hlY2tSZWdpc3RlcmVkKQogewotICAg
IFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBlc1JlcXVp
cmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVOb25lOwot
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRN
ZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1YWxNZWRp
YVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWluZ1Rlc3RX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxvYWRUZXN0
UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3ZWJWaWV3
IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogICAgIFt3ZWJWaWV3IHNldFdpbmRvd1Zpc2li
bGU6Tk9dOwpAQCAtMjIyLDkgKzIyMiw5IEBAIFRFU1QoTm93UGxheWluZ0NvbnRyb2xzVGVzdHMs
IE5vd1BsYXlpbmdDb250cm9sc0NoZWNrUmVnaXN0ZXJlZCkKIC8vIEZJWE1FOiBSZS1lbmFibGUg
dGhpcyB0ZXN0IG9uY2UgPHdlYmtpdC5vcmcvYi8xNzUyMDQ+IGlzIHJlc29sdmVkLgogVEVTVChO
b3dQbGF5aW5nQ29udHJvbHNUZXN0cywgRElTQUJMRURfTm93UGxheWluZ0NvbnRyb2xzSU9TKQog
ewotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3VyYXRpb24ubWVkaWFUeXBl
c1JlcXVpcmluZ1VzZXJBY3Rpb25Gb3JQbGF5YmFjayA9IFdLQXVkaW92aXN1YWxNZWRpYVR5cGVO
b25lOwotICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tOb3dQbGF5aW5nVGVzdFdlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0ODAsIDMyMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbY29uZmlndXJhdGlv
biBzZXRNZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlvbkZvclBsYXliYWNrOldLQXVkaW92aXN1
YWxNZWRpYVR5cGVOb25lXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbTm93UGxheWlu
Z1Rlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDgwLCAz
MjApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IGxv
YWRUZXN0UGFnZU5hbWVkOkAibGFyZ2UtdmlkZW8tdGVzdC1ub3ctcGxheWluZyJdOwogICAgIFt3
ZWJWaWV3IHdhaXRGb3JNZXNzYWdlOkAicGxheWluZyJdOwogCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbQpp
bmRleCAwM2UwZTcwZWQzN2Y5Nzg4OTAyZmU2ZGE5MDVlNGIwY2FhOTZmMDM3Li44YWVmNjI4ZmM2
MzQwNGViOWVlYzY1Nzk5YzhlZTQwNmZlNjg3NGZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KQEAg
LTE1Miw4ICsxNTIsOCBAQCBURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJbWFnZUZpbGVBbmRSVEYp
CiB7CiAgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CiAgICAgYXV0byB0ZXh0ID0g
YWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKLSAgICBb
dGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBp
bml0V2l0aFN0cmluZzpAImxpbmsgdG8gIl1dOwotICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRT
dHJpbmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiYXBwbGUi
IGF0dHJpYnV0ZXM6QHsgTlNMaW5rQXR0cmlidXRlTmFtZTogW05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJodHRwczovL3d3dy5hcHBsZS5jb20vIl0gfV1dOworICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0
ZWRTdHJpbmc6YWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJp
bmc6QCJsaW5rIHRvICJdKS5nZXQoKV07CisgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmlu
ZzphZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImFw
cGxlIiBhdHRyaWJ1dGVzOkB7IE5TTGlua0F0dHJpYnV0ZU5hbWU6IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyJdIH1dKS5nZXQoKV07CiAgICAgTlNEYXRhICpy
dGZEYXRhID0gW3RleHQgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0IGxlbmd0aF0p
IGRvY3VtZW50QXR0cmlidXRlczpAeyB9XTsKICAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVi
b2FyZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgpIF0sIE5TUGFzdGVib2Fy
ZFR5cGVSVEYsIHJ0ZkRhdGEsIG5pbCk7CiAgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVwYXJlbnRXZWJW
aWV3VGltZW91dC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVw
YXJlbnRXZWJWaWV3VGltZW91dC5tbQppbmRleCBjNTU0MjVjMDAyMGQ4N2YwNzFjMGQyNTBjODAz
YTFmOTM3ZGQ4MTU1Li5hMmU0MzAyMjRlOWNjZWY5YmFkZWRmZGU3NzRkYWQ4ODFjMTM3NjlmIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcGFyZW50
V2ViVmlld1RpbWVvdXQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9SZXBhcmVudFdlYlZpZXdUaW1lb3V0Lm1tCkBAIC0zNCw3ICszNCw3IEBACiAKIFRFU1Qo
V2ViS2l0LCBSZXBhcmVudFdlYlZpZXdUaW1lb3V0KQogewotICAgIFJldGFpblB0cjxfV0tQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IHByb2Nlc3NQb29sQ29uZmlndXJhdGlvbiA9IFtbX1dLUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKICAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldElnbm9yZVN5bmNo
cm9ub3VzTWVzc2FnaW5nVGltZW91dHNGb3JUZXN0aW5nOllFU107CiAKICAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TY2hlbWVSZWdpc3RyeS5tbQppbmRleCAyYzhhODQx
NWFjZjhlNTk2YjMwOGE1YzRjNzU3MGQ3MTMxOTJiZmFmLi4yMTA4MjA2ZmE3OTQzZDMyYzU4MGNl
MjljYzZmYjgyZGFiMTE4NzhhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1NjaGVtZVJlZ2lzdHJ5Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvU2NoZW1lUmVnaXN0cnkubW0KQEAgLTE2OSw3ICsxNjksOCBAQCBU
RVNUKFdlYktpdCwgV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZD
YW5SZXF1ZXN0X1NhbWVPcmlnaW5MbwogICAgICAgICBXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVt
ZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3QoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSyhl
Y2hvU2NoZW1lLlVURjhTdHJpbmcpLmdldCgpKTsKIAogICAgICAgICBQbGF0Zm9ybVdlYlZpZXcg
d2ViVmlldyB7IGNvbnRleHQuZ2V0KCkgfTsKLSAgICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXco
KS5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbV0tDb250ZXh0UmVn
aXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVnYXRlIGFs
bG9jXSBpbml0XTsKKyAgICAgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tDb250
ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0NhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0TG9hZERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAg
ICAgICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
bG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48Ym9keT48c2NyaXB0IHNyYz0nZWNobzov
L0EvQV8xJz48L3NjcmlwdD4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJlY2hvOi8v
QSJdXTsKICAgICAgICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKICAgICAgICAgZGlkRmlu
aXNoTG9hZCA9IGZhbHNlOwpAQCAtMTkyLDcgKzE5Myw4IEBAIFRFU1QoV2ViS2l0LCBXS0NvbnRl
eHRSZWdpc3RlclVSTFNjaGVtZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RfQ3Jvc3NPcmln
aW5MCiAgICAgICAgIFdLQ29udGV4dFJlZ2lzdGVyVVJMU2NoZW1lQXNDYW5EaXNwbGF5T25seUlm
Q2FuUmVxdWVzdChjb250ZXh0LmdldCgpLCBVdGlsOjp0b1dLKGVjaG9TY2hlbWUuVVRGOFN0cmlu
ZykuZ2V0KCkpOwogCiAgICAgICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3IHsgY29udGV4dC5n
ZXQoKSB9OwotICAgICAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVtZUFzQ2Fu
RGlzcGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdOworICAgICAg
ICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS0NvbnRleHRSZWdpc3RlclVSTFNjaGVt
ZUFzQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRleHRDb250cm9sbGVy
LmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAgICAgW3dlYlZpZXcucGxh
dGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjwh
RE9DVFlQRSBodG1sPjxib2R5PjxzY3JpcHQgc3JjPSdlY2hvOi8vQS9BXzEnPjwvc2NyaXB0PiIg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImVjaG86Ly9CIl1dOwogICAgICAgICBVdGls
OjpydW4oJmRpZEZpbmlzaExvYWQpOwogICAgICAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVBy
ZXZpZXcubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1N5c3RlbVBy
ZXZpZXcubW0KaW5kZXggOGJjNjUzY2E5MDY1YjI3ZGRiYzJhY2ZmNmQ4NmJkMmM5NzdhMjU3Yy4u
YmQ0YjM1ZjIwMDAwMTEwZThiNWUwNDZkYzA3YjMwYmQzODA2ODllYyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9TeXN0ZW1QcmV2aWV3Lm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvU3lzdGVtUHJldmlldy5tbQpA
QCAtNjgsNyArNjgsNyBAQCBURVNUKFdlYktpdCwgU3lzdGVtUHJldmlld1RyaWdnZXJlZCkKICAg
ICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RTeXN0ZW1QcmV2aWV3VHJpZ2dl
cmVkSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJ0ZXN0U3lzdGVtUHJldmlldyJdOwogCi0gICAgYXV0byB3ZWJWaWV3ID0gW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOwogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInN5
c3RlbS1wcmV2aWV3LXRyaWdnZXIiXTsKICAgICBVdGlsOjpydW4oJmhhc1RyaWdnZXJJbmZvKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0
U09BdXRob3JpemF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9UZXN0U09BdXRob3JpemF0aW9uLm1tCmluZGV4IDg2ZGQxMWUxNjdlYWMzYTFkMTcxZGIyYjZl
YzBmMDJlZGMzMGViOWQuLjMzMjZkNTc2MjRiZGEwMGE4ODBhZTFjZjEwMjVlZmYzMGNlM2Q4ZDkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFNP
QXV0aG9yaXphdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Rlc3RTT0F1dGhvcml6YXRpb24ubW0KQEAgLTE4NCw3ICsxODQsNyBAQCAtIChXS1dlYlZp
ZXcgKil3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNyZWF0ZVdlYlZpZXdXaXRoQ29uZmln
dXJhdGlvbjooV0tXZQogewogICAgIEVYUEVDVF9GQUxTRShuZXdXaW5kb3dDcmVhdGVkKTsKICAg
ICBuZXdXaW5kb3dDcmVhdGVkID0gdHJ1ZTsKLSAgICBnTmV3V2luZG93ID0gW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0WmVybyBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dOworICAgIGdOZXdXaW5kb3cgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CiAgICAgW2dO
ZXdXaW5kb3cgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOnNlbGZdOwogICAgIHJldHVybiBnTmV3V2lu
ZG93LmdldCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0aW9uQWN0aW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Vc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZp
Z2F0aW9uQWN0aW9uLm1tCmluZGV4IGM4NmZjNGNiMzYzYjM1MTlkY2U4ZGQxOTJkYzAxODhjZWZh
YTMxZjAuLmI5ZTMxMDhlYjczN2U3Njk2ZGI4ZmJmYTNlYWNmMjM5ZTc0MWIwZTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVXNlckluaXRpYXRlZEFj
dGlvbkluTmF2aWdhdGlvbkFjdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1VzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0KQEAg
LTgxLDkgKzgxLDkgQEAgcHVibGljOgogCiAgICAgTlNVUkwgKlVSTFdpdGhGcmFnbWVudChOU1N0
cmluZyAqZnJhZ21lbnQpCiAgICAgewotICAgICAgICBOU1VSTENvbXBvbmVudHMgKlVSTENvbXBv
bmVudHMgPSBbW05TVVJMQ29tcG9uZW50cyBhbGxvY10gaW5pdFdpdGhVUkw6VVJMLmdldCgpIHJl
c29sdmluZ0FnYWluc3RCYXNlVVJMOk5PXTsKLSAgICAgICAgVVJMQ29tcG9uZW50cy5mcmFnbWVu
dCA9IGZyYWdtZW50OwotICAgICAgICByZXR1cm4gVVJMQ29tcG9uZW50cy5VUkw7CisgICAgICAg
IGF1dG8gdXJsQ29tcG9uZW50cyA9IGFkb3B0TlMoW1tOU1VSTENvbXBvbmVudHMgYWxsb2NdIGlu
aXRXaXRoVVJMOlVSTC5nZXQoKSByZXNvbHZpbmdBZ2FpbnN0QmFzZVVSTDpOT10pOworICAgICAg
ICBbdXJsQ29tcG9uZW50cyBzZXRGcmFnbWVudDpmcmFnbWVudF07CisgICAgICAgIHJldHVybiBb
dXJsQ29tcG9uZW50cyBVUkxdOwogICAgIH0KIAogICAgIHZvaWQgbG9hZFRlc3QoTlNTdHJpbmcg
KnRlc3QpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1VzZXJNZWRpYURpc2FibGVkLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Vc2VyTWVkaWFEaXNhYmxlZC5tbQppbmRleCBjYzU0NWI0OTFlMDI4OTRhNzYzZjViOTI4
MWEwZDdlODYwNGQ3YWJkLi41MWUzNGEyZTY1NDRlNzZmZTZlMTAzMWE2ZjJlOWI5OTQ1NGM0MTY5
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VzZXJN
ZWRpYURpc2FibGVkLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVXNlck1lZGlhRGlzYWJsZWQubW0KQEAgLTEzNCw3ICsxMzQsNyBAQCBURVNUX0YoTWVkaWFD
YXB0dXJlRGlzYWJsZWRUZXN0LCBVbnNlY3VyZUNvbnRleHQpCiAgICAgcHJlZmVyZW5jZXMuX21l
ZGlhQ2FwdHVyZVJlcXVpcmVzU2VjdXJlQ29ubmVjdGlvbiA9IFlFUzsKIAogICAgIHJlY2VpdmVk
U2NyaXB0TWVzc2FnZSA9IGZhbHNlOwotICAgIFttX3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8
aHRtbD48Ym9keT48c2NyaXB0PndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5k
bGVyLnBvc3RNZXNzYWdlKE5hdmlnYXRvci5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ21lZGlh
RGV2aWNlcycpID8gJ2hhcycgOiAnbm9uZScpOzwvc2NyaXB0PjwvYm9keT48L2h0bWw+IiBiYXNl
VVJMOiBbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImh0dHA6Ly90ZXN0Lm9yZyJdXTsK
KyAgICBbbV93ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PGJvZHk+PHNjcmlwdD53aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZShOYXZpZ2F0
b3IucHJvdG90eXBlLmhhc093blByb3BlcnR5KCdtZWRpYURldmljZXMnKSA/ICdoYXMnIDogJ25v
bmUnKTs8L3NjcmlwdD48L2JvZHk+PC9odG1sPiIgYmFzZVVSTDphZG9wdE5TKFtbTlNVUkwgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOkAiaHR0cDovL3Rlc3Qub3JnIl0pLmdldCgpXTsKIAogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRTY3JpcHRNZXNzYWdlKTsKICAgICBFWFBF
Q1RfU1RSRVEoWyhOU1N0cmluZyAqKVtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSBVVEY4U3RyaW5n
XSwgIm5vbmUiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tIVFRQQ29va2llU3RvcmUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCmluZGV4IDg3YTg1MDQzMmQ0YmZkNWYwZTU4
NTZmNDQwN2ZkMDFlYTI3YmVkNDMuLmQ0OTgwY2ZkNDcwMmViM2IzMmExODNkNTllMmM5MDM0MmYy
ZTNiMWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tIVFRQQ29va2llU3RvcmUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQpAQCAtMjU3LDE3ICsyNTcsMTcgQEAgVEVTVChX
S0hUVFBDb29raWVTdG9yZSwgSHR0cE9ubHkpCiAgICAgZ290RmxhZyA9IGZhbHNlOwogICAgIEFT
U0VSVF9FUShbY29va2llcyBjb3VudF0sIDB1KTsKIAotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkg
KmNvb2tpZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwor
ICAgIGF1dG8gY29va2llUHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2ll
TmFtZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwogICAgIFtjb29raWVQcm9wZXJ0aWVzIHNl
dE9iamVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwogICAgIFtj
b29raWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5Ok5TSFRU
UENvb2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiL3BhdGgi
IGZvcktleTpOU0hUVFBDb29raWVQYXRoXTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmpl
Y3Q6QFlFUyBmb3JLZXk6QCJIdHRwT25seSJdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+
IGh0dHBPbmx5Q29va2llID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29r
aWVQcm9wZXJ0aWVzXTsKKyAgICBSZXRhaW5QdHI8TlNIVFRQQ29va2llPiBodHRwT25seUNvb2tp
ZSA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5n
ZXQoKV07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAiY29va2llVmFsdWUyIiBm
b3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGh0
dHBPbmx5Q29va2llMiA9IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2ll
UHJvcGVydGllc107CisgICAgUmV0YWluUHRyPE5TSFRUUENvb2tpZT4gaHR0cE9ubHlDb29raWUy
ID0gW05TSFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzLmdl
dCgpXTsKICAgICBbY29va2llUHJvcGVydGllcyByZW1vdmVPYmplY3RGb3JLZXk6QCJIdHRwT25s
eSJdOwotICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IG5vdEh0dHBPbmx5Q29va2llID0gW05T
SFRUUENvb2tpZSBjb29raWVXaXRoUHJvcGVydGllczpjb29raWVQcm9wZXJ0aWVzXTsKKyAgICBS
ZXRhaW5QdHI8TlNIVFRQQ29va2llPiBub3RIdHRwT25seUNvb2tpZSA9IFtOU0hUVFBDb29raWUg
Y29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQoKV07CiAKICAgICBFWFBF
Q1RfVFJVRShodHRwT25seUNvb2tpZS5nZXQoKS5IVFRQT25seSk7CiAgICAgRVhQRUNUX0ZBTFNF
KG5vdEh0dHBPbmx5Q29va2llLmdldCgpLkhUVFBPbmx5KTsKQEAgLTM2MiwxNCArMzYyLDE0IEBA
IFRFU1QoV0tIVFRQQ29va2llU3RvcmUsIENyZWF0aW9uVGltZSkKIAogICAgIGdsb2JhbENvb2tp
ZVN0b3JlID0gZGF0YVN0b3JlLmh0dHBDb29raWVTdG9yZTsKIAotICAgIE5TTXV0YWJsZURpY3Rp
b25hcnkgKmNvb2tpZVByb3BlcnRpZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGlu
aXRdOworICAgIGF1dG8gY29va2llUHJvcGVydGllcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAi
Y29va2llTmFtZSIgZm9yS2V5Ok5TSFRUUENvb2tpZU5hbWVdOwogICAgIFtjb29raWVQcm9wZXJ0
aWVzIHNldE9iamVjdDpAImNvb2tpZVZhbHVlIiBmb3JLZXk6TlNIVFRQQ29va2llVmFsdWVdOwog
ICAgIFtjb29raWVQcm9wZXJ0aWVzIHNldE9iamVjdDpAIi53d3cud2Via2l0Lm9yZyIgZm9yS2V5
Ok5TSFRUUENvb2tpZURvbWFpbl07CiAgICAgW2Nvb2tpZVByb3BlcnRpZXMgc2V0T2JqZWN0OkAi
L3BhdGgiIGZvcktleTpOU0hUVFBDb29raWVQYXRoXTsKICAgICBSZXRhaW5QdHI8TlNOdW1iZXI+
IGNyZWF0aW9uVGltZSA9IEAoMTAwMDAwKTsKICAgICBbY29va2llUHJvcGVydGllcyBzZXRPYmpl
Y3Q6Y3JlYXRpb25UaW1lLmdldCgpIGZvcktleTpAIkNyZWF0ZWQiXTsKLSAgICBSZXRhaW5QdHI8
TlNIVFRQQ29va2llPiBjb29raWUgPSBbTlNIVFRQQ29va2llIGNvb2tpZVdpdGhQcm9wZXJ0aWVz
OmNvb2tpZVByb3BlcnRpZXNdOworICAgIFJldGFpblB0cjxOU0hUVFBDb29raWU+IGNvb2tpZSA9
IFtOU0hUVFBDb29raWUgY29va2llV2l0aFByb3BlcnRpZXM6Y29va2llUHJvcGVydGllcy5nZXQo
KV07CiAKICAgICBbZ2xvYmFsQ29va2llU3RvcmUgc2V0Q29va2llOmNvb2tpZS5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpbXSgpIHsKICAgICAgICAgZ290RmxhZyA9IHRydWU7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdh
dGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9y
RGVsZWdhdGUubW0KaW5kZXggNWEwNDY0MmVmYTQyMjRjM2IyMTdmMGEyMTI0ODFlMGY0ZTAwN2Nk
OC4uOWRlYTYzY2Q4NmE3YjdmMTJkOTA4NTliZjQwMmMyMTFiZDIyNDljZSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRl
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5tbQpAQCAtMTI0LDcgKzEyNCw3IEBAIC0gKF9XS0luc3BlY3RvckNvbmZpZ3Vy
YXRpb24gKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9j
CiAgICAgc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUgPSBbSW5zcGVjdG9yRGVsZWdhdGUgbmV3XTsK
ICAgICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJlZEluc3BlY3RvckRlbGVnYXRlLmdldCgp
XTsKIAotICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBbW1NpbXBsZVVSTFNjaGVtZUhhbmRs
ZXIgYWxsb2NdIGluaXRdOworICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtb
U2ltcGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gaW5zcGVjdG9y
Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9j
XSBpbml0XSk7CiAgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxl
cjpzaGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3RpbmciXTsK
ICAgICByZXR1cm4gaW5zcGVjdG9yQ29uZmlndXJhdGlvbi5hdXRvcmVsZWFzZSgpOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1BERlZpZXcubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQppbmRl
eCBlNzJlNjBmNzQzYjFiM2RjNGQzY2YyZGExY2QxNWJmMDUxMDgyZmI4Li5lMjMwYjA5NGNhNTk2
MTc0ZTYzMDVmN2U4N2E1N2I0YjJiYmNmYzg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLUERGVmlldy5tbQpAQCAtNDE0LDE0ICs0MTQsMTQgQEAg
QGVuZAogCiBURVNUKFBERiwgUHJpbnRTaXplKQogewotICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIHNj
aGVtZUhhbmRsZXIgPSBbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5ld10gYXV0b3JlbGVhc2VdOwot
ICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxlciBmb3JV
UkxTY2hlbWU6QCJ0ZXN0Il07Ci0gICAgYXV0byB3ZWJWaWV3ID0gW1tbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dIGF1dG9yZWxlYXNlXTsKLSAgICBhdXRvIGRlbGVnYXRlID0gW1tQ
cmludFVJRGVsZWdhdGUgbmV3XSBhdXRvcmVsZWFzZV07Ci0gICAgd2ViVmlldy5VSURlbGVnYXRl
ID0gZGVsZWdhdGU7Ci0KLSAgICBzY2hlbWVIYW5kbGVyLnN0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXIgPSBeKFdLV2ViVmlldyAqLCBpZDxXS1VSTFNjaGVtZVRhc2s+IHRhc2spIHsKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwor
ICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIG5l
d10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFuZGxl
ci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1ByaW50VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBbd2ViVmlldyBz
ZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIHNjaGVtZUhhbmRsZXIuZ2V0KCku
c3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlciA9IF4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1l
VGFzaz4gdGFzaykgewogICAgICAgICBhdXRvIHVybCA9IHRhc2sucmVxdWVzdC5VUkw7CiAgICAg
ICAgIE5TRGF0YSAqZGF0YTsKICAgICAgICAgTlNTdHJpbmcgKm1pbWVUeXBlOwpAQCAtNDM3LDgg
KzQzNyw4IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgICAgICAgICBtaW1lVHlwZSA9IEAi
YXBwbGljYXRpb24vcGRmIjsKICAgICAgICAgICAgIGRhdGEgPSBbTlNEYXRhIGRhdGFXaXRoQ29u
dGVudHNPZlVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAidGVzdF9w
cmludCIgd2l0aEV4dGVuc2lvbjpAInBkZiIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXV07CiAgICAgICAgIH0KLSAgICAgICAgTlNVUkxSZXNwb25zZSAqcmVzcG9uc2Ug
PSBbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp1cmwgTUlNRVR5cGU6bWltZVR5
cGUgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmls
XSBhdXRvcmVsZWFzZV07Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25z
ZV07CisgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxv
Y10gaW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOm1pbWVUeXBlIGV4cGVjdGVkQ29udGVudExlbmd0
aDpkYXRhLmxlbmd0aCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBbdGFzayBkaWRS
ZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwogICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpkYXRhXTsKICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsKICAgICB9OwpAQCAtNDQ5LDcg
KzQ0OSw3IEBAIFRFU1QoUERGLCBQcmludFNpemUpCiAgICAgRVhQRUNUX0VRKHNpemUud2lkdGgs
IDYxMi4wKTsKIAogICAgIF9fYmxvY2sgYm9vbCByZWNlaXZlZFNpemUgPSBmYWxzZTsKLSAgICBb
d2ViVmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6d2ViVmlldy5fbWFpbkZyYW1lIGNv
bXBsZXRpb25IYW5kbGVyOl4oQ0dTaXplIHJlcXVlc3RlZFNpemUpIHsKKyAgICBbd2ViVmlldyBf
Z2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6W3dlYlZpZXcgX21haW5GcmFtZV0gY29tcGxldGlv
bkhhbmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgewogICAgICAgICBFWFBFQ1RfRVEocmVx
dWVzdGVkU2l6ZS5oZWlnaHQsIDc5Mi4wKTsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNp
emUud2lkdGgsIDYxMi4wKTsKICAgICAgICAgcmVjZWl2ZWRTaXplID0gdHJ1ZTsKQEAgLTQ2NCw3
ICs0NjQsNyBAQCBURVNUKFBERiwgUHJpbnRTaXplKQogICAgIEVYUEVDVF9FUShtYWluRnJhbWVT
aXplLndpZHRoLCAwLjApOwogICAgIAogICAgIHJlY2VpdmVkU2l6ZSA9IGZhbHNlOwotICAgIFt3
ZWJWaWV3IF9nZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFtZTp3ZWJWaWV3Ll9tYWluRnJhbWUgY29t
cGxldGlvbkhhbmRsZXI6XihDR1NpemUgcmVxdWVzdGVkU2l6ZSkgeworICAgIFt3ZWJWaWV3IF9n
ZXRQREZGaXJzdFBhZ2VTaXplSW5GcmFtZTpbd2ViVmlldyBfbWFpbkZyYW1lXSBjb21wbGV0aW9u
SGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CiAgICAgICAgIEVYUEVDVF9FUShyZXF1
ZXN0ZWRTaXplLmhlaWdodCwgMC4wKTsKICAgICAgICAgRVhQRUNUX0VRKHJlcXVlc3RlZFNpemUu
d2lkdGgsIDAuMCk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRydWU7CkBAIC00NzcsNyArNDc3
LDcgQEAgVEVTVChQREYsIFByaW50U2l6ZSkKICAgICBFWFBFQ1RfTkVBUihwZGZGcmFtZVNpemUu
d2lkdGgsIDEyOS42MDAwMDYsIC4wMDAwMSk7CiAKICAgICByZWNlaXZlZFNpemUgPSBmYWxzZTsK
LSAgICBbd2ViVmlldyBfZ2V0UERGRmlyc3RQYWdlU2l6ZUluRnJhbWU6ZGVsZWdhdGUubGFzdFBy
aW50ZWRGcmFtZSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7Cisg
ICAgW3dlYlZpZXcgX2dldFBERkZpcnN0UGFnZVNpemVJbkZyYW1lOltkZWxlZ2F0ZSBsYXN0UHJp
bnRlZEZyYW1lXSBjb21wbGV0aW9uSGFuZGxlcjpeKENHU2l6ZSByZXF1ZXN0ZWRTaXplKSB7CiAg
ICAgICAgIEVYUEVDVF9ORUFSKHJlcXVlc3RlZFNpemUuaGVpZ2h0LCAyOC43OTk5OTksIC4wMDAw
MSk7CiAgICAgICAgIEVYUEVDVF9ORUFSKHJlcXVlc3RlZFNpemUud2lkdGgsIDEyOS42MDAwMDYs
IC4wMDAwMSk7CiAgICAgICAgIHJlY2VpdmVkU2l6ZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0ZVRlc3Rz
Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdDYW5k
aWRhdGVUZXN0cy5tbQppbmRleCAwZTdhZTk2ZTFiNmExMzc4YTBlY2YyNzZmZDNkODZjZDFkY2Ji
Yzc3Li43N2QyNGZhMDVmMzBmMTQzYzkxNDAzOTNkMzJlOGMyNzgyMDEzNWQ5IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0NhbmRpZGF0
ZVRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tX
ZWJWaWV3Q2FuZGlkYXRlVGVzdHMubW0KQEAgLTEyNSw5ICsxMjUsOSBAQCAtICh2b2lkKXR5cGVT
dHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGlucHV0TWVzc2FnZTooTlNTdHJpbmcgKilpbnB1dE1l
c3NhZ2UKICAgICB9CiB9CiAKLSsgKGluc3RhbmNldHlwZSlzZXRVcFdpdGhGcmFtZTooTlNSZWN0
KWZyYW1lIHRlc3RQYWdlOihOU1N0cmluZyAqKXRlc3RQYWdlTmFtZQorKyAoUmV0YWluUHRyPENh
bmRpZGF0ZVRlc3RXZWJWaWV3PilzZXRVcFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lIHRlc3RQYWdl
OihOU1N0cmluZyAqKXRlc3RQYWdlTmFtZQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3
a1dlYlZpZXcgPSBbW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmZy
YW1lXTsKKyAgICBhdXRvIHdrV2ViVmlldyA9IGFkb3B0TlMoW1tDYW5kaWRhdGVUZXN0V2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpmcmFtZV0pOwogCiAgICAgW3drV2ViVmlldyBsb2FkVGVz
dFBhZ2VOYW1lZDp0ZXN0UGFnZU5hbWVdOwogICAgIFt3a1dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6
QCJmb2N1c2VkIl07CkBAIC0xNDEsNyArMTQxLDcgQEAgQGVuZAogCiBURVNUKFdLV2ViVmlld0Nh
bmRpZGF0ZVRlc3RzLCBTb2Z0U3BhY2VSZXBsYWNlbWVudEFmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9u
V2l0aG91dFJlcGxhY2VtZW50KQogewotICAgIENhbmRpZGF0ZVRlc3RXZWJWaWV3ICp3a1dlYlZp
ZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1pbi1zY3JvbGxhYmxlLWRvY3VtZW50
Il07CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgc2V0VXBXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJpbnB1dC1maWVsZC1p
bi1zY3JvbGxhYmxlLWRvY3VtZW50Il07CiAKICAgICBbd2tXZWJWaWV3IGluc2VydENhbmRpZGF0
ZXNBbmRXYWl0Rm9yUmVzcG9uc2U6QCJhcHBsZSAiIHJhbmdlOk5TTWFrZVJhbmdlKDAsIDApXTsK
ICAgICBFWFBFQ1RfV0tfU1RSRVEoImFwcGxlICIsIFt3a1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpHZXRJbnB1dFZhbHVlSlNFeHByZXNzaW9uXSk7CkBAIC0xNTYsNyArMTU2
LDcgQEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU29mdFNwYWNlUmVwbGFjZW1lbnRB
ZnRlckNhbmRpZGF0ZUluc2VydGlvbldpdGhvdXQKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVU
ZXN0cywgSW5zZXJ0Q2hhcmFjdGVyc0FmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0aFNvZnRTcGFj
ZSkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRl
c3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQ
YWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tX
ZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1
bWVudCJdOwogCiAgICAgW3drV2ViVmlldyBpbnNlcnRDYW5kaWRhdGVzQW5kV2FpdEZvclJlc3Bv
bnNlOkAiZm9vICIgcmFuZ2U6TlNNYWtlUmFuZ2UoMCwgMCldOwogICAgIEVYUEVDVF9XS19TVFJF
USgiZm9vICIsIFt3a1dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpHZXRJbnB1
dFZhbHVlSlNFeHByZXNzaW9uXSk7CkBAIC0xNjcsNyArMTY3LDcgQEAgVEVTVChXS1dlYlZpZXdD
YW5kaWRhdGVUZXN0cywgSW5zZXJ0Q2hhcmFjdGVyc0FmdGVyQ2FuZGlkYXRlSW5zZXJ0aW9uV2l0
aFNvZnRTcGEKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgSW5zZXJ0Q2FuZGlkYXRl
RnJvbVBhcnRpYWxseVR5cGVkUGhyYXNlV2l0aFNvZnRTcGFjZSkKIHsKLSAgICBDYW5kaWRhdGVU
ZXN0V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4t
c2Nyb2xsYWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRl
c3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQ
YWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogCiAgICAgW3drV2Vi
VmlldyB0eXBlU3RyaW5nOkAiaGVsIiBpbnB1dE1lc3NhZ2U6QCJpbnB1dCJdOwogICAgIFt3a1dl
YlZpZXcgaW5zZXJ0Q2FuZGlkYXRlc0FuZFdhaXRGb3JSZXNwb25zZTpAImhlbGxvICIgcmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgMyldOwpAQCAtMTg3LDcgKzE4Nyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2Fu
ZGlkYXRlVGVzdHMsIEluc2VydENhbmRpZGF0ZUZyb21QYXJ0aWFsbHlUeXBlZFBocmFzZVdpdGhT
b2Z0U3BhCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIENsaWNraW5nSW5UZXh0Rmll
bGREb2VzTm90VGhyYXNoQ2FuZGlkYXRlVmlzaWJpbGl0eSkKIHsKLSAgICBDYW5kaWRhdGVUZXN0
V2ViVmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAibGFyZ2UtaW5wdXQtZmllbGQt
Zm9jdXMtb25sb2FkIl07CisgICAgYXV0byB3a1dlYlZpZXcgPSBbQ2FuZGlkYXRlVGVzdFdlYlZp
ZXcgc2V0VXBXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgdGVzdFBhZ2U6QCJs
YXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQiXTsKIAogICAgIFt3a1dlYlZpZXcgdHlwZVN0
cmluZzpAInRlc3QiIGlucHV0TWVzc2FnZTpAImlucHV0Il07CiAgICAgW3drV2ViVmlldyBleHBl
Y3RDYW5kaWRhdGVMaXN0VmlzaWJpbGl0eVVwZGF0ZXM6MCB3aGVuUGVyZm9ybWluZ0FjdGlvbnM6
XigpCkBAIC0yMDMsNyArMjAzLDcgQEAgVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgQ2xp
Y2tpbmdJblRleHRGaWVsZERvZXNOb3RUaHJhc2hDYW5kaWRhdGVWaXNpYmlsaXQKIAogVEVTVChX
S1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkTm90UmVxdWVzdENhbmRpZGF0ZXNJblBhc3N3
b3JkRmllbGQpCiB7Ci0gICAgQ2FuZGlkYXRlVGVzdFdlYlZpZXcgKndrV2ViVmlldyA9IFtbQ2Fu
ZGlkYXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCldOworICAgIGF1dG8gd2tXZWJWaWV3ID0gYWRvcHROUyhbW0NhbmRpZGF0ZVRlc3RX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7
CiAgICAgW3drV2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHQtYW5kLXBhc3N3b3JkLWlu
cHV0cyJdOwogICAgIFt3a1dlYlZpZXcgd2FpdEZvck1lc3NhZ2U6QCJsb2FkZWQiXTsKICAgICBb
d2tXZWJWaWV3IF9mb3JjZVJlcXVlc3RDYW5kaWRhdGVzXTsKQEAgLTIyNSw3ICsyMjUsNyBAQCBU
RVNUKFdLV2ViVmlld0NhbmRpZGF0ZVRlc3RzLCBTaG91bGROb3RSZXF1ZXN0Q2FuZGlkYXRlc0lu
UGFzc3dvcmRGaWVsZCkKIAogVEVTVChXS1dlYlZpZXdDYW5kaWRhdGVUZXN0cywgU2hvdWxkUmVx
dWVzdENhbmRpZGF0ZXNJblRleHRGaWVsZCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2ViVmlldyAq
d2tXZWJWaWV3ID0gW1tDYW5kaWRhdGVUZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV07CisgICAgYXV0byB3a1dlYlZpZXcgPSBhZG9wdE5T
KFtbQ2FuZGlkYXRlVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCldKTsKICAgICBbd2tXZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4
dC1hbmQtcGFzc3dvcmQtaW5wdXRzIl07CiAgICAgW3drV2ViVmlldyB3YWl0Rm9yTWVzc2FnZTpA
ImxvYWRlZCJdOwogICAgIFt3a1dlYlZpZXcgX2ZvcmNlUmVxdWVzdENhbmRpZGF0ZXNdOwpAQCAt
MjQ3LDcgKzI0Nyw3IEBAIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMsIFNob3VsZFJlcXVl
c3RDYW5kaWRhdGVzSW5UZXh0RmllbGQpCiAKIFRFU1QoV0tXZWJWaWV3Q2FuZGlkYXRlVGVzdHMs
IENhbmRpZGF0ZVJlY3RGb3JFbXB0eVBhcmFncmFwaCkKIHsKLSAgICBDYW5kaWRhdGVUZXN0V2Vi
VmlldyAqd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJWaWV3IHNldFVwV2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAiaW5wdXQtZmllbGQtaW4tc2Nyb2xs
YWJsZS1kb2N1bWVudCJdOworICAgIGF1dG8gd2tXZWJWaWV3ID0gW0NhbmRpZGF0ZVRlc3RXZWJW
aWV3IHNldFVwV2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHRlc3RQYWdlOkAi
aW5wdXQtZmllbGQtaW4tc2Nyb2xsYWJsZS1kb2N1bWVudCJdOwogICAgIE5TUmVjdCBjYW5kaWRh
dGVSZWN0ID0gW3drV2ViVmlldyBfY2FuZGlkYXRlUmVjdF07CiAgICAgRVhQRUNUX05FKDAsIGNh
bmRpZGF0ZVJlY3Qub3JpZ2luLnkpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRp
b24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0Rv
ZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbQppbmRleCA4ODcxNjkzNDYwN2Y0Y2FjY2Qz
OWMzZmIzNWQ0NGExODg2YTExZmJiLi4yNmNhNDU3YzRiNzZiNTEyZmZhZTRmYjQ5N2JiM2ZiYzVi
MTJhMzA0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJ
bml0aWFsaXphdGlvbi5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dlYktp
dC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgogI2lt
cG9ydCA8ZmNudGwuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogVEVTVChXS1dlYlZp
ZXcsIEluaXRpYWxpemluZ1dlYlZpZXdXaXRoRXBoZW1lcmFsU3RvcmFnZURvZXNOb3RMb2cpCiB7
CkBAIC00MSwxMiArNDIsMTIgQEAgVEVTVChXS1dlYlZpZXcsIEluaXRpYWxpemluZ1dlYlZpZXdX
aXRoRXBoZW1lcmFsU3RvcmFnZURvZXNOb3RMb2cpCiAgICAgZHVwMihwWzFdLCBTVERFUlJfRklM
RU5PKTsKICAgICBjbG9zZShwWzFdKTsKIAotICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24gPSBbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAg
IF9XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiAqcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0g
W1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwotICAgIGNvbmZpZ3Vy
YXRpb24ucHJvY2Vzc1Bvb2wgPSBbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uXTsKLSAgICBjb25maWd1cmF0aW9uLndl
YnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3Rv
cmVdOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6YWRvcHROUyhbW1dLUHJvY2Vzc1Bvb2wg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdl
dCgpXSkuZ2V0KCldOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRhU3RvcmU6W1dL
V2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXV07CiAKLSAgICBbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOwogCiAgICAgRklMRSAqc3RkZXJyRmlsZUhhbmRsZSA9IGZkb3BlbihwWzBdLCAiciIpOwog
ICAgIGNoYXIgYnVmZmVyWzEwMjRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlw
dC5tbQppbmRleCAxMDMwNTE1N2U1MjMyZTFmNDk2MDMyYjVmOGUwMjdhZmZmNjA2NGVkLi41NmIx
MjFiYzlhODA0MjM3MjQ0YzRiOWE1YzIwNDk3OGQzN2M1OTE2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlw
dC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmll
d0V2YWx1YXRlSmF2YVNjcmlwdC5tbQpAQCAtNDczLDcgKzQ3Myw4IEBAIFRFU1QoV2ViS2l0LCBT
UElKYXZhc2NyaXB0TWFya3VwVnNBUElDb250ZW50SmF2YVNjcmlwdCkKIAogfQogCi1zdGF0aWMg
TlNNdXRhYmxlU2V0PFdLRnJhbWVJbmZvICo+ICphbGxGcmFtZXM7CitzdGF0aWMgUmV0YWluUHRy
PE5TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPj4gYWxsRnJhbWVzOworCiBAaW50ZXJmYWNlIEZy
YW1lc01lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBA
ZW5kCiAKQEAgLTQ5OSw3ICs1MDAsNyBAQCBzdGF0aWMgTlNTdHJpbmcgKnVzZXJTY3JpcHRTb3Vy
Y2UgPSBAIndpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLmZyYW1lc1Rlc3RlcgogLy8gYW5k
IGNhbGxBc3luY0phdmFTY3JpcHQgdG8gY29uZmlybSB0aGF0IGl0IGNhbiBleGVjdXRlIEpTIGRp
cmVjdGx5IGluIGVhY2ggb2YgdGhvc2UgZnJhbWVzLgogVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQs
IEphdmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKIHsKLSAgICBhbGxGcmFtZXMgPSBb
W05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVz
ID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwog
ICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbRnJhbWVzTWVzc2FnZUhhbmRsZXIg
YWxsb2NdIGluaXRdKTsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtbV0tVc2VyU2Ny
aXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTp1c2VyU2NyaXB0U291cmNlIGluamVjdGlvblRpbWU6
V0tVc2VyU2NyaXB0SW5qZWN0aW9uVGltZUF0RG9jdW1lbnRTdGFydCBmb3JNYWluRnJhbWVPbmx5
Ok5PIGluQ29udGVudFdvcmxkOldLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZF0pOwog
CkBAIC01MjcsMTIgKzUyOCwxMiBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlw
dEluRnJhbWVzRnJvbVBvc3RNZXNzYWdlKQogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOwogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiZnJhbWVzdGVzdDovL3Rlc3QvaW5kZXguaHRtbCJdXV07CiAKLSAg
ICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFt
ZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgc2l6ZV90IGZpbmlzaGVkRnJhbWVzID0gMDsK
ICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKIAotICAgIGZvciAoV0tGcmFtZUluZm8g
KmZyYW1lIGluIGFsbEZyYW1lcykgeworICAgIGZvciAoV0tGcmFtZUluZm8gKmZyYW1lIGluIGFs
bEZyYW1lcy5nZXQoKSkgewogICAgICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUuaXNNYWlu
RnJhbWU7CiAgICAgICAgIFt3ZWJWaWV3IGNhbGxBc3luY0phdmFTY3JpcHQ6QCJyZXR1cm4gbG9j
YXRpb24uaHJlZjsiIGFyZ3VtZW50czpuaWwgaW5GcmFtZTpmcmFtZSBpbkNvbnRlbnRXb3JsZDpX
S0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6W2lzTWFp
bkZyYW1lXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOwpAQCAtNTQzLDcgKzU0NCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0
LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9tUG9zdE1lc3NhZ2UpCiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJvdGhl
cnByb3RvY29sOi8vdGVzdC9pbmRleC5odG1sIl0pOwogCi0gICAgICAgICAgICBpZiAoKytmaW5p
c2hlZEZyYW1lcyA9PSBhbGxGcmFtZXMuY291bnQgKiAyKQorICAgICAgICAgICAgaWYgKCsrZmlu
aXNoZWRGcmFtZXMgPT0gW2FsbEZyYW1lcyBjb3VudF0gKiAyKQogICAgICAgICAgICAgICAgIGlz
RG9uZSA9IHRydWU7CiAgICAgICAgIH1dOwogCkBAIC01NTcsNyArNTU4LDcgQEAgVEVTVChFdmFs
dWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbkZyYW1lc0Zyb21Qb3N0TWVzc2FnZSkKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxU
b1N0cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAg
ICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAg
ICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAg
ICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtNTcyLDcg
KzU3Myw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNGcm9t
UG9zdE1lc3NhZ2UpCiAvLyBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdCB0byBjb25maXJtIHRoYXQg
aXQgY2FuIGV4ZWN1dGUgSlMgZGlyZWN0bHkgaW4gZWFjaCBvZiB0aG9zZSBmcmFtZXMuCiBURVNU
KEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxl
Z2F0ZSkKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBh
bGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0Zy
YW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
W1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3Rh
cnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFz
az4gdGFzaykgewpAQCAtNjE1LDEyICs2MTYsMTIgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQs
IEphdmFTY3JpcHRJbkZyYW1lc0Zyb21OYXZpZ2F0aW9uRGVsZWdhdGUpCiAKICAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmRpZEZpbmlzaE5hdmlnYXRpb24pOwogCi0gICAgRVhQRUNUX0VR
KGFsbEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxsRnJhbWVzIGNvdW50XSwg
MnUpOwogCiAgICAgc3RhdGljIHNpemVfdCBmaW5pc2hlZEZyYW1lcyA9IDA7CiAgICAgc3RhdGlj
IGJvb2wgaXNEb25lID0gZmFsc2U7CiAKLSAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBh
bGxGcmFtZXMpIHsKKyAgICBmb3IgKFdLRnJhbWVJbmZvICpmcmFtZSBpbiBhbGxGcmFtZXMuZ2V0
KCkpIHsKICAgICAgICAgYm9vbCBpc01haW5GcmFtZSA9IGZyYW1lLmlzTWFpbkZyYW1lOwogICAg
ICAgICBbd2ViVmlldyBjYWxsQXN5bmNKYXZhU2NyaXB0OkAicmV0dXJuIGxvY2F0aW9uLmhyZWY7
IiBhcmd1bWVudHM6bmlsIGluRnJhbWU6ZnJhbWUgaW5Db250ZW50V29ybGQ6V0tDb250ZW50V29y
bGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOltpc01haW5GcmFtZV0gKGlk
IHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKQEAgLTYzMSw3ICs2MzIsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlw
dEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAIm90aGVycHJv
dG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAgICAgICAgIGlmICgrK2ZpbmlzaGVk
RnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAgICAgICAgICBpZiAoKytmaW5pc2hl
ZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAgICAgICAgICAgICAgICAgaXNEb25l
ID0gdHJ1ZTsKICAgICAgICAgfV07CiAKQEAgLTY0NSw3ICs2NDYsNyBAQCBURVNUKEV2YWx1YXRl
SmF2YVNjcmlwdCwgSmF2YVNjcmlwdEluRnJhbWVzRnJvbU5hdmlnYXRpb25EZWxlZ2F0ZSkKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1
YWxUb1N0cmluZzpAIm90aGVycHJvdG9jb2w6Ly90ZXN0L2luZGV4Lmh0bWwiXSk7CiAKLSAgICAg
ICAgICAgIGlmICgrK2ZpbmlzaGVkRnJhbWVzID09IGFsbEZyYW1lcy5jb3VudCAqIDIpCisgICAg
ICAgICAgICBpZiAoKytmaW5pc2hlZEZyYW1lcyA9PSBbYWxsRnJhbWVzIGNvdW50XSAqIDIpCiAg
ICAgICAgICAgICAgICAgaXNEb25lID0gdHJ1ZTsKICAgICAgICAgfV07CiAgICAgfQpAQCAtNjU3
LDcgKzY1OCw3IEBAIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5GcmFtZXNG
cm9tTmF2aWdhdGlvbkRlbGVnYXRlKQogLy8gZHVlIHRvIHJlbW92YWwgZnJvbSB0aGUgRE9NIHJl
c3VsdHMgaW4gYW4gYXBwcm9wcmlhdGUgZXJyb3IKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBK
YXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIHsKLSAgICBhbGxGcmFtZXMgPSBbW05TTXV0
YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxsRnJhbWVzID0gYWRv
cHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF0pOwogCiAgICAg
YXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0
XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjpbJl0oV0tXZWJW
aWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtNzAwLDcgKzcwMSw3IEBAIFRF
U1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZhU2NyaXB0SW5NaXNzaW5nRnJhbWVFcnJvcikKIAog
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkRmluaXNoTmF2aWdhdGlvbik7CiAKLSAg
ICBFWFBFQ1RfRVEoYWxsRnJhbWVzLmNvdW50LCAydSk7CisgICAgRVhQRUNUX0VRKFthbGxGcmFt
ZXMgY291bnRdLCAydSk7CiAKICAgICBzdGF0aWMgYm9vbCBpc0RvbmUgPSBmYWxzZTsKICAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGhlRnJhbWUnKTsgZnJhbWUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChmcmFtZSk7
IiBpbkZyYW1lOm5pbCBpbkNvbnRlbnRXb3JsZDpXS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50
V29ybGQgY29tcGxldGlvbkhhbmRsZXI6W10gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
QEAgLTcxMCw3ICs3MTEsNyBAQCBURVNUKEV2YWx1YXRlSmF2YVNjcmlwdCwgSmF2YVNjcmlwdElu
TWlzc2luZ0ZyYW1lRXJyb3IpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogICAgIGlzRG9uZSA9IGZhbHNlOwogCi0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4g
YWxsRnJhbWVzKSB7CisgICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdl
dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS5pc01haW5GcmFtZSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCkBAIC03MjgsNyArNzI5LDcgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFT
Y3JpcHRJbk1pc3NpbmdGcmFtZUVycm9yKQogLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgZXZh
bHVhdGluZyBKYXZhU2NyaXB0IGluIGEgZnJhbWUgZnJvbSB0aGUgcHJldmlvdXMgbWFpbiBuYXZp
Z2F0aW9uIHJlc3VsdHMgaW4gYW4gZXJyb3IKIFRFU1QoRXZhbHVhdGVKYXZhU2NyaXB0LCBKYXZh
U2NyaXB0SW5NaXNzaW5nRnJhbWVBZnRlck5hdmlnYXRpb25FcnJvcikKIHsKLSAgICBhbGxGcmFt
ZXMgPSBbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5pdF07CisgICAgYWxs
RnJhbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldDxXS0ZyYW1lSW5mbyAqPiBhbGxvY10gaW5p
dF0pOwogCiAgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVy
IGFsbG9jXSBpbml0XSk7CiAgICAgW2hhbmRsZXIgc2V0U3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxl
cjpbJl0oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFzaz4gdGFzaykgewpAQCAtNzc3LDEw
ICs3NzgsMTAgQEAgVEVTVChFdmFsdWF0ZUphdmFTY3JpcHQsIEphdmFTY3JpcHRJbk1pc3NpbmdG
cmFtZUFmdGVyTmF2aWdhdGlvbkVycm9yKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZGlkRmluaXNoTmF2aWdhdGlvbik7CiAgICAgZGlkRmluaXNoTmF2aWdhdGlvbiA9IGZhbHNlOwog
Ci0gICAgRVhQRUNUX0VRKGFsbEZyYW1lcy5jb3VudCwgMnUpOworICAgIEVYUEVDVF9FUShbYWxs
RnJhbWVzIGNvdW50XSwgMnUpOwogCiAgICAgUmV0YWluUHRyPFdLRnJhbWVJbmZvPiBpZnJhbWU7
Ci0gICAgZm9yIChXS0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzKSB7CisgICAgZm9yIChX
S0ZyYW1lSW5mbyAqZnJhbWUgaW4gYWxsRnJhbWVzLmdldCgpKSB7CiAgICAgICAgIGlmIChmcmFt
ZS5pc01haW5GcmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZnJhbWUgPSBm
cmFtZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KaW5kZXggMjgxYWMx
YmEyMjEwZGM2NWM2OGI1MGQ3OTdjOThlYTMxMjliMDRiYS4uZjYxNmE3NGI0MTdmNjFlOWFhM2Rk
MjVjOGJlODZjOWUyYTJmZDI4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMubW0KQEAgLTE5Nyw3ICsxOTcsNyBAQCBzdGF0aWMgdm9pZCBydW5XZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMoU2hvdWxkRW5hYmxlUHJvY2Vzc1ByZXdhcm1pbmcgc2hvdWxkRQogICAgIFJl
dGFpblB0cjxOU1VSTD4gZmlsZUlEQlBhdGggPSBbW2lkYlBhdGggVVJMQnlBcHBlbmRpbmdQYXRo
Q29tcG9uZW50OkAidjEiXSBVUkxCeUFwcGVuZGluZ1BhdGhDb21wb25lbnQ6QCJmaWxlX18wIl07
CiAgICAgRVhQRUNUX1RSVUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhp
c3RzQXRQYXRoOmZpbGVJREJQYXRoLmdldCgpLnBhdGhdKTsKIAotICAgIFJldGFpblB0cjxXS1dl
YnNpdGVEYXRhU3RvcmU+IGRhdGFTdG9yZSA9IFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgp
XTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
b2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246d2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKICAgICBSZXRhaW5QdHI8TlNTZXQ+IHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6V0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMs
IG5pbF0pOwogCiAgICAgLy8gU3ViZnJhbWUgb2YgZGlmZmVyZW50IG9yaWdpbnMgbWF5IGFsc28g
Y3JlYXRlIEluZGV4ZWREQiBmaWxlcy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KaW5kZXggMDQxNzRjOTlkMGQ2
YzM1Zjg5MjI5YjM5MDNiMDA3YzBhNDcyODA4NC4uZjA0MzMyYTIwZjk5ZTFkYWUzMDcyNDZmNGQ2
NmJlNWFhYTJiMzZhYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0KQEAgLTE2NTcsNyArMTY1Nyw3IEBAIC0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlk
IDxXS1VSTFNjaGVtZVRhc2s+KXRhCiAgICAgTlNVUkwgKnVybCA9IHRhc2sucmVxdWVzdC5VUkw7
CiAgICAgaWYgKFt1cmwucGF0aCBpc0VxdWFsVG9TdHJpbmc6QCIvY2hlY2tTdG9yYWdlIl0pIHsK
ICAgICAgICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+dmFyIG9sZFZhbHVlID0gd2luZG93
LnNlc3Npb25TdG9yYWdlWydzdG9yYWdlS2V5J107IHdpbmRvdy5zZXNzaW9uU3RvcmFnZVsnc3Rv
cmFnZUtleSddID0gJ3ZhbHVlJzsgYWxlcnQoJ29sZCB2YWx1ZTogPCcgKyAob2xkVmFsdWUgPyAn
ZmFpbCcgOiAnJykgKyAnPicpOzwvc2NyaXB0PiI7Ci0gICAgICAgIFt0YXNrIGRpZFJlY2VpdmVS
ZXNwb25zZTpbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0bWwubGVuZ3RoIHRleHRFbmNvZGlu
Z05hbWU6bmlsXV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTphZG9wdE5TKFtb
TlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJsIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6aHRtbC5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxd
KS5nZXQoKV07CiAgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltodG1sIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07
CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRMZWdh
Y3kvbWFjL0Nsb3NpbmdXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRMZWdhY3kvbWFjL0Nsb3NpbmdXZWJWaWV3Lm1tCmluZGV4IDRiM2QzNWVhMzk2ZmIzOGU3MDJj
NWVlMDc4ODlkMmUyNGIyYzQyNTIuLjhkNWY5ZjczOWEyYmQ4ZmU4OWIwMDRiOGNhY2UwMThkYmU5
N2NlZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0TGVnYWN5
L21hYy9DbG9zaW5nV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdExlZ2FjeS9tYWMvQ2xvc2luZ1dlYlZpZXcubW0KQEAgLTc5LDcgKzc5LDggQEAgVEVTVChX
ZWJLaXRMZWdhY3ksIENsb3NpbmdXZWJWaWV3VGhlblNlbmRpbmdJdEFLZXlEb3duRXZlbnQpCiAg
ICAgVXRpbDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKIAogICAgIC8vIEZpcnN0LCBhZGQgYSBuYXRp
dmUgZXZlbnQgbGlzdGVuZXIgdGhhdCBjbG9zZXMgdGhlIFdlYlZpZXcuCi0gICAgW1tbd2ViVmll
dyBtYWluRnJhbWVEb2N1bWVudF0gYm9keV0gYWRkRXZlbnRMaXN0ZW5lcjpAImtleXByZXNzIiBs
aXN0ZW5lcjpbW0tleWJvYXJkRXZlbnRMaXN0ZW5lciBhbGxvY10gaW5pdF0gdXNlQ2FwdHVyZTpO
T107CisgICAgYXV0byBsaXN0ZW5lciA9IGFkb3B0TlMoW1tLZXlib2FyZEV2ZW50TGlzdGVuZXIg
YWxsb2NdIGluaXRdKTsKKyAgICBbW1t3ZWJWaWV3IG1haW5GcmFtZURvY3VtZW50XSBib2R5XSBh
ZGRFdmVudExpc3RlbmVyOkAia2V5cHJlc3MiIGxpc3RlbmVyOmxpc3RlbmVyLmdldCgpIHVzZUNh
cHR1cmU6Tk9dOwogCiAgICAgLy8gU2Vjb25kLCBhZGQgYSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRs
ZXIgdGhhdCBjb25zdW1lcyB0aGUgZXZlbnQuCiAgICAgW1tbd2ViVmlldyBtYWluRnJhbWVdIGph
dmFTY3JpcHRDb250ZXh0XSBldmFsdWF0ZVNjcmlwdDpAImFkZEtleVByZXNzSGFuZGxlcigpIl07
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvQ3VzdG9t
UHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCmluZGV4IDQyZTRjY2YwY2Mz
OWI3YzRmMzhhYmUxNjJhYzcyYTM4OGYzYzhiZDcuLjliODcyZTM3NDE4NmNiYzAzMmRiZjFjMjky
NGM0MjM5ZGZkZGMzODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1t
CkBAIC02MCw3ICs2MCw4IEBAIFRFU1QoV2ViS2l0MkN1c3RvbVByb3RvY29sc1Rlc3QsIExvYWRJ
bnZhbGlkU2NoZW1lKQogICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFk
b3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiQ3VzdG9tUHJv
dG9jb2xJbnZhbGlkU2NoZW1lVGVzdCIpKTsKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhj
b250ZXh0LmdldCgpKTsKIAotICAgIHdlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW0xvYWRJbnZhbGlkU2NoZW1lRGVsZWdhdGUg
YWxsb2NdIGluaXRdOworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRvcHROUyhbW0xvYWRJbnZh
bGlkU2NoZW1lRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICB3ZWJWaWV3LnBsYXRmb3JtVmll
dygpLmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRl
LmdldCgpOwogICAgIFt3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAImh0J3RwOi8vd3d3LndlYmtpdC5vcmciXV1dOwogICAgIAogICAgIFV0aWw6
OnJ1bigmdGVzdEZpbmlzaGVkKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9S
ZXNpemluZy5tbQppbmRleCAyOTZhYmIwYzJiMDgwM2U5MDY4ODg2NTJiYjcyYjk4NzVkOTZjYWYz
Li5lMTI2MThjYTdjODM5M2RhYjk1NDc0OGJiZDUwMjdiYjExOGJjMzI1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvUHJldmVudEltYWdlTG9hZFdpdGhB
dXRvUmVzaXppbmcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpD
L1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCkBAIC0zMyw2ICszMyw3IEBACiAj
aW1wb3J0ICJQbGF0Zm9ybVdlYlZpZXcuaCIKICNpbXBvcnQgIlRlc3RCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGUuaCIKICNpbXBvcnQgPFdlYktpdC9XS1ZpZXdQcml2YXRlLmg+CisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwog
CkBAIC00NCw5ICs0NSwxMCBAQCBURVNUKFdlYktpdCwgUHJldmVudEltYWdlTG9hZFdpdGhBdXRv
UmVzaXppbmdUZXN0KQogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkp
OwogCiAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5taW5pbXVtU2l6ZUZvckF1dG9MYXlvdXQg
PSBOU01ha2VTaXplKDQwMCwgMzAwKTsKLSAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0
TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgIGF1dG8gbG9hZERlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxv
Y2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7CiAg
ICAgICAgIHRlc3RGaW5pc2hlZCA9IHRydWU7Ci0gICAgfV07CisgICAgfV0pOworICAgIHdlYlZp
ZXcucGxhdGZvcm1WaWV3KCkuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUg
PSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgW3dlYlZpZXcucGxhdGZvcm1WaWV3KCkuYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlciBsb2FkSFRNTFN0cmluZzpAIjxodG1sPjxib2R5IHN0eWxlPSdi
YWNrZ3JvdW5kLWltYWdlOnVybChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFB
TlNVaEVVZ0FBQUFvQUFBQUtDQVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlp
WlNCSmJXRm5aVkpsWVdSNWNjbGxQQUFBQUZaSlJFRlVlRjU5ejRFSkFERUlRMUYzNms3dTVFN1pL
WGVVUVBBQ0ozd0s3VU5va1Z4Vms5a0huUUg3Ylk5aGJEeURoTlhnanBSTHFGbG80TTJHZ2Z5Skho
anE4VjRhZ2ZyZ1BRWDNKdEpRR2JvZm1DSGdBL25BS2tzK0pBakZBQUFBQUVsRlRrU3VRbUNDKTsn
PjwvYm9keT48L2h0bWw+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiYWJvdXQ6Ymxh
bmsiXV07CiAKICAgICBVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRPYmpDL1VzZXJDb250ZW50VGVzdC5tbQppbmRl
eCAyZDBiMTczZmRhNTZkN2I4YTg1MGIzNzhjN2I4ZWM5MmM4ZjFlNGMzLi5hMjQyMjZlZjI0YWM1
ZWZmNGY2YjY2NTNmYzQwZGJkZWNhODllZDEwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdE9iakMvVXNlckNvbnRlbnRUZXN0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0T2JqQy9Vc2VyQ29udGVudFRlc3QubW0KQEAgLTEyMCwxNyAr
MTIwLDE3IEBAIFRFU1RfRihXZWJLaXQyVXNlckNvbnRlbnRUZXN0LCBBZGRVc2VyU3R5bGVTaGVl
dEJlZm9yZUNyZWF0aW5nVmlldykKICAgICB0ZXN0RmluaXNoZWQgPSBmYWxzZTsKICAgICBbYnJv
d3NpbmdDb250ZXh0R3JvdXAgYWRkVXNlclN0eWxlU2hlZXQ6dXNlclN0eWxlU2hlZXQgYmFzZVVS
TDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVNYXRjaFBhdHRlcm5T
dHJpbmdzOm5pbCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcg
PSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAw
KSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJy
b3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBiYWNrZ3JvdW5kQ29s
b3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tncm91bmRDb2xvclNj
cmlwdCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRl
ID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2Nr
VG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewotICAg
ICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIGJhY2tncm91bmRD
b2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dL
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9j
ZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5n
Q29udGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29sb3JRdWVyeSA9IGFk
b3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0
KSk7CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4
dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKFt3a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5LmdldCgpLCBeKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJl
ZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0cmluZyhzZXJpYWxp
emVkU2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3JRdWVyeSk7CiAgICAg
ICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsKICAgICAKLSAgICBb
d2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmlu
ZyBiYXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0g
bG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMTM5LDE5ICsxMzksMTkg
QEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIEFkZFVzZXJTdHlsZVNoZWV0QWZ0ZXJD
cmVhdGluZ1ZpZXcpCiB7CiAgICAgdGVzdEZpbmlzaGVkID0gZmFsc2U7CiAgICAgCi0gICAgV0tW
aWV3ICp3a1ZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29u
dGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiBi
YWNrZ3JvdW5kQ29sb3JRdWVyeSA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGJhY2tn
cm91bmRDb2xvclNjcmlwdCk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
bG9hZERlbGVnYXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNl
bmRlcikgewotICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYs
IGJhY2tncm91bmRDb2xvclF1ZXJ5LCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0g
YWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdy
b3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7CisgICAgYXV0byBiYWNrZ3JvdW5kQ29s
b3JRdWVyeSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYmFja2dyb3Vu
ZENvbG9yU2NyaXB0KSk7CisgICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJy
b3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2Fk
Ol4oV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcgcGFnZVJlZl0sIGJhY2tncm91bmRDb2xvclF1ZXJ5
LmdldCgpLCBeKFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSwgV0tFcnJvclJlZiBlcnJvcikgewogICAgICAgICAgICAgZXhwZWN0U2NyaXB0VmFsdWVJc1N0
cmluZyhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGdyZWVuSW5SR0IpOwogICAgICAgICAgICAgdGVz
dEZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZShiYWNrZ3JvdW5kQ29sb3JR
dWVyeSk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsKKyAgICBbd2tWaWV3IGJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxvYWREZWxlZ2F0ZS5nZXQoKTsK
IAogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU3R5bGVTaGVldDp1c2VyU3R5bGVT
aGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgZXhjbHVkZU1h
dGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6WUVTXTsKICAgICAKLSAgICBbd2tW
aWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBi
YXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9h
ZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBAIC0xNjEsMTkgKzE2MSwxOSBAQCBURVNU
X0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgUmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKQogICAg
IHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2Vy
U3R5bGVTaGVldDp1c2VyU3R5bGVTaGVldCBiYXNlVVJMOm5pbCBpbmNsdWRlTWF0Y2hQYXR0ZXJu
U3RyaW5nczpuaWwgZXhjbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIG1haW5GcmFtZU9ubHk6
WUVTXTsKICAgICAKLSAgICBXS1ZpZXcgKndrVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3Jv
dXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCld
OwotICAgIFdLU3RyaW5nUmVmIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcoYmFja2dyb3VuZENvbG9yU2NyaXB0KTsKLSAgICB3a1ZpZXcuYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBbW1Rlc3RCcm93c2luZ0NvbnRleHRM
b2FkRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoQmxvY2tUb1J1bk9uTG9hZDpeKFdLQnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciAqc2VuZGVyKSB7Ci0gICAgICAgIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZSh3a1ZpZXcucGFnZVJlZiwgYmFja2dyb3VuZENvbG9yUXVlcnksIF4oV0tTZXJpYWxpemVk
U2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7
CisgICAgYXV0byB3a1ZpZXcgPSBhZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0
KCkgYnJvd3NpbmdDb250ZXh0R3JvdXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAg
ICBhdXRvIGJhY2tncm91bmRDb2xvclF1ZXJ5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhiYWNrZ3JvdW5kQ29sb3JTY3JpcHQpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0
ZSA9IGFkb3B0TlMoW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0
V2l0aEJsb2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRl
cikgeworICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwg
YmFja2dyb3VuZENvbG9yUXVlcnkuZ2V0KCksIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYg
c2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CiAgICAgICAgICAgICBl
eHBlY3RTY3JpcHRWYWx1ZUlzU3RyaW5nKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgcmVkSW5SR0Ip
OwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIFdLUmVsZWFz
ZShiYWNrZ3JvdW5kQ29sb3JRdWVyeSk7CiAgICAgICAgIH0pOwotICAgIH1dOworICAgIH1dKTsK
KyAgICBbd2tWaWV3IGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJdLmxvYWREZWxlZ2F0ZSA9IGxv
YWREZWxlZ2F0ZS5nZXQoKTsKICAgICAKICAgICBbYnJvd3NpbmdDb250ZXh0R3JvdXAgcmVtb3Zl
QWxsVXNlclN0eWxlU2hlZXRzXTsKICAgICAKLSAgICBbd2tWaWV3LmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CisgICAgW1t3
a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmlu
ZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0
RmluaXNoZWQpOwogfQpAQCAtMTgzLDE3ICsxODMsMTcgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29u
dGVudFRlc3QsIEFkZFVzZXJTY3JpcHRCZWZvcmVDcmVhdGluZ1ZpZXcpCiAgICAgdGVzdEZpbmlz
aGVkID0gZmFsc2U7CiAgICAgW2Jyb3dzaW5nQ29udGV4dEdyb3VwIGFkZFVzZXJTY3JpcHQ6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlcyA9IHRydWU7IiwgdXNlclNjcmlwdFRlc3RQcm9w
ZXJ0eV0gYmFzZVVSTDpuaWwgaW5jbHVkZU1hdGNoUGF0dGVyblN0cmluZ3M6bmlsIGV4Y2x1ZGVN
YXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBpbmplY3Rpb25UaW1lOmtXS0luamVjdEF0RG9jdW1lbnRT
dGFydCBtYWluRnJhbWVPbmx5OllFU107CiAgICAgCi0gICAgV0tWaWV3ICp3a1ZpZXcgPSBbW1dL
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9j
ZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5n
Q29udGV4dEdyb3VwLmdldCgpXTsKLSAgICBXS1N0cmluZ1JlZiB1c2VyU2NyaXB0VGVzdFByb3Bl
cnR5U3RyaW5nID0gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcodXNlclNjcmlwdFRlc3RQ
cm9wZXJ0eSk7Ci0gICAgd2tWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVn
YXRlID0gW1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJs
b2NrVG9SdW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgewot
ICAgICAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUod2tWaWV3LnBhZ2VSZWYsIHVzZXJTY3Jp
cHRUZXN0UHJvcGVydHlTdHJpbmcsIF4oV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFs
aXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgYXV0byB3a1ZpZXcgPSBh
ZG9wdE5TKFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIHByb2Nlc3NHcm91cDpwcm9jZXNzR3JvdXAuZ2V0KCkgYnJvd3NpbmdDb250ZXh0R3Jv
dXA6YnJvd3NpbmdDb250ZXh0R3JvdXAuZ2V0KCldKTsKKyAgICBhdXRvIHVzZXJTY3JpcHRUZXN0
UHJvcGVydHlTdHJpbmcgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHVz
ZXJTY3JpcHRUZXN0UHJvcGVydHkpKTsKKyAgICBhdXRvIGxvYWREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tUZXN0QnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlIGFsbG9jXSBpbml0V2l0aEJsb2NrVG9S
dW5PbkxvYWQ6XihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKnNlbmRlcikgeworICAgICAg
ICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoW3drVmlldyBwYWdlUmVmXSwgdXNlclNjcmlwdFRl
c3RQcm9wZXJ0eVN0cmluZy5nZXQoKSwgXihXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IpIHsKICAgICAgICAgICAgIGV4cGVj
dFNjcmlwdFZhbHVlSXNCb29sZWFuKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgdHJ1ZSk7CiAgICAg
ICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgV0tSZWxlYXNlKHVzZXJT
Y3JpcHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsKLSAgICB9XTsKKyAgICB9XSk7
CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVyXS5sb2FkRGVsZWdhdGUgPSBs
b2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCi0gICAgW3drVmlldy5icm93c2luZ0NvbnRleHRDb250
cm9sbGVyIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CisgICAgW1t3a1ZpZXcgYnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxTdHJpbmc6QCIiIGJhc2VVUkw6bmlsXTsK
ICAgICAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RGaW5pc2hlZCk7CiB9CkBA
IC0yMDIsMTkgKzIwMiwxOSBAQCBURVNUX0YoV2ViS2l0MlVzZXJDb250ZW50VGVzdCwgQWRkVXNl
clNjcmlwdEFmdGVyQ3JlYXRpbmdWaWV3KQogewogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwog
ICAgIAotICAgIFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQo
KSBicm93c2luZ0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAg
V0tTdHJpbmdSZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRl
V2l0aFVURjhDU3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93
c2luZ0NvbnRleHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4
dExvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKHdrVmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJl
ZiBlcnJvcikgeworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vz
c0dyb3VwLmdldCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdl
dCgpXSk7CisgICAgYXV0byB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7Cisg
ICAgYXV0byBsb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1l
KFt3a1ZpZXcgcGFnZVJlZl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4o
V0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9y
UmVmIGVycm9yKSB7CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzQm9vbGVhbihzZXJp
YWxpemVkU2NyaXB0VmFsdWUsIHRydWUpOwogICAgICAgICAgICAgdGVzdEZpbmlzaGVkID0gdHJ1
ZTsKLSAgICAgICAgICAgIFdLUmVsZWFzZSh1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nKTsK
ICAgICAgICAgfSk7Ci0gICAgfV07CisgICAgfV0pOworICAgIFt3a1ZpZXcgYnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlcl0ubG9hZERlbGVnYXRlID0gbG9hZERlbGVnYXRlLmdldCgpOwogICAgIAog
ICAgIFticm93c2luZ0NvbnRleHRHcm91cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiJXMgPSB0cnVlOyIsIHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6
bmlsIGluY2x1ZGVNYXRjaFBhdHRlcm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3Ry
aW5nczpuaWwgaW5qZWN0aW9uVGltZTprV0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1l
T25seTpZRVNdOwogICAgIAotICAgIFt3a1ZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBs
b2FkSFRNTFN0cmluZzpAIiIgYmFzZVVSTDpuaWxdOworICAgIFtbd2tWaWV3IGJyb3dzaW5nQ29u
dGV4dENvbnRyb2xsZXJdIGxvYWRIVE1MU3RyaW5nOkAiIiBiYXNlVVJMOm5pbF07CiAgICAgCiAg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpAQCAtMjI0LDE5
ICsyMjQsMTkgQEAgVEVTVF9GKFdlYktpdDJVc2VyQ29udGVudFRlc3QsIFJlbW92ZUFsbFVzZXJT
Y3JpcHRzKQogICAgIHRlc3RGaW5pc2hlZCA9IGZhbHNlOwogICAgIFticm93c2luZ0NvbnRleHRH
cm91cCBhZGRVc2VyU2NyaXB0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXMgPSB0cnVl
OyIsIHVzZXJTY3JpcHRUZXN0UHJvcGVydHldIGJhc2VVUkw6bmlsIGluY2x1ZGVNYXRjaFBhdHRl
cm5TdHJpbmdzOm5pbCBleGNsdWRlTWF0Y2hQYXR0ZXJuU3RyaW5nczpuaWwgaW5qZWN0aW9uVGlt
ZTprV0tJbmplY3RBdERvY3VtZW50U3RhcnQgbWFpbkZyYW1lT25seTpZRVNdOwogICAgIAotICAg
IFdLVmlldyAqd2tWaWV3ID0gW1tXS1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCA4MDAsIDYwMCkgcHJvY2Vzc0dyb3VwOnByb2Nlc3NHcm91cC5nZXQoKSBicm93c2lu
Z0NvbnRleHRHcm91cDpicm93c2luZ0NvbnRleHRHcm91cC5nZXQoKV07Ci0gICAgV0tTdHJpbmdS
ZWYgdXNlclNjcmlwdFRlc3RQcm9wZXJ0eVN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKHVzZXJTY3JpcHRUZXN0UHJvcGVydHkpOwotICAgIHdrVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKLSAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKHdr
Vmlldy5wYWdlUmVmLCB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nLCBeKFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUmVmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgV0tFcnJvclJlZiBlcnJvcikg
eworICAgIGF1dG8gd2tWaWV3ID0gYWRvcHROUyhbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBwcm9jZXNzR3JvdXA6cHJvY2Vzc0dyb3VwLmdl
dCgpIGJyb3dzaW5nQ29udGV4dEdyb3VwOmJyb3dzaW5nQ29udGV4dEdyb3VwLmdldCgpXSk7Cisg
ICAgYXV0byB1c2VyU2NyaXB0VGVzdFByb3BlcnR5U3RyaW5nID0gYWRvcHRXSyhXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyh1c2VyU2NyaXB0VGVzdFByb3BlcnR5KSk7CisgICAgYXV0byBs
b2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICpzZW5kZXIpIHsKKyAgICAgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFt3a1ZpZXcg
cGFnZVJlZl0sIHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcuZ2V0KCksIF4oV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWVSZWYgc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBXS0Vycm9yUmVmIGVycm9y
KSB7CiAgICAgICAgICAgICBleHBlY3RTY3JpcHRWYWx1ZUlzVW5kZWZpbmVkKHNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSk7CiAgICAgICAgICAgICB0ZXN0RmluaXNoZWQgPSB0cnVlOwotICAgICAgICAg
ICAgV0tSZWxlYXNlKHVzZXJTY3JpcHRUZXN0UHJvcGVydHlTdHJpbmcpOwogICAgICAgICB9KTsK
LSAgICB9XTsKKyAgICB9XSk7CisgICAgW3drVmlldyBicm93c2luZ0NvbnRleHRDb250cm9sbGVy
XS5sb2FkRGVsZWdhdGUgPSBsb2FkRGVsZWdhdGUuZ2V0KCk7CiAgICAgCiAgICAgW2Jyb3dzaW5n
Q29udGV4dEdyb3VwIHJlbW92ZUFsbFVzZXJTY3JpcHRzXTsKICAgICAKLSAgICBbd2tWaWV3LmJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZEhUTUxTdHJpbmc6aHRtbFN0cmluZyBiYXNlVVJM
Om5pbF07CisgICAgW1t3a1ZpZXcgYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcl0gbG9hZEhUTUxT
dHJpbmc6aHRtbFN0cmluZyBiYXNlVVJMOm5pbF07CiAgICAgCiAgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvRHJhZ0FuZERyb3BUZXN0c0lPUy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0RyYWdBbmREcm9wVGVzdHNJT1MubW0KaW5kZXggNWU2NzM2MTEwMzNmMTFj
NmEyODU0YjJlMjJiZjhhZGM5OTg0ZDI2Mi4uOGI0MGFhMDA1NzZiNzE0NDliOWFhY2FiMmQ5OWFm
ZmFhNWM1MzQwMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRHJh
Z0FuZERyb3BUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9E
cmFnQW5kRHJvcFRlc3RzSU9TLm1tCkBAIC04NzksOCArODc5LDggQEAgVEVTVChEcmFnQW5kRHJv
cFRlc3RzLCBFeHRlcm5hbFNvdXJjZUJvbGRTeXN0ZW1BdHRyaWJ1dGVkU3RyaW5nVG9Db250ZW50
RWRpdGFibGUKIAogICAgIGF1dG8gc2ltdWxhdG9yID0gYWRvcHROUyhbW0RyYWdBbmREcm9wU2lt
dWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOwogICAgIE5TRGlj
dGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlGb250
IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAqcmlj
aFRleHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJUaGlz
IGlzIGEgdGVzdCIgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc107Ci0gICAgYXV0byBpdGVtUHJv
dmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnJp
Y2hUZXh0XSk7CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhpcyBpcyBhIHRlc3QiIGF0dHJpYnV0ZXM6dGV4
dEF0dHJpYnV0ZXNdKTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Q
cm92aWRlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6cmljaFRleHQuZ2V0KCldKTsKICAgICBbc2lt
dWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVyczpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07
CiAgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDMwMCwgNDAwKSB0bzpDR1BvaW50
TWFrZSgxMDAsIDMwMCldOwogCkBAIC04OTUsOCArODk1LDggQEAgVEVTVChEcmFnQW5kRHJvcFRl
c3RzLCBFeHRlcm5hbFNvdXJjZUNvbG9yZWRBdHRyaWJ1dGVkU3RyaW5nVG9Db250ZW50RWRpdGFi
bGUpCiAKICAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEcmFnQW5kRHJvcFNpbXVsYXRv
ciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBOU0RpY3Rpb25h
cnkgKnRleHRBdHRyaWJ1dGVzID0gQHsgTlNGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lOiBb
VUlDb2xvciByZWRDb2xvcl0gfTsKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKnJpY2hUZXh0ID0g
W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiVGhpcyBpcyBhIHRl
c3QiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAgIGF1dG8gaXRlbVByb3ZpZGVyID0g
YWRvcHROUyhbW05TSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0V2l0aE9iamVjdDpyaWNoVGV4dF0p
OworICAgIGF1dG8gcmljaFRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzpAIlRoaXMgaXMgYSB0ZXN0IiBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1
dGVzXSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbTlNJdGVtUHJvdmlkZXIg
YWxsb2NdIGluaXRXaXRoT2JqZWN0OnJpY2hUZXh0LmdldCgpXSk7CiAgICAgW3NpbXVsYXRvciBz
ZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdldCgpIF1dOwogICAgIFtz
aW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgzMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMTAw
LCAzMDApXTsKIApAQCAtMTg3Miw4ICsxODcyLDggQEAgVEVTVChEcmFnQW5kRHJvcFRlc3RzLCBE
YXRhVHJhbnNmZXJHZXREYXRhUmVhZFBsYWluQW5kUmljaFRleHQpCiAKICAgICBhdXRvIGl0ZW1Q
cm92aWRlciA9IGFkb3B0TlMoW1tOU0l0ZW1Qcm92aWRlciBhbGxvY10gaW5pdF0pOwogICAgIE5T
RGljdGlvbmFyeSAqdGV4dEF0dHJpYnV0ZXMgPSBAeyBOU0ZvbnRBdHRyaWJ1dGVOYW1lOiBbVUlG
b250IGJvbGRTeXN0ZW1Gb250T2ZTaXplOjIwXSB9OwotICAgIE5TQXR0cmlidXRlZFN0cmluZyAq
cmljaFRleHQgPSBbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJX
ZWJLaXQiIGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdOwotICAgIFtpdGVtUHJvdmlkZXIgcmVn
aXN0ZXJPYmplY3Q6cmljaFRleHQgdmlzaWJpbGl0eTpOU0l0ZW1Qcm92aWRlclJlcHJlc2VudGF0
aW9uVmlzaWJpbGl0eUFsbF07CisgICAgYXV0byByaWNoVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJp
YnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAiV2ViS2l0IiBhdHRyaWJ1dGVzOnRl
eHRBdHRyaWJ1dGVzXSk7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDpyaWNoVGV4
dC5nZXQoKSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25WaXNpYmlsaXR5
QWxsXTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OltOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iXSB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVy
UmVwcmVzZW50YXRpb25WaXNpYmlsaXR5QWxsXTsKICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVy
T2JqZWN0OkAiV2ViS2l0IiB2aXNpYmlsaXR5Ok5TSXRlbVByb3ZpZGVyUmVwcmVzZW50YXRpb25W
aXNpYmlsaXR5QWxsXTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCmluZGV4IDI1ZDc4MjQ1MWVhNmMyMDQ0YWYyZGQx
YTJhODY3NWIyOTk2ZjY5YWEuLmQ4NzcwODg5MzRhYzM1OTdjZGM0ZTVjNjcxMWJhODExM2E5ZDMx
ZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5w
dXRUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2Fy
ZElucHV0VGVzdHNJT1MubW0KQEAgLTcxLDIzICs3MSwyMyBAQCArIChVSUltYWdlICopYmFyQnV0
dG9uSWNvbgogKyAoVUlCYXJCdXR0b25JdGVtR3JvdXAgKilsZWFkaW5nSXRlbXNGb3JXZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNl
VG9rZW47Ci0gICAgc3RhdGljIFVJQmFyQnV0dG9uSXRlbUdyb3VwICpzaGFyZWRJdGVtczsKKyAg
ICBzdGF0aWMgUmV0YWluUHRyPFVJQmFyQnV0dG9uSXRlbUdyb3VwPiBzaGFyZWRJdGVtczsKICAg
ICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4sIF57CiAgICAgICAgIGF1dG8gbGVhZGluZ0l0ZW0g
PSBhZG9wdE5TKFtbVUlCYXJCdXR0b25JdGVtIGFsbG9jXSBpbml0V2l0aEltYWdlOnNlbGYuYmFy
QnV0dG9uSWNvbiBzdHlsZTpVSUJhckJ1dHRvbkl0ZW1TdHlsZVBsYWluIHRhcmdldDp3ZWJWaWV3
IGFjdGlvbjpAc2VsZWN0b3IoZmFrZUxlYWRpbmdCYXJCdXR0b25JdGVtQWN0aW9uKV0pOwotICAg
ICAgICBzaGFyZWRJdGVtcyA9IFtbVUlCYXJCdXR0b25JdGVtR3JvdXAgYWxsb2NdIGluaXRXaXRo
QmFyQnV0dG9uSXRlbXM6QFsgbGVhZGluZ0l0ZW0uZ2V0KCkgXSByZXByZXNlbnRhdGl2ZUl0ZW06
bmlsXTsKKyAgICAgICAgc2hhcmVkSXRlbXMgPSBhZG9wdE5TKFtbVUlCYXJCdXR0b25JdGVtR3Jv
dXAgYWxsb2NdIGluaXRXaXRoQmFyQnV0dG9uSXRlbXM6QFsgbGVhZGluZ0l0ZW0uZ2V0KCkgXSBy
ZXByZXNlbnRhdGl2ZUl0ZW06bmlsXSk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIHNoYXJlZEl0ZW1z
OworICAgIHJldHVybiBzaGFyZWRJdGVtcy5nZXQoKTsKIH0KIAogKyAoVUlCYXJCdXR0b25JdGVt
R3JvdXAgKil0cmFpbGluZ0l0ZW1zRm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldwogewog
ICAgIHN0YXRpYyBkaXNwYXRjaF9vbmNlX3Qgb25jZVRva2VuOwotICAgIHN0YXRpYyBVSUJhckJ1
dHRvbkl0ZW1Hcm91cCAqc2hhcmVkSXRlbXM7CisgICAgc3RhdGljIFJldGFpblB0cjxVSUJhckJ1
dHRvbkl0ZW1Hcm91cD4gc2hhcmVkSXRlbXM7CiAgICAgZGlzcGF0Y2hfb25jZSgmb25jZVRva2Vu
LCBeewogICAgICAgICBhdXRvIHRyYWlsaW5nSXRlbSA9IGFkb3B0TlMoW1tVSUJhckJ1dHRvbkl0
ZW0gYWxsb2NdIGluaXRXaXRoSW1hZ2U6c2VsZi5iYXJCdXR0b25JY29uIHN0eWxlOlVJQmFyQnV0
dG9uSXRlbVN0eWxlUGxhaW4gdGFyZ2V0OndlYlZpZXcgYWN0aW9uOkBzZWxlY3RvcihmYWtlVHJh
aWxpbmdCYXJCdXR0b25JdGVtQWN0aW9uKV0pOwotICAgICAgICBzaGFyZWRJdGVtcyA9IFtbVUlC
YXJCdXR0b25JdGVtR3JvdXAgYWxsb2NdIGluaXRXaXRoQmFyQnV0dG9uSXRlbXM6QFsgdHJhaWxp
bmdJdGVtLmdldCgpIF0gcmVwcmVzZW50YXRpdmVJdGVtOm5pbF07CisgICAgICAgIHNoYXJlZEl0
ZW1zID0gYWRvcHROUyhbW1VJQmFyQnV0dG9uSXRlbUdyb3VwIGFsbG9jXSBpbml0V2l0aEJhckJ1
dHRvbkl0ZW1zOkBbIHRyYWlsaW5nSXRlbS5nZXQoKSBdIHJlcHJlc2VudGF0aXZlSXRlbTpuaWxd
KTsKICAgICB9KTsKLSAgICByZXR1cm4gc2hhcmVkSXRlbXM7CisgICAgcmV0dXJuIHNoYXJlZEl0
ZW1zLmdldCgpOwogfQogCiAtIChVSVRleHRJbnB1dEFzc2lzdGFudEl0ZW0gKilpbnB1dEFzc2lz
dGFudEl0ZW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1dLU2Ny
b2xsVmlld0RlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3Jv
bGxWaWV3RGVsZWdhdGUubW0KaW5kZXggZDIyOGMyM2QxZGUzYWU0ZDAxNDY2ODU2MWU4MTgyNjRm
NjZlNmFlZS4uMjU0OGYxN2ZlN2EzNzUyYTgwNTdmMjI2MzA2M2I2ODliMzRjMDFiMiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvV0tTY3JvbGxWaWV3RGVsZWdh
dGUubW0KQEAgLTU0LDE2ICs1NCwxNiBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRF
U1QoV0tXZWJWaWV3LCBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoKQogewotICAgIFdLV2ViVmll
dyAqd2ViVmlldyA9IFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0XSk7CiAgICAgYXV0byBkZWxlZ2F0ZUZv
clNjcm9sbFZpZXcgPSBhZG9wdE5TKFtbVGVzdERlbGVnYXRlRm9yU2Nyb2xsVmlldyBhbGxvY10g
aW5pdF0pOwogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICB3ZWJWaWV3LnNjcm9sbFZp
ZXcuZGVsZWdhdGUgPSBkZWxlZ2F0ZUZvclNjcm9sbFZpZXcuZ2V0KCk7CisgICAgICAgIFt3ZWJW
aWV3IHNjcm9sbFZpZXddLmRlbGVnYXRlID0gZGVsZWdhdGVGb3JTY3JvbGxWaWV3LmdldCgpOwog
ICAgIH0KICAgICBkZWxlZ2F0ZUlzRGVhbGxvY2F0ZWQgPSBmYWxzZTsKICAgICBkZWxlZ2F0ZUZv
clNjcm9sbFZpZXcgPSBuaWw7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkZWxlZ2F0
ZUlzRGVhbGxvY2F0ZWQpOwogCi0gICAgRVhQRUNUX05VTEwod2ViVmlldy5zY3JvbGxWaWV3LmRl
bGVnYXRlKTsKKyAgICBFWFBFQ1RfTlVMTChbd2ViVmlldyBzY3JvbGxWaWV3XS5kZWxlZ2F0ZSk7
CiB9CiAKIH0KQEAgLTkzLDIzICs5MywyMyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
IFRFU1QoV0tXZWJWaWV3LCBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNhbm5vdE92ZXJyaWRlVmlld0Zv
clpvb21pbmcpCiB7Ci0gICAgVGVzdFdLV2ViVmlldyAqd2ViVmlldyA9IFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdF07Ci0gICAgV0tTY3JvbGxWaWV3RGVsZWdhdGVXaXRoVmlld0Zvclpvb21p
bmdPdmVycmlkZGVuICpkZWxlZ2F0ZUZvclNjcm9sbFZpZXcgPSBbW1dLU2Nyb2xsVmlld0RlbGVn
YXRlV2l0aFZpZXdGb3Jab29taW5nT3ZlcnJpZGRlbiBhbGxvY10gaW5pdF07CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IGRlbGVnYXRlRm9yU2Nyb2xsVmlldyA9IGFkb3B0TlMoW1tXS1Njcm9sbFZpZXdEZWxlZ2F0ZVdp
dGhWaWV3Rm9yWm9vbWluZ092ZXJyaWRkZW4gYWxsb2NdIGluaXRdKTsKICAgICBAYXV0b3JlbGVh
c2Vwb29sIHsKLSAgICAgICAgd2ViVmlldy5zY3JvbGxWaWV3LmRlbGVnYXRlID0gZGVsZWdhdGVG
b3JTY3JvbGxWaWV3OworICAgICAgICBbd2ViVmlldyBzY3JvbGxWaWV3XS5kZWxlZ2F0ZSA9IGRl
bGVnYXRlRm9yU2Nyb2xsVmlldy5nZXQoKTsKICAgICB9CiAKICAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0naW5p
dGlhbC1zY2FsZT0xJz4iXTsKICAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVw
ZGF0ZV07CiAKICAgICAvLyBIYXZlIFdLU2Nyb2xsVmlldydzIGV4dGVybmFsIGRlbGVnYXRlIHJl
dHVybiBhIHZpZXcgd2l0aCBzY2FsZT0yIGZyb20gdmlld0Zvclpvb21pbmdJblNjcm9sbFZpZXcu
Ci0gICAgZGVsZWdhdGVGb3JTY3JvbGxWaWV3Lm92ZXJyaWRlU2NhbGUgPSAyOworICAgIFtkZWxl
Z2F0ZUZvclNjcm9sbFZpZXcgc2V0T3ZlcnJpZGVTY2FsZToyXTsKIAogICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBjb250ZW50
PSdpbml0aWFsLXNjYWxlPTInPiJdOwogICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewotICAgICAgICB3ZWJWaWV3LnNj
cm9sbFZpZXcuZGVsZWdhdGUgPSBuaWw7CisgICAgICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLmRl
bGVnYXRlID0gbmlsOwogICAgIH0KIAogICAgIEVYUEVDVF9GQUxTRShkaWRDYWxsVmlld0Zvclpv
b21pbmdJblNjcm9sbFZpZXcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9tYWMvQ2FuZGlkYXRlVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9D
YW5kaWRhdGVUZXN0cy5tbQppbmRleCBhYmZjY2EyMTEwMWUwZjEwN2NmYWZjZTg3ZmU1NDllNzQx
YTIwNWNlLi5jNTgxYzUzMDUxZGE4ODUzMTY3ODZmOTUzNWRlZTkwNzlkODE5N2VjIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9DYW5kaWRhdGVUZXN0cy5tbQpAQCAtOTAs
OCArOTAsOCBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNUKENhbmRpZGF0ZVRlc3Rz
LCBESVNBQkxFRF9Eb05vdExlYWtWaWV3VGhhdExvYWRzRWRpdGFibGVBcmVhKQogewogICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tEb05vdExlYWtXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMTAwLCAxMDApXSk7Ci0gICAgRG9Ob3RMZWFrRnJhbWVMb2Fk
RGVsZWdhdGUgKmRlbGVnYXRlID0gW1tEb05vdExlYWtGcmFtZUxvYWREZWxlZ2F0ZSBhbGxvY10g
aW5pdF07Ci0gICAgW3dlYlZpZXcgc2V0RnJhbWVMb2FkRGVsZWdhdGU6ZGVsZWdhdGVdOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbRG9Ob3RMZWFrRnJhbWVMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAgICAgCiAgICAgTlNVUkwgKmNvbnRlbnRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiYXV0b2ZvY3VzZWQtdGV4dC1pbnB1dCIgd2l0aEV4dGVuc2lv
bjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CiAgICAg
W1t3ZWJWaWV3IG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpjb250ZW50VVJMXV07CkBAIC0xMDcsOCArMTA3LDggQEAgVEVTVChDYW5kaWRhdGVUZXN0
cywgRElTQUJMRURfUmVxdWVzdENhbmRpZGF0ZXNGb3JUZXh0SW5wdXQpCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAxMDAsIDEwMCldKTsKICAgICBbd2ViVmlldyBmb3JjZVJlcXVlc3RDYW5kaWRhdGVz
Rm9yVGVzdGluZ107Ci0gICAgQ2FuZGlkYXRlUmVxdWVzdEZyYW1lTG9hZERlbGVnYXRlICpkZWxl
Z2F0ZSA9IFtbQ2FuZGlkYXRlUmVxdWVzdEZyYW1lTG9hZERlbGVnYXRlIGFsbG9jXSBpbml0XTsK
LSAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZV07CisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tDYW5kaWRhdGVSZXF1ZXN0RnJhbWVMb2FkRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXRGcmFtZUxvYWREZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CiAgICAgCiAgICAgTlNVUkwgKmNvbnRlbnRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5k
bGVdIFVSTEZvclJlc291cmNlOkAiZm9jdXMtaW5wdXRzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKICAgICBbW3dlYlZpZXcg
bWFpbkZyYW1lXSBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOmNvbnRl
bnRVUkxdXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbW9y
eUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvbWFjL01lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQppbmRleCAwMWU3NDRmNDhiMDRhYWFjZWI2NDdiOGYxMmI2OTYyNTZkNWU1MzNlLi4wNDY3
NjNjODE3NzNlNzE0YzhkYjcxZGZmNmYyNzc3ZGVhYjQ2NmUwIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVtb3J5Q2Fj
aGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC03OCwxNCArNzgsMTQgQEAg
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogVEVTVChXZWJLaXRMZWdhY3ksIERJU0FCTEVEX01l
bW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZSkKIHsKICAgICBAYXV0b3Jl
bGVhc2Vwb29sIHsKLSAgICAgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcxID0gYWRvcHRO
UyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIw
MCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6bmlsXSk7Ci0gICAgICAgIFJldGFpblB0cjxXZWJW
aWV3PiB3ZWJWaWV3MiA9IGFkb3B0TlMoW1tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgMTIwLCAyMDApIGZyYW1lTmFtZTpuaWwgZ3JvdXBOYW1lOm5pbF0pOwor
ICAgICAgICBhdXRvIHdlYlZpZXcxID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAxMjAsIDIwMCkgZnJhbWVOYW1lOm5pbCBncm91cE5hbWU6
bmlsXSk7CisgICAgICAgIGF1dG8gd2ViVmlldzIgPSBhZG9wdE5TKFtbV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDEyMCwgMjAwKSBmcmFtZU5hbWU6bmlsIGdy
b3VwTmFtZTpuaWxdKTsKIAotICAgICAgICBOU1dpbmRvdyogd2luZG93ID0gW1tOU1dpbmRvdyBh
bGxvY10gaW5pdFdpdGhDb250ZW50UmVjdDp3ZWJWaWV3Mi5nZXQoKS5mcmFtZSBzdHlsZU1hc2s6
TlNCb3JkZXJsZXNzV2luZG93TWFzayBiYWNraW5nOk5TQmFja2luZ1N0b3JlQnVmZmVyZWQgZGVm
ZXI6WUVTXTsKLSAgICAgICAgW3dpbmRvdy5jb250ZW50VmlldyBhZGRTdWJ2aWV3OndlYlZpZXcy
LmdldCgpXTsKKyAgICAgICAgYXV0byB3aW5kb3cgPSBhZG9wdE5TKFtbTlNXaW5kb3cgYWxsb2Nd
IGluaXRXaXRoQ29udGVudFJlY3Q6d2ViVmlldzIuZ2V0KCkuZnJhbWUgc3R5bGVNYXNrOk5TQm9y
ZGVybGVzc1dpbmRvd01hc2sgYmFja2luZzpOU0JhY2tpbmdTdG9yZUJ1ZmZlcmVkIGRlZmVyOllF
U10pOworICAgICAgICBbW3dpbmRvdyBjb250ZW50Vmlld10gYWRkU3Vidmlldzp3ZWJWaWV3Mi5n
ZXQoKV07CiAKLSAgICAgICAgUmV0YWluUHRyPE1lbW9yeUNhY2hlUHJ1bmVUZXN0UmVzb3VyY2VM
b2FkRGVsZWdhdGU+IHJlc291cmNlTG9hZERlbGVnYXRlID0gYWRvcHROUyhbW01lbW9yeUNhY2hl
UHJ1bmVUZXN0UmVzb3VyY2VMb2FkRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgcmVz
b3VyY2VMb2FkRGVsZWdhdGUuZ2V0KCktPl93aW5kb3cgPSB3aW5kb3c7CisgICAgICAgIGF1dG8g
cmVzb3VyY2VMb2FkRGVsZWdhdGUgPSBhZG9wdE5TKFtbTWVtb3J5Q2FjaGVQcnVuZVRlc3RSZXNv
dXJjZUxvYWREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICByZXNvdXJjZUxvYWREZWxl
Z2F0ZS5nZXQoKS0+X3dpbmRvdyA9IHdpbmRvdy5nZXQoKTsKICAgICAgICAgd2ViVmlldzEuZ2V0
KCkucmVzb3VyY2VMb2FkRGVsZWdhdGUgPSByZXNvdXJjZUxvYWREZWxlZ2F0ZS5nZXQoKTsKIAog
ICAgICAgICBbW3dlYlZpZXcxLmdldCgpIG1haW5GcmFtZV0gbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNl
OkAiTWVtb3J5Q2FjaGVQcnVuZVdpdGhpblJlc291cmNlTG9hZERlbGVnYXRlIiB3aXRoRXh0ZW5z
aW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV1dOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvaW9zL21haW5JT1MubW0KaW5kZXggMjM4OTEyMzdlY2M2ZGE2YTBmOTgxYzM5
OWZkZjQyNjdkZTY1OTkzYy4uNmVkNzY3ZTkyOTQ3NTI5MDkyY2RlZjNjODhjYjZlNzA0MzUwZjQ2
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvbWFpbklPUy5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2lvcy9tYWluSU9TLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1w
b3J0ICJUZXN0c0NvbnRyb2xsZXIuaCIKIAogI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIGludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikKIHsKQEAgLTM1LDExICszNiwxMSBAQCBpbnQgbWFpbihpbnQgYXJnYywg
Y2hhcioqIGFyZ3YpCiAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHJlbW92ZVBlcnNpc3RlbnREb21haW5Gb3JOYW1lOkAiVGVzdFdlYktpdEFQSSJdOwogCiAg
ICAgICAgIC8vIFNldCB1cCB1c2VyIGRlZmF1bHRzLgotICAgICAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJsZUNvcHld
OworICAgICAgICBhdXRvIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJndW1lbnRE
b21haW5dIG11dGFibGVDb3B5XSk7CiAgICAgICAgIGlmICghYXJndW1lbnREb21haW4pCi0gICAg
ICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5p
dF07CisgICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4gZm9yTmFtZTpO
U0FyZ3VtZW50RG9tYWluXTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJE
ZWZhdWx0c10gc2V0Vm9sYXRpbGVEb21haW46YXJndW1lbnREb21haW4uZ2V0KCkgZm9yTmFtZTpO
U0FyZ3VtZW50RG9tYWluXTsKIAogI2lmbmRlZiBCVUlMRElOR19URVNUX1dURgogICAgICAgICBb
V0tQcm9jZXNzUG9vbCBfc2V0TGlua2VkT25PckFmdGVyRXZlcnl0aGluZ0ZvclRlc3RpbmddOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvVGVzdEZvbnRPcHRpb25zLm1tCmluZGV4IDkzNTc2Yjkx
NGYyYTY5ZDI1ZTVmNDgwOWRlN2NiNjA4MWJkY2YzZjEuLmNiNDVjNWRjN2YzYjlkOWRkODA2YzRh
YjkxMGZhNTUwYzU0ODNkZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1Rl
c3RGb250T3B0aW9ucy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9UZXN0Rm9udE9w
dGlvbnMubW0KQEAgLTY1LDEzICs2NSwxMyBAQCBAc3ludGhlc2l6ZSBoYXNNdWx0aXBsZUZvbnRz
ID0gX2hhc011bHRpcGxlRm9udHM7CiAKICsgKGluc3RhbmNldHlwZSlzaGFyZWRJbnN0YW5jZQog
ewotICAgIHN0YXRpYyBUZXN0Rm9udE9wdGlvbnMgKnNoYXJlZEluc3RhbmNlOworICAgIHN0YXRp
YyBSZXRhaW5QdHI8VGVzdEZvbnRPcHRpb25zPiBzaGFyZWRJbnN0YW5jZTsKICAgICBzdGF0aWMg
ZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKICAgICBkaXNwYXRjaF9vbmNlKCZvbmNlVG9rZW4s
IF57CiAgICAgICAgIE5TRm9udE9wdGlvbnMgKnNoYXJlZEZvbnRPcHRpb25zID0gW05TQ2xhc3NG
cm9tU3RyaW5nKEAiTlNGb250T3B0aW9ucyIpIHNoYXJlZEZvbnRPcHRpb25zXTsKLSAgICAgICAg
c2hhcmVkSW5zdGFuY2UgPSBbW1Rlc3RGb250T3B0aW9ucyBhbGxvY10gaW5pdFdpdGhGb250T3B0
aW9uczpzaGFyZWRGb250T3B0aW9uc107CisgICAgICAgIHNoYXJlZEluc3RhbmNlID0gYWRvcHRO
UyhbW1Rlc3RGb250T3B0aW9ucyBhbGxvY10gaW5pdFdpdGhGb250T3B0aW9uczpzaGFyZWRGb250
T3B0aW9uc10pOwogICAgIH0pOwotICAgIHJldHVybiBzaGFyZWRJbnN0YW5jZTsKKyAgICByZXR1
cm4gc2hhcmVkSW5zdGFuY2UuZ2V0KCk7CiB9CiAKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZv
bnRPcHRpb25zOihOU0ZvbnRPcHRpb25zICopZm9udE9wdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9t
YWluTWFjLm1tCmluZGV4IGQ5ZDZjNjE4YzIyMjM1NGI5ZWE1Zjg0NDgyNjc1MGJjNTEyMjg3YWYu
LjcwYjFmZGVjODhhYmY0YWZkNzk1OTNhYzBiMjVhZTBlNGNjNzNmNmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvbWFjL21haW5NYWMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvbWFpbk1hYy5tbQpAQCAtMjcsNiArMjcsNyBAQAogI2ltcG9ydCAiVGVzdHNDb250cm9s
bGVyLmgiCiAKICNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiBleHRlcm4gIkMiIHZvaWQgX0JlZ2luRXZlbnRSZWNlaXB0
T25UaHJlYWQodm9pZCk7CiAKQEAgLTM3LDkgKzM4LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQogICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSByZW1vdmVQZXJzaXN0ZW50RG9tYWluRm9yTmFtZTpAIlRlc3RXZWJLaXRBUEkiXTsKIAogICAg
ICAgICAvLyBTZXQgYSB1c2VyIGRlZmF1bHQgZm9yIFRlc3RXZWJLaXRBUEkgdG8gYnlwYXNzIGFs
bCBsaW5rZWQtb24tb3ItYWZ0ZXIgY2hlY2tzIGluIFdlYktpdAotICAgICAgICBOU011dGFibGVE
aWN0aW9uYXJ5ICphcmd1bWVudERvbWFpbiA9IFtbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSB2b2xhdGlsZURvbWFpbkZvck5hbWU6TlNBcmd1bWVudERvbWFpbl0gbXV0YWJs
ZUNvcHldOworICAgICAgICBhdXRvIGFyZ3VtZW50RG9tYWluID0gYWRvcHROUyhbW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gdm9sYXRpbGVEb21haW5Gb3JOYW1lOk5TQXJn
dW1lbnREb21haW5dIG11dGFibGVDb3B5XSk7CiAgICAgICAgIGlmICghYXJndW1lbnREb21haW4p
Ci0gICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF07CisgICAgICAgICAgICBhcmd1bWVudERvbWFpbiA9IGFkb3B0TlMoW1tOU011dGFi
bGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICAgICAgLy8gQ0FVVElPTjogRGVmYXVs
dHMgc2V0IGhlcmUgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHByb3BhZ2F0ZWQgdG8gdGhlCiAgICAg
ICAgIC8vIFdlYiBDb250ZW50IHByb2Nlc3MuIFRob3NlIGxpc3RlZCBiZWxvdyBhcmUgcHJvcGFn
YXRlZCBtYW51YWxseS4KQEAgLTUyLDcgKzUzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQogICAgICAgICB9OwogCiAgICAgICAgIFthcmd1bWVudERvbWFpbiBhZGRFbnRyaWVz
RnJvbURpY3Rpb25hcnk6ZGljdF07Ci0gICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRV
c2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluIGZvck5hbWU6TlNB
cmd1bWVudERvbWFpbl07CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOmFyZ3VtZW50RG9tYWluLmdldCgpIGZvck5hbWU6TlNB
cmd1bWVudERvbWFpbl07CiAKICNpZm5kZWYgQlVJTERJTkdfVEVTVF9XVEYKICAgICAgICAgW1dL
UHJvY2Vzc1Bvb2wgX3NldExpbmtlZE9uT3JBZnRlckV2ZXJ5dGhpbmdGb3JUZXN0aW5nXTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvaW9zL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0KaW5kZXggYzQxODIzMGYz
YjRmZGU3MTlhYzZjY2M4NGI3NDJkYmVjYTE0ZDI0YS4uYzk4YjllOTk2Y2QxYzhkZTk4OWY4ZWVj
YWZmY2FmNmNkNDVjYjhiMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9pb3MvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJJT1MubW0KQEAgLTQ3LDcgKzQ3LDggQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWMKICAgICAv
LyBPdGhlciBwbGF0Zm9ybXMgbWF5IGJlIGRpZmZlcmVudC4KICAgICBpZiAobV9nbG9iYWxOb3Rp
ZmljYXRpb25IYW5kbGVyKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgbV9nbG9iYWxOb3Rp
ZmljYXRpb25IYW5kbGVyID0gW1tBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciBhbGxv
Y10gaW5pdF07CisKKyAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtb
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIgYWxsb2NdIGluaXRdKTsKICAgICBbbV9n
bG9iYWxOb3RpZmljYXRpb25IYW5kbGVyIHNldENhbGxiYWNrOmZ1bmN0aW9uQ2FsbGJhY2tdOwog
ICAgIFttX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgc3RhcnRPYnNlcnZpbmddOwogICAgIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNv
Y29hLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jb2NvYS9UZXN0Q29udHJvbGxlckNvY29h
Lm1tCmluZGV4IGNlMzZmYmEyZDRiYjE1MWY4NzllMzFhMTU0MmQ0ZDA2ZTllMjlkZTYuLjM5MjBj
NGE3MDMwNDJmZWVlNjE0OTZlMWUxZDczOGJiY2M5Zjc4MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvY29jb2EvVGVzdENvbnRyb2xsZXJDb2NvYS5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2NvY29hL1Rlc3RDb250cm9sbGVyQ29jb2EubW0KQEAgLTU5LDM2ICs1
OSw0NiBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3RhdGljIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKmdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uOwotc3RhdGljIFRlc3RXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGUgKmdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudDsKK3N0YXRp
YyBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4mIGdsb2JhbFdlYlZpZXdDb25maWd1
cmF0aW9uKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24+PiBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbjsKKyAgICByZXR1cm4g
Z2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb247Cit9CisKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdl
YnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZT4mIGdsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNs
aWVudCgpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxUZXN0V2Vic2l0
ZURhdGFTdG9yZURlbGVnYXRlPj4gZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50
OworICAgIHJldHVybiBnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQ7Cit9CiAK
IHZvaWQgaW5pdGlhbGl6ZVdlYlZpZXdDb25maWd1cmF0aW9uKGNvbnN0IGNoYXIqIGxpYnJhcnlQ
YXRoLCBXS1N0cmluZ1JlZiBpbmplY3RlZEJ1bmRsZVBhdGgsIFdLQ29udGV4dFJlZiBjb250ZXh0
LCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRDb25maWd1cmF0aW9uKQogewotICAg
IGF1dG8gb2xkR2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKGdsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uKTsKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiA9IFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CisgICAgZ2xvYmFsV2ViVmlld0NvbmZp
Z3VyYXRpb24oKSA9IFsmXSB7CisgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMo
W1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKLSAgICBnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbCA9IChfX2JyaWRnZSBXS1Byb2Nlc3NQb29sICop
Y29udGV4dDsKLSAgICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3Jl
ID0gKF9fYnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZSAqKVRlc3RDb250cm9sbGVyOjpkZWZhdWx0
V2Vic2l0ZURhdGFTdG9yZSgpOwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9hbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyA9IFlFUzsKLSAgICBnbG9iYWxXZWJWaWV3Q29u
ZmlndXJhdGlvbi5fYWxsb3dUb3BOYXZpZ2F0aW9uVG9EYXRhVVJMcyA9IFlFUzsKLSAgICBnbG9i
YWxXZWJWaWV3Q29uZmlndXJhdGlvbi5fYXBwbGVQYXlFbmFibGVkID0gWUVTOworICAgICAgICBb
Y29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooX19icmlkZ2UgV0tQcm9jZXNzUG9vbCAqKWNv
bnRleHRdOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOihfX2Jy
aWRnZSBXS1dlYnNpdGVEYXRhU3RvcmUgKilUZXN0Q29udHJvbGxlcjo6ZGVmYXVsdFdlYnNpdGVE
YXRhU3RvcmUoKV07CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRBbGxvd1VuaXZlcnNhbEFj
Y2Vzc0Zyb21GaWxlVVJMczpZRVNdOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0QWxsb3dU
b3BOYXZpZ2F0aW9uVG9EYXRhVVJMczpZRVNdOworICAgICAgICBbY29uZmlndXJhdGlvbiBfc2V0
QXBwbGVQYXlFbmFibGVkOllFU107CiAKLSAgICBhdXRvIG9sZEdsb2JhbFdlYnNpdGVEYXRhU3Rv
cmVEZWxlZ2F0ZUNsaWVudCA9IGFkb3B0TlMoZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRl
Q2xpZW50KTsKLSAgICBnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQgPSBbW1Rl
c3RXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGUgYWxsb2NdIGluaXRdOwotICAgIFtnbG9iYWxXZWJW
aWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIHNldF9kZWxlZ2F0ZTpnbG9iYWxXZWJz
aXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnRdOworICAgICAgICBnbG9iYWxXZWJzaXRlRGF0YVN0
b3JlRGVsZWdhdGVDbGllbnQoKSA9IGFkb3B0TlMoW1tUZXN0V2Vic2l0ZURhdGFTdG9yZURlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0
b3JlXSBzZXRfZGVsZWdhdGU6Z2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVnYXRlQ2xpZW50KCku
Z2V0KCldOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBnbG9iYWxXZWJWaWV3Q29u
ZmlndXJhdGlvbi5hbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrID0gWUVTOwotICAgIGdsb2JhbFdl
YlZpZXdDb25maWd1cmF0aW9uLl9pbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGlu
ZUF0dHJpYnV0ZSA9IE5POwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9pbnZpc2li
bGVBdXRvcGxheU5vdFBlcm1pdHRlZCA9IE5POwotICAgIGdsb2JhbFdlYlZpZXdDb25maWd1cmF0
aW9uLl9tZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHkgPSBZRVM7Ci0gICAgZ2xvYmFsV2ViVmll
d0NvbmZpZ3VyYXRpb24ucmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFjayA9IE5POwor
ICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRBbGxvd3NJbmxpbmVNZWRpYVBsYXliYWNrOllFU107
CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQ
bGF5c0lubGluZUF0dHJpYnV0ZTpOT107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9zZXRJbnZp
c2libGVBdXRvcGxheU5vdFBlcm1pdHRlZDpOT107CisgICAgICAgIFtjb25maWd1cmF0aW9uIF9z
ZXRNZWRpYURhdGFMb2Fkc0F1dG9tYXRpY2FsbHk6WUVTXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRp
b24gc2V0UmVxdWlyZXNVc2VyQWN0aW9uRm9yTWVkaWFQbGF5YmFjazpOT107CiAjZW5kaWYKLSAg
ICBnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5tZWRpYVR5cGVzUmVxdWlyaW5nVXNlckFjdGlv
bkZvclBsYXliYWNrID0gV0tBdWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmU7CisgICAgICAgIFtjb25m
aWd1cmF0aW9uIHNldE1lZGlhVHlwZXNSZXF1aXJpbmdVc2VyQWN0aW9uRm9yUGxheWJhY2s6V0tB
dWRpb3Zpc3VhbE1lZGlhVHlwZU5vbmVdOwogCiAjaWYgVVNFKFNZU1RFTV9QUkVWSUVXKQotICAg
IGdsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uLl9zeXN0ZW1QcmV2aWV3RW5hYmxlZCA9IFlFUzsK
KyAgICAgICAgW2NvbmZpZ3VyYXRpb24gX3NldFN5c3RlbVByZXZpZXdFbmFibGVkOllFU107CiAj
ZW5kaWYKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CisgICAgfSgpOwogfQogCiB2b2lk
IFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSgpCkBAIC0xMDcsMTIgKzEx
NywxMiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjb2NvYVBsYXRmb3JtSW5pdGlhbGl6ZSgpCiAK
IFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1Db250ZXh0KCkKIHsKLSAgICBy
ZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5w
cm9jZXNzUG9vbDsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilbZ2xvYmFsV2Vi
Vmlld0NvbmZpZ3VyYXRpb24oKSBwcm9jZXNzUG9vbF07CiB9CiAKIFdLUHJlZmVyZW5jZXNSZWYg
VGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUHJlZmVyZW5jZXMoKQogewotICAgIHJldHVybiAoX19i
cmlkZ2UgV0tQcmVmZXJlbmNlc1JlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi5wcmVmZXJl
bmNlczsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdLUHJlZmVyZW5jZXNSZWYpW2dsb2JhbFdlYlZp
ZXdDb25maWd1cmF0aW9uKCkgcHJlZmVyZW5jZXNdOwogfQogCiBUZXN0RmVhdHVyZXMgVGVzdENv
bnRyb2xsZXI6OnBsYXRmb3JtU3BlY2lmaWNGZWF0dXJlT3ZlcnJpZGVzRGVmYXVsdHNGb3JUZXN0
KGNvbnN0IFRlc3RDb21tYW5kJikgY29uc3QKQEAgLTE0MywxMiArMTUzLDEyIEBAIHZvaWQgVGVz
dENvbnRyb2xsZXI6OnBsYXRmb3JtSW5pdGlhbGl6ZURhdGFTdG9yZShXS1BhZ2VDb25maWd1cmF0
aW9uUmVmLCBjb25zdCBUCiAjZW5kaWYKICAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gKF9f
YnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3Jl
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOndlYnNpdGVEYXRhU3RvcmVDb25maWcuZ2V0
KCldKS5nZXQoKTsKICAgICB9IGVsc2UKLSAgICAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gKF9f
YnJpZGdlIFdLV2Vic2l0ZURhdGFTdG9yZVJlZilnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlOworICAgICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSAoX19icmlkZ2Ug
V0tXZWJzaXRlRGF0YVN0b3JlUmVmKVtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdlYnNp
dGVEYXRhU3RvcmVdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjpwbGF0Zm9ybUNyZWF0ZVdl
YlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiwgY29uc3QgVGVzdE9wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgYXV0byBjb3BpZWRDb25maWd1cmF0aW9uID0gYWRvcHROUyhbZ2xvYmFsV2ViVmll
d0NvbmZpZ3VyYXRpb24gY29weV0pOworICAgIGF1dG8gY29waWVkQ29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkgY29weV0pOwogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAob3B0aW9ucy51c2VEYXRhRGV0ZWN0aW9uKCkpCkBAIC0x
OTEsNyArMjAxLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVXZWJWaWV3
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYsIGNvbnN0IFRlc3RPcHQKIAogUGxhdGZvcm1XZWJWaWV3
KiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1DcmVhdGVPdGhlclBhZ2UoUGxhdGZvcm1XZWJWaWV3
KiBwYXJlbnRWaWV3LCBXS1BhZ2VDb25maWd1cmF0aW9uUmVmLCBjb25zdCBUZXN0T3B0aW9ucyYg
b3B0aW9ucykKIHsKLSAgICBhdXRvIG5ld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbiBjb3B5XSk7CisgICAgYXV0byBuZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBjb3B5XSk7CiAgICAgW25ld0Nv
bmZpZ3VyYXRpb24gX3NldFJlbGF0ZWRXZWJWaWV3OnN0YXRpY19jYXN0PFdLV2ViVmlldyo+KHBh
cmVudFZpZXctPnBsYXRmb3JtVmlldygpKV07CiAgICAgaWYgKFtuZXdDb25maWd1cmF0aW9uIF9y
ZWxhdGVkV2ViVmlld10pCiAgICAgICAgIFtuZXdDb25maWd1cmF0aW9uIHNldFdlYnNpdGVEYXRh
U3RvcmU6W25ld0NvbmZpZ3VyYXRpb24gX3JlbGF0ZWRXZWJWaWV3XS5jb25maWd1cmF0aW9uLndl
YnNpdGVEYXRhU3RvcmVdOwpAQCAtMjE0LDcgKzIyNCw3IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OmZpbmlzaENyZWF0aW5nUGxhdGZvcm1XZWJWaWV3KFBsYXRmb3JtV2ViVmlldyogdmlldywgY29u
c3QKIFdLQ29udGV4dFJlZiBUZXN0Q29udHJvbGxlcjo6cGxhdGZvcm1BZGp1c3RDb250ZXh0KFdL
Q29udGV4dFJlZiBjb250ZXh0LCBXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbnRleHRDb25m
aWd1cmF0aW9uKQogewogICAgIGluaXRpYWxpemVXZWJWaWV3Q29uZmlndXJhdGlvbihsaWJyYXJ5
UGF0aEZvclRlc3RpbmcoKSwgaW5qZWN0ZWRCdW5kbGVQYXRoKCksIGNvbnRleHQsIGNvbnRleHRD
b25maWd1cmF0aW9uKTsKLSAgICByZXR1cm4gKF9fYnJpZGdlIFdLQ29udGV4dFJlZilnbG9iYWxX
ZWJWaWV3Q29uZmlndXJhdGlvbi5wcm9jZXNzUG9vbDsKKyAgICByZXR1cm4gKF9fYnJpZGdlIFdL
Q29udGV4dFJlZilbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSBwcm9jZXNzUG9vbF07CiB9
CiAKIHZvaWQgVGVzdENvbnRyb2xsZXI6OnBsYXRmb3JtUnVuVW50aWwoYm9vbCYgZG9uZSwgV1RG
OjpTZWNvbmRzIHRpbWVvdXQpCkBAIC0yOTMsNyArMzAzLDcgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6Y29jb2FSZXNldFN0YXRlVG9Db25zaXN0ZW50VmFsdWVzKGNvbnN0IFRlc3RPcHRpb25zJiBv
cHRpb24KICAgICAgICAgW3BsYXRmb3JtVmlldy5jb25maWd1cmF0aW9uLnByZWZlcmVuY2VzIHNl
dFRleHRJbnRlcmFjdGlvbkVuYWJsZWQ6b3B0aW9ucy50ZXh0SW50ZXJhY3Rpb25FbmFibGVkKCld
OwogICAgIH0KIAotICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQgc2V0
QWxsb3dSYWlzaW5nUXVvdGE6WUVTXTsKKyAgICBbZ2xvYmFsV2Vic2l0ZURhdGFTdG9yZURlbGVn
YXRlQ2xpZW50KCkgc2V0QWxsb3dSYWlzaW5nUXVvdGE6WUVTXTsKIAogICAgIFdlYkNvcmVUZXN0
U3VwcG9ydDo6c2V0QWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXNGb3JUZXN0aW5nKG9wdGlv
bnMuYWRkaXRpb25hbFN1cHBvcnRlZEltYWdlVHlwZXMoKS5jX3N0cigpKTsKIH0KQEAgLTMzNyw3
ICszNDcsNyBAQCB1bnNpZ25lZCBUZXN0Q29udHJvbGxlcjo6aW1hZ2VDb3VudEluR2VuZXJhbFBh
c3RlYm9hcmQoKSBjb25zdAogdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVtb3ZlQWxsU2Vzc2lvbkNy
ZWRlbnRpYWxzKCkKIHsKICAgICBhdXRvIHR5cGVzID0gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBp
bml0V2l0aE9iamVjdHM6X1dLV2Vic2l0ZURhdGFUeXBlQ3JlZGVudGlhbHMsIG5pbF0pOwotICAg
IFtnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlIHJlbW92ZURhdGFP
ZlR5cGVzOnR5cGVzLmdldCgpIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29t
cGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICBbW2dsb2JhbFdlYlZpZXdDb25maWd1cmF0aW9uKCkg
d2Vic2l0ZURhdGFTdG9yZV0gcmVtb3ZlRGF0YU9mVHlwZXM6dHlwZXMuZ2V0KCkgbW9kaWZpZWRT
aW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgewogICAgICAg
ICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZW1vdmVBbGxTZXNzaW9uQ3JlZGVudGlhbHMoKTsK
ICAgICB9XTsKIH0KQEAgLTM0OCw3ICszNTgsNyBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9y
ZSBfZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXNGb3I6cGFyZW50Vmlldy0+cGxhdGZvcm1WaWV3
KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU0FycmF5PE5TU3RyaW5nICo+ICpkb21haW5zKSB7Cisg
ICAgW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbigpIHdlYnNpdGVEYXRhU3RvcmVdIF9nZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllc0ZvcjpwYXJlbnRWaWV3LT5wbGF0Zm9ybVZpZXcoKSBjb21w
bGV0aW9uSGFuZGxlcjpeKE5TQXJyYXk8TlNTdHJpbmcgKj4gKmRvbWFpbnMpIHsKICAgICAgICAg
bV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkUmVjZWl2ZUFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKG1h
a2VWZWN0b3I8U3RyaW5nPihkb21haW5zKSk7CiAgICAgfV07CiB9CkBAIC0zNTksNyArMzY5LDcg
QEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6bG9hZGVkU3VicmVzb3VyY2VEb21haW5zKCkKICAgICBp
ZiAoIXBhcmVudFZpZXcpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBbZ2xvYmFsV2ViVmll
d0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFTdG9yZSBfbG9hZGVkU3VicmVzb3VyY2VEb21haW5z
Rm9yOnBhcmVudFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJh
eTxOU1N0cmluZyAqPiAqZG9tYWlucykgeworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRp
b24oKSB3ZWJzaXRlRGF0YVN0b3JlXSBfbG9hZGVkU3VicmVzb3VyY2VEb21haW5zRm9yOnBhcmVu
dFZpZXctPnBsYXRmb3JtVmlldygpIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNBcnJheTxOU1N0cmlu
ZyAqPiAqZG9tYWlucykgewogICAgICAgICBtX2N1cnJlbnRJbnZvY2F0aW9uLT5kaWRSZWNlaXZl
TG9hZGVkU3VicmVzb3VyY2VEb21haW5zKG1ha2VWZWN0b3I8U3RyaW5nPihkb21haW5zKSk7CiAg
ICAgfV07CiB9CkBAIC0zNzAsMTQgKzM4MCwxNCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpjbGVh
ckxvYWRlZFN1YnJlc291cmNlRG9tYWlucygpCiAgICAgaWYgKCFwYXJlbnRWaWV3KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24ud2Vic2l0ZURhdGFT
dG9yZSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxhdGZv
cm1WaWV3KCldOworICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB3ZWJzaXRlRGF0
YVN0b3JlXSBfY2xlYXJMb2FkZWRTdWJyZXNvdXJjZURvbWFpbnNGb3I6cGFyZW50Vmlldy0+cGxh
dGZvcm1WaWV3KCldOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbmplY3RVc2VyU2NyaXB0
KFdLU3RyaW5nUmVmIHNjcmlwdCkKIHsKICAgICBhdXRvIHVzZXJTY3JpcHQgPSBhZG9wdE5TKFtb
V0tVc2VyU2NyaXB0IGFsbG9jXSBpbml0V2l0aFNvdXJjZTogdG9XVEZTdHJpbmcoc2NyaXB0KSBp
bmplY3Rpb25UaW1lOldLVXNlclNjcmlwdEluamVjdGlvblRpbWVBdERvY3VtZW50U3RhcnQgZm9y
TWFpbkZyYW1lT25seTpOT10pOwogCi0gICAgW1tnbG9iYWxXZWJWaWV3Q29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFVzZXJTY3JpcHQ6IHVzZXJTY3JpcHQuZ2V0KCldOwor
ICAgIFtbZ2xvYmFsV2ViVmlld0NvbmZpZ3VyYXRpb24oKSB1c2VyQ29udGVudENvbnRyb2xsZXJd
IGFkZFVzZXJTY3JpcHQ6IHVzZXJTY3JpcHQuZ2V0KCldOwogfQogCiB2b2lkIFRlc3RDb250cm9s
bGVyOjphZGRUZXN0S2V5VG9LZXljaGFpbihjb25zdCBTdHJpbmcmIHByaXZhdGVLZXlCYXNlNjQs
IGNvbnN0IFN0cmluZyYgYXR0ckxhYmVsLCBjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uVGFnQmFz
ZTY0KQpAQCAtNDQ5LDE0ICs0NTksMTQgQEAgYm9vbCBUZXN0Q29udHJvbGxlcjo6a2V5RXhpc3Rz
SW5LZXljaGFpbihjb25zdCBTdHJpbmcmIGF0dHJMYWJlbCwgY29uc3QgU3RyaW5nJgogCiB2b2lk
IFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1N0b3JhZ2VRdW90YUluY3JlYXNlKGJvb2wgdmFsdWUp
CiB7Ci0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNsaWVudCBzZXRBbGxvd1Jh
aXNpbmdRdW90YTogdmFsdWVdOworICAgIFtnbG9iYWxXZWJzaXRlRGF0YVN0b3JlRGVsZWdhdGVD
bGllbnQoKSBzZXRBbGxvd1JhaXNpbmdRdW90YTogdmFsdWVdOwogfQogCiB2b2lkIFRlc3RDb250
cm9sbGVyOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZShib29sIGFsbG93cykKIHsKICAgICBt
X2FsbG93c0FueVNTTENlcnRpZmljYXRlID0gYWxsb3dzOwogICAgIFdLV2Vic2l0ZURhdGFTdG9y
ZVNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyh3ZWJzaXRlRGF0
YVN0b3JlKCksIGFsbG93cyk7Ci0gICAgW2dsb2JhbFdlYnNpdGVEYXRhU3RvcmVEZWxlZ2F0ZUNs
aWVudCBzZXRBbGxvd0FueVNTTENlcnRpZmljYXRlOiBhbGxvd3NdOworICAgIFtnbG9iYWxXZWJz
aXRlRGF0YVN0b3JlRGVsZWdhdGVDbGllbnQoKSBzZXRBbGxvd0FueVNTTENlcnRpZmljYXRlOiBh
bGxvd3NdOwogfQogCiB2b2lkIFRlc3RDb250cm9sbGVyOjppbnN0YWxsQ3VzdG9tTWVudUFjdGlv
bihjb25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgZGlzbWlzc2VzQXV0b21hdGljYWxseSkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dp
bmRvdy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0dlbmVyYXRlZFRvdWNoZXNEZWJ1
Z1dpbmRvdy5tbQppbmRleCA3ZDYzZjMzODU5ZDZkODNjNjE2MzhlZWM1NDRiOGI0OWI5NDcxMzVi
Li4zZjg3ZTY5MGFjMmViMWY0ZGZjZGMxNWMxMDNlMGU3YWRmNzVmNjI1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9HZW5lcmF0ZWRUb3VjaGVzRGVidWdXaW5kb3cubW0K
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2lu
ZG93Lm1tCkBAIC00MywxMSArNDMsMTEgQEAgQGltcGxlbWVudGF0aW9uIEdlbmVyYXRlZFRvdWNo
ZXNEZWJ1Z1dpbmRvdwogKyAoR2VuZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93ICopc2hhcmVkR2Vu
ZXJhdGVkVG91Y2hlc0RlYnVnV2luZG93CiB7CiAgICAgc3RhdGljIGRpc3BhdGNoX29uY2VfdCBv
bmNlVG9rZW47Ci0gICAgc3RhdGljIEdlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdyAqdG91Y2hX
aW5kb3cgPSBuaWw7CisgICAgc3RhdGljIFJldGFpblB0cjxHZW5lcmF0ZWRUb3VjaGVzRGVidWdX
aW5kb3c+IHRvdWNoV2luZG93OwogICAgIGRpc3BhdGNoX29uY2UoJm9uY2VUb2tlbiwgXnsKLSAg
ICAgICAgdG91Y2hXaW5kb3cgPSBbW0dlbmVyYXRlZFRvdWNoZXNEZWJ1Z1dpbmRvdyBhbGxvY10g
aW5pdF07CisgICAgICAgIHRvdWNoV2luZG93ID0gYWRvcHROUyhbW0dlbmVyYXRlZFRvdWNoZXNE
ZWJ1Z1dpbmRvdyBhbGxvY10gaW5pdF0pOwogICAgIH0pOwotICAgIHJldHVybiB0b3VjaFdpbmRv
dzsKKyAgICByZXR1cm4gdG91Y2hXaW5kb3cuZ2V0KCk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3Iu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQppbmRl
eCAxMmIzNTYxNzMyYTdlNDMzZTM3MDI3ZjEzMmVmNDNkODFmOTAwZGQ1Li4zMWI0NjUwZTM1NjEx
OWMwMjQwMTY2NGNlMDI3Njk0OGRhMDM1ZWQ4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMTYwLDExICsxNjAsOCBAQCBAaW1wbGVt
ZW50YXRpb24gSElERXZlbnRHZW5lcmF0b3IgewogCiArIChISURFdmVudEdlbmVyYXRvciAqKXNo
YXJlZEhJREV2ZW50R2VuZXJhdG9yCiB7Ci0gICAgc3RhdGljIEhJREV2ZW50R2VuZXJhdG9yICpl
dmVudEdlbmVyYXRvciA9IG5pbDsKLSAgICBpZiAoIWV2ZW50R2VuZXJhdG9yKQotICAgICAgICBl
dmVudEdlbmVyYXRvciA9IFtbSElERXZlbnRHZW5lcmF0b3IgYWxsb2NdIGluaXRdOwotCi0gICAg
cmV0dXJuIGV2ZW50R2VuZXJhdG9yOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZXRhaW5Q
dHI8SElERXZlbnRHZW5lcmF0b3I+PiBldmVudEdlbmVyYXRvciA9IGFkb3B0TlMoW1tISURFdmVu
dEdlbmVyYXRvciBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiBldmVudEdlbmVyYXRvci5nZXQo
KS5nZXQoKTsKIH0KIAogKyAoQ0ZJbmRleCluZXh0RXZlbnRDYWxsYmFja0lECmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9UZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rlc3RDb250cm9sbGVyTWFjLm1tCmluZGV4IDRkYjUxMzlk
YmU4OTZlZmEwZjc1ZDczMzEyMzg2ZTljNWJjZTNjYTcuLjg1YTJjNzRkMmQ4YjcwYWNlYjhlMWYx
MjdhZmVlYThkNTJlMjc3YTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFj
L1Rlc3RDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvbWFjL1Rl
c3RDb250cm9sbGVyTWFjLm1tCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBUZXN0Q29udHJvbGxl
cjo6Y29uZmlndXJlQ29udGVudEV4dGVuc2lvbkZvclRlc3QoY29uc3QgVGVzdEludm9jYXRpb24m
IHRlc3QKICAgICBhdXRvIHRlc3RVUkwgPSBhZG9wdENGKFdLVVJMQ29weUNGVVJMKGtDRkFsbG9j
YXRvckRlZmF1bHQsIHRlc3QudXJsKCkpKTsKICAgICBOU1VSTCAqZmlsdGVyVVJMID0gWyhfX2Jy
aWRnZSBOU1VSTCAqKXRlc3RVUkwuZ2V0KCkgVVJMQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOkAi
anNvbiJdOwogCi0gICAgX19ibG9jayBOU1N0cmluZyAqY29udGVudEV4dGVuc2lvblN0cmluZzsK
KyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU1N0cmluZz4gY29udGVudEV4dGVuc2lvblN0cmluZzsK
ICAgICBfX2Jsb2NrIGJvb2wgZG9uZUZldGNoaW5nQ29udGVudEV4dGVuc2lvbiA9IGZhbHNlOwog
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtXS1RSU2Vzc2lvbkRlbGVnYXRlIG5ld10pOwog
ICAgIE5TVVJMU2Vzc2lvbiAqc2Vzc2lvbiA9IFtOU1VSTFNlc3Npb24gc2Vzc2lvbldpdGhDb25m
aWd1cmF0aW9uOltOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uIGVwaGVtZXJhbFNlc3Npb25Db25m
aWd1cmF0aW9uXSBkZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKSBkZWxlZ2F0ZVF1ZXVlOltOU09wZXJh
dGlvblF1ZXVlIG1haW5RdWV1ZV1dOwpAQCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgVGVzdENvbnRy
b2xsZXI6OmNvbmZpZ3VyZUNvbnRlbnRFeHRlbnNpb25Gb3JUZXN0KGNvbnN0IFRlc3RJbnZvY2F0
aW9uJiB0ZXN0CiAgICAgICAgIEFTU0VSVChkYXRhKTsKICAgICAgICAgQVNTRVJUKHJlc3BvbnNl
KTsKICAgICAgICAgQVNTRVJUKCFlcnJvcik7Ci0gICAgICAgIGNvbnRlbnRFeHRlbnNpb25TdHJp
bmcgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aERhdGE6ZGF0YSBlbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ107CisgICAgICAgIGNvbnRlbnRFeHRlbnNpb25TdHJpbmcgPSBhZG9wdE5T
KFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRoRGF0YTpkYXRhIGVuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSk7CiAgICAgICAgIGRvbmVGZXRjaGluZ0NvbnRlbnRFeHRlbnNpb24gPSB0cnVl
OwogICAgIH1dOwogICAgIFt0YXNrIHJlc3VtZV07CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBU
ZXN0Q29udHJvbGxlcjo6Y29uZmlndXJlQ29udGVudEV4dGVuc2lvbkZvclRlc3QoY29uc3QgVGVz
dEludm9jYXRpb24mIHRlc3QKICAgICB9IGVsc2UKICAgICAgICAgdGVtcERpciA9IFtOU1VSTCBm
aWxlVVJMV2l0aFBhdGg6W05TVGVtcG9yYXJ5RGlyZWN0b3J5KCkgc3RyaW5nQnlBcHBlbmRpbmdQ
YXRoQ29tcG9uZW50OkAiQ29udGVudEV4dGVuc2lvbnMiXSBpc0RpcmVjdG9yeTpZRVNdOwogCi0g
ICAgW1tfV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlIHN0b3JlV2l0aFVSTDp0ZW1wRGlyXSBj
b21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJUZXN0Q29udGVudEV4dGVuc2lv
bnMiIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNvbnRlbnRFeHRlbnNpb25TdHJpbmcgY29tcGxl
dGlvbkhhbmRsZXI6XihfV0tVc2VyQ29udGVudEZpbHRlciAqZmlsdGVyLCBOU0Vycm9yICplcnJv
cikKKyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgc3RvcmVXaXRoVVJMOnRlbXBE
aXJdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIlRlc3RDb250ZW50RXh0
ZW5zaW9ucyIgZW5jb2RlZENvbnRlbnRFeHRlbnNpb246Y29udGVudEV4dGVuc2lvblN0cmluZy5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKF9XS1VzZXJDb250ZW50RmlsdGVyICpmaWx0ZXIsIE5T
RXJyb3IgKmVycm9yKQogICAgIHsKICAgICAgICAgaWYgKCFlcnJvcikKICAgICAgICAgICAgIFtt
YWluV2ViVmlldygpLT5wbGF0Zm9ybVZpZXcoKS5jb25maWd1cmF0aW9uLnVzZXJDb250ZW50Q29u
dHJvbGxlciBfYWRkVXNlckNvbnRlbnRGaWx0ZXI6ZmlsdGVyXTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL1dlYktpdFRlc3RSdW5uZXJQYXN0ZWJvYXJkLm1tIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KaW5k
ZXggMTMxOTlkMjRmNTQ5NWI4YzIyMjA2ZjgzMGVjZTI3M2Y4M2ZkZWY5MC4uNWUzMTYzMjcyNjVj
NTQ2YjhmYmI5MDg3N2Y1YTk3MWFkZTIzOGQ3ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9tYWMvV2ViS2l0VGVzdFJ1bm5lclBhc3RlYm9hcmQubW0KQEAgLTQ1LDcg
KzQ1LDcgQEAgQGludGVyZmFjZSBMb2NhbFBhc3RlYm9hcmQgOiBOU1Bhc3RlYm9hcmQKIC0oaWQp
aW5pdFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWU7CiBAZW5kCiAKLXN0YXRpYyBOU011dGFibGVE
aWN0aW9uYXJ5ICpsb2NhbFBhc3RlYm9hcmRzOworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVE
aWN0aW9uYXJ5PiBsb2NhbFBhc3RlYm9hcmRzOwogCiBAaW1wbGVtZW50YXRpb24gV2ViS2l0VGVz
dFJ1bm5lclBhc3RlYm9hcmQKIApAQCAtNTYsMTIgKzU2LDEyIEBAICsgKE5TUGFzdGVib2FyZCAq
KV9wYXN0ZWJvYXJkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFtZQogICAgIGlmICghbmFtZSkKICAg
ICAgICAgbmFtZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiTG9jYWxQYXN0ZWJvYXJk
JWQiLCArK251bWJlcl07CiAgICAgaWYgKCFsb2NhbFBhc3RlYm9hcmRzKQotICAgICAgICBsb2Nh
bFBhc3RlYm9hcmRzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKKyAgICAg
ICAgbG9jYWxQYXN0ZWJvYXJkcyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9j
XSBpbml0XSk7CiAgICAgaWYgKExvY2FsUGFzdGVib2FyZCAqcGFzdGVib2FyZCA9IFtsb2NhbFBh
c3RlYm9hcmRzIG9iamVjdEZvcktleTpuYW1lXSkKICAgICAgICAgcmV0dXJuIHBhc3RlYm9hcmQ7
CiAgICAgYXV0byBwYXN0ZWJvYXJkID0gYWRvcHROUyhbW0xvY2FsUGFzdGVib2FyZCBhbGxvY10g
aW5pdFdpdGhOYW1lOm5hbWVdKTsKICAgICBbbG9jYWxQYXN0ZWJvYXJkcyBzZXRPYmplY3Q6cGFz
dGVib2FyZC5nZXQoKSBmb3JLZXk6bmFtZV07Ci0gICAgcmV0dXJuIHBhc3RlYm9hcmQuZ2V0KCk7
CisgICAgcmV0dXJuIHBhc3RlYm9hcmQuYXV0b3JlbGVhc2UoKTsKIH0KIAogLy8gVGhpcyBtZXRo
b2QgY3Jhc2hlcyB3aGVuIGNhbGxlZCBvbiBMb2NhbFBhc3RlYm9hcmQuCkBAIC03Miw3ICs3Miw3
IEBAIC0gKHZvaWQpX3VwZGF0ZVR5cGVDYWNoZUlmTmVlZGVkCiAKICsgKHZvaWQpcmVsZWFzZUxv
Y2FsUGFzdGVib2FyZHMKIHsKLSAgICBhdXRvIG9sZExvY2FsUGFzdGVCb2FyZHMgPSBhZG9wdE5T
KHN0ZDo6ZXhjaGFuZ2UobG9jYWxQYXN0ZWJvYXJkcywgbmlsKSk7CisgICAgbG9jYWxQYXN0ZWJv
YXJkcyA9IG5pbDsKIH0KIAogLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciBKUyBzbyB0aGF0IGl0
IGRvZXNuJ3QgaGF2ZSB0byB0cnkgYW5kIGNyZWF0ZSBhIE5TQXJyYXkgb24gdGhlIG9iamMgc2lk
ZSBpbnN0ZWFkCg==
</data>
<flag name="commit-queue"
          id="440143"
          type_id="3"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>