<?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>212759</bug_id>
          
          <creation_ts>2020-06-04 10:35:01 -0700</creation_ts>
          <short_desc>Text manipulation: first and last unit in a paragraph should not contain only excluded tokens</short_desc>
          <delta_ts>2020-06-05 09:58:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</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="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1659156</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-04 10:35:01 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659181</commentid>
    <comment_count>1</comment_count>
      <attachid>401047</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-04 11:00:01 -0700</bug_when>
    <thetext>Created attachment 401047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659386</commentid>
    <comment_count>2</comment_count>
      <attachid>401047</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-06-04 16:11:04 -0700</bug_when>
    <thetext>Comment on attachment 401047
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        tokens in a ManipulationUnit are excluded, it means the ManipulationUnit is exluced and should not be 

Nit - “exluced”

&gt; Source/WebCore/editing/TextManipulationController.cpp:417
&gt; +                Vector&lt;ManipulationToken&gt; tokens;
&gt; +                tokens.append(ManipulationToken { m_tokenIdentifier.generate(), &quot;[]&quot;, tokenInfo(content.node.get()), true });
&gt; +                unitsInCurrentParagraph.append(ManipulationUnit { WTFMove(tokens), *contentNode });

Nit - you probably don’t need a local variable for `tokens`. But if you want to keep the local variable, you should use an initializer list when initializing `tokens`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659488</commentid>
    <comment_count>3</comment_count>
      <attachid>401120</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-06-04 22:45:44 -0700</bug_when>
    <thetext>Created attachment 401120
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659493</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-04 23:13:35 -0700</bug_when>
    <thetext>Committed r262601: &lt;https://trac.webkit.org/changeset/262601&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 401120.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659648</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-05 09:58:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/64033285&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401047</attachid>
            <date>2020-06-04 11:00:01 -0700</date>
            <delta_ts>2020-06-04 22:45:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212759-20200604110000.patch</filename>
            <type>text/plain</type>
            <size>25704</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGY3MzQ1YWYxMDE2YzBj
NTA2M2ZjMDM2ODBiNjEwNDhkNzAyNjc4NC4uNmQ3ZThkYTI3NzUwZTRjN2Q5YWNkM2QwMGJjMzBl
YWM3OTc0NmIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTA0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgbWFuaXB1bGF0aW9u
OiBmaXJzdCBhbmQgbGFzdCB1bml0IGluIGEgcGFyYWdyYXBoIHNob3VsZCBub3QgY29udGFpbiBv
bmx5IGV4Y2x1ZGVkIHRva2VucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW4gcjI2MjM5OCwgd2UgbGl0ZXJhbGx5IG1hZGUgdGV4dCBvZiBvbmUgTm9k
ZSBhcyB0aGUgbWluaW11bSB1bml0IGZvciB0ZXh0IG1hbmlwdWxhdGlvbi4gVGhpcyBwYXRjaGVz
IGludHJvZHVjZQorICAgICAgICBhIHN0cnVjdCBNYW5pcHVsYXRpb25Vbml0IGZvciB0aGF0LiBO
b3cgYSBwYXJhZ3JhcGggY2FuIGJlIHJlcHJlc2VudGVkIGFzIG11bHRpcGxlIE1hbmlwdWxhdGlv
blVuaXRzLiBXaGVuIGFsbCAKKyAgICAgICAgdG9rZW5zIGluIGEgTWFuaXB1bGF0aW9uVW5pdCBh
cmUgZXhjbHVkZWQsIGl0IG1lYW5zIHRoZSBNYW5pcHVsYXRpb25Vbml0IGlzIGV4bHVjZWQgYW5k
IHNob3VsZCBub3QgYmUgCisgICAgICAgIG1hbmlwdWxhdGVkLiBUbyByZWNvcmQgTWFuaXB1bGF0
aW9uVW5pdHMgaW4gYSBwYXJhZ3JhcGggYmFzZWQgb24gb3VyIGN1cnJlbnQgaW1wbGVtZW50YXRp
b24sIHdlIG5lZWQgdG8ga2VlcCB0aGUKKyAgICAgICAgZXhjbHVkZWQgTWFuaXB1bGF0aW9uVW5p
dHMgc3Vycm91bmRlZCBieSBub24tZXhjbHVkZWQgTWFuaXB1bGF0aW9uVW5pdHMsIGJ1dCB3ZSBj
YW4gc2FmZWx5IHJlbW92ZSB0aGUgbGVhZGluZyAKKyAgICAgICAgYW5kIHRyYWlsaW5nIGV4Y2x1
ZGVkIE1hbmlwdWxhdGlvblVuaXRzLiBJbiB0aGlzIGNhc2UsIHdlIGNhbiBsaW1pdCB0aGUgcmFu
Z2Ugb2YgcGFyYWdyYXBoIGZ1cnRoZXIgYW5kIHRodXMgbGVzcworICAgICAgICB0ZXh0IHJlcGxh
Y2VtZW50IHdvcmsuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0LgorCisgICAg
ICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cGFyc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmFkZEl0ZW1JZlBvc3NpYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpvYnNlcnZlUGFyYWdy
YXBocyk6CisgICAgICAgICogZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oOgor
CiAyMDIwLTA2LTAzICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBWDogU1ZHIHRleHQgbm9kZSB3aXRoIGNvbnRlbnQgaXMgZGVzY3JpYmVkIGFzICJl
bXB0eSBncm91cCIgZXZlbiBpZiBpdCdzIG5vdCBlbXB0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAzOGIwZTQ0
MmU2MTk2OTYwYjZjNjNlMGRhZDY3MTZkZGExMjkwMzJhLi40YzVmYTAwMGY1NzM0YmI1ZDcyNTk0
YWNjMDRjYmFjZWM3ZWRkYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAtMjg5LDEyICsyODksMTMgQEAgc3Rh
dGljIGJvb2wgaXNFbmNsb3NpbmdJdGVtQm91bmRhcnlFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6TWFuaXB1bGF0aW9uVG9rZW5zIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpwYXJzZShT
dHJpbmdWaWV3IHRleHQsIE5vZGUqIHRleHROb2RlKQorVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXI6Ok1hbmlwdWxhdGlvblVuaXQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNlKFN0
cmluZ1ZpZXcgdGV4dCwgTm9kZSogdGV4dE5vZGUpCiB7CiAgICAgVmVjdG9yPE1hbmlwdWxhdGlv
blRva2VuPiB0b2tlbnM7CiAgICAgRXhjbHVzaW9uUnVsZU1hdGNoZXIgZXhjbHVzaW9uUnVsZU1h
dGNoZXIobV9leGNsdXNpb25SdWxlcyk7CiAgICAgc2l6ZV90IHBvc2l0aW9uT2ZMYXN0Tm9uSFRN
TFNwYWNlID0gV1RGOjpub3RGb3VuZDsKICAgICBzaXplX3Qgc3RhcnRQb3NpdGlvbk9mQ3VycmVu
dFRva2VuID0gMDsKKyAgICBib29sIGlzTm9kZUV4Y2x1ZGVkID0gZXhjbHVzaW9uUnVsZU1hdGNo
ZXIuaXNFeGNsdWRlZCh0ZXh0Tm9kZSk7CiAgICAgYm9vbCBjb250YWluc09ubHlIVE1MU3BhY2Ug
PSB0cnVlOwogICAgIGJvb2wgY29udGFpbnNMaW5lQnJlYWsgPSBmYWxzZTsKICAgICBib29sIGZp
cnN0VG9rZW5Db250YWluc0xpbmVCcmVhayA9IGZhbHNlOwpAQCAtMzEwLDcgKzMxMSw3IEBAIFRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbnMgVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXI6OnBhcnNlCiAgICAgICAgICAgICBjb250YWluc0xpbmVCcmVhayA9IHRy
dWU7CiAgICAgICAgICAgICBpZiAocG9zaXRpb25PZkxhc3ROb25IVE1MU3BhY2UgIT0gV1RGOjpu
b3RGb3VuZCAmJiBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4gPD0gcG9zaXRpb25PZkxhc3RO
b25IVE1MU3BhY2UpIHsKICAgICAgICAgICAgICAgICBhdXRvIHRva2VuU3RyaW5nID0gdGV4dC5z
dWJzdHJpbmcoc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuLCBwb3NpdGlvbk9mTGFzdE5vbkhU
TUxTcGFjZSArIDEgLSBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4pLnRvU3RyaW5nKCk7Ci0g
ICAgICAgICAgICAgICAgdG9rZW5zLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5J
ZGVudGlmaWVyLmdlbmVyYXRlKCksIHRva2VuU3RyaW5nLCB0b2tlbkluZm8odGV4dE5vZGUpLCBl
eGNsdXNpb25SdWxlTWF0Y2hlci5pc0V4Y2x1ZGVkKHRleHROb2RlKSB9KTsKKyAgICAgICAgICAg
ICAgICB0b2tlbnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIu
Z2VuZXJhdGUoKSwgdG9rZW5TdHJpbmcsIHRva2VuSW5mbyh0ZXh0Tm9kZSksIGlzTm9kZUV4Y2x1
ZGVkIH0pOwogICAgICAgICAgICAgICAgIHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA9IHBv
c2l0aW9uT2ZMYXN0Tm9uSFRNTFNwYWNlICsgMTsKICAgICAgICAgICAgIH0KIApAQCAtMzMyLDEx
ICszMzMsMzYgQEAgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2Vu
cyBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cGFyc2UKIAogICAgIGlmIChzdGFydFBvc2l0
aW9uT2ZDdXJyZW50VG9rZW4gPCB0ZXh0Lmxlbmd0aCgpKSB7CiAgICAgICAgIGF1dG8gdG9rZW5T
dHJpbmcgPSB0ZXh0LnN1YnN0cmluZyhzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4sIGluZGV4
ICsgMSAtIHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbikudG9TdHJpbmcoKTsKLSAgICAgICAg
dG9rZW5zLmFwcGVuZChNYW5pcHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVy
YXRlKCksIHRva2VuU3RyaW5nLCB0b2tlbkluZm8odGV4dE5vZGUpLCBleGNsdXNpb25SdWxlTWF0
Y2hlci5pc0V4Y2x1ZGVkKHRleHROb2RlKSB9KTsKKyAgICAgICAgdG9rZW5zLmFwcGVuZChNYW5p
cHVsYXRpb25Ub2tlbiB7IG1fdG9rZW5JZGVudGlmaWVyLmdlbmVyYXRlKCksIHRva2VuU3RyaW5n
LCB0b2tlbkluZm8odGV4dE5vZGUpLCBpc05vZGVFeGNsdWRlZCB9KTsKICAgICAgICAgbGFzdFRv
a2VuQ29udGFpbnNMaW5lQnJlYWsgPSBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4geyBXVEZN
b3ZlKHRva2VucyksIGNvbnRhaW5zT25seUhUTUxTcGFjZSwgY29udGFpbnNMaW5lQnJlYWssIGZp
cnN0VG9rZW5Db250YWluc0xpbmVCcmVhaywgbGFzdFRva2VuQ29udGFpbnNMaW5lQnJlYWsgfTsK
KyAgICByZXR1cm4geyBXVEZNb3ZlKHRva2VucyksICp0ZXh0Tm9kZSwgY29udGFpbnNPbmx5SFRN
TFNwYWNlIHx8IGlzTm9kZUV4Y2x1ZGVkLCBjb250YWluc0xpbmVCcmVhaywgZmlyc3RUb2tlbkNv
bnRhaW5zTGluZUJyZWFrLCBsYXN0VG9rZW5Db250YWluc0xpbmVCcmVhayB9OworfQorCit2b2lk
IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjphZGRJdGVtSWZQb3NzaWJsZShWZWN0b3I8TWFu
aXB1bGF0aW9uVW5pdD4mJiB1bml0cykKK3sKKyAgICBpZiAodW5pdHMuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIHNpemVfdCBlbmQgPSB1
bml0cy5zaXplKCk7CisgICAgd2hpbGUgKGluZGV4IDwgdW5pdHMuc2l6ZSgpICYmIHVuaXRzW2lu
ZGV4XS5hcmVBbGxUb2tlbnNFeGNsdWRlZCkKKyAgICAgICAgKytpbmRleDsKKworICAgIHdoaWxl
IChlbmQgPiAwICYmIHVuaXRzW2VuZCAtIDFdLmFyZUFsbFRva2Vuc0V4Y2x1ZGVkKQorICAgICAg
ICAtLWVuZDsKKworICAgIGlmIChpbmRleCA9PSBlbmQpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8gc3RhcnRQb3NpdGlvbiA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZSh1bml0cy5m
aXJzdCgpLm5vZGUucHRyKCkpOworICAgIGF1dG8gZW5kUG9zaXRpb24gPSBwb3NpdGlvbkFmdGVy
Tm9kZSh1bml0cy5sYXN0KCkubm9kZS5wdHIoKSk7CisgICAgVmVjdG9yPE1hbmlwdWxhdGlvblRv
a2VuPiB0b2tlbnM7CisgICAgZm9yICg7IGluZGV4IDwgZW5kOyArK2luZGV4KQorICAgICAgICB0
b2tlbnMuYXBwZW5kVmVjdG9yKFdURk1vdmUodW5pdHNbaW5kZXhdLnRva2VucykpOworCisgICAg
YWRkSXRlbShNYW5pcHVsYXRpb25JdGVtRGF0YSB7IHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9u
LCBudWxscHRyLCBudWxsUU5hbWUoKSwgV1RGTW92ZSh0b2tlbnMpIH0pOwogfQogCiB2b2lkIFRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpvYnNlcnZlUGFyYWdyYXBocyhjb25zdCBQb3NpdGlv
biYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpCkBAIC0zNDYsMjQgKzM3MiwyMCBAQCB2b2lk
IFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpvYnNlcnZlUGFyYWdyYXBocyhjb25zdCBQb3Np
dGlvbiYgc3RhcnQsIGNvbnN0CiAKICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihzdGFy
dC5kb2N1bWVudCgpKTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgIFBhcmFncmFwaENvbnRl
bnRJdGVyYXRvciBpdGVyYXRvciB7IHN0YXJ0LCBlbmQgfTsKICAgICAvLyBUZXh0SXRlcmF0b3In
cyBjb25zdHJ1Y3RvciBtYXkgaGF2ZSB1cGRhdGVkIHRoZSBsYXlvdXQgYW5kIGV4ZWN1dGVkIGFy
Yml0cmFyeSBzY3JpcHRzLgogICAgIGlmIChkb2N1bWVudCAhPSBzdGFydC5kb2N1bWVudCgpIHx8
IGRvY3VtZW50ICE9IGVuZC5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWZWN0
b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRva2Vuc0luQ3VycmVudFBhcmFncmFwaDsKLSAgICBQb3Np
dGlvbiBzdGFydE9mQ3VycmVudFBhcmFncmFwaDsKLSAgICBQb3NpdGlvbiBlbmRPZkN1cnJlbnRQ
YXJhZ3JhcGg7CisgICAgVmVjdG9yPE1hbmlwdWxhdGlvblVuaXQ+IHVuaXRzSW5DdXJyZW50UGFy
YWdyYXBoOwogICAgIFJlZlB0cjxFbGVtZW50PiBlbmNsb3NpbmdJdGVtQm91bmRhcnlFbGVtZW50
OwotCisgICAgUGFyYWdyYXBoQ29udGVudEl0ZXJhdG9yIGl0ZXJhdG9yIHsgc3RhcnQsIGVuZCB9
OwogICAgIGZvciAoOyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7CiAg
ICAgICAgIGF1dG8gY29udGVudCA9IGl0ZXJhdG9yLmN1cnJlbnRDb250ZW50KCk7CiAgICAgICAg
IGF1dG8qIGNvbnRlbnROb2RlID0gY29udGVudC5ub2RlLmdldCgpOwogICAgICAgICBBU1NFUlQo
Y29udGVudE5vZGUpOwogCiAgICAgICAgIGlmIChlbmNsb3NpbmdJdGVtQm91bmRhcnlFbGVtZW50
ICYmICFlbmNsb3NpbmdJdGVtQm91bmRhcnlFbGVtZW50LT5jb250YWlucyhjb250ZW50Tm9kZSkp
IHsKLSAgICAgICAgICAgIGlmICghdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICBhZGRJdGVtKE1hbmlwdWxhdGlvbkl0ZW1EYXRhIHsgc3RhcnRPZkN1
cnJlbnRQYXJhZ3JhcGgsIGVuZE9mQ3VycmVudFBhcmFncmFwaCwgbnVsbHB0ciwgbnVsbFFOYW1l
KCksIHN0ZDo6ZXhjaGFuZ2UodG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLCB7IH0pIH0pOworICAg
ICAgICAgICAgYWRkSXRlbUlmUG9zc2libGUoc3RkOjpleGNoYW5nZSh1bml0c0luQ3VycmVudFBh
cmFncmFwaCwgeyB9KSk7CiAgICAgICAgICAgICBlbmNsb3NpbmdJdGVtQm91bmRhcnlFbGVtZW50
ID0gbnVsbHB0cjsKICAgICAgICAgfQogCkBAIC0zODksOSArNDExLDEwIEBAIHZvaWQgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb250ZW50LmlzUmVwbGFjZWRD
b250ZW50KSB7Ci0gICAgICAgICAgICBpZiAoIXRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5k
KE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgIltdIiwg
dG9rZW5JbmZvKGNvbnRlbnQubm9kZS5nZXQoKSksIHRydWUgfSk7Ci0gICAgICAgICAgICAgICAg
ZW5kT2ZDdXJyZW50UGFyYWdyYXBoID0gcG9zaXRpb25BZnRlck5vZGUoY29udGVudE5vZGUpOwor
ICAgICAgICAgICAgaWYgKCF1bml0c0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgICAgICAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+IHRva2VuczsKKyAgICAgICAg
ICAgICAgICB0b2tlbnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZp
ZXIuZ2VuZXJhdGUoKSwgIltdIiwgdG9rZW5JbmZvKGNvbnRlbnQubm9kZS5nZXQoKSksIHRydWUg
fSk7CisgICAgICAgICAgICAgICAgdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1hbmlw
dWxhdGlvblVuaXQgeyBXVEZNb3ZlKHRva2VucyksICpjb250ZW50Tm9kZSB9KTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0zOTksMjcgKzQyMiwy
MCBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpvYnNlcnZlUGFyYWdyYXBocyhj
b25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0CiAgICAgICAgIGlmICghY29udGVudC5pc1RleHRD
b250ZW50KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byB0b2tlbnNJbkN1
cnJlbnROb2RlID0gcGFyc2UoY29udGVudC50ZXh0LCBjb250ZW50Tm9kZSk7Ci0gICAgICAgIGlm
ICghdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSAmJiB0b2tlbnNJbkN1cnJlbnRO
b2RlLmZpcnN0VG9rZW5Db250YWluc0xpbmVCcmVhaykKLSAgICAgICAgICAgIGFkZEl0ZW0oTWFu
aXB1bGF0aW9uSXRlbURhdGEgeyBzdGFydE9mQ3VycmVudFBhcmFncmFwaCwgZW5kT2ZDdXJyZW50
UGFyYWdyYXBoLCBudWxscHRyLCBudWxsUU5hbWUoKSwgc3RkOjpleGNoYW5nZSh0b2tlbnNJbkN1
cnJlbnRQYXJhZ3JhcGgsIHsgfSkgfSk7CisgICAgICAgIGF1dG8gdW5pdHNJbkN1cnJlbnROb2Rl
ID0gcGFyc2UoY29udGVudC50ZXh0LCBjb250ZW50Tm9kZSk7CisgICAgICAgIGlmICh1bml0c0lu
Q3VycmVudE5vZGUuZmlyc3RUb2tlbkNvbnRhaW5zTGluZUJyZWFrKQorICAgICAgICAgICAgYWRk
SXRlbUlmUG9zc2libGUoc3RkOjpleGNoYW5nZSh1bml0c0luQ3VycmVudFBhcmFncmFwaCwgeyB9
KSk7CiAKLSAgICAgICAgaWYgKHRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgIGlmICh0b2tlbnNJbkN1cnJlbnROb2RlLmNvbnRhaW5zT25seUhUTUxTcGFj
ZSkKKyAgICAgICAgaWYgKHVuaXRzSW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSAmJiB1bml0
c0luQ3VycmVudE5vZGUuYXJlQWxsVG9rZW5zRXhjbHVkZWQpCiAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICBzdGFydE9mQ3VycmVudFBhcmFncmFwaCA9IGZpcnN0UG9zaXRp
b25Jbk9yQmVmb3JlTm9kZShjb250ZW50Tm9kZSk7Ci0gICAgICAgIH0KIAotICAgICAgICB0b2tl
bnNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kVmVjdG9yKHRva2Vuc0luQ3VycmVudE5vZGUudG9r
ZW5zKTsKLSAgICAgICAgZW5kT2ZDdXJyZW50UGFyYWdyYXBoID0gcG9zaXRpb25BZnRlck5vZGUo
Y29udGVudE5vZGUpOworICAgICAgICB1bml0c0luQ3VycmVudFBhcmFncmFwaC5hcHBlbmQoV1RG
TW92ZSh1bml0c0luQ3VycmVudE5vZGUpKTsKIAotICAgICAgICBpZiAoIXRva2Vuc0luQ3VycmVu
dFBhcmFncmFwaC5pc0VtcHR5KCkgJiYgdG9rZW5zSW5DdXJyZW50Tm9kZS5sYXN0VG9rZW5Db250
YWluc0xpbmVCcmVhaykgewotICAgICAgICAgICAgQVNTRVJUKCF0b2tlbnNJbkN1cnJlbnRQYXJh
Z3JhcGguaXNFbXB0eSgpKTsKLSAgICAgICAgICAgIGFkZEl0ZW0oTWFuaXB1bGF0aW9uSXRlbURh
dGEgeyBzdGFydE9mQ3VycmVudFBhcmFncmFwaCwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBudWxs
cHRyLCBudWxsUU5hbWUoKSwgc3RkOjpleGNoYW5nZSh0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGgs
IHsgfSkgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHVuaXRzSW5DdXJyZW50Tm9kZS5sYXN0
VG9rZW5Db250YWluc0xpbmVCcmVhaykKKyAgICAgICAgICAgIGFkZEl0ZW1JZlBvc3NpYmxlKHN0
ZDo6ZXhjaGFuZ2UodW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGgsIHsgfSkpOwogICAgIH0KIAotICAg
IGlmICghdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmlzRW1wdHkoKSkKLSAgICAgICAgYWRkSXRl
bShNYW5pcHVsYXRpb25JdGVtRGF0YSB7IHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoLCBlbmRPZkN1
cnJlbnRQYXJhZ3JhcGgsIG51bGxwdHIsIG51bGxRTmFtZSgpLCBXVEZNb3ZlKHRva2Vuc0luQ3Vy
cmVudFBhcmFncmFwaCkgfSk7CisgICAgYWRkSXRlbUlmUG9zc2libGUoc3RkOjpleGNoYW5nZSh1
bml0c0luQ3VycmVudFBhcmFncmFwaCwgeyB9KSk7CiB9CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6OmRpZENyZWF0ZVJlbmRlcmVyRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5oCmluZGV4IGYwM2QxNzY2M2ZlNmEyNWY1YjJmNWM2MWE3MGRlYTlmMDc2YmYxNzYuLjg2
YjQ4YjViOGJjOGRkNjY1NDNlNTllZjBiMmZmYTI4YTE1NDNlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKQEAgLTE1MCwx
NiArMTUwLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4g
dG9rZW5zOwogICAgIH07CiAKLSAgICBzdHJ1Y3QgTWFuaXB1bGF0aW9uVG9rZW5zIHsKKyAgICBz
dHJ1Y3QgTWFuaXB1bGF0aW9uVW5pdCB7CiAgICAgICAgIFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tl
bj4gdG9rZW5zOwotICAgICAgICBib29sIGNvbnRhaW5zT25seUhUTUxTcGFjZSB7IHRydWUgfTsK
KyAgICAgICAgUmVmPE5vZGU+IG5vZGU7CisgICAgICAgIGJvb2wgYXJlQWxsVG9rZW5zRXhjbHVk
ZWQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgY29udGFpbnNMaW5lQnJlYWsgeyBmYWxzZSB9Owog
ICAgICAgICBib29sIGZpcnN0VG9rZW5Db250YWluc0xpbmVCcmVhayB7IGZhbHNlIH07CiAgICAg
ICAgIGJvb2wgbGFzdFRva2VuQ29udGFpbnNMaW5lQnJlYWsgeyBmYWxzZSB9OwogICAgIH07Ci0g
ICAgTWFuaXB1bGF0aW9uVG9rZW5zIHBhcnNlKFN0cmluZ1ZpZXcsIE5vZGUqKTsKKyAgICBNYW5p
cHVsYXRpb25Vbml0IHBhcnNlKFN0cmluZ1ZpZXcsIE5vZGUqKTsKIAogICAgIHZvaWQgYWRkSXRl
bShNYW5pcHVsYXRpb25JdGVtRGF0YSYmKTsKKyAgICB2b2lkIGFkZEl0ZW1JZlBvc3NpYmxlKFZl
Y3RvcjxNYW5pcHVsYXRpb25Vbml0PiYmKTsKICAgICB2b2lkIGZsdXNoUGVuZGluZ0l0ZW1zRm9y
Q2FsbGJhY2soKTsKIAogICAgIHN0cnVjdCBOb2RlSW5zZXJ0aW9uIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlY2RhNjVlYmY1M2UyYjU3YmEw
YWU4MDA4YmRjYTYxYzU4OGNkMzIxLi43Y2NkNzNiNTNlYzMzNzdmMGVmMjc3NDg5Y2M4NjhkZWEz
ZDBiNmRlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDYtMDQgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBs
ZS5jb20+CisKKyAgICAgICAgVGV4dCBtYW5pcHVsYXRpb246IGZpcnN0IGFuZCBsYXN0IHVuaXQg
aW4gYSBwYXJhZ3JhcGggc2hvdWxkIG5vdCBjb250YWluIG9ubHkgZXhjbHVkZWQgdG9rZW5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTI3NTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb2RpZnkgZXhp
c3RpbmcgdGVzdCBmb3IgY2hhbmdlZCBiZWhhdmlvciB0aGF0IGxlYWRpbmcgYW5kIHRyYWlsaW5n
IGV4Y2x1ZGVkIHVuaXRzIGFyZSBub3QgaW5jbHVkZWQgaW4gcGFyYWdyYXBoCisgICAgICAgIG5v
dy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlw
dWxhdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIwLTA2LTAz
ICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgbWFuaXB1
bGF0aW9uIHNvbWV0aW1lcyBmYWlscyB0byByZXBsYWNlIHRleHQgaW4gYXR0cmlidXRlcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1
bGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFu
aXB1bGF0aW9uLm1tCmluZGV4IDQ1N2E3MGM2NWQ3NGI1MTVhYzEwZWQwNjAxOTI3ZTBiNTE2MTc3
NjMuLmNkODI3N2VkZGI5MTM4YmNkYmMyOWEzZjc1NWU3YTY4ZDRhMGE0NTkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVs
YXRpb24ubW0KQEAgLTI0MywxMSArMjQzLDkgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBTdGFy
dFRleHRNYW5pcHVsYXRpb25GaW5kQXR0cmlidXRlQ29udGVudCkKICAgICBFWFBFQ1RfU1RSRVEo
ImZydWl0IiwgaXRlbXNbMl0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAgICAgRVhQ
RUNUX0ZBTFNFKGl0ZW1zWzJdLnRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKIAotICAgIEVYUEVDVF9F
UShpdGVtc1szXS50b2tlbnMuY291bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzNdLnRv
a2Vucy5jb3VudCwgMVVMKTsKICAgICBFWFBFQ1RfU1RSRVEoImhlbGxvIiwgaXRlbXNbM10udG9r
ZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAgICAgRVhQRUNUX0ZBTFNFKGl0ZW1zWzNdLnRv
a2Vuc1swXS5pc0V4Y2x1ZGVkKTsKLSAgICBFWFBFQ1RfU1RSRVEoIltdIiwgaXRlbXNbM10udG9r
ZW5zWzFdLmNvbnRlbnQuVVRGOFN0cmluZyk7Ci0gICAgRVhQRUNUX1RSVUUoaXRlbXNbM10udG9r
ZW5zWzFdLmlzRXhjbHVkZWQpOwogfQogCiBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4
dE1hbmlwdWxhdGlvblN1cHBvcnRzTGVnYWN5RGVsZWdhdGVDYWxsYmFjaykKQEAgLTQ1MSwxMSAr
NDQ5LDkgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBs
eUluY2x1c2lvbkV4Y2x1c2lvblJ1bGVzRm9yQXR0cmkKIAogICAgIGF1dG8gKml0ZW1zID0gW2Rl
bGVnYXRlIGl0ZW1zXTsKICAgICBFWFBFQ1RfRVEoaXRlbXMuY291bnQsIDFVTCk7Ci0gICAgRVhQ
RUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMlVMKTsKLSAgICBFWFBFQ1RfU1RSRVEoImhl
bGxvLCAiLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKLSAgICBFWFBF
Q1RfVFJVRShpdGVtc1swXS50b2tlbnNbMF0uaXNFeGNsdWRlZCk7Ci0gICAgRVhQRUNUX1NUUkVR
KCJ3b3JsZCIsIGl0ZW1zWzBdLnRva2Vuc1sxXS5jb250ZW50LlVURjhTdHJpbmcpOwotICAgIEVY
UEVDVF9GQUxTRShpdGVtc1swXS50b2tlbnNbMV0uaXNFeGNsdWRlZCk7CisgICAgRVhQRUNUX0VR
KGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwg
aXRlbXNbMF0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX0ZBTFNF
KGl0ZW1zWzBdLnRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKIH0KIAogVEVTVChUZXh0TWFuaXB1bGF0
aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseUluY2x1c2lvbkV4Y2x1c2lvblJ1bGVzRm9y
Q2xhc3MpCkBAIC00NjUsNyArNDYxLDcgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRl
eHRNYW5pcHVsYXRpb25BcHBseUluY2x1c2lvbkV4Y2x1c2lvblJ1bGVzRm9yQ2xhc3MKICAgICBb
d2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAog
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1s
PiIKLSAgICAgICAgIjxodG1sPjxib2R5PjxzcGFuIGNsYXNzPSdzb21lQ2xhc3MgZXhjbHVkZSc+
TWVzc2FnZTogPGI+aGVsbG8sIDwvYj48c3Bhbj53b3JsZDwvc3Bhbj48L3NwYW4+PC9ib2R5Pjwv
aHRtbD4iXTsKKyAgICAgICAgIjxodG1sPjxib2R5Pk1lc3NhZ2U6IDxzcGFuIGNsYXNzPSdzb21l
Q2xhc3MgZXhjbHVkZSc+PGI+aGVsbG8sIDwvYj48c3Bhbj53b3JsZDwvc3Bhbj48L3NwYW4+PC9i
b2R5PjwvaHRtbD4iXTsKIAogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tU
ZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1
cmF0aW9uIHNldEV4Y2x1c2lvblJ1bGVzOkBbCkBAIC00ODAsMTMgKzQ3Niw5IEBAIFRFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgU3RhcnRUZXh0TWFuaXB1bGF0aW9uQXBwbHlJbmNsdXNpb25FeGNsdXNp
b25SdWxlc0ZvckNsYXNzCiAKICAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0ZSBpdGVtc107CiAg
ICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAxVUwpOwotICAgIEVYUEVDVF9FUShpdGVtc1swXS50
b2tlbnMuY291bnQsIDNVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwg
MVVMKTsKICAgICBFWFBFQ1RfU1RSRVEoIk1lc3NhZ2U6ICIsIGl0ZW1zWzBdLnRva2Vuc1swXS5j
b250ZW50LlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9UUlVFKGl0ZW1zWzBdLnRva2Vuc1swXS5p
c0V4Y2x1ZGVkKTsKLSAgICBFWFBFQ1RfU1RSRVEoImhlbGxvLCAiLCBpdGVtc1swXS50b2tlbnNb
MV0uY29udGVudC5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShpdGVtc1swXS50b2tlbnNb
MV0uaXNFeGNsdWRlZCk7Ci0gICAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIsIGl0ZW1zWzBdLnRva2Vu
c1syXS5jb250ZW50LlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9UUlVFKGl0ZW1zWzBdLnRva2Vu
c1syXS5pc0V4Y2x1ZGVkKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXRlbXNbMF0udG9rZW5zWzBdLmlz
RXhjbHVkZWQpOwogfQogCiBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxh
dGlvbkFwcGx5SW5jbHVzaW9uRXhjbHVzaW9uUnVsZXNGb3JDbGFzc0FuZEF0dHJpYnV0ZSkKQEAg
LTUxMywxMyArNTA1LDkgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVs
YXRpb25BcHBseUluY2x1c2lvbkV4Y2x1c2lvblJ1bGVzRm9yQ2xhc3MKIAogICAgIGF1dG8gKml0
ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKICAgICBFWFBFQ1RfRVEoaXRlbXMuY291bnQsIDFVTCk7
Ci0gICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgM1VMKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoIk1lc3NhZ2U6ICIsIGl0ZW1zWzBdLnRva2Vuc1swXS5jb250ZW50LlVURjhTdHJpbmcp
OwotICAgIEVYUEVDVF9UUlVFKGl0ZW1zWzBdLnRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKLSAgICBF
WFBFQ1RfU1RSRVEoImhlbGxvLCAiLCBpdGVtc1swXS50b2tlbnNbMV0uY29udGVudC5VVEY4U3Ry
aW5nKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXRlbXNbMF0udG9rZW5zWzFdLmlzRXhjbHVkZWQpOwot
ICAgIEVYUEVDVF9TVFJFUSgid29ybGQiLCBpdGVtc1swXS50b2tlbnNbMl0uY29udGVudC5VVEY4
U3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShpdGVtc1swXS50b2tlbnNbMl0uaXNFeGNsdWRlZCk7
CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoImhlbGxvLCAiLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsK
KyAgICBFWFBFQ1RfRkFMU0UoaXRlbXNbMF0udG9rZW5zWzBdLmlzRXhjbHVkZWQpOwogfQogCiBU
RVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlvbkJyZWFrc1BhcmFncmFw
aEluQmV0d2Vlbkxpc3RJdGVtcykKQEAgLTEyNTYsMTAgKzEyNDQsMTAgQEAgVEVTVChUZXh0TWFu
aXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91bGRQcmVzZXJ2ZVNWR0FzRXhj
bHVkZWRUb2tlbnMKICAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PiIKLSAgICAiPHNlY3Rpb24+PGRpdiBzdHls
ZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5oZWxsbzwvZGl2PiIKLSAgICAiPGRpdiBzdHls
ZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj48c3BhbiBzdHlsZT1cImRpc3BsYXk6IGlubGlu
ZS1mbGV4O1wiPiIKLSAgICAiPHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgd2lkdGg9XCIyMFwi
IGhlaWdodD1cIjIwXCI+PHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIiMw
NmZcIj48L3JlY3Q+PC9zdmc+IgotICAgICI8L3NwYW4+PC9kaXY+PC9zZWN0aW9uPjxwPndvcmxk
PC9wPjwvYm9keT48L2h0bWw+Il07CisgICAgIjxzZWN0aW9uPjxkaXYgc3R5bGU9XCJkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7XCI+aGVsbG8iCisgICAgIjxzcGFuIHN0eWxlPVwiZGlzcGxheTogaW5s
aW5lLWZsZXg7XCI+PHN2ZyB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgd2lkdGg9XCIyMFwiIGhlaWdo
dD1cIjIwXCI+PHJlY3Qgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIiMwNmZcIj48
L3JlY3Q+PC9zdmc+PC9zcGFuPiIKKyAgICAid2Via2l0PC9kaXY+PC9zZWN0aW9uPiIKKyAgICAi
PHA+d29ybGQ8L3A+PC9ib2R5PjwvaHRtbD4iXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKICAgICBb
d2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOm5pbCBjb21w
bGV0aW9uOl57CkBAIC0xMjcwLDExICsxMjU4LDEzIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwg
Q29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkUHJlc2VydmVTVkdBc0V4Y2x1ZGVkVG9rZW5z
CiAgICAgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOwogICAgIEVYUEVDVF9FUShpdGVt
cy5jb3VudCwgMlVMKTsKICAgICBhdXRvICp0b2tlbnMgPSBpdGVtc1swXS50b2tlbnM7Ci0gICAg
RVhQRUNUX0VRKHRva2Vucy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEodG9rZW5zLmNvdW50
LCAzVUwpOwogICAgIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCB0b2tlbnNbMF0uY29udGVudC5VVEY4
U3RyaW5nKTsKICAgICBFWFBFQ1RfRkFMU0UodG9rZW5zWzBdLmlzRXhjbHVkZWQpOwogICAgIEVY
UEVDVF9TVFJFUSgiW10iLCB0b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKICAgICBFWFBF
Q1RfVFJVRSh0b2tlbnNbMV0uaXNFeGNsdWRlZCk7CisgICAgRVhQRUNUX1NUUkVRKCJ3ZWJraXQi
LCB0b2tlbnNbMl0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW5z
WzJdLmlzRXhjbHVkZWQpOwogICAgIAogICAgIEVYUEVDVF9FUShpdGVtc1sxXS50b2tlbnMuY291
bnQsIDFVTCk7CiAgICAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIsIGl0ZW1zWzFdLnRva2Vuc1swXS5j
b250ZW50LlVURjhTdHJpbmcpOwpAQCAtMTI4NCwxNSArMTI3NCwxMyBAQCBURVNUKFRleHRNYW5p
cHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZFByZXNlcnZlU1ZHQXNFeGNs
dWRlZFRva2VucwogICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVt
czpAWyhfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRp
ZmllciwgewogICAgICAgICB7IHRva2Vuc1swXS5pZGVudGlmaWVyLCBAImhleSIgfSwKICAgICAg
ICAgeyB0b2tlbnNbMV0uaWRlbnRpZmllciwgbmlsIH0sCisgICAgICAgIHsgdG9rZW5zWzJdLmlk
ZW50aWZpZXIsIEAiV2ViS2l0IiB9LAogICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vy
cm9yICo+ICplcnJvcnMpIHsKICAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKICAgICAg
ICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIjxzZWN0aW9uPjxkaXYgc3R5bGU9XCJkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7XCI+aGV5PC9kaXY+IgotICAgICI8ZGl2IHN0eWxlPVwiZGlzcGxheTog
aW5saW5lLWJsb2NrO1wiPjxzcGFuIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWZsZXg7XCI+Igot
ICAgICI8c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBc
Ij48cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiBmaWxsPVwiIzA2ZlwiPjwvcmVjdD48
L3N2Zz4iCi0gICAgIjwvc3Bhbj48L2Rpdj48L3NlY3Rpb24+PHA+d29ybGQ8L3A+IiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1M
Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiPHNlY3Rpb24+PGRpdiBzdHlsZT1cImRpc3BsYXk6
IGlubGluZS1ibG9jaztcIj5oZXk8c3BhbiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1mbGV4O1wi
Pjxzdmcgdmlld0JveD1cIjAgMCAyMCAyMFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiPjxy
ZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIGZpbGw9XCIjMDZmXCI+PC9yZWN0Pjwvc3Zn
Pjwvc3Bhbj5XZWJLaXQ8L2Rpdj48L3NlY3Rpb24+PHA+d29ybGQ8L3A+IiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOwog
fQogCiBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3Vs
ZFByZXNlcnZlT3JkZXJPZkJsb2NrSW1hZ2UpCkBAIC0xMzU4LDkgKzEzNDYsOCBAQCBURVNUKFRl
eHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZFJlcGxhY2VBdHRy
aWJ1dGVDb250ZW50KQogICAgIEVYUEVDVF9FUShpdGVtc1syXS50b2tlbnMuY291bnQsIDFVTCk7
CiAgICAgRVhQRUNUX1NUUkVRKCJmcnVpdCIsIGl0ZW1zWzJdLnRva2Vuc1swXS5jb250ZW50LlVU
RjhTdHJpbmcpOwogCi0gICAgRVhQRUNUX0VRKGl0ZW1zWzNdLnRva2Vucy5jb3VudCwgMlVMKTsK
KyAgICBFWFBFQ1RfRVEoaXRlbXNbM10udG9rZW5zLmNvdW50LCAxVUwpOwogICAgIEVYUEVDVF9T
VFJFUSgiaGVsbG8iLCBpdGVtc1szXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKLSAg
ICBFWFBFQ1RfU1RSRVEoIltdIiwgaXRlbXNbM10udG9rZW5zWzFdLmNvbnRlbnQuVVRGOFN0cmlu
Zyk7CiAKICAgICBkb25lID0gZmFsc2U7CiAgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlw
dWxhdGlvbkZvckl0ZW1zOkBbCkBAIC0xNDM4LDE0ICsxNDI1LDEzIEBAIFRFU1QoVGV4dE1hbmlw
dWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkUmVwbGFjZVRleHRDb250ZW50
V2l0aE11bHRpCiAgICAgRVhQRUNUX0VRKGl0ZW1zWzJdLnRva2Vucy5jb3VudCwgMVVMKTsKICAg
ICBFWFBFQ1RfRVEoaXRlbXNbM10udG9rZW5zLmNvdW50LCAxVUwpOwogICAgIEVYUEVDVF9FUShp
dGVtc1s0XS50b2tlbnMuY291bnQsIDFVTCk7Ci0gICAgRVhQRUNUX0VRKGl0ZW1zWzVdLnRva2Vu
cy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbNV0udG9rZW5zLmNvdW50LCAxVUwp
OwogICAgIEVYUEVDVF9XS19TVFJFUSgiVGhpcyBpcyBhIHRlc3QiLCBpdGVtc1swXS50b2tlbnNb
MF0uY29udGVudCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIsIGl0ZW1zWzFd
LnRva2Vuc1swXS5jb250ZW50KTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIlNob3VsZCBub3QgYmUg
cmVwbGFjZWQiLCBpdGVtc1syXS50b2tlbnNbMF0uY29udGVudCk7CiAgICAgRVhQRUNUX1dLX1NU
UkVRKCJsYWJlbCIsIGl0ZW1zWzNdLnRva2Vuc1swXS5jb250ZW50KTsKICAgICBFWFBFQ1RfV0tf
U1RSRVEoImltYWdlIiwgaXRlbXNbNF0udG9rZW5zWzBdLmNvbnRlbnQpOwogICAgIEVYUEVDVF9X
S19TVFJFUSgiVGV4dCIsIGl0ZW1zWzVdLnRva2Vuc1swXS5jb250ZW50KTsKLSAgICBFWFBFQ1Rf
V0tfU1RSRVEoIltdIiwgaXRlbXNbNV0udG9rZW5zWzFdLmNvbnRlbnQpOwogCiAgICAgYXV0byBy
ZXBsYWNlbWVudEl0ZW1zID0gcmV0YWluUHRyKEBbCiAgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNb
MF0uaWRlbnRpZmllciwgeyB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIlJlcGxh
Y2VtZW50IiB9LCB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAInRpdGxlIiB9IH0p
LmF1dG9yZWxlYXNlKCksCkBAIC0xODQ2LDcgKzE4MzIsNyBAQCBURVNUKFRleHRNYW5pcHVsYXRp
b24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVzaW9uSXNWaW9sYXRlZCkK
ICAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBs
ZSJdOwotICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5ib2R5LmlubmVySFRNTCA9ICc8cD5oaSwgPGVtPldlYktpdHRlbjwvZW0+PC9wPiciXTsKKyAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5p
bm5lckhUTUwgPSAnPHA+aGksIDxlbT5XZWJLaXR0ZW48L2VtPiBieWU8L3A+JyJdOwogCiAgICAg
UmV0YWluUHRyPF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKQEAgLTE4NjEsMTQg
KzE4NDcsMTYgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRp
b25GYWlsV2hlbkV4Y2x1c2lvbklzVmlvbGF0ZWQpCiAKICAgICBhdXRvICppdGVtcyA9IFtkZWxl
Z2F0ZSBpdGVtc107CiAgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAxVUwpOwotICAgIEVYUEVD
VF9FUShpdGVtc1swXS50b2tlbnMuY291bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBd
LnRva2Vucy5jb3VudCwgM1VMKTsKICAgICBFWFBFQ1RfU1RSRVEoImhpLCAiLCBpdGVtc1swXS50
b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKICAgICBFWFBFQ1RfU1RSRVEoIldlYktpdHRl
biIsIGl0ZW1zWzBdLnRva2Vuc1sxXS5jb250ZW50LlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9T
VFJFUSgiIGJ5ZSIsIGl0ZW1zWzBdLnRva2Vuc1syXS5jb250ZW50LlVURjhTdHJpbmcpOwogCiAg
ICAgZG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sgYXV0byBpdGVtID0gY3JlYXRlSXRlbShpdGVt
c1swXS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZp
ZXIsIEAiSGVsbG8sIiB9LAogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1sxXS5pZGVudGlmaWVy
LCBAIldlYktpdCIgfSwKKyAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMl0uaWRlbnRpZmllciwg
QCJCeWUiIH0sCiAgICAgfSk7CiAgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlv
bkZvckl0ZW1zOkBbaXRlbS5nZXQoKV0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAq
ZXJyb3JzKSB7CiAgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuY291bnQsIDFVTCk7CkBAIC0xODc5
LDcgKzE4NjcsNyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxh
dGlvbkZhaWxXaGVuRXhjbHVzaW9uSXNWaW9sYXRlZCkKICAgICB9XTsKIAogICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCI8cD5oaSwgPGVt
PldlYktpdHRlbjwvZW0+PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxw
PmhpLCA8ZW0+V2ViS2l0dGVuPC9lbT4gYnllPC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKIH0KIAogVEVTVChU
ZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25GYWlsV2hlbkV4Y2x1ZGVk
Q29udGVudEFwcGVhcnNNb3JlVGhhbk9uY2UpCkBAIC0xODg5LDcgKzE4NzcsNyBAQCBURVNUKFRl
eHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVkZWRD
b250ZW50QXBwZWFyc01vcgogICAgIFt3ZWJWaWV3IF9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAic2ltcGxlIl07Ci0gICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJzxwPmhpLCA8ZW0+V2ViS2l0dGVu
PC9lbT48L3A+JyJdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8cD5oaSwgPGVtPldlYktpdHRlbjwvZW0+IGJ5
ZTwvcD4nIl07CiAKICAgICBSZXRhaW5QdHI8X1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29uZmlndXJhdGlvbiBzZXRFeGNsdXNpb25SdWxl
czpAWwpAQCAtMTkwNCwxNSArMTg5MiwxNyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBs
ZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVkZWRDb250ZW50QXBwZWFyc01vcgogCiAg
ICAgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOwogICAgIEVYUEVDVF9FUShpdGVtcy5j
b3VudCwgMVVMKTsKLSAgICBFWFBFQ1RfRVEoaXRlbXNbMF0udG9rZW5zLmNvdW50LCAyVUwpOwor
ICAgIEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMuY291bnQsIDNVTCk7CiAgICAgRVhQRUNUX1NU
UkVRKCJoaSwgIiwgaXRlbXNbMF0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAgICAg
RVhQRUNUX1NUUkVRKCJXZWJLaXR0ZW4iLCBpdGVtc1swXS50b2tlbnNbMV0uY29udGVudC5VVEY4
U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoIiBieWUiLCBpdGVtc1swXS50b2tlbnNbMl0uY29u
dGVudC5VVEY4U3RyaW5nKTsKIAogICAgIGRvbmUgPSBmYWxzZTsKICAgICBfX2Jsb2NrIGF1dG8g
aXRlbSA9IGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgewogICAgICAgICB7IGl0ZW1z
WzBdLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBuaWwgfSwKICAgICAgICAgeyBpdGVtc1swXS50b2tl
bnNbMF0uaWRlbnRpZmllciwgQCJIZWxsbywiIH0sCiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5z
WzFdLmlkZW50aWZpZXIsIG5pbCB9LAorICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1syXS5pZGVu
dGlmaWVyLCBAIkJ5ZSIgfSwKICAgICB9KTsKICAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFu
aXB1bGF0aW9uRm9ySXRlbXM6QFtpdGVtLmdldCgpXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vy
cm9yICo+ICplcnJvcnMpIHsKICAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5jb3VudCwgMVVMKTsK
QEAgLTE5MjMsNyArMTkxMyw3IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0
TWFuaXB1bGF0aW9uRmFpbFdoZW5FeGNsdWRlZENvbnRlbnRBcHBlYXJzTW9yCiAgICAgfV07CiAK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwotICAgIEVYUEVDVF9XS19TVFJF
USgiPHA+aGksIDxlbT5XZWJLaXR0ZW48L2VtPjwvcD4iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCI8cD5oaSwgPGVtPldlYktpdHRlbjwvZW0+IGJ5ZTwvcD4iLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7
CiB9CiAKIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUHJl
c2VydmVzRXhjbHVkZWRDb250ZW50KQpAQCAtMTkzMiw3ICsxOTIyLDcgQEAgVEVTVChUZXh0TWFu
aXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25QcmVzZXJ2ZXNFeGNsdWRlZENvbnRl
bnQpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKICAgICBbd2ViVmlldyBf
c2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAotICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1sPjxodG1sPjxi
b2R5PjxwPmhpLCA8ZW0+V2ViS2l0dGVuPC9lbT48L3A+PC9ib2R5PjwvaHRtbD4iXTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRt
bD48Ym9keT48cD5oaSwgPGVtPldlYktpdHRlbjwvZW0+IGJ5ZTwvcD48L2JvZHk+PC9odG1sPiJd
OwogCiAgICAgUmV0YWluUHRyPF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKQEAg
LTE5NDcsMjEgKzE5MzcsMjMgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRN
YW5pcHVsYXRpb25QcmVzZXJ2ZXNFeGNsdWRlZENvbnRlbnQpCiAKICAgICBhdXRvICppdGVtcyA9
IFtkZWxlZ2F0ZSBpdGVtc107CiAgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAxVUwpOwotICAg
IEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMuY291bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0
ZW1zWzBdLnRva2Vucy5jb3VudCwgM1VMKTsKICAgICBFWFBFQ1RfU1RSRVEoImhpLCAiLCBpdGVt
c1swXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKICAgICBFWFBFQ1RfU1RSRVEoIldl
YktpdHRlbiIsIGl0ZW1zWzBdLnRva2Vuc1sxXS5jb250ZW50LlVURjhTdHJpbmcpOworICAgIEVY
UEVDVF9TVFJFUSgiIGJ5ZSIsIGl0ZW1zWzBdLnRva2Vuc1syXS5jb250ZW50LlVURjhTdHJpbmcp
OwogCiAgICAgZG9uZSA9IGZhbHNlOwogICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVs
YXRpb25Gb3JJdGVtczpAWyhfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRl
bXNbMF0uaWRlbnRpZmllciwgewogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlm
aWVyLCBAIkhlbGxvLCAiIH0sCiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzFdLmlkZW50aWZp
ZXIsIG5pbCB9LAorICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1syXS5pZGVudGlmaWVyLCBAIiBC
eWUiIH0sCiAgICAgfSldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykg
ewogICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOwogICAgICAgICBkb25lID0gdHJ1ZTsK
ICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgRVhQ
RUNUX1dLX1NUUkVRKCI8cD5IZWxsbywgPGVtPldlYktpdHRlbjwvZW0+PC9wPiIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxwPkhlbGxvLCA8ZW0+V2ViS2l0dGVuPC9lbT4gQnll
PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5i
b2R5LmlubmVySFRNTCJdKTsKIH0KIAogVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRl
eHRNYW5pcHVsYXRpb25Eb2VzTm90Q3JlYXRlTW9yZVRleHRNYW5pcHVsYXRpb25JdGVtcykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401120</attachid>
            <date>2020-06-04 22:45:44 -0700</date>
            <delta_ts>2020-06-04 23:13:35 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-212759-20200604224543.patch</filename>
            <type>text/plain</type>
            <size>25503</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzVmOGE5ZWVmMDc3ZGQw
ZWVmZTRmZGFmNmFkMGQ0NzVlZTcxNzNjMy4uYTIwMDMxNGM3NTdhZDU3MzU0YWEzMjc4MjA5NWRj
ZjRlMjRiMTAwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIwLTA2LTA0ICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIFRleHQgbWFuaXB1bGF0aW9u
OiBmaXJzdCBhbmQgbGFzdCB1bml0IGluIGEgcGFyYWdyYXBoIHNob3VsZCBub3QgY29udGFpbiBv
bmx5IGV4Y2x1ZGVkIHRva2VucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjEyNzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgor
CisgICAgICAgIEluIHIyNjIzOTgsIHdlIGxpdGVyYWxseSBtYWRlIHRleHQgb2Ygb25lIE5vZGUg
YXMgdGhlIG1pbmltdW0gdW5pdCBmb3IgdGV4dCBtYW5pcHVsYXRpb24uIFRoaXMgcGF0Y2hlcyBp
bnRyb2R1Y2UKKyAgICAgICAgYSBzdHJ1Y3QgTWFuaXB1bGF0aW9uVW5pdCBmb3IgdGhhdC4gTm93
IGEgcGFyYWdyYXBoIGNhbiBiZSByZXByZXNlbnRlZCBhcyBtdWx0aXBsZSBNYW5pcHVsYXRpb25V
bml0cy4gV2hlbiBhbGwgCisgICAgICAgIHRva2VucyBpbiBhIE1hbmlwdWxhdGlvblVuaXQgYXJl
IGV4Y2x1ZGVkLCBpdCBtZWFucyB0aGUgTWFuaXB1bGF0aW9uVW5pdCBpcyBleGNsdWRlZCBhbmQg
c2hvdWxkIG5vdCBiZSAKKyAgICAgICAgbWFuaXB1bGF0ZWQuIFRvIHJlY29yZCBNYW5pcHVsYXRp
b25Vbml0cyBpbiBhIHBhcmFncmFwaCBiYXNlZCBvbiBvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlv
biwgd2UgbmVlZCB0byBrZWVwIHRoZQorICAgICAgICBleGNsdWRlZCBNYW5pcHVsYXRpb25Vbml0
cyBzdXJyb3VuZGVkIGJ5IG5vbi1leGNsdWRlZCBNYW5pcHVsYXRpb25Vbml0cywgYnV0IHdlIGNh
biBzYWZlbHkgcmVtb3ZlIHRoZSBsZWFkaW5nIAorICAgICAgICBhbmQgdHJhaWxpbmcgZXhjbHVk
ZWQgTWFuaXB1bGF0aW9uVW5pdHMuIEluIHRoaXMgY2FzZSwgd2UgY2FuIGxpbWl0IHRoZSByYW5n
ZSBvZiBwYXJhZ3JhcGggZnVydGhlciBhbmQgdGh1cyBsZXNzCisgICAgICAgIHRleHQgcmVwbGFj
ZW1lbnQgd29yay4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3QuCisKKyAgICAg
ICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpwYXJzZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6YWRkSXRlbUlmUG9zc2libGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3Jh
cGhzKToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisK
IDIwMjAtMDYtMDQgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIFtQbGF5U3RhdGlvbl0gVW5yZXZpZXdlZCByZXZlcnQgb2YgYnVpbGQgZml4LiBNaXNz
aW5nIGluY2x1ZGUgd2FzIG5vdCB0aGUgY2F1c2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGIzZGU5ODk4N2Y3
ZWI5NmI4Mzk1MjNhYzg1NzY3YmY2NDk5MjE5NTIuLjJiMzYzOTc2MzZiNTVkNjk3NTgxMmRhNmJh
YmI4ZjRmMzdhM2Q0NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0yOTQsMTIgKzI5NCwxMyBAQCBzdGF0aWMg
Ym9vbCBpc0VuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25Ub2tlbnMgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnBhcnNlKFN0cmlu
Z1ZpZXcgdGV4dCwgTm9kZSogdGV4dE5vZGUpCitUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uVW5pdCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cGFyc2UoU3RyaW5n
VmlldyB0ZXh0LCBOb2RlKiB0ZXh0Tm9kZSkKIHsKICAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9r
ZW4+IHRva2VuczsKICAgICBFeGNsdXNpb25SdWxlTWF0Y2hlciBleGNsdXNpb25SdWxlTWF0Y2hl
cihtX2V4Y2x1c2lvblJ1bGVzKTsKICAgICBzaXplX3QgcG9zaXRpb25PZkxhc3ROb25IVE1MU3Bh
Y2UgPSBXVEY6Om5vdEZvdW5kOwogICAgIHNpemVfdCBzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9r
ZW4gPSAwOworICAgIGJvb2wgaXNOb2RlRXhjbHVkZWQgPSBleGNsdXNpb25SdWxlTWF0Y2hlci5p
c0V4Y2x1ZGVkKHRleHROb2RlKTsKICAgICBib29sIGNvbnRhaW5zT25seUhUTUxTcGFjZSA9IHRy
dWU7CiAgICAgYm9vbCBjb250YWluc0xpbmVCcmVhayA9IGZhbHNlOwogICAgIGJvb2wgZmlyc3RU
b2tlbkNvbnRhaW5zTGluZUJyZWFrID0gZmFsc2U7CkBAIC0zMTUsNyArMzE2LDcgQEAgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VucyBUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6cGFyc2UKICAgICAgICAgICAgIGNvbnRhaW5zTGluZUJyZWFrID0gdHJ1ZTsK
ICAgICAgICAgICAgIGlmIChwb3NpdGlvbk9mTGFzdE5vbkhUTUxTcGFjZSAhPSBXVEY6Om5vdEZv
dW5kICYmIHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiA8PSBwb3NpdGlvbk9mTGFzdE5vbkhU
TUxTcGFjZSkgewogICAgICAgICAgICAgICAgIGF1dG8gdG9rZW5TdHJpbmcgPSB0ZXh0LnN1YnN0
cmluZyhzdGFydFBvc2l0aW9uT2ZDdXJyZW50VG9rZW4sIHBvc2l0aW9uT2ZMYXN0Tm9uSFRNTFNw
YWNlICsgMSAtIHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbikudG9TdHJpbmcoKTsKLSAgICAg
ICAgICAgICAgICB0b2tlbnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50
aWZpZXIuZ2VuZXJhdGUoKSwgdG9rZW5TdHJpbmcsIHRva2VuSW5mbyh0ZXh0Tm9kZSksIGV4Y2x1
c2lvblJ1bGVNYXRjaGVyLmlzRXhjbHVkZWQodGV4dE5vZGUpIH0pOworICAgICAgICAgICAgICAg
IHRva2Vucy5hcHBlbmQoTWFuaXB1bGF0aW9uVG9rZW4geyBtX3Rva2VuSWRlbnRpZmllci5nZW5l
cmF0ZSgpLCB0b2tlblN0cmluZywgdG9rZW5JbmZvKHRleHROb2RlKSwgaXNOb2RlRXhjbHVkZWQg
fSk7CiAgICAgICAgICAgICAgICAgc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuID0gcG9zaXRp
b25PZkxhc3ROb25IVE1MU3BhY2UgKyAxOwogICAgICAgICAgICAgfQogCkBAIC0zMzcsMTEgKzMz
OCwzNiBAQCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW5zIFRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpwYXJzZQogCiAgICAgaWYgKHN0YXJ0UG9zaXRpb25P
ZkN1cnJlbnRUb2tlbiA8IHRleHQubGVuZ3RoKCkpIHsKICAgICAgICAgYXV0byB0b2tlblN0cmlu
ZyA9IHRleHQuc3Vic3RyaW5nKHN0YXJ0UG9zaXRpb25PZkN1cnJlbnRUb2tlbiwgaW5kZXggKyAx
IC0gc3RhcnRQb3NpdGlvbk9mQ3VycmVudFRva2VuKS50b1N0cmluZygpOwotICAgICAgICB0b2tl
bnMuYXBwZW5kKE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUo
KSwgdG9rZW5TdHJpbmcsIHRva2VuSW5mbyh0ZXh0Tm9kZSksIGV4Y2x1c2lvblJ1bGVNYXRjaGVy
LmlzRXhjbHVkZWQodGV4dE5vZGUpIH0pOworICAgICAgICB0b2tlbnMuYXBwZW5kKE1hbmlwdWxh
dGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgdG9rZW5TdHJpbmcsIHRv
a2VuSW5mbyh0ZXh0Tm9kZSksIGlzTm9kZUV4Y2x1ZGVkIH0pOwogICAgICAgICBsYXN0VG9rZW5D
b250YWluc0xpbmVCcmVhayA9IGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiB7IFdURk1vdmUo
dG9rZW5zKSwgY29udGFpbnNPbmx5SFRNTFNwYWNlLCBjb250YWluc0xpbmVCcmVhaywgZmlyc3RU
b2tlbkNvbnRhaW5zTGluZUJyZWFrLCBsYXN0VG9rZW5Db250YWluc0xpbmVCcmVhayB9OworICAg
IHJldHVybiB7IFdURk1vdmUodG9rZW5zKSwgKnRleHROb2RlLCBjb250YWluc09ubHlIVE1MU3Bh
Y2UgfHwgaXNOb2RlRXhjbHVkZWQsIGNvbnRhaW5zTGluZUJyZWFrLCBmaXJzdFRva2VuQ29udGFp
bnNMaW5lQnJlYWssIGxhc3RUb2tlbkNvbnRhaW5zTGluZUJyZWFrIH07Cit9CisKK3ZvaWQgVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmFkZEl0ZW1JZlBvc3NpYmxlKFZlY3RvcjxNYW5pcHVs
YXRpb25Vbml0PiYmIHVuaXRzKQoreworICAgIGlmICh1bml0cy5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAgc2l6ZV90IGVuZCA9IHVuaXRz
LnNpemUoKTsKKyAgICB3aGlsZSAoaW5kZXggPCB1bml0cy5zaXplKCkgJiYgdW5pdHNbaW5kZXhd
LmFyZUFsbFRva2Vuc0V4Y2x1ZGVkKQorICAgICAgICArK2luZGV4OworCisgICAgd2hpbGUgKGVu
ZCA+IDAgJiYgdW5pdHNbZW5kIC0gMV0uYXJlQWxsVG9rZW5zRXhjbHVkZWQpCisgICAgICAgIC0t
ZW5kOworCisgICAgaWYgKGluZGV4ID09IGVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBzdGFydFBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHVuaXRzLmZpcnN0
KCkubm9kZS5wdHIoKSk7CisgICAgYXV0byBlbmRQb3NpdGlvbiA9IHBvc2l0aW9uQWZ0ZXJOb2Rl
KHVuaXRzLmxhc3QoKS5ub2RlLnB0cigpKTsKKyAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+
IHRva2VuczsKKyAgICBmb3IgKDsgaW5kZXggPCBlbmQ7ICsraW5kZXgpCisgICAgICAgIHRva2Vu
cy5hcHBlbmRWZWN0b3IoV1RGTW92ZSh1bml0c1tpbmRleF0udG9rZW5zKSk7CisKKyAgICBhZGRJ
dGVtKE1hbmlwdWxhdGlvbkl0ZW1EYXRhIHsgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIG51
bGxwdHIsIG51bGxRTmFtZSgpLCBXVEZNb3ZlKHRva2VucykgfSk7CiB9CiAKIHZvaWQgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKGNvbnN0IFBvc2l0aW9uJiBz
dGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCkKQEAgLTM1MSwyNCArMzc3LDIwIEBAIHZvaWQgVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKGNvbnN0IFBvc2l0aW9u
JiBzdGFydCwgY29uc3QKIAogICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKHN0YXJ0LmRv
Y3VtZW50KCkpOwogICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAgUGFyYWdyYXBoQ29udGVudEl0
ZXJhdG9yIGl0ZXJhdG9yIHsgc3RhcnQsIGVuZCB9OwogICAgIC8vIFRleHRJdGVyYXRvcidzIGNv
bnN0cnVjdG9yIG1heSBoYXZlIHVwZGF0ZWQgdGhlIGxheW91dCBhbmQgZXhlY3V0ZWQgYXJiaXRy
YXJ5IHNjcmlwdHMuCiAgICAgaWYgKGRvY3VtZW50ICE9IHN0YXJ0LmRvY3VtZW50KCkgfHwgZG9j
dW1lbnQgIT0gZW5kLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFZlY3RvcjxN
YW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoOwotICAgIFBvc2l0aW9u
IHN0YXJ0T2ZDdXJyZW50UGFyYWdyYXBoOwotICAgIFBvc2l0aW9uIGVuZE9mQ3VycmVudFBhcmFn
cmFwaDsKKyAgICBWZWN0b3I8TWFuaXB1bGF0aW9uVW5pdD4gdW5pdHNJbkN1cnJlbnRQYXJhZ3Jh
cGg7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQ7Ci0K
KyAgICBQYXJhZ3JhcGhDb250ZW50SXRlcmF0b3IgaXRlcmF0b3IgeyBzdGFydCwgZW5kIH07CiAg
ICAgZm9yICg7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKICAgICAg
ICAgYXV0byBjb250ZW50ID0gaXRlcmF0b3IuY3VycmVudENvbnRlbnQoKTsKICAgICAgICAgYXV0
byogY29udGVudE5vZGUgPSBjb250ZW50Lm5vZGUuZ2V0KCk7CiAgICAgICAgIEFTU0VSVChjb250
ZW50Tm9kZSk7CiAKICAgICAgICAgaWYgKGVuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQgJiYg
IWVuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQtPmNvbnRhaW5zKGNvbnRlbnROb2RlKSkgewot
ICAgICAgICAgICAgaWYgKCF0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgIGFkZEl0ZW0oTWFuaXB1bGF0aW9uSXRlbURhdGEgeyBzdGFydE9mQ3VycmVu
dFBhcmFncmFwaCwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBudWxscHRyLCBudWxsUU5hbWUoKSwg
c3RkOjpleGNoYW5nZSh0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGgsIHsgfSkgfSk7CisgICAgICAg
ICAgICBhZGRJdGVtSWZQb3NzaWJsZShzdGQ6OmV4Y2hhbmdlKHVuaXRzSW5DdXJyZW50UGFyYWdy
YXBoLCB7IH0pKTsKICAgICAgICAgICAgIGVuY2xvc2luZ0l0ZW1Cb3VuZGFyeUVsZW1lbnQgPSBu
dWxscHRyOwogICAgICAgICB9CiAKQEAgLTQwMSwzNyArNDIzLDI4IEBAIHZvaWQgVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKGNvbnN0IFBvc2l0aW9uJiBzdGFy
dCwgY29uc3QKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjb250ZW50LmlzUmVwbGFjZWRDb250
ZW50KSB7Ci0gICAgICAgICAgICBpZiAoIXRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5
KCkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1h
bmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIuZ2VuZXJhdGUoKSwgIltdIiwgdG9r
ZW5JbmZvKGNvbnRlbnQubm9kZS5nZXQoKSksIHRydWUgfSk7Ci0gICAgICAgICAgICAgICAgZW5k
T2ZDdXJyZW50UGFyYWdyYXBoID0gcG9zaXRpb25BZnRlck5vZGUoY29udGVudE5vZGUpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF1bml0c0luQ3VycmVudFBhcmFncmFwaC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICAgICAgdW5pdHNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kKE1h
bmlwdWxhdGlvblVuaXQgeyB7IE1hbmlwdWxhdGlvblRva2VuIHsgbV90b2tlbklkZW50aWZpZXIu
Z2VuZXJhdGUoKSwgIltdIiwgdG9rZW5JbmZvKGNvbnRlbnQubm9kZS5nZXQoKSksIHRydWUgfSB9
LCAqY29udGVudE5vZGUgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmICghY29udGVudC5pc1RleHRDb250ZW50KQogICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgYXV0byB0b2tlbnNJbkN1cnJlbnROb2RlID0gcGFyc2UoY29udGVudC50ZXh0
LCBjb250ZW50Tm9kZSk7Ci0gICAgICAgIGlmICghdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBoLmlz
RW1wdHkoKSAmJiB0b2tlbnNJbkN1cnJlbnROb2RlLmZpcnN0VG9rZW5Db250YWluc0xpbmVCcmVh
aykKLSAgICAgICAgICAgIGFkZEl0ZW0oTWFuaXB1bGF0aW9uSXRlbURhdGEgeyBzdGFydE9mQ3Vy
cmVudFBhcmFncmFwaCwgZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBudWxscHRyLCBudWxsUU5hbWUo
KSwgc3RkOjpleGNoYW5nZSh0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGgsIHsgfSkgfSk7CisgICAg
ICAgIGF1dG8gdW5pdHNJbkN1cnJlbnROb2RlID0gcGFyc2UoY29udGVudC50ZXh0LCBjb250ZW50
Tm9kZSk7CisgICAgICAgIGlmICh1bml0c0luQ3VycmVudE5vZGUuZmlyc3RUb2tlbkNvbnRhaW5z
TGluZUJyZWFrKQorICAgICAgICAgICAgYWRkSXRlbUlmUG9zc2libGUoc3RkOjpleGNoYW5nZSh1
bml0c0luQ3VycmVudFBhcmFncmFwaCwgeyB9KSk7CiAKLSAgICAgICAgaWYgKHRva2Vuc0luQ3Vy
cmVudFBhcmFncmFwaC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmICh0b2tlbnNJbkN1cnJl
bnROb2RlLmNvbnRhaW5zT25seUhUTUxTcGFjZSkKKyAgICAgICAgaWYgKHVuaXRzSW5DdXJyZW50
UGFyYWdyYXBoLmlzRW1wdHkoKSAmJiB1bml0c0luQ3VycmVudE5vZGUuYXJlQWxsVG9rZW5zRXhj
bHVkZWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBzdGFydE9mQ3Vy
cmVudFBhcmFncmFwaCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShjb250ZW50Tm9kZSk7
Ci0gICAgICAgIH0KIAotICAgICAgICB0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguYXBwZW5kVmVj
dG9yKHRva2Vuc0luQ3VycmVudE5vZGUudG9rZW5zKTsKLSAgICAgICAgZW5kT2ZDdXJyZW50UGFy
YWdyYXBoID0gcG9zaXRpb25BZnRlck5vZGUoY29udGVudE5vZGUpOworICAgICAgICB1bml0c0lu
Q3VycmVudFBhcmFncmFwaC5hcHBlbmQoV1RGTW92ZSh1bml0c0luQ3VycmVudE5vZGUpKTsKIAot
ICAgICAgICBpZiAoIXRva2Vuc0luQ3VycmVudFBhcmFncmFwaC5pc0VtcHR5KCkgJiYgdG9rZW5z
SW5DdXJyZW50Tm9kZS5sYXN0VG9rZW5Db250YWluc0xpbmVCcmVhaykgewotICAgICAgICAgICAg
QVNTRVJUKCF0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGguaXNFbXB0eSgpKTsKLSAgICAgICAgICAg
IGFkZEl0ZW0oTWFuaXB1bGF0aW9uSXRlbURhdGEgeyBzdGFydE9mQ3VycmVudFBhcmFncmFwaCwg
ZW5kT2ZDdXJyZW50UGFyYWdyYXBoLCBudWxscHRyLCBudWxsUU5hbWUoKSwgc3RkOjpleGNoYW5n
ZSh0b2tlbnNJbkN1cnJlbnRQYXJhZ3JhcGgsIHsgfSkgfSk7Ci0gICAgICAgIH0KKyAgICAgICAg
aWYgKHVuaXRzSW5DdXJyZW50Tm9kZS5sYXN0VG9rZW5Db250YWluc0xpbmVCcmVhaykKKyAgICAg
ICAgICAgIGFkZEl0ZW1JZlBvc3NpYmxlKHN0ZDo6ZXhjaGFuZ2UodW5pdHNJbkN1cnJlbnRQYXJh
Z3JhcGgsIHsgfSkpOwogICAgIH0KIAotICAgIGlmICghdG9rZW5zSW5DdXJyZW50UGFyYWdyYXBo
LmlzRW1wdHkoKSkKLSAgICAgICAgYWRkSXRlbShNYW5pcHVsYXRpb25JdGVtRGF0YSB7IHN0YXJ0
T2ZDdXJyZW50UGFyYWdyYXBoLCBlbmRPZkN1cnJlbnRQYXJhZ3JhcGgsIG51bGxwdHIsIG51bGxR
TmFtZSgpLCBXVEZNb3ZlKHRva2Vuc0luQ3VycmVudFBhcmFncmFwaCkgfSk7CisgICAgYWRkSXRl
bUlmUG9zc2libGUoc3RkOjpleGNoYW5nZSh1bml0c0luQ3VycmVudFBhcmFncmFwaCwgeyB9KSk7
CiB9CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmRpZENyZWF0ZVJlbmRlcmVy
Rm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCmluZGV4IGYwM2QxNzY2M2ZlNmEyNWY1
YjJmNWM2MWE3MGRlYTlmMDc2YmYxNzYuLjg2YjQ4YjViOGJjOGRkNjY1NDNlNTllZjBiMmZmYTI4
YTE1NDNlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyLmgKQEAgLTE1MCwxNiArMTUwLDE4IEBAIHByaXZhdGU6CiAgICAgICAg
IFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zOwogICAgIH07CiAKLSAgICBzdHJ1Y3Qg
TWFuaXB1bGF0aW9uVG9rZW5zIHsKKyAgICBzdHJ1Y3QgTWFuaXB1bGF0aW9uVW5pdCB7CiAgICAg
ICAgIFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zOwotICAgICAgICBib29sIGNvbnRh
aW5zT25seUhUTUxTcGFjZSB7IHRydWUgfTsKKyAgICAgICAgUmVmPE5vZGU+IG5vZGU7CisgICAg
ICAgIGJvb2wgYXJlQWxsVG9rZW5zRXhjbHVkZWQgeyB0cnVlIH07CiAgICAgICAgIGJvb2wgY29u
dGFpbnNMaW5lQnJlYWsgeyBmYWxzZSB9OwogICAgICAgICBib29sIGZpcnN0VG9rZW5Db250YWlu
c0xpbmVCcmVhayB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbGFzdFRva2VuQ29udGFpbnNMaW5l
QnJlYWsgeyBmYWxzZSB9OwogICAgIH07Ci0gICAgTWFuaXB1bGF0aW9uVG9rZW5zIHBhcnNlKFN0
cmluZ1ZpZXcsIE5vZGUqKTsKKyAgICBNYW5pcHVsYXRpb25Vbml0IHBhcnNlKFN0cmluZ1ZpZXcs
IE5vZGUqKTsKIAogICAgIHZvaWQgYWRkSXRlbShNYW5pcHVsYXRpb25JdGVtRGF0YSYmKTsKKyAg
ICB2b2lkIGFkZEl0ZW1JZlBvc3NpYmxlKFZlY3RvcjxNYW5pcHVsYXRpb25Vbml0PiYmKTsKICAg
ICB2b2lkIGZsdXNoUGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2soKTsKIAogICAgIHN0cnVjdCBOb2Rl
SW5zZXJ0aW9uIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA5MjMwMWQxZmEzYjFjYjZlYzBiMmFjNDBjYzlmMDVlYmJkYmU2OTAzLi5iMzUwZTdl
YTI5NDc4MGRhZjU2ZTFhNTg5YzMzM2I1M2ZjMzMxMDNmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjAtMDYtMDQg
IFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgVGV4dCBtYW5pcHVs
YXRpb246IGZpcnN0IGFuZCBsYXN0IHVuaXQgaW4gYSBwYXJhZ3JhcGggc2hvdWxkIG5vdCBjb250
YWluIG9ubHkgZXhjbHVkZWQgdG9rZW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTI3NTkKKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNp
ZWguCisKKyAgICAgICAgTW9kaWZ5IGV4aXN0aW5nIHRlc3QgZm9yIGNoYW5nZWQgYmVoYXZpb3Ig
dGhhdCBsZWFkaW5nIGFuZCB0cmFpbGluZyBleGNsdWRlZCB1bml0cyBhcmUgbm90IGluY2x1ZGVk
IGluIHBhcmFncmFwaAorICAgICAgICBub3cuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUKToKKwogMjAyMC0wNi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIFVJUHJvY2VzcyBtYXkgY3Jhc2ggYWZ0ZXIgaXRzIHByZXdhcm1lZCBXZWJQ
cm9jZXNzIGdldHMgdGVybWluYXRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCmluZGV4IGRkODEzZTA5M2Iz
ZTJhYzBkMGViMzM4NmZkOGMzNmY3NDZmZDk0NzQuLmY4OGQ0MTI5NTVmNzYwMmIyNGJiYzcxNDM4
OGM4ZGI0ZGNiNWMwMDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KQEAgLTI0MywxMSArMjQzLDkgQEAg
VEVTVChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25GaW5kQXR0cmlidXRl
Q29udGVudCkKICAgICBFWFBFQ1RfU1RSRVEoImZydWl0IiwgaXRlbXNbMl0udG9rZW5zWzBdLmNv
bnRlbnQuVVRGOFN0cmluZyk7CiAgICAgRVhQRUNUX0ZBTFNFKGl0ZW1zWzJdLnRva2Vuc1swXS5p
c0V4Y2x1ZGVkKTsKIAotICAgIEVYUEVDVF9FUShpdGVtc1szXS50b2tlbnMuY291bnQsIDJVTCk7
CisgICAgRVhQRUNUX0VRKGl0ZW1zWzNdLnRva2Vucy5jb3VudCwgMVVMKTsKICAgICBFWFBFQ1Rf
U1RSRVEoImhlbGxvIiwgaXRlbXNbM10udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAg
ICAgRVhQRUNUX0ZBTFNFKGl0ZW1zWzNdLnRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKLSAgICBFWFBF
Q1RfU1RSRVEoIltdIiwgaXRlbXNbM10udG9rZW5zWzFdLmNvbnRlbnQuVVRGOFN0cmluZyk7Ci0g
ICAgRVhQRUNUX1RSVUUoaXRlbXNbM10udG9rZW5zWzFdLmlzRXhjbHVkZWQpOwogfQogCiBURVNU
KFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlvblN1cHBvcnRzTGVnYWN5RGVs
ZWdhdGVDYWxsYmFjaykKQEAgLTQ1MSwxMSArNDQ5LDkgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9u
LCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseUluY2x1c2lvbkV4Y2x1c2lvblJ1bGVzRm9yQXR0
cmkKIAogICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKICAgICBFWFBFQ1RfRVEo
aXRlbXMuY291bnQsIDFVTCk7Ci0gICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwg
MlVMKTsKLSAgICBFWFBFQ1RfU1RSRVEoImhlbGxvLCAiLCBpdGVtc1swXS50b2tlbnNbMF0uY29u
dGVudC5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShpdGVtc1swXS50b2tlbnNbMF0uaXNF
eGNsdWRlZCk7Ci0gICAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIsIGl0ZW1zWzBdLnRva2Vuc1sxXS5j
b250ZW50LlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9GQUxTRShpdGVtc1swXS50b2tlbnNbMV0u
aXNFeGNsdWRlZCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsK
KyAgICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgaXRlbXNbMF0udG9rZW5zWzBdLmNvbnRlbnQuVVRG
OFN0cmluZyk7CisgICAgRVhQRUNUX0ZBTFNFKGl0ZW1zWzBdLnRva2Vuc1swXS5pc0V4Y2x1ZGVk
KTsKIH0KIAogVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBs
eUluY2x1c2lvbkV4Y2x1c2lvblJ1bGVzRm9yQ2xhc3MpCkBAIC00NjUsNyArNDYxLDcgQEAgVEVT
VChUZXh0TWFuaXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseUluY2x1c2lvbkV4
Y2x1c2lvblJ1bGVzRm9yQ2xhc3MKICAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1sPiIKLSAgICAgICAgIjxodG1sPjxib2R5PjxzcGFu
IGNsYXNzPSdzb21lQ2xhc3MgZXhjbHVkZSc+TWVzc2FnZTogPGI+aGVsbG8sIDwvYj48c3Bhbj53
b3JsZDwvc3Bhbj48L3NwYW4+PC9ib2R5PjwvaHRtbD4iXTsKKyAgICAgICAgIjxodG1sPjxib2R5
Pk1lc3NhZ2U6IDxzcGFuIGNsYXNzPSdzb21lQ2xhc3MgZXhjbHVkZSc+PGI+aGVsbG8sIDwvYj48
c3Bhbj53b3JsZDwvc3Bhbj48L3NwYW4+PC9ib2R5PjwvaHRtbD4iXTsKIAogICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOwogICAgIFtjb25maWd1cmF0aW9uIHNldEV4Y2x1c2lvblJ1bGVzOkBbCkBA
IC00ODAsMTMgKzQ3Niw5IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgU3RhcnRUZXh0TWFuaXB1
bGF0aW9uQXBwbHlJbmNsdXNpb25FeGNsdXNpb25SdWxlc0ZvckNsYXNzCiAKICAgICBhdXRvICpp
dGVtcyA9IFtkZWxlZ2F0ZSBpdGVtc107CiAgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAxVUwp
OwotICAgIEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMuY291bnQsIDNVTCk7CisgICAgRVhQRUNU
X0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsKICAgICBFWFBFQ1RfU1RSRVEoIk1lc3Nh
Z2U6ICIsIGl0ZW1zWzBdLnRva2Vuc1swXS5jb250ZW50LlVURjhTdHJpbmcpOwotICAgIEVYUEVD
VF9UUlVFKGl0ZW1zWzBdLnRva2Vuc1swXS5pc0V4Y2x1ZGVkKTsKLSAgICBFWFBFQ1RfU1RSRVEo
ImhlbGxvLCAiLCBpdGVtc1swXS50b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKLSAgICBF
WFBFQ1RfVFJVRShpdGVtc1swXS50b2tlbnNbMV0uaXNFeGNsdWRlZCk7Ci0gICAgRVhQRUNUX1NU
UkVRKCJ3b3JsZCIsIGl0ZW1zWzBdLnRva2Vuc1syXS5jb250ZW50LlVURjhTdHJpbmcpOwotICAg
IEVYUEVDVF9UUlVFKGl0ZW1zWzBdLnRva2Vuc1syXS5pc0V4Y2x1ZGVkKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoaXRlbXNbMF0udG9rZW5zWzBdLmlzRXhjbHVkZWQpOwogfQogCiBURVNUKFRleHRNYW5p
cHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlvbkFwcGx5SW5jbHVzaW9uRXhjbHVzaW9uUnVs
ZXNGb3JDbGFzc0FuZEF0dHJpYnV0ZSkKQEAgLTUxMywxMyArNTA1LDkgQEAgVEVTVChUZXh0TWFu
aXB1bGF0aW9uLCBTdGFydFRleHRNYW5pcHVsYXRpb25BcHBseUluY2x1c2lvbkV4Y2x1c2lvblJ1
bGVzRm9yQ2xhc3MKIAogICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKICAgICBF
WFBFQ1RfRVEoaXRlbXMuY291bnQsIDFVTCk7Ci0gICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vu
cy5jb3VudCwgM1VMKTsKLSAgICBFWFBFQ1RfU1RSRVEoIk1lc3NhZ2U6ICIsIGl0ZW1zWzBdLnRv
a2Vuc1swXS5jb250ZW50LlVURjhTdHJpbmcpOwotICAgIEVYUEVDVF9UUlVFKGl0ZW1zWzBdLnRv
a2Vuc1swXS5pc0V4Y2x1ZGVkKTsKLSAgICBFWFBFQ1RfU1RSRVEoImhlbGxvLCAiLCBpdGVtc1sw
XS50b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfRkFMU0UoaXRlbXNb
MF0udG9rZW5zWzFdLmlzRXhjbHVkZWQpOwotICAgIEVYUEVDVF9TVFJFUSgid29ybGQiLCBpdGVt
c1swXS50b2tlbnNbMl0uY29udGVudC5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShpdGVt
c1swXS50b2tlbnNbMl0uaXNFeGNsdWRlZCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vu
cy5jb3VudCwgMVVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoImhlbGxvLCAiLCBpdGVtc1swXS50b2tl
bnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRkFMU0UoaXRlbXNbMF0udG9r
ZW5zWzBdLmlzRXhjbHVkZWQpOwogfQogCiBURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4
dE1hbmlwdWxhdGlvbkJyZWFrc1BhcmFncmFwaEluQmV0d2Vlbkxpc3RJdGVtcykKQEAgLTEyOTMs
MTAgKzEyODEsMTAgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVs
YXRpb25TaG91bGRQcmVzZXJ2ZVNWR0FzRXhjbHVkZWRUb2tlbnMKICAgICBbd2ViVmlldyBfc2V0
VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5
PiIKLSAgICAiPHNlY3Rpb24+PGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5o
ZWxsbzwvZGl2PiIKLSAgICAiPGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj48
c3BhbiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1mbGV4O1wiPiIKLSAgICAiPHN2ZyB2aWV3Qm94
PVwiMCAwIDIwIDIwXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+PHJlY3Qgd2lkdGg9XCIy
MFwiIGhlaWdodD1cIjIwXCIgZmlsbD1cIiMwNmZcIj48L3JlY3Q+PC9zdmc+IgotICAgICI8L3Nw
YW4+PC9kaXY+PC9zZWN0aW9uPjxwPndvcmxkPC9wPjwvYm9keT48L2h0bWw+Il07CisgICAgIjxz
ZWN0aW9uPjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+aGVsbG8iCisgICAg
IjxzcGFuIHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWZsZXg7XCI+PHN2ZyB2aWV3Qm94PVwiMCAw
IDIwIDIwXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCI+PHJlY3Qgd2lkdGg9XCIyMFwiIGhl
aWdodD1cIjIwXCIgZmlsbD1cIiMwNmZcIj48L3JlY3Q+PC9zdmc+PC9zcGFuPiIKKyAgICAid2Vi
a2l0PC9kaXY+PC9zZWN0aW9uPiIKKyAgICAiPHA+d29ybGQ8L3A+PC9ib2R5PjwvaHRtbD4iXTsK
IAogICAgIGRvbmUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9u
c1dpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uOl57CkBAIC0xMzA3LDExICsxMjk1LDEz
IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxk
UHJlc2VydmVTVkdBc0V4Y2x1ZGVkVG9rZW5zCiAgICAgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUg
aXRlbXNdOwogICAgIEVYUEVDVF9FUShpdGVtcy5jb3VudCwgMlVMKTsKICAgICBhdXRvICp0b2tl
bnMgPSBpdGVtc1swXS50b2tlbnM7Ci0gICAgRVhQRUNUX0VRKHRva2Vucy5jb3VudCwgMlVMKTsK
KyAgICBFWFBFQ1RfRVEodG9rZW5zLmNvdW50LCAzVUwpOwogICAgIEVYUEVDVF9TVFJFUSgiaGVs
bG8iLCB0b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKICAgICBFWFBFQ1RfRkFMU0UodG9r
ZW5zWzBdLmlzRXhjbHVkZWQpOwogICAgIEVYUEVDVF9TVFJFUSgiW10iLCB0b2tlbnNbMV0uY29u
dGVudC5VVEY4U3RyaW5nKTsKICAgICBFWFBFQ1RfVFJVRSh0b2tlbnNbMV0uaXNFeGNsdWRlZCk7
CisgICAgRVhQRUNUX1NUUkVRKCJ3ZWJraXQiLCB0b2tlbnNbMl0uY29udGVudC5VVEY4U3RyaW5n
KTsKKyAgICBFWFBFQ1RfRkFMU0UodG9rZW5zWzJdLmlzRXhjbHVkZWQpOwogICAgIAogICAgIEVY
UEVDVF9FUShpdGVtc1sxXS50b2tlbnMuY291bnQsIDFVTCk7CiAgICAgRVhQRUNUX1NUUkVRKCJ3
b3JsZCIsIGl0ZW1zWzFdLnRva2Vuc1swXS5jb250ZW50LlVURjhTdHJpbmcpOwpAQCAtMTMyMSwx
NSArMTMxMSwxMyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxh
dGlvblNob3VsZFByZXNlcnZlU1ZHQXNFeGNsdWRlZFRva2VucwogICAgIFt3ZWJWaWV3IF9jb21w
bGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWyhfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAq
KWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgewogICAgICAgICB7IHRva2Vuc1swXS5p
ZGVudGlmaWVyLCBAImhleSIgfSwKICAgICAgICAgeyB0b2tlbnNbMV0uaWRlbnRpZmllciwgbmls
IH0sCisgICAgICAgIHsgdG9rZW5zWzJdLmlkZW50aWZpZXIsIEAiV2ViS2l0IiB9LAogICAgIH0p
XSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKICAgICAgICAgRVhQ
RUNUX0VRKGVycm9ycywgbmlsKTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIjxz
ZWN0aW9uPjxkaXYgc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XCI+aGV5PC9kaXY+Igot
ICAgICI8ZGl2IHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO1wiPjxzcGFuIHN0eWxlPVwi
ZGlzcGxheTogaW5saW5lLWZsZXg7XCI+IgotICAgICI8c3ZnIHZpZXdCb3g9XCIwIDAgMjAgMjBc
IiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIj48cmVjdCB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwi
MjBcIiBmaWxsPVwiIzA2ZlwiPjwvcmVjdD48L3N2Zz4iCi0gICAgIjwvc3Bhbj48L2Rpdj48L3Nl
Y3Rpb24+PHA+d29ybGQ8L3A+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiPHNl
Y3Rpb24+PGRpdiBzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztcIj5oZXk8c3BhbiBzdHls
ZT1cImRpc3BsYXk6IGlubGluZS1mbGV4O1wiPjxzdmcgdmlld0JveD1cIjAgMCAyMCAyMFwiIHdp
ZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiPjxyZWN0IHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwi
IGZpbGw9XCIjMDZmXCI+PC9yZWN0Pjwvc3ZnPjwvc3Bhbj5XZWJLaXQ8L2Rpdj48L3NlY3Rpb24+
PHA+d29ybGQ8L3A+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOwogfQogCiBURVNUKFRleHRNYW5pcHVsYXRpb24sIENv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZFByZXNlcnZlT3JkZXJPZkJsb2NrSW1hZ2UpCkBA
IC0xMzk1LDkgKzEzODMsOCBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1h
bmlwdWxhdGlvblNob3VsZFJlcGxhY2VBdHRyaWJ1dGVDb250ZW50KQogICAgIEVYUEVDVF9FUShp
dGVtc1syXS50b2tlbnMuY291bnQsIDFVTCk7CiAgICAgRVhQRUNUX1NUUkVRKCJmcnVpdCIsIGl0
ZW1zWzJdLnRva2Vuc1swXS5jb250ZW50LlVURjhTdHJpbmcpOwogCi0gICAgRVhQRUNUX0VRKGl0
ZW1zWzNdLnRva2Vucy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbM10udG9rZW5z
LmNvdW50LCAxVUwpOwogICAgIEVYUEVDVF9TVFJFUSgiaGVsbG8iLCBpdGVtc1szXS50b2tlbnNb
MF0uY29udGVudC5VVEY4U3RyaW5nKTsKLSAgICBFWFBFQ1RfU1RSRVEoIltdIiwgaXRlbXNbM10u
dG9rZW5zWzFdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7CiAgICAg
W3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbCkBAIC0xNDc1LDE0
ICsxNDYyLDEzIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uU2hvdWxkUmVwbGFjZVRleHRDb250ZW50V2l0aE11bHRpCiAgICAgRVhQRUNUX0VRKGl0ZW1z
WzJdLnRva2Vucy5jb3VudCwgMVVMKTsKICAgICBFWFBFQ1RfRVEoaXRlbXNbM10udG9rZW5zLmNv
dW50LCAxVUwpOwogICAgIEVYUEVDVF9FUShpdGVtc1s0XS50b2tlbnMuY291bnQsIDFVTCk7Ci0g
ICAgRVhQRUNUX0VRKGl0ZW1zWzVdLnRva2Vucy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEo
aXRlbXNbNV0udG9rZW5zLmNvdW50LCAxVUwpOwogICAgIEVYUEVDVF9XS19TVFJFUSgiVGhpcyBp
cyBhIHRlc3QiLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudCk7CiAgICAgRVhQRUNUX1dLX1NU
UkVRKCJIZWxsbyB3b3JsZCIsIGl0ZW1zWzFdLnRva2Vuc1swXS5jb250ZW50KTsKICAgICBFWFBF
Q1RfV0tfU1RSRVEoIlNob3VsZCBub3QgYmUgcmVwbGFjZWQiLCBpdGVtc1syXS50b2tlbnNbMF0u
Y29udGVudCk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJsYWJlbCIsIGl0ZW1zWzNdLnRva2Vuc1sw
XS5jb250ZW50KTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoImltYWdlIiwgaXRlbXNbNF0udG9rZW5z
WzBdLmNvbnRlbnQpOwogICAgIEVYUEVDVF9XS19TVFJFUSgiVGV4dCIsIGl0ZW1zWzVdLnRva2Vu
c1swXS5jb250ZW50KTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoIltdIiwgaXRlbXNbNV0udG9rZW5z
WzFdLmNvbnRlbnQpOwogCiAgICAgYXV0byByZXBsYWNlbWVudEl0ZW1zID0gcmV0YWluUHRyKEBb
CiAgICAgICAgIGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgeyB7IGl0ZW1zWzBdLnRv
a2Vuc1swXS5pZGVudGlmaWVyLCBAIlJlcGxhY2VtZW50IiB9LCB7IGl0ZW1zWzBdLnRva2Vuc1sw
XS5pZGVudGlmaWVyLCBAInRpdGxlIiB9IH0pLmF1dG9yZWxlYXNlKCksCkBAIC0xOTI1LDcgKzE5
MTEsNyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZh
aWxXaGVuRXhjbHVzaW9uSXNWaW9sYXRlZCkKICAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxh
dGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKIAogICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOwotICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8cD5oaSwgPGVt
PldlYktpdHRlbjwvZW0+PC9wPiciXTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSAnPHA+aGksIDxlbT5XZWJLaXR0
ZW48L2VtPiBieWU8L3A+JyJdOwogCiAgICAgUmV0YWluUHRyPF9XS1RleHRNYW5pcHVsYXRpb25D
b25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRp
b25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRpb24gc2V0RXhj
bHVzaW9uUnVsZXM6QFsKQEAgLTE5NDAsMTQgKzE5MjYsMTYgQEAgVEVTVChUZXh0TWFuaXB1bGF0
aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25GYWlsV2hlbkV4Y2x1c2lvbklzVmlvbGF0ZWQp
CiAKICAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0ZSBpdGVtc107CiAgICAgRVhQRUNUX0VRKGl0
ZW1zLmNvdW50LCAxVUwpOwotICAgIEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMuY291bnQsIDJV
TCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgM1VMKTsKICAgICBFWFBF
Q1RfU1RSRVEoImhpLCAiLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsK
ICAgICBFWFBFQ1RfU1RSRVEoIldlYktpdHRlbiIsIGl0ZW1zWzBdLnRva2Vuc1sxXS5jb250ZW50
LlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9TVFJFUSgiIGJ5ZSIsIGl0ZW1zWzBdLnRva2Vuc1sy
XS5jb250ZW50LlVURjhTdHJpbmcpOwogCiAgICAgZG9uZSA9IGZhbHNlOwogICAgIF9fYmxvY2sg
YXV0byBpdGVtID0gY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsg
aXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8sIiB9LAogICAgICAgICB7IGl0
ZW1zWzBdLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBAIldlYktpdCIgfSwKKyAgICAgICAgeyBpdGVt
c1swXS50b2tlbnNbMl0uaWRlbnRpZmllciwgQCJCeWUiIH0sCiAgICAgfSk7CiAgICAgW3dlYlZp
ZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbaXRlbS5nZXQoKV0gY29tcGxl
dGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CiAgICAgICAgIEVYUEVDVF9FUShl
cnJvcnMuY291bnQsIDFVTCk7CkBAIC0xOTU4LDcgKzE5NDYsNyBAQCBURVNUKFRleHRNYW5pcHVs
YXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVzaW9uSXNWaW9sYXRl
ZCkKICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAg
RVhQRUNUX1dLX1NUUkVRKCI8cD5oaSwgPGVtPldlYktpdHRlbjwvZW0+PC9wPiIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxwPmhpLCA8ZW0+V2ViS2l0dGVuPC9lbT4gYnllPC9w
PiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5
LmlubmVySFRNTCJdKTsKIH0KIAogVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRN
YW5pcHVsYXRpb25GYWlsV2hlbkV4Y2x1ZGVkQ29udGVudEFwcGVhcnNNb3JlVGhhbk9uY2UpCkBA
IC0xOTY4LDcgKzE5NTYsNyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1h
bmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVkZWRDb250ZW50QXBwZWFyc01vcgogICAgIFt3ZWJWaWV3
IF9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogCiAgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07Ci0gICAgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJI
VE1MID0gJzxwPmhpLCA8ZW0+V2ViS2l0dGVuPC9lbT48L3A+JyJdOworICAgIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICc8
cD5oaSwgPGVtPldlYktpdHRlbjwvZW0+IGJ5ZTwvcD4nIl07CiAKICAgICBSZXRhaW5QdHI8X1dL
VGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
X1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKICAgICBbY29u
ZmlndXJhdGlvbiBzZXRFeGNsdXNpb25SdWxlczpAWwpAQCAtMTk4MywxNSArMTk3MSwxNyBAQCBU
RVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhj
bHVkZWRDb250ZW50QXBwZWFyc01vcgogCiAgICAgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRl
bXNdOwogICAgIEVYUEVDVF9FUShpdGVtcy5jb3VudCwgMVVMKTsKLSAgICBFWFBFQ1RfRVEoaXRl
bXNbMF0udG9rZW5zLmNvdW50LCAyVUwpOworICAgIEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMu
Y291bnQsIDNVTCk7CiAgICAgRVhQRUNUX1NUUkVRKCJoaSwgIiwgaXRlbXNbMF0udG9rZW5zWzBd
LmNvbnRlbnQuVVRGOFN0cmluZyk7CiAgICAgRVhQRUNUX1NUUkVRKCJXZWJLaXR0ZW4iLCBpdGVt
c1swXS50b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoIiBi
eWUiLCBpdGVtc1swXS50b2tlbnNbMl0uY29udGVudC5VVEY4U3RyaW5nKTsKIAogICAgIGRvbmUg
PSBmYWxzZTsKICAgICBfX2Jsb2NrIGF1dG8gaXRlbSA9IGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRl
bnRpZmllciwgewogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBuaWwg
fSwKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJIZWxsbywiIH0s
CiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzFdLmlkZW50aWZpZXIsIG5pbCB9LAorICAgICAg
ICB7IGl0ZW1zWzBdLnRva2Vuc1syXS5pZGVudGlmaWVyLCBAIkJ5ZSIgfSwKICAgICB9KTsKICAg
ICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFtpdGVtLmdldCgp
XSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKICAgICAgICAgRVhQ
RUNUX0VRKGVycm9ycy5jb3VudCwgMVVMKTsKQEAgLTIwMDIsNyArMTk5Miw3IEBAIFRFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFpbFdoZW5FeGNsdWRlZENv
bnRlbnRBcHBlYXJzTW9yCiAgICAgfV07CiAKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOwotICAgIEVYUEVDVF9XS19TVFJFUSgiPHA+aGksIDxlbT5XZWJLaXR0ZW48L2VtPjwv
cD4iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9k
eS5pbm5lckhUTUwiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8cD5oaSwgPGVtPldlYktpdHRl
bjwvZW0+IGJ5ZTwvcD4iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7CiB9CiAKIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwg
Q29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUHJlc2VydmVzRXhjbHVkZWRDb250ZW50KQpAQCAtMjAx
MSw3ICsyMDAxLDcgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVs
YXRpb25QcmVzZXJ2ZXNFeGNsdWRlZENvbnRlbnQpCiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0
MDAsIDQwMCldKTsKICAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKIAotICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PjxwPmhpLCA8ZW0+V2ViS2l0dGVuPC9lbT48
L3A+PC9ib2R5PjwvaHRtbD4iXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48cD5oaSwgPGVtPldlYktpdHRlbjwv
ZW0+IGJ5ZTwvcD48L2JvZHk+PC9odG1sPiJdOwogCiAgICAgUmV0YWluUHRyPF9XS1RleHRNYW5p
cHVsYXRpb25Db25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25Db25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAgICAgW2NvbmZpZ3VyYXRp
b24gc2V0RXhjbHVzaW9uUnVsZXM6QFsKQEAgLTIwMjYsMjEgKzIwMTYsMjMgQEAgVEVTVChUZXh0
TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25QcmVzZXJ2ZXNFeGNsdWRlZENv
bnRlbnQpCiAKICAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0ZSBpdGVtc107CiAgICAgRVhQRUNU
X0VRKGl0ZW1zLmNvdW50LCAxVUwpOwotICAgIEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMuY291
bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgM1VMKTsKICAg
ICBFWFBFQ1RfU1RSRVEoImhpLCAiLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3Ry
aW5nKTsKICAgICBFWFBFQ1RfU1RSRVEoIldlYktpdHRlbiIsIGl0ZW1zWzBdLnRva2Vuc1sxXS5j
b250ZW50LlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9TVFJFUSgiIGJ5ZSIsIGl0ZW1zWzBdLnRv
a2Vuc1syXS5jb250ZW50LlVURjhTdHJpbmcpOwogCiAgICAgZG9uZSA9IGZhbHNlOwogICAgIFt3
ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWyhfV0tUZXh0TWFuaXB1
bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgewogICAgICAgICB7
IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIkhlbGxvLCAiIH0sCiAgICAgICAgIHsg
aXRlbXNbMF0udG9rZW5zWzFdLmlkZW50aWZpZXIsIG5pbCB9LAorICAgICAgICB7IGl0ZW1zWzBd
LnRva2Vuc1syXS5pZGVudGlmaWVyLCBAIiBCeWUiIH0sCiAgICAgfSldIGNvbXBsZXRpb246XihO
U0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgewogICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLCBu
aWwpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKIAogICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKCI8cD5IZWxsbywgPGVtPldl
YktpdHRlbjwvZW0+PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxwPkhl
bGxvLCA8ZW0+V2ViS2l0dGVuPC9lbT4gQnllPC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKIH0KIAogVEVTVChU
ZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Eb2VzTm90Q3JlYXRlTW9y
ZVRleHRNYW5pcHVsYXRpb25JdGVtcykK
</data>

          </attachment>
      

    </bug>

</bugzilla>