<?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>218373</bug_id>
          
          <creation_ts>2020-10-29 20:49:28 -0700</creation_ts>
          <short_desc>Remove all remaining testRunner.overridePreference calls</short_desc>
          <delta_ts>2020-11-01 11:57:46 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1702965</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-29 20:49:28 -0700</bug_when>
    <thetext>Remove all remaining testRunner.overridePreference calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702966</commentid>
    <comment_count>1</comment_count>
      <attachid>412707</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-29 20:55:02 -0700</bug_when>
    <thetext>Created attachment 412707
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702968</commentid>
    <comment_count>2</comment_count>
      <attachid>412709</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-29 21:04:26 -0700</bug_when>
    <thetext>Created attachment 412709
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703056</commentid>
    <comment_count>3</comment_count>
      <attachid>412745</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-30 08:06:31 -0700</bug_when>
    <thetext>Created attachment 412745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703057</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-10-30 08:13:04 -0700</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703091</commentid>
    <comment_count>5</comment_count>
      <attachid>412759</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-30 09:31:07 -0700</bug_when>
    <thetext>Created attachment 412759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703154</commentid>
    <comment_count>6</comment_count>
      <attachid>412785</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-30 12:08:12 -0700</bug_when>
    <thetext>Created attachment 412785
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703266</commentid>
    <comment_count>7</comment_count>
      <attachid>412813</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-30 17:03:33 -0700</bug_when>
    <thetext>Created attachment 412813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703295</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-10-30 19:36:06 -0700</bug_when>
    <thetext>Ok. Should be good to go now if anyone wants to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703338</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-31 09:08:55 -0700</bug_when>
    <thetext>Committed r269226: &lt;https://trac.webkit.org/changeset/269226&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412813.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703339</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-31 09:09:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/70916397&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703409</commentid>
    <comment_count>11</comment_count>
      <attachid>412813</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-01 11:57:46 -0800</bug_when>
    <thetext>Comment on attachment 412813
Patch

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

Forgot to push &quot;publish&quot; when I wrote this comment!

&gt; LayoutTests/ChangeLog:46
&gt; +2020-10-29  Sam Weinig  &lt;weinig@apple.com&gt;
&gt; +
&gt; +
&gt; +        * fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html:
&gt; +        * fast/parser/noscript-with-javascript-disabled.html:
&gt; +        * fast/text/international/locale-sensitive-fonts.html:
&gt; +        * fast/text/zero-font-size.html:
&gt; +        * http/tests/download/default-encoding.html:
&gt; +        * http/tests/misc/favicon-loads-with-images-disabled.html:
&gt; +        * http/tests/security/cross-origin-local-storage-wk1.html:
&gt; +        * http/tests/security/resources/load-local-storage.html:
&gt; +        * http/tests/xsl/xslt-transform-with-javascript-disabled.html:
&gt; +        * platform/win/inverted-colors/non-composited.html:
&gt; +        * platform/wk2/TestExpectations:
&gt; +        * svg/as-image/svg-image-with-data-uri-images-disabled.html:

Oops, extra change log stuff here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412707</attachid>
            <date>2020-10-29 20:55:02 -0700</date>
            <delta_ts>2020-10-29 21:42:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218373-20201029205502.patch</filename>
            <type>text/plain</type>
            <size>21325</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTE3OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDIwLTEwLTI5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGltcGxlbWVudGF0aW9ucyBvZiB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZS4g
QWRkcyB0ZXN0UnVubmVyLnNldFNob3VsZEludmVydENvbG9ycywKKyAgICAgICAgd2hpY2ggaXMg
YSB3aW5kb3dzIG9ubHkgcHJlZmVyZW5jZS4gV2hlbiB3ZSBnZW5lcmF0ZSBwcmVmZXJlbmNlcyBm
b3IgV2luZG93cywgd2UgY2FuIGNvbnZlcnQKKyAgICAgICAgdGhpcyB0byB1c2UgdGVzdCBoZWFk
ZXIgY29tbWFuZHMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkcyBkZWZhdWx0
cyBmb3IgTWluaW11bUZvbnRTaXplIGFuZCBEZWZhdWx0VGV4dEVuY29kaW5nTmFtZSBzbyB0aGV5
IGNhbiBiZSB1c2VkIGFzIAorICAgICAgICB0ZXN0IGhlYWRlciBjb21tYW5kcyBmb3IgRHVtcFJl
bmRlclRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTaG91bGRJbnZlcnRDb2xvcnMpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKG92ZXJyaWRl
UHJlZmVyZW5jZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW06CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFNob3VsZEludmVydENvbG9ycyk6CisgICAgICAgIChUZXN0UnVubmVy
OjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6dG9Cb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKTogRGVsZXRlZC4KKwogMjAyMC0xMC0yOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5pbmcgYm9vbGVhbiBvdmVycmlk
ZVByZWZlcmVuY2UgY2FsbHMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJ
KHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTIgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBU
ZXN0T3B0aW9uczo6ZGVmYXVsdAogICAgICAgICAgICAgeyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVk
IiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIldlYkdQVUVuYWJsZWQiLCBmYWxzZSB9LAogICAg
ICAgICB9OworICAgICAgICBmZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMgPSB7
CisgICAgICAgICAgICB7ICJNaW5pbXVtRm9udFNpemUiLCAwIH0sCisgICAgICAgIH07CisgICAg
ICAgIGZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKKyAgICAgICAgICAg
IHsgIkRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIiwgIklTTy04ODU5LTEiIH0sCisgICAgICAgIH07
CiAgICAgfQogICAgIHJldHVybiBmZWF0dXJlczsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDIzICs1NTUsNiBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBpc0NvbW1hbmRFbmFibGVkQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
Qm9vbGVhbihjb250ZXh0LCBjb250cm9sbGVyLT5pc0NvbW1hbmRFbmFibGVkKG5hbWUuZ2V0KCkp
KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgb3ZlcnJpZGVQcmVmZXJlbmNlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgYXV0
byBrZXkgPSBXVFI6OmNyZWF0ZUpTU3RyaW5nKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7Ci0gICAg
YXV0byB2YWx1ZSA9IFdUUjo6Y3JlYXRlSlNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzFdKTsK
LQotICAgIC8vIFNob3VsZCB1c2UgYDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFj
a0ZvcndhcmRDYWNoZT10cnVlIF0gLS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFK
U1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleS5nZXQoKSwgIldlYktpdFVzZXNCYWNrRm9y
d2FyZENhY2hlUHJlZmVyZW5jZUtleSIpKTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKLSAgICBjb250cm9sbGVyLT5vdmVycmlkZVByZWZlcmVuY2Uoa2V5LmdldCgpLCB2YWx1ZS5n
ZXQoKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19Ci0K
IHN0YXRpYyBKU1ZhbHVlUmVmIGtlZXBXZWJIaXN0b3J5Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTIwMDUs
NiArMTk4OCwyMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBydW5VSVNjcmlwdENhbGxiYWNrKEpTCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCisjaWYgUExBVEZP
Uk0oV0lOKQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRJbnZlcnRDb2xvcnMoSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgYXV0byBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0
aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0U2hvdWxkSW52ZXJ0Q29sb3JzKEpTVmFs
dWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKKyNlbmRpZgorCiBzdGF0aWMgdm9pZCB0ZXN0
UnVubmVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIHN0YXRpY19j
YXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUob2JqZWN0KSktPmRlcmVmKCk7CkBA
IC0yMTM4LDcgKzIxMzYsNiBAQCBjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpz
dGF0CiAgICAgICAgIHsgImtlZXBXZWJIaXN0b3J5Iiwga2VlcFdlYkhpc3RvcnlDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0cyIsIG51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RzQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibm90aWZ5RG9uZSIsIG5vdGlmeURvbmVDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAotICAgICAgICB7ICJvdmVycmlkZVByZWZlcmVuY2UiLCBvdmVycmlkZVByZWZl
cmVuY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJwYXRoVG9Mb2NhbFJlc291cmNlIiwg
cGF0aFRvTG9jYWxSZXNvdXJjZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInByaW50VG9Q
REYiLCBkdW1wQXNQREZDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJxdWV1ZUJhY2tOYXZp
Z2F0aW9uIiwgcXVldWVCYWNrTmF2aWdhdGlvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkBAIC0yMjQ1LDYg
KzIyNDIsOSBAQCBjb25zdCBKU1N0YXRpY0Z1bmN0aW9uKiBUZXN0UnVubmVyOjpzdGF0CiAgICAg
ICAgIHsgInNldE9wZW5QYW5lbEZpbGVzIiwgc2V0T3BlblBhbmVsRmlsZXNDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJzZXRPcGVuUGFuZWxGaWxlc01lZGlhSWNvbiIsIFNldE9wZW5QYW5l
bEZpbGVzTWVkaWFJY29uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZm9yY2VJbW1lZGlh
dGVDb21wbGV0aW9uIiwgZm9yY2VJbW1lZGlhdGVDb21wbGV0aW9uQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyNpZiBQTEFURk9STShXSU4pCisgICAgICAgIHsgInNldFNob3VsZEludmVydENvbG9ycyIsIHNl
dFNob3VsZEludmVydENvbG9ycywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorI2VuZGlmCiAgICAgICAgIHsgMCwgMCwgMCB9
CiAgICAgfTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuaAkocmV2aXNpb24gMjY5
MTc3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMzEsNiArMTMxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGVsZXBob25lTnVtYmVy
UGFyc2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0UGFnZVBhdXNlZChib29s
IHBhdXNlZCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAgdm9pZCBzZXRTaG91bGRJ
bnZlcnRDb2xvcnMoYm9vbCk7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0UGFnZVZpc2liaWxpdHko
Y29uc3QgY2hhciopOwogICAgIHZvaWQgcmVzZXRQYWdlVmlzaWJpbGl0eSgpOwpJbmRleDogVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHJldmlzaW9uIDI2OTE3NykK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01OTYsMTcgKzU5Niw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6ZGlzcGF0Y2hQZW5kaW5n
TG9hZFJlcXUKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBfZGlzcGF0Y2hQZW5kaW5nTG9hZFJl
cXVlc3RzXTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJp
bmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGtleUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCBrZXkpKTsKLSAgICBOU1N0cmluZyAqa2V5TlMgPSAoX19icmlkZ2UgTlNTdHJpbmcgKilr
ZXlDRi5nZXQoKTsKLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdmFsdWVDRiA9IGFkb3B0
Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdmFsdWUpKTsKLSAg
ICBOU1N0cmluZyAqdmFsdWVOUyA9IChfX2JyaWRnZSBOU1N0cmluZyAqKXZhbHVlQ0YuZ2V0KCk7
Ci0KLSAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIF9zZXRTdHJpbmdQcmVm
ZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTprZXlOU107Ci19Ci0KIHZv
aWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKIHsKICAgICBbV2ViSGlzdG9y
eSBfcmVtb3ZlQWxsVmlzaXRlZExpbmtzXTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9UZXN0UnVubmVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODU4LDI1ICs4
NTgsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1CiAgICAgdmll
d1ByaXZhdGUtPmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cygpOwogfQogCi12b2lkIFRlc3RS
dW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXksIEpTU3RyaW5nUmVmIHZh
bHVlKQotewotICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKLSAgICBpZiAoRkFJTEVEKGZy
YW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJ
V2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOwotICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJl
ZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIENPTVB0cjxJ
V2ViUHJlZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnksIHByZWZlcmVuY2VzKTsK
LSAgICBpZiAoIXByZWZzUHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgX2JzdHJfdCBr
ZXlCU1RSKEpTU3RyaW5nQ29weUJTVFIoa2V5KSwgZmFsc2UpOwotICAgIF9ic3RyX3QgdmFsdWVC
U1RSKEpTU3RyaW5nQ29weUJTVFIodmFsdWUpLCBmYWxzZSk7Ci0gICAgcHJlZnNQcml2YXRlLT5z
ZXRQcmVmZXJlbmNlRm9yVGVzdChrZXlCU1RSLCB2YWx1ZUJTVFIpOwotfQotCiB2b2lkIFRlc3RS
dW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7CiAgICAgQ09NUHRyPElXZWJIaXN0b3J5
PiBoaXN0b3J5OwpAQCAtMTM5OCwzICsxMzc5LDIwIEBAIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3Bl
bGxDaGVja2VyTG9nZ2luZ0UKIHsKICAgICBmcHJpbnRmKHRlc3RSZXN1bHQsICJFUlJPUjogVGVz
dFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoKSBub3QgaW1wbGVtZW50ZWRc
biIpOwogfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNob3VsZEludmVydENvbG9ycyhib29sIHNo
b3VsZEludmVydENvbG9ycykKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CisgICAg
aWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKKyAgICBpZiAoRkFJTEVE
KHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQorICAgICAgICByZXR1cm47CisK
KyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1ZXJ5LCBw
cmVmZXJlbmNlcyk7CisgICAgaWYgKCFwcmVmc1ByaXZhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHByZWZzUHJpdmF0ZS0+c2V0U2hvdWxkSW52ZXJ0Q29sb3JzKHNob3VsZEludmVydENvbG9y
cyk7Cit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg0NiwyMSArODQ2LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpjYWxsU2V0QmFja2luZ1NjYWxlRmFj
dAogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU2V0QmFja2luZ1NjYWxlRmFjdG9yQ2FsbGJh
Y2tJRCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB0b0Jvb2woSlNTdHJpbmdSZWYgdmFsdWUp
Ci17Ci0gICAgcmV0dXJuIEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcodmFsdWUsICJ0cnVl
IikgfHwgSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh2YWx1ZSwgIjEiKTsKLX0KLQotdm9p
ZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYgcHJlZmVyZW5jZSwg
SlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgYXV0byYgaW5qZWN0ZWRCdW5kbGUgPSBJbmplY3Rl
ZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAgLy8gU2hvdWxkIHVzZSBgPCEtLSB3ZWJraXQtdGVz
dC1ydW5uZXIgWyBlbmFibGVCYWNrRm9yd2FyZENhY2hlPXRydWUgXSAtLT5gIGluc3RlYWQuCi0g
ICAgUkVMRUFTRV9BU1NFUlQoIUpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcocHJlZmVyZW5j
ZSwgIldlYktpdFVzZXNCYWNrRm9yd2FyZENhY2hlUHJlZmVyZW5jZUtleSIpKTsKLQotICAgIC8v
IEZJWE1FOiBoYW5kbGUgbm9uLWJvb2xlYW4gcHJlZmVyZW5jZXMuCi0gICAgV0tCdW5kbGVPdmVy
cmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcihpbmplY3RlZEJ1bmRsZS5idW5kbGUoKSwg
aW5qZWN0ZWRCdW5kbGUucGFnZUdyb3VwKCksIHRvV0socHJlZmVyZW5jZSkuZ2V0KCksIHRvQm9v
bCh2YWx1ZSkpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMo
Ym9vbCBhY2NlcHQpCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzTWVzc2FnZSgiU2V0QWx3YXlzQWNj
ZXB0Q29va2llcyIsIGFjY2VwdCk7CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHJl
dmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw4ICsxOTcsNiBA
QCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNldEFsd2F5c0FjY2VwdENv
b2tpZXMoYm9vbGVhbiBhY2NlcHQpOwogICAgIHVuZGVmaW5lZCBzZXRPbmx5QWNjZXB0Rmlyc3RQ
YXJ0eUNvb2tpZXMoYm9vbGVhbiBhY2NlcHQpOwogCi0gICAgdW5kZWZpbmVkIG92ZXJyaWRlUHJl
ZmVyZW5jZShET01TdHJpbmcgcHJlZmVyZW5jZSwgRE9NU3RyaW5nIHZhbHVlKTsKLQogICAgIC8v
IFBhZ2UgVmlzaWJpbGl0eSBBUEkKICAgICB1bmRlZmluZWQgc2V0UGFnZVZpc2liaWxpdHkoRE9N
U3RyaW5nIHN0YXRlKTsKICAgICB1bmRlZmluZWQgcmVzZXRQYWdlVmlzaWJpbGl0eSgpOwpJbmRl
eDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjY5MTc4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMTAtMjkgIFNhbSBXZWluaWcgIDx3ZWluaWdA
YXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBhbGwgcmVtYWluaW5nIHRlc3RSdW5uZXIub3Zl
cnJpZGVQcmVmZXJlbmNlIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTgzNzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmVzIHJlbWFpbmluZyB1c2VzIG9mIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlIGFuZCBhZGRyZXNzZXMgc29tZQorICAgICAgICByZWNlbnQgZmVlZGJhY2sg
YnkgcmVtb3Zpbmcgc29tZSB1bm5lY2Vzc2FyeSAid2luZG93LiIgdXNlcy4KKworICAgICAgICAq
IGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4t
cmVsb2FkLWluLXBsYWNlLmh0bWw6CisgICAgICAgICogZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0
aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWw6CisgICAgICAgICogZmFzdC90ZXh0L2ludGVybmF0
aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1sOgorICAgICAgICAqIGZhc3QvdGV4dC96
ZXJvLWZvbnQtc2l6ZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVs
dC1lbmNvZGluZy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRz
LXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3Jlc291cmNlcy9sb2FkLWxvY2FsLXN0b3JhZ2UuaHRtbDoKKyAgICAgICAg
KiBodHRwL3Rlc3RzL3hzbC94c2x0LXRyYW5zZm9ybS13aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQu
aHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vaW52ZXJ0ZWQtY29sb3JzL25vbi1jb21wb3Np
dGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAg
ICAgICogc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdlcy1kaXNhYmxl
ZC5odG1sOgorCiAyMDIwLTEwLTI5ICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3Bl
ekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dQRV0gR2FyZGVuaW5nIG9mIG5ldyBmYWls
dXJlcyBhZnRlciByMjY5MTc3IGFuZCBtYXJrIG1vcmUgZmxha3kgdGVzdHMuCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1h
bmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWwJKHJldmlzaW9uIDI2OTE3NykKKysrIExheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2Fk
LWluLXBsYWNlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsOCArOCw4IEBAIHZhciBpbWFnZU9u
bG9hZEZpcmVkID0gMDsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNF
bmFibGVkKHRydWUpOwotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5KGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2Vz
RW5hYmxlZCh0cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5KGZhbHNlKTsKICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7CiB9CiAKQEAg
LTIxLDcgKzIxLDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldExvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseSh0cnVlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KHRydWUpOwogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9hZCBpbi1wbGFjZSB3aGVuIGxvYWRz
SW1hZ2VzQXV0b21hdGljYWxseSBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0JzsKICAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKICAgICBpbnRlcnZhbElkID0gd2luZG93LnNldElu
dGVydmFsKHJ1blRlc3RSZXN0LCAxMCk7CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9u
b3NjcmlwdC13aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3BhcnNlci9ub3NjcmlwdC13aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQuaHRt
bAkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQt
d2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3
IEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CisgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogfQogPC9zY3JpcHQ+CiAKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCShyZXZpc2lvbiAyNjkx
NzcpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvemVyby1mb250LXNpemUuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw3ICsxLDQgQEAKLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQotICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0TWluaW11
bUZvbnRTaXplIiwgIjEyIik7Ci08L3NjcmlwdD4KKzwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsg
TWluaW11bUZvbnRTaXplPTEyIF0gLS0+CiA8cD5UZXN0IHRoYXQgdGV4dCB3aXRoIDBweCBmb250
IHNpemUgaXMgbm90IGRpc3BsYXllZCwgZXZlbiBpZiBhIG5vbi16ZXJvIG1pbmltdW0gZm9udCBz
aXplIHNldHRpbmcgaXMgc3BlY2lmaWVkLiBPbiBzdWNjZXNzLCB0aGlzIHBhcmFncmFwaCBzaG91
bGQgYmUgdGhlIG9ubHkgdGV4dCB2aXNpYmxlIG9uIHRoZSBwYWdlLjwvcD4KIDxkaXYgc3R5bGU9
ImZvbnQtc2l6ZTowcHg7IGNvbG9yOnJlZCI+RkFJTDwvZGl2PgogPGRpdiBzdHlsZT0iZm9udC1z
aXplOjAlOyBjb2xvcjpyZWQiPkZBSUw8L2Rpdj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0
aXZlLWZvbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVy
bmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1sCShyZXZpc2lvbiAyNjkxNzcpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0aXZlLWZv
bnRzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTMsMTYgKzMsMTYgQEAKIDxoZWFkPgogPHNjcmlw
dD4KIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFoZW0iLCAiSGFucyIpOwotICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0dGluZ3Muc2V0RmFudGFzeUZvbnRGYW1pbHkoIkFoZW0iLCAiSGFucyIpOworICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoIkFoZW0iLCAiSGFucyIp
OworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRGYW50YXN5Rm9udEZhbWlseSgiQWhlbSIsICJI
YW5zIik7CiAKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
ImVuIiwgInpoLWNuIik7CisgICAgaW50ZXJuYWxzLnNldFVzZXJQcmVmZXJyZWRMYW5ndWFnZXMo
ImVuIiwgInpoLWNuIik7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPCEtLSBUaGlz
IHRlc3RzIGxvY2FsZS1zZW5zaXRpdmUgZm9udCBzZWxlY3Rpb24uICBVc2luZyBvdmVycmlkZVBy
ZWZlcmVuY2UsICB0aGUKLWZvbnRzIGZvciBTaW1wbGlmaWVkIEhhbiBhcmUgdG8gQWhlbSBmb250
LiAgU28gYWxsIGRpdnMgc2hvdWxkIG1hdGNoLiAtLT4KKzwhLS0gVGhpcyB0ZXN0cyBsb2NhbGUt
c2Vuc2l0aXZlIGZvbnQgc2VsZWN0aW9uLiBVc2luZyBpbnRlcm5hbHMuc2V0dGluZ3MsIHRoZQor
Zm9udHMgZm9yIFNpbXBsaWZpZWQgSGFuIGFyZSBzZXQgdG8gdGhlIEFoZW0gZm9udC4gQWxsIGRp
dnMgc2hvdWxkIG1hdGNoLiAtLT4KIDxkaXYgc3R5bGU9ImZvbnQtc2l6ZTogMjBweCI+CiA8ZGl2
IHN0eWxlPSJmb250LWZhbWlseTogJ0FoZW0nIj50aGlzIGlzIGFoZW0gZm9udDwvZGl2PgogPGRp
diBzdHlsZT0iLXdlYmtpdC1sb2NhbGU6ICd6aF9DTiciPnRoaXMgaXMgYWhlbSBmb250PC9kaXY+
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2RlZmF1bHQtZW5jb2Rpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2RlZmF1
bHQtZW5jb2RpbmcuaHRtbAkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9kb3dubG9hZC9kZWZhdWx0LWVuY29kaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEs
OCArMSw3IEBACi08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBEZWZhdWx0VGV4dEVuY29kaW5nTmFtZT1rb2k4LXIg
XSAtLT4KIDxzY3JpcHQ+CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
RGVmYXVsdFRleHRFbmNvZGluZ05hbWUiLCAia29pOC1yIik7CiAgICAgdGVzdFJ1bm5lci5zZXRD
dXN0b21Qb2xpY3lEZWxlZ2F0ZSh0cnVlLCB0cnVlKTsKICAgICB0ZXN0UnVubmVyLndhaXRGb3JQ
b2xpY3lEZWxlZ2F0ZSgpOwogfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zh
dmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxl
ZC5odG1sCShyZXZpc2lvbiAyNjkxNzcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
ZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC03LDcgKzcsNiBAQCBmdW5jdGlvbiBydW5UZXN0KCkKICAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CiAgICAgICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygp
OwogICAgICAgICB0ZXN0UnVubmVyLnNldEljb25EYXRhYmFzZUVuYWJsZWQodHJ1ZSk7Ci0gICAg
ICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXREaXNwbGF5SW1hZ2VzS2V5
IiwgMCk7CiAgICAgICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKICAgICB9CiB9CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9y
YWdlLXdrMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWwJKHJldmlzaW9uIDI2OTE3NykK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0
b3JhZ2Utd2sxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBACiBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKIAl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKIAl0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKLQl0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0U3Rv
cmFnZUJsb2NraW5nUG9saWN5JywgMSk7CisJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VC
bG9ja2luZ1BvbGljeSgnQmxvY2tUaGlyZFBhcnR5Jyk7CiB9CiAKIGZ1bmN0aW9uIGNvbnRpbnVl
VGVzdCgpIHsKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2Vz
L2xvYWQtbG9jYWwtc3RvcmFnZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2xvYWQtbG9jYWwtc3RvcmFnZS5odG1sCShyZXZpc2lv
biAyNjkxNzcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9s
b2FkLWxvY2FsLXN0b3JhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNiBAQCB0
cnkgewogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKIAlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOwotCXRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCdXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3knLCAwKTsKIAl0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1q
YXZhc2NyaXB0LWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDI2OTE3NykKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMveHNsL3hzbHQtdHJhbnNmb3JtLXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFNjcmlw
dEVuYWJsZWQoZmFsc2UpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVk
KGZhbHNlKTsKIH0KIAogZnVuY3Rpb24gc2hvdWxkTm90QmVFeGVjdXRlZCgpCkluZGV4OiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vaW52ZXJ0ZWQtY29sb3JzL25vbi1jb21wb3NpdGVkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2ludmVydGVkLWNvbG9ycy9u
b24tY29tcG9zaXRlZC5odG1sCShyZXZpc2lvbiAyNjkxNzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vaW52ZXJ0ZWQtY29sb3JzL25vbi1jb21wb3NpdGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE2LDcgKzE2LDcgQEAKICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQ+CiAgICAgICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRTaG91bGRJbnZlcnRDb2xvcnMiLCAiMSIpOworICAgICAgICAgICAg
dGVzdFJ1bm5lci5zZXRTaG91bGRJbnZlcnRDb2xvcnModHJ1ZSk7CiAgICAgPC9zY3JpcHQ+CiA8
L2hlYWQ+CiA8Ym9keT4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zCShyZXZpc2lvbiAyNjkxNzcpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDYgQEAgd2Via2l0Lm9y
Zy9iLzU4MTgzIGVkaXRpbmcvZXhlY0NvbW1hbmQvYwogIyBUaGlzIHRlc3QgaGFzIGJlZW4gc2tp
cHBlZCBmb3IgYSBsb25nIHRpbWUuIFRlbXBvcmFyaWx5IG1hcmtpbmcgYXMgZmxha3kgdG8gc2Vl
IHdoYXQgYm90cyB0aGluay4KIHdlYmtpdC5vcmcvYi82MDY0OCBmYXN0L2ZyYW1lcy9mbGF0dGVu
aW5nL2ZyYW1lc2V0LWZsYXR0ZW5pbmctc3ViZnJhbWVzZXRzLmh0bWwgWyBQYXNzIEZhaWx1cmUg
XQogCi0jIFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgb3ZlcnJpZGVQcmVmZXJlbmNlIGZvciBub24t
Ym9vbGVhbiB2YWx1ZXMKLSMgKHplcm8tZm9udC1zaXplLmh0bWwgcGFzc2VzIGJlY2F1c2Ugb3Zl
cnJpZGVQcmVmZXJlbmNlIGRvZXMgbm90IHdvcmspCi13ZWJraXQub3JnL2IvNDIxOTcgZmFzdC90
ZXh0L3plcm8tZm9udC1zaXplLmh0bWwgWyBQYXNzIF0KLQogd2Via2l0Lm9yZy9iLzgyNjY1IGh0
dHAvdGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWNzcy11cmwtZW5jb2RpbmcuaHRtbCBbIFNraXAgXQog
d2Via2l0Lm9yZy9iLzgyNjY1IGh0dHAvdGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWNzcy11cmwtZW5j
b2Rpbmctc2hpZnQtamlzLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi84MjY2NSBodHRwL3Rl
c3RzL3dlYmFyY2hpdmUvdGVzdC1jc3MtdXJsLWVuY29kaW5nLXV0Zi04Lmh0bWwgWyBTa2lwIF0K
SW5kZXg6IExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVyaS1p
bWFnZXMtZGlzYWJsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYXMtaW1h
Z2Uvc3ZnLWltYWdlLXdpdGgtZGF0YS11cmktaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHJldmlzaW9u
IDI2OTE3NykKKysrIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRh
LXVyaS1pbWFnZXMtZGlzYWJsZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBA
QAogICA8L3N0eWxlPgogICA8c2NyaXB0PgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewot
ICAgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsK
LSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KGZhbHNlKTsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKGZh
bHNlKTsKKyAgICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkoZmFsc2UpOwogICAgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOwogICAgIH0KICAgPC9z
Y3JpcHQ+Cg==
</data>
<flag name="commit-queue"
          id="429203"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412709</attachid>
            <date>2020-10-29 21:04:26 -0700</date>
            <delta_ts>2020-10-30 08:06:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218373-20201029210426.patch</filename>
            <type>text/plain</type>
            <size>21341</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTE3OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDIwLTEwLTI5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGltcGxlbWVudGF0aW9ucyBvZiB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZS4g
QWRkcyB0ZXN0UnVubmVyLnNldFNob3VsZEludmVydENvbG9ycywKKyAgICAgICAgd2hpY2ggaXMg
YSB3aW5kb3dzIG9ubHkgcHJlZmVyZW5jZS4gV2hlbiB3ZSBnZW5lcmF0ZSBwcmVmZXJlbmNlcyBm
b3IgV2luZG93cywgd2UgY2FuIGNvbnZlcnQKKyAgICAgICAgdGhpcyB0byB1c2UgdGVzdCBoZWFk
ZXIgY29tbWFuZHMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkcyBkZWZhdWx0
cyBmb3IgTWluaW11bUZvbnRTaXplIGFuZCBEZWZhdWx0VGV4dEVuY29kaW5nTmFtZSBzbyB0aGV5
IGNhbiBiZSB1c2VkIGFzIAorICAgICAgICB0ZXN0IGhlYWRlciBjb21tYW5kcyBmb3IgRHVtcFJl
bmRlclRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTaG91bGRJbnZlcnRDb2xvcnMpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKG92ZXJyaWRl
UHJlZmVyZW5jZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW06CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFNob3VsZEludmVydENvbG9ycyk6CisgICAgICAgIChUZXN0UnVubmVy
OjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6dG9Cb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKTogRGVsZXRlZC4KKwogMjAyMC0xMC0yOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5pbmcgYm9vbGVhbiBvdmVycmlk
ZVByZWZlcmVuY2UgY2FsbHMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJ
KHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTIgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBU
ZXN0T3B0aW9uczo6ZGVmYXVsdAogICAgICAgICAgICAgeyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVk
IiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIldlYkdQVUVuYWJsZWQiLCBmYWxzZSB9LAogICAg
ICAgICB9OworICAgICAgICBmZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMgPSB7
CisgICAgICAgICAgICB7ICJNaW5pbXVtRm9udFNpemUiLCAwIH0sCisgICAgICAgIH07CisgICAg
ICAgIGZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKKyAgICAgICAgICAg
IHsgIkRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIiwgIklTTy04ODU5LTEiIH0sCisgICAgICAgIH07
CiAgICAgfQogICAgIHJldHVybiBmZWF0dXJlczsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDIzICs1NTUsNiBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBpc0NvbW1hbmRFbmFibGVkQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
Qm9vbGVhbihjb250ZXh0LCBjb250cm9sbGVyLT5pc0NvbW1hbmRFbmFibGVkKG5hbWUuZ2V0KCkp
KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgb3ZlcnJpZGVQcmVmZXJlbmNlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgYXV0
byBrZXkgPSBXVFI6OmNyZWF0ZUpTU3RyaW5nKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7Ci0gICAg
YXV0byB2YWx1ZSA9IFdUUjo6Y3JlYXRlSlNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzFdKTsK
LQotICAgIC8vIFNob3VsZCB1c2UgYDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFj
a0ZvcndhcmRDYWNoZT10cnVlIF0gLS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFK
U1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleS5nZXQoKSwgIldlYktpdFVzZXNCYWNrRm9y
d2FyZENhY2hlUHJlZmVyZW5jZUtleSIpKTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKLSAgICBjb250cm9sbGVyLT5vdmVycmlkZVByZWZlcmVuY2Uoa2V5LmdldCgpLCB2YWx1ZS5n
ZXQoKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19Ci0K
IHN0YXRpYyBKU1ZhbHVlUmVmIGtlZXBXZWJIaXN0b3J5Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTIwMDUs
NiArMTk4OCwyMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBydW5VSVNjcmlwdENhbGxiYWNrKEpTCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCisjaWYgUExBVEZP
Uk0oV0lOKQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRJbnZlcnRDb2xvcnNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQg
PCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAg
ICBhdXRvIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRTaG91bGRJbnZlcnRDb2xv
cnMoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworI2VuZGlmCisKIHN0YXRpYyB2
b2lkIHRlc3RSdW5uZXJPYmplY3RGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAg
c3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKS0+ZGVy
ZWYoKTsKQEAgLTIxMzgsNyArMjEzNiw2IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIFRlc3RS
dW5uZXI6OnN0YXQKICAgICAgICAgeyAia2VlcFdlYkhpc3RvcnkiLCBrZWVwV2ViSGlzdG9yeUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RzIiwgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJub3RpZnlEb25lIiwgbm90aWZ5RG9u
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJy
aWRlUHJlZmVyZW5jZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdGhUb0xvY2FsUmVz
b3VyY2UiLCBwYXRoVG9Mb2NhbFJlc291cmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
cHJpbnRUb1BERiIsIGR1bXBBc1BERkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1ZXVl
QmFja05hdmlnYXRpb24iLCBxdWV1ZUJhY2tOYXZpZ2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAg
LTIyNDUsNiArMjI0Miw5IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0
YXQKICAgICAgICAgeyAic2V0T3BlblBhbmVsRmlsZXMiLCBzZXRPcGVuUGFuZWxGaWxlc0NhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uIiwgU2V0
T3BlblBhbmVsRmlsZXNNZWRpYUljb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3Jj
ZUltbWVkaWF0ZUNvbXBsZXRpb24iLCBmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgeyAic2V0U2hvdWxkSW52ZXJ0Q29s
b3JzIiwgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyNlbmRpZgogICAg
ICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVy
LmgJKHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNl
dFBhZ2VQYXVzZWQoYm9vbCBwYXVzZWQpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAg
IHZvaWQgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wpOworI2VuZGlmCiAKICAgICB2b2lkIHNl
dFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIHJlc2V0UGFnZVZpc2liaWxp
dHkoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCShy
ZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk2LDE3ICs1OTYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX2Rpc3Bh
dGNoUGVuZGluZ0xvYWRSZXF1ZXN0c107CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBrZXlDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5KSk7Ci0gICAgTlNTdHJpbmcgKmtleU5TID0gKF9fYnJp
ZGdlIE5TU3RyaW5nICopa2V5Q0YuZ2V0KCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHZhbHVlKSk7Ci0gICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNTdHJpbmcg
Kil2YWx1ZUNGLmdldCgpOwotCi0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2Vz
XSBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6
a2V5TlNdOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7
CiAgICAgW1dlYkhpc3RvcnkgX3JlbW92ZUFsbFZpc2l0ZWRMaW5rc107CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCShyZXZpc2lvbiAyNjkxNzcpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1OCwyNSArODU4LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpkaXNwYXRjaFBlbmRpbmdM
b2FkUmVxdQogICAgIHZpZXdQcml2YXRlLT5kaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMoKTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5
LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7Ci0g
ICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKLSAgICBpZiAoRkFJ
TEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1ZXJ5
LCBwcmVmZXJlbmNlcyk7Ci0gICAgaWYgKCFwcmVmc1ByaXZhdGUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIF9ic3RyX3Qga2V5QlNUUihKU1N0cmluZ0NvcHlCU1RSKGtleSksIGZhbHNlKTsKLSAg
ICBfYnN0cl90IHZhbHVlQlNUUihKU1N0cmluZ0NvcHlCU1RSKHZhbHVlKSwgZmFsc2UpOwotICAg
IHByZWZzUHJpdmF0ZS0+c2V0UHJlZmVyZW5jZUZvclRlc3Qoa2V5QlNUUiwgdmFsdWVCU1RSKTsK
LX0KLQogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQogewogICAgIENP
TVB0cjxJV2ViSGlzdG9yeT4gaGlzdG9yeTsKQEAgLTEzOTgsMyArMTM3OSwyMCBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFCiB7CiAgICAgZnByaW50Zih0ZXN0UmVz
dWx0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKCkg
bm90IGltcGxlbWVudGVkXG4iKTsKIH0KKwordm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRJbnZl
cnRDb2xvcnMoYm9vbCBzaG91bGRJbnZlcnRDb2xvcnMpCit7CisgICAgQ09NUHRyPElXZWJWaWV3
PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7
CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU+IHByZWZz
UHJpdmF0ZShRdWVyeSwgcHJlZmVyZW5jZXMpOworICAgIGlmICghcHJlZnNQcml2YXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcmVmc1ByaXZhdGUtPnNldFNob3VsZEludmVydENvbG9ycyhz
aG91bGRJbnZlcnRDb2xvcnMpOworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkxNzcpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NDYsMjEgKzg0Niw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbFNl
dEJhY2tpbmdTY2FsZUZhY3QKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFNldEJhY2tpbmdT
Y2FsZUZhY3RvckNhbGxiYWNrSUQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdG9Cb29sKEpT
U3RyaW5nUmVmIHZhbHVlKQotewotICAgIHJldHVybiBKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHZhbHVlLCAidHJ1ZSIpIHx8IEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcodmFsdWUs
ICIxIik7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5n
UmVmIHByZWZlcmVuY2UsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIGF1dG8mIGluamVjdGVk
QnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpOwotICAgIC8vIFNob3VsZCB1c2Ug
YDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFja0ZvcndhcmRDYWNoZT10cnVlIF0g
LS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFKU1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKHByZWZlcmVuY2UsICJXZWJLaXRVc2VzQmFja0ZvcndhcmRDYWNoZVByZWZlcmVuY2VL
ZXkiKSk7Ci0KLSAgICAvLyBGSVhNRTogaGFuZGxlIG5vbi1ib29sZWFuIHByZWZlcmVuY2VzLgot
ICAgIFdLQnVuZGxlT3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIoaW5qZWN0ZWRC
dW5kbGUuYnVuZGxlKCksIGluamVjdGVkQnVuZGxlLnBhZ2VHcm91cCgpLCB0b1dLKHByZWZlcmVu
Y2UpLmdldCgpLCB0b0Jvb2wodmFsdWUpKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRBbHdh
eXNBY2NlcHRDb29raWVzKGJvb2wgYWNjZXB0KQogewogICAgIHBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoIlNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBhY2NlcHQpOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCShyZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcsOCArMTk3LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHVuZGVmaW5lZCBz
ZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2xlYW4gYWNjZXB0KTsKICAgICB1bmRlZmluZWQgc2V0
T25seUFjY2VwdEZpcnN0UGFydHlDb29raWVzKGJvb2xlYW4gYWNjZXB0KTsKIAotICAgIHVuZGVm
aW5lZCBvdmVycmlkZVByZWZlcmVuY2UoRE9NU3RyaW5nIHByZWZlcmVuY2UsIERPTVN0cmluZyB2
YWx1ZSk7Ci0KICAgICAvLyBQYWdlIFZpc2liaWxpdHkgQVBJCiAgICAgdW5kZWZpbmVkIHNldFBh
Z2VWaXNpYmlsaXR5KERPTVN0cmluZyBzdGF0ZSk7CiAgICAgdW5kZWZpbmVkIHJlc2V0UGFnZVZp
c2liaWxpdHkoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2OTE3OCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDIwLTEwLTI5ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmlu
ZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBjYWxscworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyByZW1haW5pbmcgdXNlcyBvZiB0
ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBhbmQgYWRkcmVzc2VzIHNvbWUKKyAgICAgICAg
cmVjZW50IGZlZWRiYWNrIGJ5IHJlbW92aW5nIHNvbWUgdW5uZWNlc3NhcnkgIndpbmRvdy4iIHVz
ZXMuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9j
ay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sOgorICAgICAgICAqIGZhc3QvcGFy
c2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sOgorICAgICAgICAqIGZh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L3RleHQvemVyby1mb250LXNpemUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2Rvd25sb2FkL2RlZmF1bHQtZW5jb2RpbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21p
c2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9yYWdl
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1qYXZh
c2NyaXB0LWRpc2FibGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2luL2ludmVydGVkLWNv
bG9ycy9ub24tY29tcG9zaXRlZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVy
aS1pbWFnZXMtZGlzYWJsZWQuaHRtbDoKKwogMjAyMC0xMC0yOSAgQ2FybG9zIEFsYmVydG8gTG9w
ZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEdhcmRl
bmluZyBvZiBuZXcgZmFpbHVyZXMgYWZ0ZXIgcjI2OTE3NyBhbmQgbWFyayBtb3JlIGZsYWt5IHRl
c3RzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1p
bWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCShyZXZpc2lvbiAyNjkxNzcpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgs
OCBAQCB2YXIgaW1hZ2VPbmxvYWRGaXJlZCA9IDA7CiAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZCh0cnVlKTsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSk7CiAgICAgdGVzdFJ1bm5lci5xdWV1ZVJl
bG9hZCgpOwogfQogCkBAIC0yMSw3ICsyMSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRMb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHkodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldExv
YWRzSW1hZ2VzQXV0b21hdGljYWxseSh0cnVlKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCByZWxvYWQgaW4t
cGxhY2Ugd2hlbiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgaXMgY2hhbmdlcyBmcm9tIHVuc2V0
IHRvIHNldCc7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgaW50ZXJ2YWxJ
ZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwgMTApOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2Ny
aXB0LWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDI2OTE3NykKKysrIExheW91dFRlc3RzL2Zhc3Qv
cGFyc2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00LDcgKzQsNyBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQo
KTsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFNjcmlwdEVuYWJsZWQoZmFsc2Up
OworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKIH0KIDwv
c2NyaXB0PgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvemVyby1mb250LXNpemUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvemVyby1mb250LXNpemUuaHRt
bAkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3plcm8tZm9udC1z
aXplLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw0IEBACi08c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdE1pbmltdW1Gb250U2l6ZSIsICIxMiIpOwotPC9zY3JpcHQ+Cis8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIE1pbmltdW1Gb250U2l6ZT0xMiBdIC0tPgogPHA+VGVzdCB0aGF0IHRl
eHQgd2l0aCAwcHggZm9udCBzaXplIGlzIG5vdCBkaXNwbGF5ZWQsIGV2ZW4gaWYgYSBub24temVy
byBtaW5pbXVtIGZvbnQgc2l6ZSBzZXR0aW5nIGlzIHNwZWNpZmllZC4gT24gc3VjY2VzcywgdGhp
cyBwYXJhZ3JhcGggc2hvdWxkIGJlIHRoZSBvbmx5IHRleHQgdmlzaWJsZSBvbiB0aGUgcGFnZS48
L3A+CiA8ZGl2IHN0eWxlPSJmb250LXNpemU6MHB4OyBjb2xvcjpyZWQiPkZBSUw8L2Rpdj4KIDxk
aXYgc3R5bGU9ImZvbnQtc2l6ZTowJTsgY29sb3I6cmVkIj5GQUlMPC9kaXY+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAkocmV2
aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9j
YWxlLXNlbnNpdGl2ZS1mb250cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE2ICszLDE2IEBA
CiA8aGVhZD4KIDxzY3JpcHQ+CiBpZiAod2luZG93LmludGVybmFscykgewotICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBaGVtIiwgIkhhbnMiKTsK
LSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEZhbnRhc3lGb250RmFtaWx5KCJBaGVt
IiwgIkhhbnMiKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5
KCJBaGVtIiwgIkhhbnMiKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RmFudGFzeUZvbnRG
YW1pbHkoIkFoZW0iLCAiSGFucyIpOwogCi0gICAgd2luZG93LmludGVybmFscy5zZXRVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCJlbiIsICJ6aC1jbiIpOworICAgIGludGVybmFscy5zZXRVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCJlbiIsICJ6aC1jbiIpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTwhLS0gVGhpcyB0ZXN0cyBsb2NhbGUtc2Vuc2l0aXZlIGZvbnQgc2VsZWN0aW9uLiAg
VXNpbmcgb3ZlcnJpZGVQcmVmZXJlbmNlLCAgdGhlCi1mb250cyBmb3IgU2ltcGxpZmllZCBIYW4g
YXJlIHRvIEFoZW0gZm9udC4gIFNvIGFsbCBkaXZzIHNob3VsZCBtYXRjaC4gLS0+Cis8IS0tIFRo
aXMgdGVzdHMgbG9jYWxlLXNlbnNpdGl2ZSBmb250IHNlbGVjdGlvbi4gVXNpbmcgaW50ZXJuYWxz
LnNldHRpbmdzLCB0aGUKK2ZvbnRzIGZvciBTaW1wbGlmaWVkIEhhbiBhcmUgc2V0IHRvIHRoZSBB
aGVtIGZvbnQuIEFsbCBkaXZzIHNob3VsZCBtYXRjaC4gLS0+CiA8ZGl2IHN0eWxlPSJmb250LXNp
emU6IDIwcHgiPgogPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6ICdBaGVtJyI+dGhpcyBpcyBhaGVt
IGZvbnQ8L2Rpdj4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtbG9jYWxlOiAnemhfQ04nIj50aGlzIGlz
IGFoZW0gZm9udDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9kb3dubG9hZC9k
ZWZhdWx0LWVuY29kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9kb3dubG9hZC9kZWZhdWx0LWVuY29kaW5nLmh0bWwJKHJldmlzaW9uIDI2OTE3NykKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsNyBAQAotPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgRGVmYXVsdFRleHRFbmNv
ZGluZ05hbWU9a29pOC1yIF0gLS0+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIiwgImtvaTgtciIpOwogICAg
IHRlc3RSdW5uZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUodHJ1ZSwgdHJ1ZSk7CiAgICAgdGVz
dFJ1bm5lci53YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0
aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDYgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRJY29uRGF0YWJhc2VFbmFi
bGVkKHRydWUpOwotICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
RGlzcGxheUltYWdlc0tleSIsIDApOwogICAgICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7
CiAgICAgfQogfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4tbG9jYWwtc3RvcmFnZS13azEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLXdrMS5odG1sCShy
ZXZpc2lvbiAyNjkxNzcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi1sb2NhbC1zdG9yYWdlLXdrMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQs
NyBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0JdGVzdFJ1bm5lci5vdmVycmlkZVByZWZl
cmVuY2UoJ1dlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeScsIDEpOworCWludGVybmFscy5zZXR0
aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrVGhpcmRQYXJ0eScpOwogfQogCiBm
dW5jdGlvbiBjb250aW51ZVRlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy9sb2FkLWxvY2FsLXN0b3JhZ2UuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9sb2FkLWxvY2FsLXN0b3Jh
Z2UuaHRtbAkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9yYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTE2LDcgKzE2LDYgQEAgdHJ5IHsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAJaW50ZXJu
YWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKLQl0ZXN0
UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5Jywg
MCk7CiAJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveHNsL3hzbHQtdHJhbnNmb3JtLXdpdGgtamF2YXNjcmlwdC1kaXNh
YmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveHNsL3hzbHQt
dHJhbnNmb3JtLXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAyNjkxNzcp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3hzbC94c2x0LXRyYW5zZm9ybS13aXRoLWphdmFz
Y3JpcHQtZGlzYWJsZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRl
c3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CiB9CiAKIGZ1bmN0aW9uIHNob3VsZE5vdEJlRXhlY3V0
ZWQoKQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2ludmVydGVkLWNvbG9ycy9ub24t
Y29tcG9zaXRlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9p
bnZlcnRlZC1jb2xvcnMvbm9uLWNvbXBvc2l0ZWQuaHRtbAkocmV2aXNpb24gMjY5MTc3KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2ludmVydGVkLWNvbG9ycy9ub24tY29tcG9zaXRlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw3IEBACiAgICAgPC9zdHlsZT4KICAgICA8
c2NyaXB0PgogICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgICAgICB0ZXN0
UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0U2hvdWxkSW52ZXJ0Q29sb3JzIiwgIjEi
KTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0U2hvdWxkSW52ZXJ0Q29sb3JzKHRydWUpOwog
ICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93azIvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTU3LDEwICs1
Nyw2IEBAIHdlYmtpdC5vcmcvYi81ODE4MyBlZGl0aW5nL2V4ZWNDb21tYW5kL2MKICMgVGhpcyB0
ZXN0IGhhcyBiZWVuIHNraXBwZWQgZm9yIGEgbG9uZyB0aW1lLiBUZW1wb3JhcmlseSBtYXJraW5n
IGFzIGZsYWt5IHRvIHNlZSB3aGF0IGJvdHMgdGhpbmsuCiB3ZWJraXQub3JnL2IvNjA2NDggZmFz
dC9mcmFtZXMvZmxhdHRlbmluZy9mcmFtZXNldC1mbGF0dGVuaW5nLXN1YmZyYW1lc2V0cy5odG1s
IFsgUGFzcyBGYWlsdXJlIF0KIAotIyBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIG92ZXJyaWRlUHJl
ZmVyZW5jZSBmb3Igbm9uLWJvb2xlYW4gdmFsdWVzCi0jICh6ZXJvLWZvbnQtc2l6ZS5odG1sIHBh
c3NlcyBiZWNhdXNlIG92ZXJyaWRlUHJlZmVyZW5jZSBkb2VzIG5vdCB3b3JrKQotd2Via2l0Lm9y
Zy9iLzQyMTk3IGZhc3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sIFsgUGFzcyBdCi0KIHdlYmtp
dC5vcmcvYi84MjY2NSBodHRwL3Rlc3RzL3dlYmFyY2hpdmUvdGVzdC1jc3MtdXJsLWVuY29kaW5n
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi84MjY2NSBodHRwL3Rlc3RzL3dlYmFyY2hpdmUv
dGVzdC1jc3MtdXJsLWVuY29kaW5nLXNoaWZ0LWppcy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvODI2NjUgaHR0cC90ZXN0cy93ZWJhcmNoaXZlL3Rlc3QtY3NzLXVybC1lbmNvZGluZy11dGYt
OC5odG1sIFsgU2tpcCBdCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWltYWdl
LXdpdGgtZGF0YS11cmktaW1hZ2VzLWRpc2FibGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdlcy1kaXNhYmxl
ZC5odG1sCShyZXZpc2lvbiAyNjkxNzcpCisrKyBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3Zn
LWltYWdlLXdpdGgtZGF0YS11cmktaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEwLDggKzEwLDggQEAKICAgPC9zdHlsZT4KICAgPHNjcmlwdD4KICAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKLSAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2Vz
RW5hYmxlZChmYWxzZSk7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSk7CisgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
SW1hZ2VzRW5hYmxlZChmYWxzZSk7CisgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0TG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKTsKICAgICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQo
KTsKICAgICB9CiAgIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412745</attachid>
            <date>2020-10-30 08:06:31 -0700</date>
            <delta_ts>2020-10-30 09:31:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218373-20201030080629.patch</filename>
            <type>text/plain</type>
            <size>21945</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTE3OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDIwLTEwLTI5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGltcGxlbWVudGF0aW9ucyBvZiB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZS4g
QWRkcyB0ZXN0UnVubmVyLnNldFNob3VsZEludmVydENvbG9ycywKKyAgICAgICAgd2hpY2ggaXMg
YSB3aW5kb3dzIG9ubHkgcHJlZmVyZW5jZS4gV2hlbiB3ZSBnZW5lcmF0ZSBwcmVmZXJlbmNlcyBm
b3IgV2luZG93cywgd2UgY2FuIGNvbnZlcnQKKyAgICAgICAgdGhpcyB0byB1c2UgdGVzdCBoZWFk
ZXIgY29tbWFuZHMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkcyBkZWZhdWx0
cyBmb3IgTWluaW11bUZvbnRTaXplIGFuZCBEZWZhdWx0VGV4dEVuY29kaW5nTmFtZSBzbyB0aGV5
IGNhbiBiZSB1c2VkIGFzIAorICAgICAgICB0ZXN0IGhlYWRlciBjb21tYW5kcyBmb3IgRHVtcFJl
bmRlclRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTaG91bGRJbnZlcnRDb2xvcnMpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKG92ZXJyaWRl
UHJlZmVyZW5jZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW06CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFNob3VsZEludmVydENvbG9ycyk6CisgICAgICAgIChUZXN0UnVubmVy
OjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6dG9Cb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKTogRGVsZXRlZC4KKwogMjAyMC0xMC0yOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5pbmcgYm9vbGVhbiBvdmVycmlk
ZVByZWZlcmVuY2UgY2FsbHMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJ
KHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTIgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBU
ZXN0T3B0aW9uczo6ZGVmYXVsdAogICAgICAgICAgICAgeyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVk
IiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIldlYkdQVUVuYWJsZWQiLCBmYWxzZSB9LAogICAg
ICAgICB9OworICAgICAgICBmZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMgPSB7
CisgICAgICAgICAgICB7ICJNaW5pbXVtRm9udFNpemUiLCAwIH0sCisgICAgICAgIH07CisgICAg
ICAgIGZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKKyAgICAgICAgICAg
IHsgIkRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIiwgIklTTy04ODU5LTEiIH0sCisgICAgICAgIH07
CiAgICAgfQogICAgIHJldHVybiBmZWF0dXJlczsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDIzICs1NTUsNiBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBpc0NvbW1hbmRFbmFibGVkQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
Qm9vbGVhbihjb250ZXh0LCBjb250cm9sbGVyLT5pc0NvbW1hbmRFbmFibGVkKG5hbWUuZ2V0KCkp
KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgb3ZlcnJpZGVQcmVmZXJlbmNlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgYXV0
byBrZXkgPSBXVFI6OmNyZWF0ZUpTU3RyaW5nKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7Ci0gICAg
YXV0byB2YWx1ZSA9IFdUUjo6Y3JlYXRlSlNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzFdKTsK
LQotICAgIC8vIFNob3VsZCB1c2UgYDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFj
a0ZvcndhcmRDYWNoZT10cnVlIF0gLS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFK
U1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleS5nZXQoKSwgIldlYktpdFVzZXNCYWNrRm9y
d2FyZENhY2hlUHJlZmVyZW5jZUtleSIpKTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKLSAgICBjb250cm9sbGVyLT5vdmVycmlkZVByZWZlcmVuY2Uoa2V5LmdldCgpLCB2YWx1ZS5n
ZXQoKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19Ci0K
IHN0YXRpYyBKU1ZhbHVlUmVmIGtlZXBXZWJIaXN0b3J5Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTIwMDUs
NiArMTk4OCwyMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBydW5VSVNjcmlwdENhbGxiYWNrKEpTCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCisjaWYgUExBVEZP
Uk0oV0lOKQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRJbnZlcnRDb2xvcnNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQg
PCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAg
ICBhdXRvIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRTaG91bGRJbnZlcnRDb2xv
cnMoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworI2VuZGlmCisKIHN0YXRpYyB2
b2lkIHRlc3RSdW5uZXJPYmplY3RGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAg
c3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKS0+ZGVy
ZWYoKTsKQEAgLTIxMzgsNyArMjEzNiw2IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIFRlc3RS
dW5uZXI6OnN0YXQKICAgICAgICAgeyAia2VlcFdlYkhpc3RvcnkiLCBrZWVwV2ViSGlzdG9yeUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RzIiwgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJub3RpZnlEb25lIiwgbm90aWZ5RG9u
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJy
aWRlUHJlZmVyZW5jZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdGhUb0xvY2FsUmVz
b3VyY2UiLCBwYXRoVG9Mb2NhbFJlc291cmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
cHJpbnRUb1BERiIsIGR1bXBBc1BERkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1ZXVl
QmFja05hdmlnYXRpb24iLCBxdWV1ZUJhY2tOYXZpZ2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAg
LTIyNDUsNiArMjI0Miw5IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0
YXQKICAgICAgICAgeyAic2V0T3BlblBhbmVsRmlsZXMiLCBzZXRPcGVuUGFuZWxGaWxlc0NhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uIiwgU2V0
T3BlblBhbmVsRmlsZXNNZWRpYUljb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3Jj
ZUltbWVkaWF0ZUNvbXBsZXRpb24iLCBmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgeyAic2V0U2hvdWxkSW52ZXJ0Q29s
b3JzIiwgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyNlbmRpZgogICAg
ICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVy
LmgJKHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNl
dFBhZ2VQYXVzZWQoYm9vbCBwYXVzZWQpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAg
IHZvaWQgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wpOworI2VuZGlmCiAKICAgICB2b2lkIHNl
dFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIHJlc2V0UGFnZVZpc2liaWxp
dHkoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCShy
ZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk2LDE3ICs1OTYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX2Rpc3Bh
dGNoUGVuZGluZ0xvYWRSZXF1ZXN0c107CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBrZXlDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5KSk7Ci0gICAgTlNTdHJpbmcgKmtleU5TID0gKF9fYnJp
ZGdlIE5TU3RyaW5nICopa2V5Q0YuZ2V0KCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHZhbHVlKSk7Ci0gICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNTdHJpbmcg
Kil2YWx1ZUNGLmdldCgpOwotCi0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2Vz
XSBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6
a2V5TlNdOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7
CiAgICAgW1dlYkhpc3RvcnkgX3JlbW92ZUFsbFZpc2l0ZWRMaW5rc107CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCShyZXZpc2lvbiAyNjkxNzcpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1OCwyNSArODU4LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpkaXNwYXRjaFBlbmRpbmdM
b2FkUmVxdQogICAgIHZpZXdQcml2YXRlLT5kaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMoKTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5
LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7Ci0g
ICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKLSAgICBpZiAoRkFJ
TEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1ZXJ5
LCBwcmVmZXJlbmNlcyk7Ci0gICAgaWYgKCFwcmVmc1ByaXZhdGUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIF9ic3RyX3Qga2V5QlNUUihKU1N0cmluZ0NvcHlCU1RSKGtleSksIGZhbHNlKTsKLSAg
ICBfYnN0cl90IHZhbHVlQlNUUihKU1N0cmluZ0NvcHlCU1RSKHZhbHVlKSwgZmFsc2UpOwotICAg
IHByZWZzUHJpdmF0ZS0+c2V0UHJlZmVyZW5jZUZvclRlc3Qoa2V5QlNUUiwgdmFsdWVCU1RSKTsK
LX0KLQogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQogewogICAgIENP
TVB0cjxJV2ViSGlzdG9yeT4gaGlzdG9yeTsKQEAgLTEzOTgsMyArMTM3OSwyMCBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFCiB7CiAgICAgZnByaW50Zih0ZXN0UmVz
dWx0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKCkg
bm90IGltcGxlbWVudGVkXG4iKTsKIH0KKwordm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRJbnZl
cnRDb2xvcnMoYm9vbCBzaG91bGRJbnZlcnRDb2xvcnMpCit7CisgICAgQ09NUHRyPElXZWJWaWV3
PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7
CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU+IHByZWZz
UHJpdmF0ZShRdWVyeSwgcHJlZmVyZW5jZXMpOworICAgIGlmICghcHJlZnNQcml2YXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcmVmc1ByaXZhdGUtPnNldFNob3VsZEludmVydENvbG9ycyhz
aG91bGRJbnZlcnRDb2xvcnMpOworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkxNzcpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NDYsMjEgKzg0Niw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbFNl
dEJhY2tpbmdTY2FsZUZhY3QKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFNldEJhY2tpbmdT
Y2FsZUZhY3RvckNhbGxiYWNrSUQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdG9Cb29sKEpT
U3RyaW5nUmVmIHZhbHVlKQotewotICAgIHJldHVybiBKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHZhbHVlLCAidHJ1ZSIpIHx8IEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcodmFsdWUs
ICIxIik7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5n
UmVmIHByZWZlcmVuY2UsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIGF1dG8mIGluamVjdGVk
QnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpOwotICAgIC8vIFNob3VsZCB1c2Ug
YDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFja0ZvcndhcmRDYWNoZT10cnVlIF0g
LS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFKU1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKHByZWZlcmVuY2UsICJXZWJLaXRVc2VzQmFja0ZvcndhcmRDYWNoZVByZWZlcmVuY2VL
ZXkiKSk7Ci0KLSAgICAvLyBGSVhNRTogaGFuZGxlIG5vbi1ib29sZWFuIHByZWZlcmVuY2VzLgot
ICAgIFdLQnVuZGxlT3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIoaW5qZWN0ZWRC
dW5kbGUuYnVuZGxlKCksIGluamVjdGVkQnVuZGxlLnBhZ2VHcm91cCgpLCB0b1dLKHByZWZlcmVu
Y2UpLmdldCgpLCB0b0Jvb2wodmFsdWUpKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRBbHdh
eXNBY2NlcHRDb29raWVzKGJvb2wgYWNjZXB0KQogewogICAgIHBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoIlNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBhY2NlcHQpOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCShyZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcsOCArMTk3LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHVuZGVmaW5lZCBz
ZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2xlYW4gYWNjZXB0KTsKICAgICB1bmRlZmluZWQgc2V0
T25seUFjY2VwdEZpcnN0UGFydHlDb29raWVzKGJvb2xlYW4gYWNjZXB0KTsKIAotICAgIHVuZGVm
aW5lZCBvdmVycmlkZVByZWZlcmVuY2UoRE9NU3RyaW5nIHByZWZlcmVuY2UsIERPTVN0cmluZyB2
YWx1ZSk7Ci0KICAgICAvLyBQYWdlIFZpc2liaWxpdHkgQVBJCiAgICAgdW5kZWZpbmVkIHNldFBh
Z2VWaXNpYmlsaXR5KERPTVN0cmluZyBzdGF0ZSk7CiAgICAgdW5kZWZpbmVkIHJlc2V0UGFnZVZp
c2liaWxpdHkoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2OTE3OCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDIwLTEwLTI5ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmlu
ZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBjYWxscworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyByZW1haW5pbmcgdXNlcyBvZiB0
ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBhbmQgYWRkcmVzc2VzIHNvbWUKKyAgICAgICAg
cmVjZW50IGZlZWRiYWNrIGJ5IHJlbW92aW5nIHNvbWUgdW5uZWNlc3NhcnkgIndpbmRvdy4iIHVz
ZXMuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9j
ay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sOgorICAgICAgICAqIGZhc3QvcGFy
c2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sOgorICAgICAgICAqIGZh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L3RleHQvemVyby1mb250LXNpemUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2Rvd25sb2FkL2RlZmF1bHQtZW5jb2RpbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21p
c2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9yYWdl
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1qYXZh
c2NyaXB0LWRpc2FibGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2luL2ludmVydGVkLWNv
bG9ycy9ub24tY29tcG9zaXRlZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVy
aS1pbWFnZXMtZGlzYWJsZWQuaHRtbDoKKwogMjAyMC0xMC0yOSAgQ2FybG9zIEFsYmVydG8gTG9w
ZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXUEVdIEdhcmRl
bmluZyBvZiBuZXcgZmFpbHVyZXMgYWZ0ZXIgcjI2OTE3NyBhbmQgbWFyayBtb3JlIGZsYWt5IHRl
c3RzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1p
bWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCShyZXZpc2lvbiAyNjkxNzcpCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC04LDggKzgs
OCBAQCB2YXIgaW1hZ2VPbmxvYWRGaXJlZCA9IDA7CiAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikg
ewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZCh0cnVlKTsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRp
bmdzLnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSk7CisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSk7CiAgICAgdGVzdFJ1bm5lci5xdWV1ZVJl
bG9hZCgpOwogfQogCkBAIC0yMSw3ICsyMSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRMb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHkodHJ1ZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldExv
YWRzSW1hZ2VzQXV0b21hdGljYWxseSh0cnVlKTsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCByZWxvYWQgaW4t
cGxhY2Ugd2hlbiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgaXMgY2hhbmdlcyBmcm9tIHVuc2V0
IHRvIHNldCc7CiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAgICAgaW50ZXJ2YWxJ
ZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwgMTApOwpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2Ny
aXB0LWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDI2OTE3NykKKysrIExheW91dFRlc3RzL2Zhc3Qv
cGFyc2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC00LDcgKzQsNyBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQo
KTsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFNjcmlwdEVuYWJsZWQoZmFsc2Up
OworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKIH0KIDwv
c2NyaXB0PgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3RleHQvemVyby1mb250LXNpemUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvemVyby1mb250LXNpemUuaHRt
bAkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3plcm8tZm9udC1z
aXplLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw0IEBACi08c2NyaXB0PgotICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKLSAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdE1pbmltdW1Gb250U2l6ZSIsICIxMiIpOwotPC9zY3JpcHQ+Cis8IS0tIHdlYmtp
dC10ZXN0LXJ1bm5lciBbIE1pbmltdW1Gb250U2l6ZT0xMiBdIC0tPgogPHA+VGVzdCB0aGF0IHRl
eHQgd2l0aCAwcHggZm9udCBzaXplIGlzIG5vdCBkaXNwbGF5ZWQsIGV2ZW4gaWYgYSBub24temVy
byBtaW5pbXVtIGZvbnQgc2l6ZSBzZXR0aW5nIGlzIHNwZWNpZmllZC4gT24gc3VjY2VzcywgdGhp
cyBwYXJhZ3JhcGggc2hvdWxkIGJlIHRoZSBvbmx5IHRleHQgdmlzaWJsZSBvbiB0aGUgcGFnZS48
L3A+CiA8ZGl2IHN0eWxlPSJmb250LXNpemU6MHB4OyBjb2xvcjpyZWQiPkZBSUw8L2Rpdj4KIDxk
aXYgc3R5bGU9ImZvbnQtc2l6ZTowJTsgY29sb3I6cmVkIj5GQUlMPC9kaXY+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAkocmV2
aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMvZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9j
YWxlLXNlbnNpdGl2ZS1mb250cy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zLDE2ICszLDE2IEBA
CiA8aGVhZD4KIDxzY3JpcHQ+CiBpZiAod2luZG93LmludGVybmFscykgewotICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5KCJBaGVtIiwgIkhhbnMiKTsK
LSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEZhbnRhc3lGb250RmFtaWx5KCJBaGVt
IiwgIkhhbnMiKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RhbmRhcmRGb250RmFtaWx5
KCJBaGVtIiwgIkhhbnMiKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RmFudGFzeUZvbnRG
YW1pbHkoIkFoZW0iLCAiSGFucyIpOwogCi0gICAgd2luZG93LmludGVybmFscy5zZXRVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCJlbiIsICJ6aC1jbiIpOworICAgIGludGVybmFscy5zZXRVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKCJlbiIsICJ6aC1jbiIpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8
Ym9keT4KLTwhLS0gVGhpcyB0ZXN0cyBsb2NhbGUtc2Vuc2l0aXZlIGZvbnQgc2VsZWN0aW9uLiAg
VXNpbmcgb3ZlcnJpZGVQcmVmZXJlbmNlLCAgdGhlCi1mb250cyBmb3IgU2ltcGxpZmllZCBIYW4g
YXJlIHRvIEFoZW0gZm9udC4gIFNvIGFsbCBkaXZzIHNob3VsZCBtYXRjaC4gLS0+Cis8IS0tIFRo
aXMgdGVzdHMgbG9jYWxlLXNlbnNpdGl2ZSBmb250IHNlbGVjdGlvbi4gVXNpbmcgaW50ZXJuYWxz
LnNldHRpbmdzLCB0aGUKK2ZvbnRzIGZvciBTaW1wbGlmaWVkIEhhbiBhcmUgc2V0IHRvIHRoZSBB
aGVtIGZvbnQuIEFsbCBkaXZzIHNob3VsZCBtYXRjaC4gLS0+CiA8ZGl2IHN0eWxlPSJmb250LXNp
emU6IDIwcHgiPgogPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6ICdBaGVtJyI+dGhpcyBpcyBhaGVt
IGZvbnQ8L2Rpdj4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtbG9jYWxlOiAnemhfQ04nIj50aGlzIGlz
IGFoZW0gZm9udDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9kb3dubG9hZC9k
ZWZhdWx0LWVuY29kaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9kb3dubG9hZC9kZWZhdWx0LWVuY29kaW5nLmh0bWwJKHJldmlzaW9uIDI2OTE3NykKKysrIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDggKzEsNyBAQAotPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPG1ldGEg
Y2hhcnNldD0idXRmLTgiPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgRGVmYXVsdFRleHRFbmNv
ZGluZ05hbWU9a29pOC1yIF0gLS0+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0gICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIiwgImtvaTgtciIpOwogICAg
IHRlc3RSdW5uZXIuc2V0Q3VzdG9tUG9saWN5RGVsZWdhdGUodHJ1ZSwgdHJ1ZSk7CiAgICAgdGVz
dFJ1bm5lci53YWl0Rm9yUG9saWN5RGVsZWdhdGUoKTsKIH0KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0
aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL2Zhdmljb24tbG9hZHMtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNyw3ICs3LDYgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAgICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgICAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJj
ZUxvYWRDYWxsYmFja3MoKTsKICAgICAgICAgdGVzdFJ1bm5lci5zZXRJY29uRGF0YWJhc2VFbmFi
bGVkKHRydWUpOwotICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
RGlzcGxheUltYWdlc0tleSIsIDApOwogICAgICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7
CiAgICAgfQogfQpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4tbG9jYWwtc3RvcmFnZS13azEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLXdrMS5odG1sCShy
ZXZpc2lvbiAyNjkxNzcpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi1sb2NhbC1zdG9yYWdlLXdrMS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQs
NyBAQAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CiAJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0JdGVzdFJ1bm5lci5vdmVycmlkZVByZWZl
cmVuY2UoJ1dlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeScsIDEpOworCWludGVybmFscy5zZXR0
aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrVGhpcmRQYXJ0eScpOwogfQogCiBm
dW5jdGlvbiBjb250aW51ZVRlc3QoKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy9sb2FkLWxvY2FsLXN0b3JhZ2UuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9sb2FkLWxvY2FsLXN0b3Jh
Z2UuaHRtbAkocmV2aXNpb24gMjY5MTc3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9yYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTE2LDcgKzE2LDYgQEAgdHJ5IHsKIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CiAJaW50ZXJu
YWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKLQl0ZXN0
UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0U3RvcmFnZUJsb2NraW5nUG9saWN5Jywg
MCk7CiAJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMveHNsL3hzbHQtdHJhbnNmb3JtLXdpdGgtamF2YXNjcmlwdC1kaXNh
YmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMveHNsL3hzbHQt
dHJhbnNmb3JtLXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAyNjkxNzcp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3hzbC94c2x0LXRyYW5zZm9ybS13aXRoLWphdmFz
Y3JpcHQtZGlzYWJsZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRl
c3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgd2luZG93LmludGVybmFscy5z
ZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CiB9CiAKIGZ1bmN0aW9uIHNob3VsZE5vdEJlRXhlY3V0
ZWQoKQpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9y
ZXNvdXJjZXMvY2hyb21pdW0vZW5hYmxlLWh5cGVybGluay1hdWRpdGluZy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Jlc291cmNl
cy9jaHJvbWl1bS9lbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nLmpzCShyZXZpc2lvbiAyNjkxNzcp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Jlc291cmNl
cy9jaHJvbWl1bS9lbmFibGUtaHlwZXJsaW5rLWF1ZGl0aW5nLmpzCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDIgKzEsMiBAQAotaWYgKHdpbmRvdy50ZXN0UnVubmVyKQotICB0ZXN0UnVubmVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgiV2ViS2l0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkIiwgMSk7CisvLyBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisvLyAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNl
KCJXZWJLaXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQiLCAxKTsKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9pbnZlcnRlZC1jb2xvcnMvbm9uLWNvbXBvc2l0ZWQuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vaW52ZXJ0ZWQtY29sb3JzL25vbi1jb21w
b3NpdGVkLmh0bWwJKHJldmlzaW9uIDI2OTE3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dp
bi9pbnZlcnRlZC1jb2xvcnMvbm9uLWNvbXBvc2l0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTYsNyArMTYsNyBAQAogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdFNob3VsZEludmVydENvbG9ycyIsICIxIik7CisgICAgICAgICAgICB0ZXN0UnVu
bmVyLnNldFNob3VsZEludmVydENvbG9ycyh0cnVlKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4K
IDxib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJ
KHJldmlzaW9uIDI2OTE3NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0
YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMCArNTcsNiBAQCB3ZWJraXQub3JnL2IvNTgx
ODMgZWRpdGluZy9leGVjQ29tbWFuZC9jCiAjIFRoaXMgdGVzdCBoYXMgYmVlbiBza2lwcGVkIGZv
ciBhIGxvbmcgdGltZS4gVGVtcG9yYXJpbHkgbWFya2luZyBhcyBmbGFreSB0byBzZWUgd2hhdCBi
b3RzIHRoaW5rLgogd2Via2l0Lm9yZy9iLzYwNjQ4IGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvZnJh
bWVzZXQtZmxhdHRlbmluZy1zdWJmcmFtZXNldHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMg
V2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBvdmVycmlkZVByZWZlcmVuY2UgZm9yIG5vbi1ib29sZWFu
IHZhbHVlcwotIyAoemVyby1mb250LXNpemUuaHRtbCBwYXNzZXMgYmVjYXVzZSBvdmVycmlkZVBy
ZWZlcmVuY2UgZG9lcyBub3Qgd29yaykKLXdlYmtpdC5vcmcvYi80MjE5NyBmYXN0L3RleHQvemVy
by1mb250LXNpemUuaHRtbCBbIFBhc3MgXQotCiB3ZWJraXQub3JnL2IvODI2NjUgaHR0cC90ZXN0
cy93ZWJhcmNoaXZlL3Rlc3QtY3NzLXVybC1lbmNvZGluZy5odG1sIFsgU2tpcCBdCiB3ZWJraXQu
b3JnL2IvODI2NjUgaHR0cC90ZXN0cy93ZWJhcmNoaXZlL3Rlc3QtY3NzLXVybC1lbmNvZGluZy1z
aGlmdC1qaXMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzgyNjY1IGh0dHAvdGVzdHMvd2Vi
YXJjaGl2ZS90ZXN0LWNzcy11cmwtZW5jb2RpbmctdXRmLTguaHRtbCBbIFNraXAgXQpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdlcy1k
aXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmct
aW1hZ2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMtZGlzYWJsZWQuaHRtbAkocmV2aXNpb24gMjY5MTc3
KQorKysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWlt
YWdlcy1kaXNhYmxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAgIDwv
c3R5bGU+CiAgIDxzY3JpcHQ+CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwotICAgICAg
d2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFs
c2UpOworICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwor
ICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxz
ZSk7CiAgICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7CiAgICAgfQogICA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412759</attachid>
            <date>2020-10-30 09:31:07 -0700</date>
            <delta_ts>2020-10-30 12:08:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218373-20201030093106.patch</filename>
            <type>text/plain</type>
            <size>21303</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTE3OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDIwLTEwLTI5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGltcGxlbWVudGF0aW9ucyBvZiB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZS4g
QWRkcyB0ZXN0UnVubmVyLnNldFNob3VsZEludmVydENvbG9ycywKKyAgICAgICAgd2hpY2ggaXMg
YSB3aW5kb3dzIG9ubHkgcHJlZmVyZW5jZS4gV2hlbiB3ZSBnZW5lcmF0ZSBwcmVmZXJlbmNlcyBm
b3IgV2luZG93cywgd2UgY2FuIGNvbnZlcnQKKyAgICAgICAgdGhpcyB0byB1c2UgdGVzdCBoZWFk
ZXIgY29tbWFuZHMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkcyBkZWZhdWx0
cyBmb3IgTWluaW11bUZvbnRTaXplIGFuZCBEZWZhdWx0VGV4dEVuY29kaW5nTmFtZSBzbyB0aGV5
IGNhbiBiZSB1c2VkIGFzIAorICAgICAgICB0ZXN0IGhlYWRlciBjb21tYW5kcyBmb3IgRHVtcFJl
bmRlclRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHA6Cisg
ICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTaG91bGRJbnZlcnRDb2xvcnMpOgor
ICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKG92ZXJyaWRl
UHJlZmVyZW5jZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMu
bW06CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcDoKKyAgICAgICAg
KFRlc3RSdW5uZXI6OnNldFNob3VsZEludmVydENvbG9ycyk6CisgICAgICAgIChUZXN0UnVubmVy
OjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6dG9Cb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKTogRGVsZXRlZC4KKwogMjAyMC0xMC0yOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIGFsbCByZW1haW5pbmcgYm9vbGVhbiBvdmVycmlk
ZVByZWZlcmVuY2UgY2FsbHMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9ucy5jcHAJ
KHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsMTIgQEAgY29uc3QgVGVzdEZlYXR1cmVzJiBU
ZXN0T3B0aW9uczo6ZGVmYXVsdAogICAgICAgICAgICAgeyAiUmVzaXplT2JzZXJ2ZXJFbmFibGVk
IiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIldlYkdQVUVuYWJsZWQiLCBmYWxzZSB9LAogICAg
ICAgICB9OworICAgICAgICBmZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVhdHVyZXMgPSB7
CisgICAgICAgICAgICB7ICJNaW5pbXVtRm9udFNpemUiLCAwIH0sCisgICAgICAgIH07CisgICAg
ICAgIGZlYXR1cmVzLnN0cmluZ1dlYlByZWZlcmVuY2VGZWF0dXJlcyA9IHsKKyAgICAgICAgICAg
IHsgIkRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIiwgIklTTy04ODU5LTEiIH0sCisgICAgICAgIH07
CiAgICAgfQogICAgIHJldHVybiBmZWF0dXJlczsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDIzICs1NTUsNiBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBpc0NvbW1hbmRFbmFibGVkQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
Qm9vbGVhbihjb250ZXh0LCBjb250cm9sbGVyLT5pc0NvbW1hbmRFbmFibGVkKG5hbWUuZ2V0KCkp
KTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgb3ZlcnJpZGVQcmVmZXJlbmNlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50IDwgMikK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAgYXV0
byBrZXkgPSBXVFI6OmNyZWF0ZUpTU3RyaW5nKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7Ci0gICAg
YXV0byB2YWx1ZSA9IFdUUjo6Y3JlYXRlSlNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzFdKTsK
LQotICAgIC8vIFNob3VsZCB1c2UgYDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFj
a0ZvcndhcmRDYWNoZT10cnVlIF0gLS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFK
U1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleS5nZXQoKSwgIldlYktpdFVzZXNCYWNrRm9y
d2FyZENhY2hlUHJlZmVyZW5jZUtleSIpKTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIg
PSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3Qp
KTsKLSAgICBjb250cm9sbGVyLT5vdmVycmlkZVByZWZlcmVuY2Uoa2V5LmdldCgpLCB2YWx1ZS5n
ZXQoKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19Ci0K
IHN0YXRpYyBKU1ZhbHVlUmVmIGtlZXBXZWJIaXN0b3J5Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTIwMDUs
NiArMTk4OCwyMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBydW5VSVNjcmlwdENhbGxiYWNrKEpTCiAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCisjaWYgUExBVEZP
Uk0oV0lOKQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRJbnZlcnRDb2xvcnNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQg
PCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAg
ICBhdXRvIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQ
cml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRTaG91bGRJbnZlcnRDb2xv
cnMoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworI2VuZGlmCisKIHN0YXRpYyB2
b2lkIHRlc3RSdW5uZXJPYmplY3RGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7CiAgICAg
c3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKS0+ZGVy
ZWYoKTsKQEAgLTIxMzgsNyArMjEzNiw2IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIFRlc3RS
dW5uZXI6OnN0YXQKICAgICAgICAgeyAia2VlcFdlYkhpc3RvcnkiLCBrZWVwV2ViSGlzdG9yeUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RzIiwgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJub3RpZnlEb25lIiwgbm90aWZ5RG9u
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92ZXJy
aWRlUHJlZmVyZW5jZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdGhUb0xvY2FsUmVz
b3VyY2UiLCBwYXRoVG9Mb2NhbFJlc291cmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
cHJpbnRUb1BERiIsIGR1bXBBc1BERkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1ZXVl
QmFja05hdmlnYXRpb24iLCBxdWV1ZUJhY2tOYXZpZ2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKQEAg
LTIyNDUsNiArMjI0Miw5IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0
YXQKICAgICAgICAgeyAic2V0T3BlblBhbmVsRmlsZXMiLCBzZXRPcGVuUGFuZWxGaWxlc0NhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uIiwgU2V0
T3BlblBhbmVsRmlsZXNNZWRpYUljb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJmb3Jj
ZUltbWVkaWF0ZUNvbXBsZXRpb24iLCBmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgeyAic2V0U2hvdWxkSW52ZXJ0Q29s
b3JzIiwgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyNlbmRpZgogICAg
ICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVy
LmgJKHJldmlzaW9uIDI2OTE3NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNl
dFBhZ2VQYXVzZWQoYm9vbCBwYXVzZWQpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQorICAg
IHZvaWQgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wpOworI2VuZGlmCiAKICAgICB2b2lkIHNl
dFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIHJlc2V0UGFnZVZpc2liaWxp
dHkoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1tCShy
ZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5lck1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk2LDE3ICs1OTYsNiBAQCB2b2lkIFRlc3RSdW5uZXI6
OmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX2Rpc3Bh
dGNoUGVuZGluZ0xvYWRSZXF1ZXN0c107CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQ
cmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBrZXlDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmco
a0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5KSk7Ci0gICAgTlNTdHJpbmcgKmtleU5TID0gKF9fYnJp
ZGdlIE5TU3RyaW5nICopa2V5Q0YuZ2V0KCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHZhbHVlKSk7Ci0gICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNTdHJpbmcg
Kil2YWx1ZUNGLmdldCgpOwotCi0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2Vz
XSBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWVOUyBmb3JLZXk6
a2V5TlNdOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7
CiAgICAgW1dlYkhpc3RvcnkgX3JlbW92ZUFsbFZpc2l0ZWRMaW5rc107CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCShyZXZpc2lvbiAyNjkxNzcpCisr
KyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg1OCwyNSArODU4LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpkaXNwYXRjaFBlbmRpbmdM
b2FkUmVxdQogICAgIHZpZXdQcml2YXRlLT5kaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMoKTsK
IH0KIAotdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5
LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7Ci0g
ICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKLSAgICBpZiAoRkFJ
TEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1ZXJ5
LCBwcmVmZXJlbmNlcyk7Ci0gICAgaWYgKCFwcmVmc1ByaXZhdGUpCi0gICAgICAgIHJldHVybjsK
LQotICAgIF9ic3RyX3Qga2V5QlNUUihKU1N0cmluZ0NvcHlCU1RSKGtleSksIGZhbHNlKTsKLSAg
ICBfYnN0cl90IHZhbHVlQlNUUihKU1N0cmluZ0NvcHlCU1RSKHZhbHVlKSwgZmFsc2UpOwotICAg
IHByZWZzUHJpdmF0ZS0+c2V0UHJlZmVyZW5jZUZvclRlc3Qoa2V5QlNUUiwgdmFsdWVCU1RSKTsK
LX0KLQogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQogewogICAgIENP
TVB0cjxJV2ViSGlzdG9yeT4gaGlzdG9yeTsKQEAgLTEzOTgsMyArMTM3OSwyMCBAQCB2b2lkIFRl
c3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFCiB7CiAgICAgZnByaW50Zih0ZXN0UmVz
dWx0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVkKCkg
bm90IGltcGxlbWVudGVkXG4iKTsKIH0KKwordm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRJbnZl
cnRDb2xvcnMoYm9vbCBzaG91bGRJbnZlcnRDb2xvcnMpCit7CisgICAgQ09NUHRyPElXZWJWaWV3
PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7
CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU+IHByZWZz
UHJpdmF0ZShRdWVyeSwgcHJlZmVyZW5jZXMpOworICAgIGlmICghcHJlZnNQcml2YXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwcmVmc1ByaXZhdGUtPnNldFNob3VsZEludmVydENvbG9ycyhz
aG91bGRJbnZlcnRDb2xvcnMpOworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkxNzcpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04NDYsMjEgKzg0Niw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2FsbFNl
dEJhY2tpbmdTY2FsZUZhY3QKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFNldEJhY2tpbmdT
Y2FsZUZhY3RvckNhbGxiYWNrSUQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdG9Cb29sKEpT
U3RyaW5nUmVmIHZhbHVlKQotewotICAgIHJldHVybiBKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3Ry
aW5nKHZhbHVlLCAidHJ1ZSIpIHx8IEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcodmFsdWUs
ICIxIik7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3RyaW5n
UmVmIHByZWZlcmVuY2UsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIGF1dG8mIGluamVjdGVk
QnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpOwotICAgIC8vIFNob3VsZCB1c2Ug
YDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFja0ZvcndhcmRDYWNoZT10cnVlIF0g
LS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFKU1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKHByZWZlcmVuY2UsICJXZWJLaXRVc2VzQmFja0ZvcndhcmRDYWNoZVByZWZlcmVuY2VL
ZXkiKSk7Ci0KLSAgICAvLyBGSVhNRTogaGFuZGxlIG5vbi1ib29sZWFuIHByZWZlcmVuY2VzLgot
ICAgIFdLQnVuZGxlT3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIoaW5qZWN0ZWRC
dW5kbGUuYnVuZGxlKCksIGluamVjdGVkQnVuZGxlLnBhZ2VHcm91cCgpLCB0b1dLKHByZWZlcmVu
Y2UpLmdldCgpLCB0b0Jvb2wodmFsdWUpKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRBbHdh
eXNBY2NlcHRDb29raWVzKGJvb2wgYWNjZXB0KQogewogICAgIHBvc3RTeW5jaHJvbm91c01lc3Nh
Z2UoIlNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBhY2NlcHQpOwpJbmRleDogVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rl
c3RSdW5uZXIuaWRsCShyZXZpc2lvbiAyNjkxNzcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTcsOCArMTk3LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHVuZGVmaW5lZCBz
ZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2xlYW4gYWNjZXB0KTsKICAgICB1bmRlZmluZWQgc2V0
T25seUFjY2VwdEZpcnN0UGFydHlDb29raWVzKGJvb2xlYW4gYWNjZXB0KTsKIAotICAgIHVuZGVm
aW5lZCBvdmVycmlkZVByZWZlcmVuY2UoRE9NU3RyaW5nIHByZWZlcmVuY2UsIERPTVN0cmluZyB2
YWx1ZSk7Ci0KICAgICAvLyBQYWdlIFZpc2liaWxpdHkgQVBJCiAgICAgdW5kZWZpbmVkIHNldFBh
Z2VWaXNpYmlsaXR5KERPTVN0cmluZyBzdGF0ZSk7CiAgICAgdW5kZWZpbmVkIHJlc2V0UGFnZVZp
c2liaWxpdHkoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2OTE4OCkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDIwLTEwLTI5ICBTYW0g
V2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmlu
ZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBjYWxscworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyByZW1haW5pbmcgdXNlcyBvZiB0
ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBhbmQgYWRkcmVzc2VzIHNvbWUKKyAgICAgICAg
cmVjZW50IGZlZWRiYWNrIGJ5IHJlbW92aW5nIHNvbWUgdW5uZWNlc3NhcnkgIndpbmRvdy4iIHVz
ZXMuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9j
ay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sOgorICAgICAgICAqIGZhc3QvcGFy
c2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sOgorICAgICAgICAqIGZh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L3RleHQvemVyby1mb250LXNpemUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2Rvd25sb2FkL2RlZmF1bHQtZW5jb2RpbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL21p
c2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWw6Cisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9yYWdl
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1qYXZh
c2NyaXB0LWRpc2FibGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2luL2ludmVydGVkLWNv
bG9ycy9ub24tY29tcG9zaXRlZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zOgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVy
aS1pbWFnZXMtZGlzYWJsZWQuaHRtbDoKKwogMjAyMC0xMC0zMCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMvcmVzb3Vy
Y2VzIHRlc3RzIGZyb20gdXBzdHJlYW0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rp
c3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFn
ZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAkocmV2
aXNpb24gMjY5MTg4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAgdmFyIGltYWdlT25sb2FkRmlyZWQgPSAwOwogCiBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7Ci0gICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2Up
OworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpOwogICAg
IHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKIH0KIApAQCAtMjEsNyArMjEsNyBAQCBmdW5jdGlv
biBydW5UZXN0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdpbmRvdy5pbnRlcm5h
bHMuc2V0dGluZ3Muc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHRydWUpOworICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkodHJ1ZSk7CiAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFn
ZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5IGlz
IGNoYW5nZXMgZnJvbSB1bnNldCB0byBzZXQnOwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwogICAgIGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEw
KTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlw
dC1kaXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL25v
c2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAyNjkxODgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9ub3NjcmlwdC13aXRoLWphdmFzY3JpcHQtZGlzYWJs
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRlc3RSdW5uZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRT
Y3JpcHRFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U2NyaXB0RW5h
YmxlZChmYWxzZSk7CiB9CiA8L3NjcmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L3plcm8tZm9udC1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0
L3plcm8tZm9udC1zaXplLmh0bWwJKHJldmlzaW9uIDI2OTE4OCkKKysrIExheW91dFRlc3RzL2Zh
c3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNCBA
QAotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5u
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRNaW5pbXVtRm9udFNpemUiLCAiMTIiKTsKLTwv
c2NyaXB0PgorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBNaW5pbXVtRm9udFNpemU9MTIgXSAt
LT4KIDxwPlRlc3QgdGhhdCB0ZXh0IHdpdGggMHB4IGZvbnQgc2l6ZSBpcyBub3QgZGlzcGxheWVk
LCBldmVuIGlmIGEgbm9uLXplcm8gbWluaW11bSBmb250IHNpemUgc2V0dGluZyBpcyBzcGVjaWZp
ZWQuIE9uIHN1Y2Nlc3MsIHRoaXMgcGFyYWdyYXBoIHNob3VsZCBiZSB0aGUgb25seSB0ZXh0IHZp
c2libGUgb24gdGhlIHBhZ2UuPC9wPgogPGRpdiBzdHlsZT0iZm9udC1zaXplOjBweDsgY29sb3I6
cmVkIj5GQUlMPC9kaXY+CiA8ZGl2IHN0eWxlPSJmb250LXNpemU6MCU7IGNvbG9yOnJlZCI+RkFJ
TDwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0
aXZlLWZvbnRzLmh0bWwJKHJldmlzaW9uIDI2OTE4OCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4
dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMywxNiArMywxNiBAQAogPGhlYWQ+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5pbnRlcm5h
bHMpIHsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0YW5kYXJkRm9udEZhbWls
eSgiQWhlbSIsICJIYW5zIik7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRGYW50
YXN5Rm9udEZhbWlseSgiQWhlbSIsICJIYW5zIik7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFN0YW5kYXJkRm9udEZhbWlseSgiQWhlbSIsICJIYW5zIik7CisgICAgaW50ZXJuYWxzLnNldHRp
bmdzLnNldEZhbnRhc3lGb250RmFtaWx5KCJBaGVtIiwgIkhhbnMiKTsKIAotICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcygiZW4iLCAiemgtY24iKTsKKyAgICBp
bnRlcm5hbHMuc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcygiZW4iLCAiemgtY24iKTsKIH0KIDwv
c2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08IS0tIFRoaXMgdGVzdHMgbG9jYWxlLXNlbnNpdGl2
ZSBmb250IHNlbGVjdGlvbi4gIFVzaW5nIG92ZXJyaWRlUHJlZmVyZW5jZSwgIHRoZQotZm9udHMg
Zm9yIFNpbXBsaWZpZWQgSGFuIGFyZSB0byBBaGVtIGZvbnQuICBTbyBhbGwgZGl2cyBzaG91bGQg
bWF0Y2guIC0tPgorPCEtLSBUaGlzIHRlc3RzIGxvY2FsZS1zZW5zaXRpdmUgZm9udCBzZWxlY3Rp
b24uIFVzaW5nIGludGVybmFscy5zZXR0aW5ncywgdGhlCitmb250cyBmb3IgU2ltcGxpZmllZCBI
YW4gYXJlIHNldCB0byB0aGUgQWhlbSBmb250LiBBbGwgZGl2cyBzaG91bGQgbWF0Y2guIC0tPgog
PGRpdiBzdHlsZT0iZm9udC1zaXplOiAyMHB4Ij4KIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiAn
QWhlbSciPnRoaXMgaXMgYWhlbSBmb250PC9kaXY+CiA8ZGl2IHN0eWxlPSItd2Via2l0LWxvY2Fs
ZTogJ3poX0NOJyI+dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sCShyZXZp
c2lvbiAyNjkxODgpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2RlZmF1bHQt
ZW5jb2RpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw4ICsxLDcgQEAKLTxtZXRhIGNoYXJz
ZXQ9InV0Zi04Ij4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48IS0tIHdlYmtpdC10ZXN0LXJ1bm5l
ciBbIERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lPWtvaTgtciBdIC0tPgogPHNjcmlwdD4KIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIHRl
c3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXREZWZhdWx0VGV4dEVuY29kaW5nTmFt
ZSIsICJrb2k4LXIiKTsKICAgICB0ZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRy
dWUsIHRydWUpOwogICAgIHRlc3RSdW5uZXIud2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiB9Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdl
cy1kaXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDI2OTE4
OCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1h
Z2VzLWRpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw2IEBAIGZ1bmN0aW9u
IHJ1blRlc3QoKQogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgdGVz
dFJ1bm5lci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7CiAgICAgICAgIHRlc3RSdW5uZXIu
c2V0SWNvbkRhdGFiYXNlRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdERpc3BsYXlJbWFnZXNLZXkiLCAwKTsKICAgICAgICAgdGVzdFJ1
bm5lci5xdWV1ZVJlbG9hZCgpOwogICAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwt
c3RvcmFnZS13azEuaHRtbAkocmV2aXNpb24gMjY5MTg4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogCXRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOwogCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotCXRlc3RS
dW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3knLCAx
KTsKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja1Ro
aXJkUGFydHknKTsKIH0KIAogZnVuY3Rpb24gY29udGludWVUZXN0KCkgewpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9yYWdlLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvbG9hZC1sb2NhbC1zdG9yYWdlLmh0bWwJKHJldmlzaW9uIDI2OTE4OCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2xvYWQtbG9jYWwtc3RvcmFnZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw2IEBAIHRyeSB7CiAKIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewogCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
J0FsbG93QWxsJyk7Ci0JdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeScsIDApOwogCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwogfQogPC9z
Y3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3hzbC94c2x0LXRyYW5zZm9ybS13
aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3hzbC94c2x0LXRyYW5zZm9ybS13aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQuaHRt
bAkocmV2aXNpb24gMjY5MTg4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94c2wveHNsdC10
cmFuc2Zvcm0td2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTQsNyArNCw3IEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1
bXBBc1RleHQoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOwotICAg
IHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7CisgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogfQogCiBmdW5jdGlv
biBzaG91bGROb3RCZUV4ZWN1dGVkKCkKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9p
bnZlcnRlZC1jb2xvcnMvbm9uLWNvbXBvc2l0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vaW52ZXJ0ZWQtY29sb3JzL25vbi1jb21wb3NpdGVkLmh0bWwJKHJl
dmlzaW9uIDI2OTE4OCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9pbnZlcnRlZC1jb2xv
cnMvbm9uLWNvbXBvc2l0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYsNyArMTYsNyBAQAog
ICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQotICAgICAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdFNob3Vs
ZEludmVydENvbG9ycyIsICIxIik7CisgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFNob3VsZElu
dmVydENvbG9ycyh0cnVlKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDI2OTE4
OCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5n
IGNvcHkpCkBAIC01NywxMCArNTcsNiBAQCB3ZWJraXQub3JnL2IvNTgxODMgZWRpdGluZy9leGVj
Q29tbWFuZC9jCiAjIFRoaXMgdGVzdCBoYXMgYmVlbiBza2lwcGVkIGZvciBhIGxvbmcgdGltZS4g
VGVtcG9yYXJpbHkgbWFya2luZyBhcyBmbGFreSB0byBzZWUgd2hhdCBib3RzIHRoaW5rLgogd2Vi
a2l0Lm9yZy9iLzYwNjQ4IGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvZnJhbWVzZXQtZmxhdHRlbmlu
Zy1zdWJmcmFtZXNldHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgV2ViS2l0VGVzdFJ1bm5l
ciBuZWVkcyBvdmVycmlkZVByZWZlcmVuY2UgZm9yIG5vbi1ib29sZWFuIHZhbHVlcwotIyAoemVy
by1mb250LXNpemUuaHRtbCBwYXNzZXMgYmVjYXVzZSBvdmVycmlkZVByZWZlcmVuY2UgZG9lcyBu
b3Qgd29yaykKLXdlYmtpdC5vcmcvYi80MjE5NyBmYXN0L3RleHQvemVyby1mb250LXNpemUuaHRt
bCBbIFBhc3MgXQotCiB3ZWJraXQub3JnL2IvODI2NjUgaHR0cC90ZXN0cy93ZWJhcmNoaXZlL3Rl
c3QtY3NzLXVybC1lbmNvZGluZy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvODI2NjUgaHR0
cC90ZXN0cy93ZWJhcmNoaXZlL3Rlc3QtY3NzLXVybC1lbmNvZGluZy1zaGlmdC1qaXMuaHRtbCBb
IFNraXAgXQogd2Via2l0Lm9yZy9iLzgyNjY1IGh0dHAvdGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWNz
cy11cmwtZW5jb2RpbmctdXRmLTguaHRtbCBbIFNraXAgXQpJbmRleDogTGF5b3V0VGVzdHMvc3Zn
L2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdlcy1kaXNhYmxlZC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRh
LXVyaS1pbWFnZXMtZGlzYWJsZWQuaHRtbAkocmV2aXNpb24gMjY5MTg4KQorKysgTGF5b3V0VGVz
dHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdlcy1kaXNhYmxlZC5o
dG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAgIDwvc3R5bGU+CiAgIDxzY3Jp
cHQ+CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwotICAgICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpOworICAgICAgaW50
ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOworICAgICAgaW50ZXJuYWxz
LnNldHRpbmdzLnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSk7CiAgICAgICB0ZXN0
UnVubmVyLnF1ZXVlUmVsb2FkKCk7CiAgICAgfQogICA8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412785</attachid>
            <date>2020-10-30 12:08:12 -0700</date>
            <delta_ts>2020-10-30 17:51:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218373-20201030120811.patch</filename>
            <type>text/plain</type>
            <size>21087</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTIwMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDIwLTEwLTI5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGltcGxlbWVudGF0aW9ucyBvZiB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZS4g
QWRkcyB0ZXN0UnVubmVyLnNldFNob3VsZEludmVydENvbG9ycywKKyAgICAgICAgd2hpY2ggaXMg
YSB3aW5kb3dzIG9ubHkgcHJlZmVyZW5jZS4gV2hlbiB3ZSBnZW5lcmF0ZSBwcmVmZXJlbmNlcyBm
b3IgV2luZG93cywgd2UgY2FuIGNvbnZlcnQKKyAgICAgICAgdGhpcyB0byB1c2UgdGVzdCBoZWFk
ZXIgY29tbWFuZHMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkIGRlZmF1bHQg
Zm9yIE1pbmltdW1Gb250U2l6ZSBzbyBpdCBjYW4gYmUgdXNlZCBhcyB0ZXN0IGhlYWRlciBjb21t
YW5kcyBmb3IgRHVtcFJlbmRlclRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTaG91bGRJ
bnZlcnRDb2xvcnMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAg
ICAgICAgKG92ZXJyaWRlUHJlZmVyZW5jZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2lu
LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFNob3VsZEludmVydENvbG9ycyk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6dG9Cb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKTogRGVsZXRlZC4KKwogMjAyMC0xMC0zMCAgTGF1cm8g
TW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogU3luYyBwYWNr
YWdlIHZlcnNpb25zIHdpdGggV1BUIHN1aXRlCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9U
ZXN0T3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE9w
dGlvbnMuY3BwCShyZXZpc2lvbiAyNjkyMDIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDYgKzg0LDkgQEAgY29uc3QgVGVzdEZl
YXR1cmVzJiBUZXN0T3B0aW9uczo6ZGVmYXVsdAogICAgICAgICAgICAgeyAiUmVzaXplT2JzZXJ2
ZXJFbmFibGVkIiwgZmFsc2UgfSwKICAgICAgICAgICAgIHsgIldlYkdQVUVuYWJsZWQiLCBmYWxz
ZSB9LAogICAgICAgICB9OworICAgICAgICBmZWF0dXJlcy51aW50MzJXZWJQcmVmZXJlbmNlRmVh
dHVyZXMgPSB7CisgICAgICAgICAgICB7ICJNaW5pbXVtRm9udFNpemUiLCAwIH0sCisgICAgICAg
IH07CiAgICAgfQogICAgIHJldHVybiBmZWF0dXJlczsKIH0KSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkyMDIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU1LDIzICs1NTUsNiBAQCBzdGF0
aWMgSlNWYWx1ZVJlZiBpc0NvbW1hbmRFbmFibGVkQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVN
YWtlQm9vbGVhbihjb250ZXh0LCBjb250cm9sbGVyLT5pc0NvbW1hbmRFbmFibGVkKG5hbWUuZ2V0
KCkpKTsKIH0KIAotc3RhdGljIEpTVmFsdWVSZWYgb3ZlcnJpZGVQcmVmZXJlbmNlQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQotewotICAgIGlmIChhcmd1bWVudENvdW50IDwg
MikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwotCi0gICAg
YXV0byBrZXkgPSBXVFI6OmNyZWF0ZUpTU3RyaW5nKGNvbnRleHQsIGFyZ3VtZW50c1swXSk7Ci0g
ICAgYXV0byB2YWx1ZSA9IFdUUjo6Y3JlYXRlSlNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzFd
KTsKLQotICAgIC8vIFNob3VsZCB1c2UgYDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxl
QmFja0ZvcndhcmRDYWNoZT10cnVlIF0gLS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJU
KCFKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKGtleS5nZXQoKSwgIldlYktpdFVzZXNCYWNr
Rm9yd2FyZENhY2hlUHJlZmVyZW5jZUtleSIpKTsKLQotICAgIFRlc3RSdW5uZXIqIGNvbnRyb2xs
ZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmpl
Y3QpKTsKLSAgICBjb250cm9sbGVyLT5vdmVycmlkZVByZWZlcmVuY2Uoa2V5LmdldCgpLCB2YWx1
ZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci19
Ci0KIHN0YXRpYyBKU1ZhbHVlUmVmIGtlZXBXZWJIaXN0b3J5Q2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgaW1wbGVtZW50YXRpb24KQEAgLTIw
MDUsNiArMTk4OCwyMSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBydW5VSVNjcmlwdENhbGxiYWNrKEpT
CiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCisjaWYgUExB
VEZPUk0oV0lOKQorCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRTaG91bGRJbnZlcnRDb2xvcnNDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291
bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisK
KyAgICBhdXRvIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRTaG91bGRJbnZlcnRD
b2xvcnMoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKworI2VuZGlmCisKIHN0YXRp
YyB2b2lkIHRlc3RSdW5uZXJPYmplY3RGaW5hbGl6ZShKU09iamVjdFJlZiBvYmplY3QpCiB7CiAg
ICAgc3RhdGljX2Nhc3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKS0+
ZGVyZWYoKTsKQEAgLTIxMzgsNyArMjEzNiw2IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIFRl
c3RSdW5uZXI6OnN0YXQKICAgICAgICAgeyAia2VlcFdlYkhpc3RvcnkiLCBrZWVwV2ViSGlzdG9y
eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm51bWJlck9mUGVuZGluZ0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RzIiwgbnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJub3RpZnlEb25lIiwgbm90aWZ5
RG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCi0gICAgICAgIHsgIm92ZXJyaWRlUHJlZmVyZW5jZSIsIG92
ZXJyaWRlUHJlZmVyZW5jZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwg
a0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInBhdGhUb0xvY2Fs
UmVzb3VyY2UiLCBwYXRoVG9Mb2NhbFJlc291cmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAicHJpbnRUb1BERiIsIGR1bXBBc1BERkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInF1
ZXVlQmFja05hdmlnYXRpb24iLCBxdWV1ZUJhY2tOYXZpZ2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
QEAgLTIyNDUsNiArMjI0Miw5IEBAIGNvbnN0IEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6
OnN0YXQKICAgICAgICAgeyAic2V0T3BlblBhbmVsRmlsZXMiLCBzZXRPcGVuUGFuZWxGaWxlc0Nh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldE9wZW5QYW5lbEZpbGVzTWVkaWFJY29uIiwg
U2V0T3BlblBhbmVsRmlsZXNNZWRpYUljb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJm
b3JjZUltbWVkaWF0ZUNvbXBsZXRpb24iLCBmb3JjZUltbWVkaWF0ZUNvbXBsZXRpb25DYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorI2lmIFBMQVRGT1JNKFdJTikKKyAgICAgICAgeyAic2V0U2hvdWxkSW52ZXJ0
Q29sb3JzIiwgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyNlbmRpZgog
ICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3RSdW5uZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVu
bmVyLmgJKHJldmlzaW9uIDI2OTIwMikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5u
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTMxLDYgKzEzMSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFRlbGVwaG9uZU51bWJlclBhcnNpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lk
IHNldFBhZ2VQYXVzZWQoYm9vbCBwYXVzZWQpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oV0lOKQor
ICAgIHZvaWQgc2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wpOworI2VuZGlmCiAKICAgICB2b2lk
IHNldFBhZ2VWaXNpYmlsaXR5KGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIHJlc2V0UGFnZVZpc2li
aWxpdHkoKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFjLm1t
CShyZXZpc2lvbiAyNjkyMDIpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVGVzdFJ1bm5l
ck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk2LDE3ICs1OTYsNiBAQCB2b2lkIFRlc3RSdW5u
ZXI6OmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1CiAgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX2Rp
c3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0c107CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJp
ZGVQcmVmZXJlbmNlKEpTU3RyaW5nUmVmIGtleSwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBrZXlDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJp
bmcoa0NGQWxsb2NhdG9yRGVmYXVsdCwga2V5KSk7Ci0gICAgTlNTdHJpbmcgKmtleU5TID0gKF9f
YnJpZGdlIE5TU3RyaW5nICopa2V5Q0YuZ2V0KCk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHZhbHVlQ0YgPSBhZG9wdENGKEpTU3RyaW5nQ29weUNGU3RyaW5nKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHZhbHVlKSk7Ci0gICAgTlNTdHJpbmcgKnZhbHVlTlMgPSAoX19icmlkZ2UgTlNTdHJp
bmcgKil2YWx1ZUNGLmdldCgpOwotCi0gICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVu
Y2VzXSBfc2V0U3RyaW5nUHJlZmVyZW5jZUZvclRlc3RpbmdXaXRoVmFsdWU6dmFsdWVOUyBmb3JL
ZXk6a2V5TlNdOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygp
CiB7CiAgICAgW1dlYkhpc3RvcnkgX3JlbW92ZUFsbFZpc2l0ZWRMaW5rc107CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL1Rlc3RSdW5uZXJXaW4uY3BwCShyZXZpc2lvbiAyNjkyMDIp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg1OCwyNSArODU4LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpkaXNwYXRjaFBlbmRp
bmdMb2FkUmVxdQogICAgIHZpZXdQcml2YXRlLT5kaXNwYXRjaFBlbmRpbmdMb2FkUmVxdWVzdHMo
KTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdSZWYg
a2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7
Ci0gICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKLSAgICBpZiAo
RkFJTEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1
ZXJ5LCBwcmVmZXJlbmNlcyk7Ci0gICAgaWYgKCFwcmVmc1ByaXZhdGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIF9ic3RyX3Qga2V5QlNUUihKU1N0cmluZ0NvcHlCU1RSKGtleSksIGZhbHNlKTsK
LSAgICBfYnN0cl90IHZhbHVlQlNUUihKU1N0cmluZ0NvcHlCU1RSKHZhbHVlKSwgZmFsc2UpOwot
ICAgIHByZWZzUHJpdmF0ZS0+c2V0UHJlZmVyZW5jZUZvclRlc3Qoa2V5QlNUUiwgdmFsdWVCU1RS
KTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpyZW1vdmVBbGxWaXNpdGVkTGlua3MoKQogewogICAg
IENPTVB0cjxJV2ViSGlzdG9yeT4gaGlzdG9yeTsKQEAgLTEzOTgsMyArMTM3OSwyMCBAQCB2b2lk
IFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFCiB7CiAgICAgZnByaW50Zih0ZXN0
UmVzdWx0LCAiRVJST1I6IFRlc3RSdW5uZXI6OnNldFNwZWxsQ2hlY2tlckxvZ2dpbmdFbmFibGVk
KCkgbm90IGltcGxlbWVudGVkXG4iKTsKIH0KKwordm9pZCBUZXN0UnVubmVyOjpzZXRTaG91bGRJ
bnZlcnRDb2xvcnMoYm9vbCBzaG91bGRJbnZlcnRDb2xvcnMpCit7CisgICAgQ09NUHRyPElXZWJW
aWV3PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5j
ZXM7CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU+IHBy
ZWZzUHJpdmF0ZShRdWVyeSwgcHJlZmVyZW5jZXMpOworICAgIGlmICghcHJlZnNQcml2YXRlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBwcmVmc1ByaXZhdGUtPnNldFNob3VsZEludmVydENvbG9y
cyhzaG91bGRJbnZlcnRDb2xvcnMpOworfQpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAyNjkyMDIp
CisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04NDYsMjEgKzg0Niw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6Y2Fs
bFNldEJhY2tpbmdTY2FsZUZhY3QKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFNldEJhY2tp
bmdTY2FsZUZhY3RvckNhbGxiYWNrSUQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdG9Cb29s
KEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIHJldHVybiBKU1N0cmluZ0lzRXF1YWxUb1VURjhD
U3RyaW5nKHZhbHVlLCAidHJ1ZSIpIHx8IEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcodmFs
dWUsICIxIik7Ci19Ci0KLXZvaWQgVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKEpTU3Ry
aW5nUmVmIHByZWZlcmVuY2UsIEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIGF1dG8mIGluamVj
dGVkQnVuZGxlID0gSW5qZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpOwotICAgIC8vIFNob3VsZCB1
c2UgYDwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlQmFja0ZvcndhcmRDYWNoZT10cnVl
IF0gLS0+YCBpbnN0ZWFkLgotICAgIFJFTEVBU0VfQVNTRVJUKCFKU1N0cmluZ0lzRXF1YWxUb1VU
RjhDU3RyaW5nKHByZWZlcmVuY2UsICJXZWJLaXRVc2VzQmFja0ZvcndhcmRDYWNoZVByZWZlcmVu
Y2VLZXkiKSk7Ci0KLSAgICAvLyBGSVhNRTogaGFuZGxlIG5vbi1ib29sZWFuIHByZWZlcmVuY2Vz
LgotICAgIFdLQnVuZGxlT3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIoaW5qZWN0
ZWRCdW5kbGUuYnVuZGxlKCksIGluamVjdGVkQnVuZGxlLnBhZ2VHcm91cCgpLCB0b1dLKHByZWZl
cmVuY2UpLmdldCgpLCB0b0Jvb2wodmFsdWUpKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRB
bHdheXNBY2NlcHRDb29raWVzKGJvb2wgYWNjZXB0KQogewogICAgIHBvc3RTeW5jaHJvbm91c01l
c3NhZ2UoIlNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBhY2NlcHQpOwpJbmRleDogVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCShyZXZpc2lvbiAyNjkyMDIpCisrKyBUb29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTcsOCArMTk3LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIHVuZGVmaW5l
ZCBzZXRBbHdheXNBY2NlcHRDb29raWVzKGJvb2xlYW4gYWNjZXB0KTsKICAgICB1bmRlZmluZWQg
c2V0T25seUFjY2VwdEZpcnN0UGFydHlDb29raWVzKGJvb2xlYW4gYWNjZXB0KTsKIAotICAgIHVu
ZGVmaW5lZCBvdmVycmlkZVByZWZlcmVuY2UoRE9NU3RyaW5nIHByZWZlcmVuY2UsIERPTVN0cmlu
ZyB2YWx1ZSk7Ci0KICAgICAvLyBQYWdlIFZpc2liaWxpdHkgQVBJCiAgICAgdW5kZWZpbmVkIHNl
dFBhZ2VWaXNpYmlsaXR5KERPTVN0cmluZyBzdGF0ZSk7CiAgICAgdW5kZWZpbmVkIHJlc2V0UGFn
ZVZpc2liaWxpdHkoKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2OTIwMikKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDIwLTEwLTI5ICBT
YW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgYWxsIHJlbWFp
bmluZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBjYWxscworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzczCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlcyByZW1haW5pbmcgdXNlcyBv
ZiB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSBhbmQgYWRkcmVzc2VzIHNvbWUKKyAgICAg
ICAgcmVjZW50IGZlZWRiYWNrIGJ5IHJlbW92aW5nIHNvbWUgdW5uZWNlc3NhcnkgIndpbmRvdy4i
IHVzZXMuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sOgorICAgICAgICAqIGZhc3Qv
cGFyc2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sOgorICAgICAgICAq
IGZhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L3RleHQvemVyby1mb250LXNpemUuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2Rvd25sb2FkL2RlZmF1bHQtZW5jb2RpbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9y
YWdlLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1q
YXZhc2NyaXB0LWRpc2FibGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2luL2ludmVydGVk
LWNvbG9ycy9ub24tY29tcG9zaXRlZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0
RXhwZWN0YXRpb25zOgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRh
LXVyaS1pbWFnZXMtZGlzYWJsZWQuaHRtbDoKKwogMjAyMC0xMC0zMCAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3luYyB3ZWItcGxhdGZvcm0tdGVzdHMvcmVz
b3VyY2VzIHRlc3RzIGZyb20gdXBzdHJlYW0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBs
YWNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1p
bWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAko
cmV2aXNpb24gMjY5MjAyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFn
ZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtOCw4ICs4LDggQEAgdmFyIGltYWdlT25sb2FkRmlyZWQgPSAwOwogCiBp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAg
ICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7Ci0gICAg
d2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFs
c2UpOworICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAg
IGludGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpOwog
ICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKIH0KIApAQCAtMjEsNyArMjEsNyBAQCBmdW5j
dGlvbiBydW5UZXN0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0dGluZ3Muc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHRydWUpOworICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkodHJ1ZSk7CiAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJ
bWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
IGlzIGNoYW5nZXMgZnJvbSB1bnNldCB0byBzZXQnOwogICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOwogICAgIGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3Qs
IDEwKTsKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL25vc2NyaXB0LXdpdGgtamF2YXNj
cmlwdC1kaXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcGFyc2Vy
L25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAyNjkyMDIp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9ub3NjcmlwdC13aXRoLWphdmFzY3JpcHQtZGlz
YWJsZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRlc3RSdW5uZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5z
ZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U2NyaXB0
RW5hYmxlZChmYWxzZSk7CiB9CiA8L3NjcmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L3plcm8tZm9udC1zaXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90
ZXh0L3plcm8tZm9udC1zaXplLmh0bWwJKHJldmlzaW9uIDI2OTIwMikKKysrIExheW91dFRlc3Rz
L2Zhc3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NCBAQAotPHNjcmlwdD4KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RS
dW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRNaW5pbXVtRm9udFNpemUiLCAiMTIiKTsK
LTwvc2NyaXB0PgorPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBNaW5pbXVtRm9udFNpemU9MTIg
XSAtLT4KIDxwPlRlc3QgdGhhdCB0ZXh0IHdpdGggMHB4IGZvbnQgc2l6ZSBpcyBub3QgZGlzcGxh
eWVkLCBldmVuIGlmIGEgbm9uLXplcm8gbWluaW11bSBmb250IHNpemUgc2V0dGluZyBpcyBzcGVj
aWZpZWQuIE9uIHN1Y2Nlc3MsIHRoaXMgcGFyYWdyYXBoIHNob3VsZCBiZSB0aGUgb25seSB0ZXh0
IHZpc2libGUgb24gdGhlIHBhZ2UuPC9wPgogPGRpdiBzdHlsZT0iZm9udC1zaXplOjBweDsgY29s
b3I6cmVkIj5GQUlMPC9kaXY+CiA8ZGl2IHN0eWxlPSJmb250LXNpemU6MCU7IGNvbG9yOnJlZCI+
RkFJTDwvZGl2PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vu
c2l0aXZlLWZvbnRzLmh0bWwJKHJldmlzaW9uIDI2OTIwMikKKysrIExheW91dFRlc3RzL2Zhc3Qv
dGV4dC9pbnRlcm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMywxNiArMywxNiBAQAogPGhlYWQ+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5pbnRl
cm5hbHMpIHsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0YW5kYXJkRm9udEZh
bWlseSgiQWhlbSIsICJIYW5zIik7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRG
YW50YXN5Rm9udEZhbWlseSgiQWhlbSIsICJIYW5zIik7CisgICAgaW50ZXJuYWxzLnNldHRpbmdz
LnNldFN0YW5kYXJkRm9udEZhbWlseSgiQWhlbSIsICJIYW5zIik7CisgICAgaW50ZXJuYWxzLnNl
dHRpbmdzLnNldEZhbnRhc3lGb250RmFtaWx5KCJBaGVtIiwgIkhhbnMiKTsKIAotICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcygiZW4iLCAiemgtY24iKTsKKyAg
ICBpbnRlcm5hbHMuc2V0VXNlclByZWZlcnJlZExhbmd1YWdlcygiZW4iLCAiemgtY24iKTsKIH0K
IDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08IS0tIFRoaXMgdGVzdHMgbG9jYWxlLXNlbnNp
dGl2ZSBmb250IHNlbGVjdGlvbi4gIFVzaW5nIG92ZXJyaWRlUHJlZmVyZW5jZSwgIHRoZQotZm9u
dHMgZm9yIFNpbXBsaWZpZWQgSGFuIGFyZSB0byBBaGVtIGZvbnQuICBTbyBhbGwgZGl2cyBzaG91
bGQgbWF0Y2guIC0tPgorPCEtLSBUaGlzIHRlc3RzIGxvY2FsZS1zZW5zaXRpdmUgZm9udCBzZWxl
Y3Rpb24uIFVzaW5nIGludGVybmFscy5zZXR0aW5ncywgdGhlCitmb250cyBmb3IgU2ltcGxpZmll
ZCBIYW4gYXJlIHNldCB0byB0aGUgQWhlbSBmb250LiBBbGwgZGl2cyBzaG91bGQgbWF0Y2guIC0t
PgogPGRpdiBzdHlsZT0iZm9udC1zaXplOiAyMHB4Ij4KIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5
OiAnQWhlbSciPnRoaXMgaXMgYWhlbSBmb250PC9kaXY+CiA8ZGl2IHN0eWxlPSItd2Via2l0LWxv
Y2FsZTogJ3poX0NOJyI+dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KSW5kZXg6IExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sCShy
ZXZpc2lvbiAyNjkyMDIpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2RlZmF1
bHQtZW5jb2RpbmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIDxzY3JpcHQ+
CiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
LSAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGVmYXVsdFRleHRFbmNv
ZGluZ05hbWUiLCAia29pOC1yIik7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERlZmF1bHRU
ZXh0RW5jb2RpbmdOYW1lKCJrb2k4LXIiKTsKICAgICB0ZXN0UnVubmVyLnNldEN1c3RvbVBvbGlj
eURlbGVnYXRlKHRydWUsIHRydWUpOwogICAgIHRlc3RSdW5uZXIud2FpdEZvclBvbGljeURlbGVn
YXRlKCk7CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fk
cy13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHJl
dmlzaW9uIDI2OTIwMikKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxv
YWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw2
IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
ICAgICAgICAgdGVzdFJ1bm5lci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7CiAgICAgICAg
IHRlc3RSdW5uZXIuc2V0SWNvbkRhdGFiYXNlRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgdGVzdFJ1
bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdERpc3BsYXlJbWFnZXNLZXkiLCAwKTsKICAg
ICAgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOwogICAgIH0KIH0KSW5kZXg6IExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1v
cmlnaW4tbG9jYWwtc3RvcmFnZS13azEuaHRtbAkocmV2aXNpb24gMjY5MjAyKQorKysgTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikgewogCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogCXRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOwotCXRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRTdG9yYWdlQmxvY2tp
bmdQb2xpY3knLCAxKTsKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9s
aWN5KCdCbG9ja1RoaXJkUGFydHknKTsKIH0KIAogZnVuY3Rpb24gY29udGludWVUZXN0KCkgewpJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbG9hZC1sb2Nh
bC1zdG9yYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9yYWdlLmh0bWwJKHJldmlzaW9uIDI2OTIwMikK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2xvYWQtbG9jYWwt
c3RvcmFnZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw3ICsxNiw2IEBAIHRyeSB7CiAKIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikgewogCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxv
Y2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7Ci0JdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
J1dlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeScsIDApOwogCXRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3hzbC94c2x0
LXRyYW5zZm9ybS13aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3hzbC94c2x0LXRyYW5zZm9ybS13aXRoLWphdmFzY3JpcHQt
ZGlzYWJsZWQuaHRtbAkocmV2aXNpb24gMjY5MjAyKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTQsNyArNCw3IEBACiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKICAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0Fz
VGV4dCgpOwotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0U2NyaXB0RW5hYmxlZChm
YWxzZSk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwog
fQogCiBmdW5jdGlvbiBzaG91bGROb3RCZUV4ZWN1dGVkKCkKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9pbnZlcnRlZC1jb2xvcnMvbm9uLWNvbXBvc2l0ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vaW52ZXJ0ZWQtY29sb3JzL25vbi1jb21wb3Np
dGVkLmh0bWwJKHJldmlzaW9uIDI2OTIwMikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9p
bnZlcnRlZC1jb2xvcnMvbm9uLWNvbXBvc2l0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTYs
NyArMTYsNyBAQAogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdD4KICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQotICAgICAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdFNob3VsZEludmVydENvbG9ycyIsICIxIik7CisgICAgICAgICAgICB0ZXN0UnVubmVy
LnNldFNob3VsZEludmVydENvbG9ycyh0cnVlKTsKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxi
b2R5PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJl
dmlzaW9uIDI2OTIwMikKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRp
b25zCSh3b3JraW5nIGNvcHkpCkBAIC01NywxMCArNTcsNiBAQCB3ZWJraXQub3JnL2IvNTgxODMg
ZWRpdGluZy9leGVjQ29tbWFuZC9jCiAjIFRoaXMgdGVzdCBoYXMgYmVlbiBza2lwcGVkIGZvciBh
IGxvbmcgdGltZS4gVGVtcG9yYXJpbHkgbWFya2luZyBhcyBmbGFreSB0byBzZWUgd2hhdCBib3Rz
IHRoaW5rLgogd2Via2l0Lm9yZy9iLzYwNjQ4IGZhc3QvZnJhbWVzL2ZsYXR0ZW5pbmcvZnJhbWVz
ZXQtZmxhdHRlbmluZy1zdWJmcmFtZXNldHMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKLSMgV2Vi
S2l0VGVzdFJ1bm5lciBuZWVkcyBvdmVycmlkZVByZWZlcmVuY2UgZm9yIG5vbi1ib29sZWFuIHZh
bHVlcwotIyAoemVyby1mb250LXNpemUuaHRtbCBwYXNzZXMgYmVjYXVzZSBvdmVycmlkZVByZWZl
cmVuY2UgZG9lcyBub3Qgd29yaykKLXdlYmtpdC5vcmcvYi80MjE5NyBmYXN0L3RleHQvemVyby1m
b250LXNpemUuaHRtbCBbIFBhc3MgXQotCiB3ZWJraXQub3JnL2IvODI2NjUgaHR0cC90ZXN0cy93
ZWJhcmNoaXZlL3Rlc3QtY3NzLXVybC1lbmNvZGluZy5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3Jn
L2IvODI2NjUgaHR0cC90ZXN0cy93ZWJhcmNoaXZlL3Rlc3QtY3NzLXVybC1lbmNvZGluZy1zaGlm
dC1qaXMuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzgyNjY1IGh0dHAvdGVzdHMvd2ViYXJj
aGl2ZS90ZXN0LWNzcy11cmwtZW5jb2RpbmctdXRmLTguaHRtbCBbIFNraXAgXQpJbmRleDogTGF5
b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdlcy1kaXNh
YmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1h
Z2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMtZGlzYWJsZWQuaHRtbAkocmV2aXNpb24gMjY5MjAyKQor
KysgTGF5b3V0VGVzdHMvc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWltYWdl
cy1kaXNhYmxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4ICsxMCw4IEBACiAgIDwvc3R5
bGU+CiAgIDxzY3JpcHQ+CiAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0gICAgICB3aW5k
b3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwotICAgICAgd2lu
ZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2Up
OworICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOworICAg
ICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSk7
CiAgICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7CiAgICAgfQogICA8L3NjcmlwdD4K
</data>
<flag name="commit-queue"
          id="429310"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412813</attachid>
            <date>2020-10-30 17:03:33 -0700</date>
            <delta_ts>2020-10-31 09:08:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218373-20201030170332.patch</filename>
            <type>text/plain</type>
            <size>25699</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTIwOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDMzIEBACisyMDIwLTEwLTI5ICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZW1vdmUgYWxsIHJlbWFpbmluZyB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5j
ZSBjYWxscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE4MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVtb3ZlIGltcGxlbWVudGF0aW9ucyBvZiB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZS4g
QWRkcyB0ZXN0UnVubmVyLnNldFNob3VsZEludmVydENvbG9ycywKKyAgICAgICAgd2hpY2ggaXMg
YSB3aW5kb3dzIG9ubHkgcHJlZmVyZW5jZS4gV2hlbiB3ZSBnZW5lcmF0ZSBwcmVmZXJlbmNlcyBm
b3IgV2luZG93cywgd2UgY2FuIGNvbnZlcnQKKyAgICAgICAgdGhpcyB0byB1c2UgdGVzdCBoZWFk
ZXIgY29tbWFuZHMgaW5zdGVhZC4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRkIGRlZmF1bHQg
Zm9yIE1pbmltdW1Gb250U2l6ZSBzbyBpdCBjYW4gYmUgdXNlZCBhcyB0ZXN0IGhlYWRlciBjb21t
YW5kcyBmb3IgRHVtcFJlbmRlclRyZWUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0
T3B0aW9ucy5jcHA6CisgICAgICAgIChXVFI6OlRlc3RPcHRpb25zOjpkZWZhdWx0cyk6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChzZXRTaG91bGRJ
bnZlcnRDb2xvcnMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVuY3Rpb25zKToKKyAg
ICAgICAgKG92ZXJyaWRlUHJlZmVyZW5jZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFj
L1Rlc3RSdW5uZXJNYWMubW06CisgICAgICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVu
Y2UpOiBEZWxldGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2lu
LmNwcDoKKyAgICAgICAgKFRlc3RSdW5uZXI6OnNldFNob3VsZEludmVydENvbG9ycyk6CisgICAg
ICAgIChUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOiBEZWxldGVkLgorICAgICAgICAq
IFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNw
cDoKKyAgICAgICAgKFdUUjo6dG9Cb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1
bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNlKTogRGVsZXRlZC4KKwogMjAyMC0xMC0zMCAgSm9uYXRo
YW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtpdHB5XSBVc2Ug
YWxsb3dsaXN0IGFuZCBibG9ja2xpc3QKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RP
cHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0T3B0aW9u
cy5jcHAJKHJldmlzaW9uIDI2OTIwOCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RPcHRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODQsNiArODQsOSBAQCBjb25zdCBUZXN0RmVhdHVy
ZXMmIFRlc3RPcHRpb25zOjpkZWZhdWx0CiAgICAgICAgICAgICB7ICJSZXNpemVPYnNlcnZlckVu
YWJsZWQiLCBmYWxzZSB9LAogICAgICAgICAgICAgeyAiV2ViR1BVRW5hYmxlZCIsIGZhbHNlIH0s
CiAgICAgICAgIH07CisgICAgICAgIGZlYXR1cmVzLnVpbnQzMldlYlByZWZlcmVuY2VGZWF0dXJl
cyA9IHsKKyAgICAgICAgICAgIHsgIk1pbmltdW1Gb250U2l6ZSIsIDAgfSwKKyAgICAgICAgfTsK
ICAgICB9CiAgICAgcmV0dXJuIGZlYXR1cmVzOwogfQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvVGVzdFJ1bm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5jcHAJKHJldmlzaW9uIDI2OTIwOCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rl
c3RSdW5uZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTUsMjMgKzU1NSw2IEBAIHN0YXRpYyBK
U1ZhbHVlUmVmIGlzQ29tbWFuZEVuYWJsZWRDYWxsYmEKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VC
b29sZWFuKGNvbnRleHQsIGNvbnRyb2xsZXItPmlzQ29tbWFuZEVuYWJsZWQobmFtZS5nZXQoKSkp
OwogfQogCi1zdGF0aWMgSlNWYWx1ZVJlZiBvdmVycmlkZVByZWZlcmVuY2VDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCi17Ci0gICAgaWYgKGFyZ3VtZW50Q291bnQgPCAyKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Ci0KLSAgICBhdXRv
IGtleSA9IFdUUjo6Y3JlYXRlSlNTdHJpbmcoY29udGV4dCwgYXJndW1lbnRzWzBdKTsKLSAgICBh
dXRvIHZhbHVlID0gV1RSOjpjcmVhdGVKU1N0cmluZyhjb250ZXh0LCBhcmd1bWVudHNbMV0pOwot
Ci0gICAgLy8gU2hvdWxkIHVzZSBgPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVCYWNr
Rm9yd2FyZENhY2hlPXRydWUgXSAtLT5gIGluc3RlYWQuCi0gICAgUkVMRUFTRV9BU1NFUlQoIUpT
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoa2V5LmdldCgpLCAiV2ViS2l0VXNlc0JhY2tGb3J3
YXJkQ2FjaGVQcmVmZXJlbmNlS2V5IikpOwotCi0gICAgVGVzdFJ1bm5lciogY29udHJvbGxlciA9
IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkp
OwotICAgIGNvbnRyb2xsZXItPm92ZXJyaWRlUHJlZmVyZW5jZShrZXkuZ2V0KCksIHZhbHVlLmdl
dCgpKTsKLQotICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKLX0KLQog
c3RhdGljIEpTVmFsdWVSZWYga2VlcFdlYkhpc3RvcnlDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyBpbXBsZW1lbnRhdGlvbgpAQCAtMjAwNSw2
ICsxOTg4LDIxIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIHJ1blVJU2NyaXB0Q2FsbGJhY2soSlMKICAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKKyNpZiBQTEFURk9S
TShXSU4pCisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFNob3VsZEludmVydENvbG9yc0NhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8
IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IGF1dG8gY29udHJvbGxlciA9IHN0YXRpY19jYXN0PFRlc3RSdW5uZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldFNob3VsZEludmVydENvbG9y
cyhKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOworCisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCisjZW5kaWYKKwogc3RhdGljIHZv
aWQgdGVzdFJ1bm5lck9iamVjdEZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIHsKICAgICBz
dGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmplY3RHZXRQcml2YXRlKG9iamVjdCkpLT5kZXJl
ZigpOwpAQCAtMjEzOCw3ICsyMTM2LDYgQEAgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1
bm5lcjo6c3RhdAogICAgICAgICB7ICJrZWVwV2ViSGlzdG9yeSIsIGtlZXBXZWJIaXN0b3J5Q2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAibnVtYmVyT2ZQZW5kaW5nR2VvbG9jYXRpb25QZXJt
aXNzaW9uUmVxdWVzdHMiLCBudW1iZXJPZlBlbmRpbmdHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgIm5vdGlmeURvbmUiLCBub3RpZnlEb25l
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKLSAgICAgICAgeyAib3ZlcnJpZGVQcmVmZXJlbmNlIiwgb3ZlcnJp
ZGVQcmVmZXJlbmNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicGF0aFRvTG9jYWxSZXNv
dXJjZSIsIHBhdGhUb0xvY2FsUmVzb3VyY2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJw
cmludFRvUERGIiwgZHVtcEFzUERGQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAicXVldWVC
YWNrTmF2aWdhdGlvbiIsIHF1ZXVlQmFja05hdmlnYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApAQCAt
MjI0NSw2ICsyMjQyLDkgQEAgY29uc3QgSlNTdGF0aWNGdW5jdGlvbiogVGVzdFJ1bm5lcjo6c3Rh
dAogICAgICAgICB7ICJzZXRPcGVuUGFuZWxGaWxlcyIsIHNldE9wZW5QYW5lbEZpbGVzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0T3BlblBhbmVsRmlsZXNNZWRpYUljb24iLCBTZXRP
cGVuUGFuZWxGaWxlc01lZGlhSWNvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImZvcmNl
SW1tZWRpYXRlQ29tcGxldGlvbiIsIGZvcmNlSW1tZWRpYXRlQ29tcGxldGlvbkNhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICB7ICJzZXRTaG91bGRJbnZlcnRDb2xv
cnMiLCBzZXRTaG91bGRJbnZlcnRDb2xvcnNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorI2VuZGlmCiAgICAg
ICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVz
dFJ1bm5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIu
aAkocmV2aXNpb24gMjY5MjA4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsNiArMTMxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
VGVsZXBob25lTnVtYmVyUGFyc2luZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0
UGFnZVBhdXNlZChib29sIHBhdXNlZCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShXSU4pCisgICAg
dm9pZCBzZXRTaG91bGRJbnZlcnRDb2xvcnMoYm9vbCk7CisjZW5kaWYKIAogICAgIHZvaWQgc2V0
UGFnZVZpc2liaWxpdHkoY29uc3QgY2hhciopOwogICAgIHZvaWQgcmVzZXRQYWdlVmlzaWJpbGl0
eSgpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Rlc3RSdW5uZXJNYWMubW0JKHJl
dmlzaW9uIDI2OTIwOCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9UZXN0UnVubmVyTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsMTcgKzU5Niw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
ZGlzcGF0Y2hQZW5kaW5nTG9hZFJlcXUKICAgICBbW21haW5GcmFtZSB3ZWJWaWV3XSBfZGlzcGF0
Y2hQZW5kaW5nTG9hZFJlcXVlc3RzXTsKIH0KIAotdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVBy
ZWZlcmVuY2UoSlNTdHJpbmdSZWYga2V5LCBKU1N0cmluZ1JlZiB2YWx1ZSkKLXsKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IGtleUNGID0gYWRvcHRDRihKU1N0cmluZ0NvcHlDRlN0cmluZyhr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBrZXkpKTsKLSAgICBOU1N0cmluZyAqa2V5TlMgPSAoX19icmlk
Z2UgTlNTdHJpbmcgKilrZXlDRi5nZXQoKTsKLQotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
dmFsdWVDRiA9IGFkb3B0Q0YoSlNTdHJpbmdDb3B5Q0ZTdHJpbmcoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgdmFsdWUpKTsKLSAgICBOU1N0cmluZyAqdmFsdWVOUyA9IChfX2JyaWRnZSBOU1N0cmluZyAq
KXZhbHVlQ0YuZ2V0KCk7Ci0KLSAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNd
IF9zZXRTdHJpbmdQcmVmZXJlbmNlRm9yVGVzdGluZ1dpdGhWYWx1ZTp2YWx1ZU5TIGZvcktleTpr
ZXlOU107Ci19Ci0KIHZvaWQgVGVzdFJ1bm5lcjo6cmVtb3ZlQWxsVmlzaXRlZExpbmtzKCkKIHsK
ICAgICBbV2ViSGlzdG9yeSBfcmVtb3ZlQWxsVmlzaXRlZExpbmtzXTsKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vVGVzdFJ1bm5lcldpbi5jcHAJKHJldmlzaW9uIDI2OTIwOCkKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9UZXN0UnVubmVyV2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODU4LDI1ICs4NTgsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OmRpc3BhdGNoUGVuZGluZ0xv
YWRSZXF1CiAgICAgdmlld1ByaXZhdGUtPmRpc3BhdGNoUGVuZGluZ0xvYWRSZXF1ZXN0cygpOwog
fQogCi12b2lkIFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShKU1N0cmluZ1JlZiBrZXks
IEpTU3RyaW5nUmVmIHZhbHVlKQotewotICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKLSAg
ICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOwotICAgIGlmIChGQUlM
RUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnks
IHByZWZlcmVuY2VzKTsKLSAgICBpZiAoIXByZWZzUHJpdmF0ZSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgX2JzdHJfdCBrZXlCU1RSKEpTU3RyaW5nQ29weUJTVFIoa2V5KSwgZmFsc2UpOwotICAg
IF9ic3RyX3QgdmFsdWVCU1RSKEpTU3RyaW5nQ29weUJTVFIodmFsdWUpLCBmYWxzZSk7Ci0gICAg
cHJlZnNQcml2YXRlLT5zZXRQcmVmZXJlbmNlRm9yVGVzdChrZXlCU1RSLCB2YWx1ZUJTVFIpOwot
fQotCiB2b2lkIFRlc3RSdW5uZXI6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB7CiAgICAgQ09N
UHRyPElXZWJIaXN0b3J5PiBoaXN0b3J5OwpAQCAtMTM5OCwzICsxMzc5LDIwIEBAIHZvaWQgVGVz
dFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0UKIHsKICAgICBmcHJpbnRmKHRlc3RSZXN1
bHQsICJFUlJPUjogVGVzdFJ1bm5lcjo6c2V0U3BlbGxDaGVja2VyTG9nZ2luZ0VuYWJsZWQoKSBu
b3QgaW1wbGVtZW50ZWRcbiIpOwogfQorCit2b2lkIFRlc3RSdW5uZXI6OnNldFNob3VsZEludmVy
dENvbG9ycyhib29sIHNob3VsZEludmVydENvbG9ycykKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+
IHdlYlZpZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsK
KyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQ
cml2YXRlKFF1ZXJ5LCBwcmVmZXJlbmNlcyk7CisgICAgaWYgKCFwcmVmc1ByaXZhdGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIHByZWZzUHJpdmF0ZS0+c2V0U2hvdWxkSW52ZXJ0Q29sb3JzKHNo
b3VsZEludmVydENvbG9ycyk7Cit9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHJldmlzaW9uIDI2OTIwOCkKKysr
IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTg0NiwyMSArODQ2LDYgQEAgdm9pZCBUZXN0UnVubmVyOjpjYWxsU2V0
QmFja2luZ1NjYWxlRmFjdAogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU2V0QmFja2luZ1Nj
YWxlRmFjdG9yQ2FsbGJhY2tJRCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCB0b0Jvb2woSlNT
dHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcodmFsdWUsICJ0cnVlIikgfHwgSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyh2YWx1ZSwg
IjEiKTsKLX0KLQotdm9pZCBUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoSlNTdHJpbmdS
ZWYgcHJlZmVyZW5jZSwgSlNTdHJpbmdSZWYgdmFsdWUpCi17Ci0gICAgYXV0byYgaW5qZWN0ZWRC
dW5kbGUgPSBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9uKCk7Ci0gICAgLy8gU2hvdWxkIHVzZSBg
PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVCYWNrRm9yd2FyZENhY2hlPXRydWUgXSAt
LT5gIGluc3RlYWQuCi0gICAgUkVMRUFTRV9BU1NFUlQoIUpTU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcocHJlZmVyZW5jZSwgIldlYktpdFVzZXNCYWNrRm9yd2FyZENhY2hlUHJlZmVyZW5jZUtl
eSIpKTsKLQotICAgIC8vIEZJWE1FOiBoYW5kbGUgbm9uLWJvb2xlYW4gcHJlZmVyZW5jZXMuCi0g
ICAgV0tCdW5kbGVPdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcihpbmplY3RlZEJ1
bmRsZS5idW5kbGUoKSwgaW5qZWN0ZWRCdW5kbGUucGFnZUdyb3VwKCksIHRvV0socHJlZmVyZW5j
ZSkuZ2V0KCksIHRvQm9vbCh2YWx1ZSkpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldEFsd2F5
c0FjY2VwdENvb2tpZXMoYm9vbCBhY2NlcHQpCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZSgiU2V0QWx3YXlzQWNjZXB0Q29va2llcyIsIGFjY2VwdCk7CkluZGV4OiBUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVz
dFJ1bm5lci5pZGwJKHJldmlzaW9uIDI2OTIwOCkKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTE5Nyw4ICsxOTcsNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgdW5kZWZpbmVkIHNl
dEFsd2F5c0FjY2VwdENvb2tpZXMoYm9vbGVhbiBhY2NlcHQpOwogICAgIHVuZGVmaW5lZCBzZXRP
bmx5QWNjZXB0Rmlyc3RQYXJ0eUNvb2tpZXMoYm9vbGVhbiBhY2NlcHQpOwogCi0gICAgdW5kZWZp
bmVkIG92ZXJyaWRlUHJlZmVyZW5jZShET01TdHJpbmcgcHJlZmVyZW5jZSwgRE9NU3RyaW5nIHZh
bHVlKTsKLQogICAgIC8vIFBhZ2UgVmlzaWJpbGl0eSBBUEkKICAgICB1bmRlZmluZWQgc2V0UGFn
ZVZpc2liaWxpdHkoRE9NU3RyaW5nIHN0YXRlKTsKICAgICB1bmRlZmluZWQgcmVzZXRQYWdlVmlz
aWJpbGl0eSgpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjY5MjA4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMjAtMTAtMzAgIFNhbSBX
ZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBhbGwgcmVtYWluaW5n
IHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlIGNhbGxzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzNzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVzIHJlbWFpbmluZyB1c2VzIG9mIHRl
c3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlIGFuZCBhZGRyZXNzZXMgc29tZQorICAgICAgICBy
ZWNlbnQgZmVlZGJhY2sgYnkgcmVtb3Zpbmcgc29tZSB1bm5lY2Vzc2FyeSAid2luZG93LiIgdXNl
cy4KKworICAgICAgICBBbHNvIHJlbW92ZWQgdGVzdCBjcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFn
ZS13azEuaHRtbCBhcyBpdCBpcyByZWR1bmRhbnQgd2l0aAorICAgICAgICBvdGhlciB0ZXN0cyBz
dWNoIGFzIGNyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLmh0bWwgd2hpY2ggdXNlcyBpbnRlcm5h
bHMgaW5zdGVhZC4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQt
Y2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6CisgICAgICAgICog
ZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWw6CisgICAg
ICAgICogZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1s
OgorICAgICAgICAqIGZhc3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sOgorICAgICAgICAqIGh0
dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sOgorICAgICAgICAqIGh0dHAv
dGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEt
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbG9hZC1sb2NhbC1zdG9yYWdlLmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1qYXZhc2NyaXB0LWRpc2Fi
bGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmln
aW4tbG9jYWwtc3RvcmFnZS13azEtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdl
LXdrMS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL2ludmVydGVkLWNvbG9ycy9ub24t
Y29tcG9zaXRlZC5odG1sOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMt
ZGlzYWJsZWQuaHRtbDoKKworMjAyMC0xMC0yOSAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CisKKworICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJs
b2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6CisgICAgICAgICogZmFzdC9w
YXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWw6CisgICAgICAgICog
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvbG9jYWxlLXNlbnNpdGl2ZS1mb250cy5odG1sOgorICAg
ICAgICAqIGZhc3QvdGV4dC96ZXJvLWZvbnQtc2l6ZS5odG1sOgorICAgICAgICAqIGh0dHAvdGVz
dHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sOgorICAgICAgICAqIGh0dHAvdGVzdHMv
bWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWw6CisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEuaHRtbDoK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9sb2FkLWxvY2FsLXN0b3Jh
Z2UuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3hzbC94c2x0LXRyYW5zZm9ybS13aXRoLWph
dmFzY3JpcHQtZGlzYWJsZWQuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vaW52ZXJ0ZWQt
Y29sb3JzL25vbi1jb21wb3NpdGVkLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEt
dXJpLWltYWdlcy1kaXNhYmxlZC5odG1sOgorCiAyMDIwLTEwLTMwICBGdWppaSBIaXJvbm9yaSAg
PEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAgIFtUZXh0dXJlTWFwcGVyXSBSZXBs
aWNhIGxheWVycyBkb24ndCBibGVuZCBjb3JyZWN0bHkgYmVjYXVzZSBjb21wdXRlT3ZlcmxhcFJl
Z2lvbnMgZG9lc24ndCB0YWtlIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnM6OnRyYW5zZm9ybSBp
bnRvIGFjY291bnQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2Ut
dW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4t
YmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAkocmV2aXNpb24gMjY5MjA4
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxv
Y2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OCw4ICs4LDggQEAgdmFyIGltYWdlT25sb2FkRmlyZWQgPSAwOwogCiBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB3aW5kb3cuaW50ZXJu
YWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7Ci0gICAgd2luZG93LmludGVybmFs
cy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpOworICAgIGludGVy
bmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAgIGludGVybmFscy5zZXR0
aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpOwogICAgIHRlc3RSdW5uZXIu
cXVldWVSZWxvYWQoKTsKIH0KIApAQCAtMjEsNyArMjEsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KHRydWUpOworICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkodHJ1ZSk7CiAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVs
b2FkIGluLXBsYWNlIHdoZW4gbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5IGlzIGNoYW5nZXMgZnJv
bSB1bnNldCB0byBzZXQnOwogICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwogICAgIGlu
dGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvcGFyc2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL25vc2NyaXB0LXdpdGgt
amF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCShyZXZpc2lvbiAyNjkyMDgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L3BhcnNlci9ub3NjcmlwdC13aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRTY3JpcHRFbmFibGVk
KGZhbHNlKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U2NyaXB0RW5hYmxlZChmYWxzZSk7
CiB9CiA8L3NjcmlwdD4KIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3plcm8tZm9udC1z
aXplLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC90ZXh0L3plcm8tZm9udC1z
aXplLmh0bWwJKHJldmlzaW9uIDI2OTIwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC96ZXJv
LWZvbnQtc2l6ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNCBAQAotPHNjcmlwdD4K
LSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCi0gICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXRNaW5pbXVtRm9udFNpemUiLCAiMTIiKTsKLTwvc2NyaXB0PgorPCEt
LSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBNaW5pbXVtRm9udFNpemU9MTIgXSAtLT4KIDxwPlRlc3Qg
dGhhdCB0ZXh0IHdpdGggMHB4IGZvbnQgc2l6ZSBpcyBub3QgZGlzcGxheWVkLCBldmVuIGlmIGEg
bm9uLXplcm8gbWluaW11bSBmb250IHNpemUgc2V0dGluZyBpcyBzcGVjaWZpZWQuIE9uIHN1Y2Nl
c3MsIHRoaXMgcGFyYWdyYXBoIHNob3VsZCBiZSB0aGUgb25seSB0ZXh0IHZpc2libGUgb24gdGhl
IHBhZ2UuPC9wPgogPGRpdiBzdHlsZT0iZm9udC1zaXplOjBweDsgY29sb3I6cmVkIj5GQUlMPC9k
aXY+CiA8ZGl2IHN0eWxlPSJmb250LXNpemU6MCU7IGNvbG9yOnJlZCI+RkFJTDwvZGl2PgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRl
cm5hdGlvbmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC9sb2NhbGUtc2Vuc2l0aXZlLWZvbnRzLmh0
bWwJKHJldmlzaW9uIDI2OTIwOCkKKysrIExheW91dFRlc3RzL2Zhc3QvdGV4dC9pbnRlcm5hdGlv
bmFsL2xvY2FsZS1zZW5zaXRpdmUtZm9udHMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMywxNiAr
MywxNiBAQAogPGhlYWQ+CiA8c2NyaXB0PgogaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0YW5kYXJkRm9udEZhbWlseSgiQWhlbSIsICJI
YW5zIik7Ci0gICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRGYW50YXN5Rm9udEZhbWls
eSgiQWhlbSIsICJIYW5zIik7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0YW5kYXJkRm9u
dEZhbWlseSgiQWhlbSIsICJIYW5zIik7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEZhbnRh
c3lGb250RmFtaWx5KCJBaGVtIiwgIkhhbnMiKTsKIAotICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0
VXNlclByZWZlcnJlZExhbmd1YWdlcygiZW4iLCAiemgtY24iKTsKKyAgICBpbnRlcm5hbHMuc2V0
VXNlclByZWZlcnJlZExhbmd1YWdlcygiZW4iLCAiemgtY24iKTsKIH0KIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHk+Ci08IS0tIFRoaXMgdGVzdHMgbG9jYWxlLXNlbnNpdGl2ZSBmb250IHNlbGVj
dGlvbi4gIFVzaW5nIG92ZXJyaWRlUHJlZmVyZW5jZSwgIHRoZQotZm9udHMgZm9yIFNpbXBsaWZp
ZWQgSGFuIGFyZSB0byBBaGVtIGZvbnQuICBTbyBhbGwgZGl2cyBzaG91bGQgbWF0Y2guIC0tPgor
PCEtLSBUaGlzIHRlc3RzIGxvY2FsZS1zZW5zaXRpdmUgZm9udCBzZWxlY3Rpb24uIFVzaW5nIGlu
dGVybmFscy5zZXR0aW5ncywgdGhlCitmb250cyBmb3IgU2ltcGxpZmllZCBIYW4gYXJlIHNldCB0
byB0aGUgQWhlbSBmb250LiBBbGwgZGl2cyBzaG91bGQgbWF0Y2guIC0tPgogPGRpdiBzdHlsZT0i
Zm9udC1zaXplOiAyMHB4Ij4KIDxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiAnQWhlbSciPnRoaXMg
aXMgYWhlbSBmb250PC9kaXY+CiA8ZGl2IHN0eWxlPSItd2Via2l0LWxvY2FsZTogJ3poX0NOJyI+
dGhpcyBpcyBhaGVtIGZvbnQ8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvZG93
bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvZG93bmxvYWQvZGVmYXVsdC1lbmNvZGluZy5odG1sCShyZXZpc2lvbiAyNjkyMDgp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Rvd25sb2FkL2RlZmF1bHQtZW5jb2RpbmcuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKIDxzY3JpcHQ+CiBpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLSAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGVmYXVsdFRleHRFbmNvZGluZ05hbWUiLCAia29p
OC1yIik7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1l
KCJrb2k4LXIiKTsKICAgICB0ZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKHRydWUs
IHRydWUpOwogICAgIHRlc3RSdW5uZXIud2FpdEZvclBvbGljeURlbGVnYXRlKCk7CiB9CkluZGV4
OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvZmF2aWNvbi1sb2Fkcy13aXRoLWltYWdlcy1k
aXNhYmxlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9m
YXZpY29uLWxvYWRzLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDI2OTIwOCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9mYXZpY29uLWxvYWRzLXdpdGgtaW1hZ2Vz
LWRpc2FibGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw2IEBAIGZ1bmN0aW9uIHJ1
blRlc3QoKQogICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICAgICAgdGVzdFJ1
bm5lci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7CiAgICAgICAgIHRlc3RSdW5uZXIuc2V0
SWNvbkRhdGFiYXNlRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVBy
ZWZlcmVuY2UoIldlYktpdERpc3BsYXlJbWFnZXNLZXkiLCAwKTsKICAgICAgICAgdGVzdFJ1bm5l
ci5xdWV1ZVJlbG9hZCgpOwogICAgIH0KIH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1s
b2NhbC1zdG9yYWdlLXdrMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI2OTIwOCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sx
LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xICswLDAgQEAKLUdvdCB2YWx1ZTogdmFs
dWUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxv
Y2FsLXN0b3JhZ2Utd2sxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEuaHRtbAkocmV2aXNpb24g
MjY5MjA4KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4t
bG9jYWwtc3RvcmFnZS13azEuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDE4ICswLDAgQEAKLTxo
dG1sPgotPGhlYWQ+Ci08c2NyaXB0PgotaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Ci0JdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7Ci0JdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0JdGVzdFJ1
bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdFN0b3JhZ2VCbG9ja2luZ1BvbGljeScsIDEp
OwotfQotCi1mdW5jdGlvbiBjb250aW51ZVRlc3QoKSB7Ci0Jd2luZG93LmxvY2F0aW9uLmhyZWYg
PSAnaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9sb2FkLWxvY2FsLXN0
b3JhZ2UuaHRtbCc7Ci19Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPGlmcmFtZSBzcmM9
Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlm
cmFtZS1mb3ItbG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImNvbnRpbnVlVGVzdCgpIj48L2lm
cmFtZT4KLTwvYm9keT4KLTwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL2xvYWQtbG9jYWwtc3RvcmFnZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2xvYWQtbG9jYWwtc3RvcmFn
ZS5odG1sCShyZXZpc2lvbiAyNjkyMDgpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3Jlc291cmNlcy9sb2FkLWxvY2FsLXN0b3JhZ2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MTYsNyArMTYsNiBAQCB0cnkgewogCiBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKIAlpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOwotCXRlc3RS
dW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRTdG9yYWdlQmxvY2tpbmdQb2xpY3knLCAw
KTsKIAl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKIH0KIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94c2wveHNsdC10cmFuc2Zvcm0td2l0aC1qYXZhc2NyaXB0LWRpc2Fi
bGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94c2wveHNsdC10
cmFuc2Zvcm0td2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDI2OTIwOCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMveHNsL3hzbHQtdHJhbnNmb3JtLXdpdGgtamF2YXNj
cmlwdC1kaXNhYmxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CiAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CiAgICAgdGVz
dFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKLSAgICB3aW5kb3cuaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOworICAgIGludGVybmFscy5zZXR0aW5ncy5z
ZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKIH0KIAogZnVuY3Rpb24gc2hvdWxkTm90QmVFeGVjdXRl
ZCgpCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRp
b25zCShyZXZpc2lvbiAyNjkyMDgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTEwOTQsNyArMTA5NCw2IEBAIGh0dHAv
dGVzdHMvc2VjdXJpdHkvYWJvdXRCbGFuay94c3MtREVOSUUKIGh0dHAvdGVzdHMvc2VjdXJpdHkv
YWJvdXRCbGFuay94c3MtREVOSUVELW5hdmlnYXRlLW9wZW5lci1qYXZhc2NyaXB0LXVybC5odG1s
IFsgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Fib3V0QmxhbmsveHNzLURFTklFRC1z
ZXQtb3BlbmVyLmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNl
Y3VyaXR5UG9saWN5L29iamVjdC1zcmMtdXJsLWFsbG93ZWQuaHRtbCBbIEZhaWx1cmUgXQotaHR0
cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEuaHRtbCBbIEZh
aWx1cmUgXQogaHR0cC90ZXN0cy9zZWN1cml0eS9mcmFtZU5hdmlnYXRpb24vbm90LW9wZW5lci5o
dG1sIFsgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3Vy
ZS1hdWRpby12aWRlby1pbi1tYWluLWZyYW1lLmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMv
c2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWNzcy1pbi1tYWluLWZyYW1lLmh0bWwgWyBG
YWlsdXJlIF0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9z
ZWN1cml0eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0
eS9jcm9zcy1vcmlnaW4tbG9jYWwtc3RvcmFnZS13azEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAy
NjkyMDgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVzdHMvc2VjdXJp
dHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLWV4cGVjdGVkLnR4dAkobm9uZXhpc3Rl
bnQpCkBAIC0xICswLDAgQEAKLUdvdCB2YWx1ZTogdmFsdWUKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9odHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdl
LXdrMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2h0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMjY5MjA4KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2h0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xICswLDAgQEAKLU5vIHZhbHVlCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjY5MjA4KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkK
QEAgLTIzOTAsNyArMjM5MCw2IEBAIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNj
ZXNzLWcKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWdldE93blByb3Bl
cnR5RGVzY3JpcHRvci5odG1sIFsgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3Nz
LW9yaWdpbi1hcHBjYWNoZS1hbGxvd2VkLmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY3Jvc3Mtb3JpZ2luLWFwcGNhY2hlLmh0bWwgWyBGYWlsdXJlIF0KLXdlYmtpdC5vcmcv
Yi85ODA3OSBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1sb2NhbC1zdG9yYWdlLXdr
MS5odG1sIFsgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1wbHVn
aW4tYWxsb3dlZC5odG1sIFsgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9y
aWdpbi1wbHVnaW4tcHJpdmF0ZS1icm93c2luZy10b2dnbGVkLWFsbG93ZWQuaHRtbCBbIEZhaWx1
cmUgXQogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tcGx1Z2luLXByaXZhdGUtYnJv
d3NpbmctdG9nZ2xlZC5odG1sIFsgRmFpbHVyZSBdCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vaW52ZXJ0ZWQtY29sb3JzL25vbi1jb21wb3NpdGVkLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL2ludmVydGVkLWNvbG9ycy9ub24tY29tcG9zaXRlZC5o
dG1sCShyZXZpc2lvbiAyNjkyMDgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vaW52ZXJ0
ZWQtY29sb3JzL25vbi1jb21wb3NpdGVkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTE2LDcgKzE2
LDcgQEAKICAgICA8L3N0eWxlPgogICAgIDxzY3JpcHQ+CiAgICAgICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKLSAgICAgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJL
aXRTaG91bGRJbnZlcnRDb2xvcnMiLCAiMSIpOworICAgICAgICAgICAgdGVzdFJ1bm5lci5zZXRT
aG91bGRJbnZlcnRDb2xvcnModHJ1ZSk7CiAgICAgPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lv
biAyNjkyMDgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwko
d29ya2luZyBjb3B5KQpAQCAtNTcsMTAgKzU3LDYgQEAgd2Via2l0Lm9yZy9iLzU4MTgzIGVkaXRp
bmcvZXhlY0NvbW1hbmQvYwogIyBUaGlzIHRlc3QgaGFzIGJlZW4gc2tpcHBlZCBmb3IgYSBsb25n
IHRpbWUuIFRlbXBvcmFyaWx5IG1hcmtpbmcgYXMgZmxha3kgdG8gc2VlIHdoYXQgYm90cyB0aGlu
ay4KIHdlYmtpdC5vcmcvYi82MDY0OCBmYXN0L2ZyYW1lcy9mbGF0dGVuaW5nL2ZyYW1lc2V0LWZs
YXR0ZW5pbmctc3ViZnJhbWVzZXRzLmh0bWwgWyBQYXNzIEZhaWx1cmUgXQogCi0jIFdlYktpdFRl
c3RSdW5uZXIgbmVlZHMgb3ZlcnJpZGVQcmVmZXJlbmNlIGZvciBub24tYm9vbGVhbiB2YWx1ZXMK
LSMgKHplcm8tZm9udC1zaXplLmh0bWwgcGFzc2VzIGJlY2F1c2Ugb3ZlcnJpZGVQcmVmZXJlbmNl
IGRvZXMgbm90IHdvcmspCi13ZWJraXQub3JnL2IvNDIxOTcgZmFzdC90ZXh0L3plcm8tZm9udC1z
aXplLmh0bWwgWyBQYXNzIF0KLQogd2Via2l0Lm9yZy9iLzgyNjY1IGh0dHAvdGVzdHMvd2ViYXJj
aGl2ZS90ZXN0LWNzcy11cmwtZW5jb2RpbmcuaHRtbCBbIFNraXAgXQogd2Via2l0Lm9yZy9iLzgy
NjY1IGh0dHAvdGVzdHMvd2ViYXJjaGl2ZS90ZXN0LWNzcy11cmwtZW5jb2Rpbmctc2hpZnQtamlz
Lmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi84MjY2NSBodHRwL3Rlc3RzL3dlYmFyY2hpdmUv
dGVzdC1jc3MtdXJsLWVuY29kaW5nLXV0Zi04Lmh0bWwgWyBTa2lwIF0KSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMtZGlzYWJsZWQu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLXdp
dGgtZGF0YS11cmktaW1hZ2VzLWRpc2FibGVkLmh0bWwJKHJldmlzaW9uIDI2OTIwOCkKKysrIExh
eW91dFRlc3RzL3N2Zy9hcy1pbWFnZS9zdmctaW1hZ2Utd2l0aC1kYXRhLXVyaS1pbWFnZXMtZGlz
YWJsZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTAsOCArMTAsOCBAQAogICA8L3N0eWxlPgog
ICA8c2NyaXB0PgogICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsKLSAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0dGluZ3Muc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKTsKKyAg
ICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsKKyAgICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpOwogICAg
ICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOwogICAgIH0KICAgPC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>