<?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>130711</bug_id>
          
          <creation_ts>2014-03-24 22:28:52 -0700</creation_ts>
          <short_desc>Replace HTMLConverter::_stringForNode by propertyValueForNode</short_desc>
          <delta_ts>2014-03-25 17:49:36 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>130227</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>994082</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-03-24 22:28:52 -0700</bug_when>
    <thetext>HTMLConverter::_stringForNode creates NString*.  Use propertyValueForNode instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994085</commentid>
    <comment_count>1</comment_count>
      <attachid>227720</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-03-24 22:50:23 -0700</bug_when>
    <thetext>Created attachment 227720
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994086</commentid>
    <comment_count>2</comment_count>
      <attachid>227721</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-03-24 22:51:33 -0700</bug_when>
    <thetext>Created attachment 227721
Cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994454</commentid>
    <comment_count>3</comment_count>
      <attachid>227721</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-25 17:49:33 -0700</bug_when>
    <thetext>Comment on attachment 227721
Cleanup

Clearing flags on attachment: 227721

Committed r166273: &lt;http://trac.webkit.org/changeset/166273&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>994455</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-25 17:49:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227720</attachid>
            <date>2014-03-24 22:50:23 -0700</date>
            <delta_ts>2014-03-24 22:51:33 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>fix130271</filename>
            <type>text/plain</type>
            <size>2438</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVhZC1hY2Nlc3MtdG8t
Y2FwdHVyZWQtdmFyaWFibGUtcHJlY2VkZWQtYnktYS1saXZlLXN0b3JlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGVhZC1hY2Nlc3MtdG8tY2Fw
dHVyZWQtdmFyaWFibGUtcHJlY2VkZWQtYnktYS1saXZlLXN0b3JlLmpzCShyZXZpc2lvbiAxNjU1
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2RlYWQtYWNjZXNzLXRv
LWNhcHR1cmVkLXZhcmlhYmxlLXByZWNlZGVkLWJ5LWEtbGl2ZS1zdG9yZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMSwxNyArMCwwIEBACi1mdW5jdGlvbiBmb28oKSB7Ci0gICAgdmFyIHggPSA0MjsK
LSAgICAoZnVuY3Rpb24oKSB7IHggPSA0MzsgfSkoKTsKLSAgICB4Kys7Ci0gICAgdmFyIHJlYWxS
ZXN1bHQgPSB4OwotICAgIChmdW5jdGlvbigpIHsgeCA9IDQ0OyB9KSgpOwotICAgIHZhciBmYWtl
UmVzdWx0ID0geDsKLSAgICByZXR1cm4gcmVhbFJlc3VsdDsKLX0KLQotbm9JbmxpbmUoZm9vKTsK
LQotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKSB7Ci0gICAgdmFyIHJlc3VsdCA9IGZv
bygpOwotICAgIGlmIChyZXN1bHQgIT0gNDQpCi0gICAgICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKLX0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NTY1
OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE5IEBACisyMDE0LTAzLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJFR1JFU1NJT04ocjE2NTM4NSk6IFtXZWJUZXh0SXRlcmF0b3IgY3VycmVudFJh
bmdlXSBjcmFzaGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzAyNzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZnRlciByMTY1Mzg1LCBUZXh0SXRlcmF0b3I6OnJhbmdlIG5vIGxvbmdlciBjaGVja2Vk
IHRoZSBudWxsaXR5IG9mIG1fcG9zaXRpb25Ob2RlLiBBcyBhIHJlc3VsdCwKKyAgICAgICAgW1dl
YlRleHRJdGVyYXRvciBjdXJyZW50UmFuZ2VdIHdoaWNoIHNpbXBseSBjYWxscyBUZXh0SXRlcmF0
b3I6OnJhbmdlIGNyYXNoZXMgd2hlbiBhbiBhcHBsaWNhdGlvbgorICAgICAgICB0aGF0IGVtYmVk
cyBXZWJLaXQgZG9lc24ndCBjaGVjayBbV2ViVGV4dEl0ZXJhdG9yIGF0RW5kXSBmaXJzdC4KKwor
ICAgICAgICBQcmVzZXJ2ZSB0aGUgb2xkIHB1YmxpYyBBUEkgYmVoYXZpb3IgYnkgY2hlY2tpbmcg
YXRFbmQgaW4gW1dlYlRleHRJdGVyYXRvciBjdXJyZW50UmFuZ2VdLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJUZXh0SXRlcmF0b3IubW06CisgICAgICAgICgtW1dlYlRleHRJdGVyYXRvciBjdXJy
ZW50UmFuZ2VdKToKKwogMjAxNC0wMy0xMiAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSZW5hbWUgREVGSU5FX1NUQVRJQ19MT0NBTCB0byBERVBS
RUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVGV4dEl0ZXJhdG9yLm1tCShyZXZpc2lvbiAxNjU1NjYpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlRleHRJdGVyYXRvci5tbQkod29ya2luZyBjb3B5KQpAQCAtODgs
NyArODgsMTAgQEAKIAogLSAoRE9NUmFuZ2UgKiljdXJyZW50UmFuZ2UKIHsKLSAgICByZXR1cm4g
a2l0KF9wcml2YXRlLT5fdGV4dEl0ZXJhdG9yLT5yYW5nZSgpLmdldCgpKTsKKyAgICBXZWJDb3Jl
OjpUZXh0SXRlcmF0b3ImIHRleHRJdGVyYXRvciA9ICpfcHJpdmF0ZS0+X3RleHRJdGVyYXRvcjsK
KyAgICBpZiAodGV4dEl0ZXJhdG9yLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIHJldHVybiBraXQodGV4dEl0ZXJhdG9yLnJhbmdlKCkuZ2V0KCkpOwogfQogCiAvLyBGSVhN
RTogQ29uc2lkZXIgZGVwcmVjYXRpbmcgdGhpcyBtZXRob2QgYW5kIGNyZWF0aW5nIG9uZSB0aGF0
IGRvZXMgbm90IHJlcXVpcmUgY29weWluZyA4LWJpdCBjaGFyYWN0ZXJzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227721</attachid>
            <date>2014-03-24 22:51:33 -0700</date>
            <delta_ts>2014-03-25 17:49:32 -0700</delta_ts>
            <desc>Cleanup</desc>
            <filename>fix130711</filename>
            <type>text/plain</type>
            <size>42329</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NjIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE0LTAzLTI0ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJlcGxhY2UgSFRNTENvbnZlcnRl
cjo6X3N0cmluZ0Zvck5vZGUgYnkgcHJvcGVydHlWYWx1ZUZvck5vZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDcxMQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VkIGFsbCBjYWxscyB0byBI
VE1MQ29udmVydGVyOjpfc3RyaW5nRm9yTm9kZSBieSB0aGF0IHRvIHByb3BlcnR5VmFsdWVGb3JO
b2RlLgorCisgICAgICAgICogZWRpdGluZy9jb2NvYS9IVE1MQ29udmVydGVyLm1tOgorICAgICAg
ICAoSFRNTENvbnZlcnRlcjo6X2NvbXB1dGVkQXR0cmlidXRlc0ZvckVsZW1lbnQpOgorICAgICAg
ICAoSFRNTENvbnZlcnRlcjo6X2FkZEF0dGFjaG1lbnRGb3JFbGVtZW50KToKKyAgICAgICAgKEhU
TUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQpOgorICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2Fk
ZFRhYmxlRm9yRWxlbWVudCk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfYWRkVGFibGVDZWxs
Rm9yRWxlbWVudCk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQpOgor
ICAgICAgICAoSFRNTENvbnZlcnRlcjo6X2V4aXRFbGVtZW50KToKKyAgICAgICAgKEhUTUxDb252
ZXJ0ZXI6Ol9wcm9jZXNzVGV4dCk6CisgICAgICAgIChIVE1MQ29udmVydGVyOjpfdHJhdmVyc2VO
b2RlKToKKyAgICAgICAgKEhUTUxDb252ZXJ0ZXI6Ol90cmF2ZXJzZUZvb3Rlck5vZGUpOgorICAg
ICAgICAoSFRNTENvbnZlcnRlcjo6X3N0cmluZ0Zvck5vZGUpOiBEZWxldGVkLgorCiAyMDE0LTAz
LTI0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBzb21lIHVubmVjZXNzYXJ5IGluY2x1ZGVzIGZyb20gUGxhdGZvcm1DQUxheWVyQ2xpZW50
LmgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRNTENvbnZlcnRlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0hUTUxDb252ZXJ0ZXIu
bW0JKHJldmlzaW9uIDE2NjIxMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvSFRN
TENvbnZlcnRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKICNpbXBvcnQg
IkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2ltcG9ydCAiQ1NTUGFyc2VyLmgiCiAj
aW1wb3J0ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2ltcG9ydCAiQ2hhcmFjdGVyRGF0YS5oIgog
I2ltcG9ydCAiRG9jdW1lbnQuaCIKICNpbXBvcnQgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW1wb3J0
ICJET01DU1NQcmltaXRpdmVWYWx1ZUludGVybmFsLmgiCisjaW1wb3J0ICJET01DaGFyYWN0ZXJE
YXRhSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiRE9NSFRNTFRhYmxlQ2VsbEVsZW1lbnQu
aCIKQEAgLTQ4MSw4ICs0ODMsNyBAQAogICAgIH0gX2ZsYWdzOwogICAgIAogICAgIHZvaWQgX2xv
YWRGcm9tRE9NUmFuZ2UoKTsKLSAgICAKLSAgICBOU1N0cmluZyAqX3N0cmluZ0Zvck5vZGUoRE9N
Tm9kZSAqLCBDU1NQcm9wZXJ0eUlEKTsKKwogICAgIFBsYXRmb3JtQ29sb3IgKl9jb2xvckZvck5v
ZGUoRE9NTm9kZSAqLCBDU1NQcm9wZXJ0eUlEKTsKICAgICBCT09MIF9nZXRGbG9hdChDR0Zsb2F0
ICp2YWwsIERPTU5vZGUgKiwgQ1NTUHJvcGVydHlJRCk7CiAKQEAgLTUwNSwxMiArNTA2LDEyIEBA
CiAgICAgdm9pZCBfZmlsbEluQmxvY2soTlNUZXh0QmxvY2sgKmJsb2NrLCBET01FbGVtZW50ICpl
bGVtZW50LCBQbGF0Zm9ybUNvbG9yICpiYWNrZ3JvdW5kQ29sb3IsIENHRmxvYXQgZXh0cmFNYXJn
aW4sIENHRmxvYXQgZXh0cmFQYWRkaW5nLCBCT09MIGlzVGFibGUpOwogICAgIHZvaWQgX3Byb2Nl
c3NNZXRhRWxlbWVudFdpdGhOYW1lKE5TU3RyaW5nICpuYW1lLCBOU1N0cmluZyAqY29udGVudCk7
CiAgICAgdm9pZCBfcHJvY2Vzc0hlYWRFbGVtZW50KERPTUVsZW1lbnQgKmVsZW1lbnQpOwotICAg
IEJPT0wgX2VudGVyRWxlbWVudChET01FbGVtZW50ICplbGVtZW50LCBOU1N0cmluZyAqdGFnLCBO
U1N0cmluZyAqZGlzcGxheVZhbCwgQk9PTCBlbWJlZGRlZCk7CisgICAgQk9PTCBfZW50ZXJFbGVt
ZW50KERPTUVsZW1lbnQgKmVsZW1lbnQsIEJPT0wgZW1iZWRkZWQpOwogICAgIHZvaWQgX2FkZFRh
YmxlRm9yRWxlbWVudChET01FbGVtZW50ICp0YWJsZUVsZW1lbnQpOwogICAgIHZvaWQgX2FkZFRh
YmxlQ2VsbEZvckVsZW1lbnQoRE9NRWxlbWVudCAqdGFibGVDZWxsRWxlbWVudCk7Ci0gICAgQk9P
TCBfcHJvY2Vzc0VsZW1lbnQoRE9NRWxlbWVudCAqZWxlbWVudCwgTlNTdHJpbmcgKnRhZywgTlNT
dHJpbmcgKmRpc3BsYXlWYWwsIE5TSW50ZWdlciBkZXB0aCk7CisgICAgQk9PTCBfcHJvY2Vzc0Vs
ZW1lbnQoRE9NRWxlbWVudCAqZWxlbWVudCwgTlNJbnRlZ2VyIGRlcHRoKTsKICAgICB2b2lkIF9h
ZGRNYXJrZXJzVG9MaXN0KE5TVGV4dExpc3QgKmxpc3QsIE5TUmFuZ2UgcmFuZ2UpOwotICAgIHZv
aWQgX2V4aXRFbGVtZW50KERPTUVsZW1lbnQgKmVsZW1lbnQsIE5TU3RyaW5nICp0YWcsIE5TU3Ry
aW5nICpkaXNwbGF5VmFsLCBOU0ludGVnZXIgZGVwdGgsIE5TVUludGVnZXIgc3RhcnRJbmRleCk7
CisgICAgdm9pZCBfZXhpdEVsZW1lbnQoRE9NRWxlbWVudCAqZWxlbWVudCwgTlNJbnRlZ2VyIGRl
cHRoLCBOU1VJbnRlZ2VyIHN0YXJ0SW5kZXgpOwogICAgIHZvaWQgX3Byb2Nlc3NUZXh0KERPTUNo
YXJhY3RlckRhdGEgKnRleHQpOwogICAgIHZvaWQgX2FkanVzdFRyYWlsaW5nTmV3bGluZSgpOwog
fTsKQEAgLTg1OCwxNyArODU5LDYgQEAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLU5TU3Ry
aW5nICpIVE1MQ29udmVydGVyOjpfc3RyaW5nRm9yTm9kZShET01Ob2RlICpub2RlLCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SWQpCi17Ci0gICAgTm9kZSogY29yZU5vZGUgPSBjb3JlKG5vZGUpOwot
ICAgIGlmICghY29yZU5vZGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgU3RyaW5nIHJlc3Vs
dCA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKCpjb3JlTm9kZSwgcHJvcGVydHlJZCk7
Ci0gICAgaWYgKCFyZXN1bHQubGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQogc3RhdGljIGlubGluZSBib29sIGZsb2F0VmFsdWVGcm9tUHJpbWl0
aXZlVmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUmIHByaW1pdGl2ZVZhbHVlLCBmbG9hdCYgcmVzdWx0
KQogewogICAgIC8vIEZJWE1FOiBVc2UgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVWYWx1ZS4K
QEAgLTExNTUsMzQgKzExNDUsMzAgQEAKIAogTlNEaWN0aW9uYXJ5ICpIVE1MQ29udmVydGVyOjpf
Y29tcHV0ZWRBdHRyaWJ1dGVzRm9yRWxlbWVudChET01FbGVtZW50ICplbGVtZW50KQogewotICAg
IERPTUVsZW1lbnQgKmJsb2NrRWxlbWVudCA9IF9ibG9ja0xldmVsRWxlbWVudEZvck5vZGUoZWxl
bWVudCk7CiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqYXR0cnMgPSBbTlNNdXRhYmxlRGljdGlv
bmFyeSBkaWN0aW9uYXJ5XTsKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIHJldHVybiBhdHRy
czsKKyAgICAKKyAgICBFbGVtZW50JiBjb3JlRWxlbWVudCA9ICpjb3JlKGVsZW1lbnQpOwogI2lm
ICFQTEFURk9STShJT1MpCiAgICAgTlNGb250TWFuYWdlciAqZm9udE1hbmFnZXIgPSBbTlNGb250
TWFuYWdlciBzaGFyZWRGb250TWFuYWdlcl07CiAjZW5kaWYKLSAgICBOU1N0cmluZyAqdGV4dERl
Y29yYXRpb24gPSBfc3RyaW5nRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uKTsKLSAgICBOU1N0cmluZyAqdmVydGljYWxBbGlnbiA9IF9zdHJpbmdGb3JOb2RlKGVsZW1l
bnQsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbik7Ci0gICAgTlNTdHJpbmcgKnRleHRTaGFkb3cg
PSBfc3RyaW5nRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVRleHRTaGFkb3cpOwotICAgIE5T
U3RyaW5nICpmb250TGlnYXR1cmVzID0gX3N0cmluZ0Zvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVy
dHlXZWJraXRGb250VmFyaWFudExpZ2F0dXJlcyk7Ci0gICAgTlNTdHJpbmcgKmZvbnRLZXJuaW5n
ID0gX3N0cmluZ0Zvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlXZWJraXRGb250S2VybmluZyk7
Ci0gICAgTlNTdHJpbmcgKmxldHRlclNwYWNpbmcgPSBfc3RyaW5nRm9yTm9kZShlbGVtZW50LCBD
U1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpOwotICAgIENHRmxvYXQgZm9udFNpemUgPSAwOwotICAg
IENHRmxvYXQgYmFzZWxpbmVPZmZzZXQgPSAwOwotICAgIENHRmxvYXQgc3Ryb2tlV2lkdGggPSAw
LjA7CisKICAgICBQbGF0Zm9ybUZvbnQgKmZvbnQgPSBuaWw7CiAgICAgUGxhdGZvcm1Gb250ICph
Y3R1YWxGb250ID0gKFBsYXRmb3JtRm9udCAqKVtlbGVtZW50IF9mb250XTsKICAgICBQbGF0Zm9y
bUNvbG9yICpmb3JlZ3JvdW5kQ29sb3IgPSBfY29sb3JGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3Bl
cnR5Q29sb3IpOwogICAgIFBsYXRmb3JtQ29sb3IgKmJhY2tncm91bmRDb2xvciA9IF9jb2xvckZv
ck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogICAgIFBsYXRmb3Jt
Q29sb3IgKnN0cm9rZUNvbG9yID0gX2NvbG9yRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRTdHJva2VDb2xvcik7CiAKLSAgICBpZiAoIV9nZXRGbG9hdCgmZm9udFNpemUsIGVs
ZW1lbnQsIENTU1Byb3BlcnR5Rm9udFNpemUpIHx8IGZvbnRTaXplIDw9IDAuMCkKKyAgICBmbG9h
dCBmb250U2l6ZSA9IDA7CisgICAgaWYgKCFfY2FjaGVzLT5mbG9hdFByb3BlcnR5VmFsdWVGb3JO
b2RlKGNvcmVFbGVtZW50LCBDU1NQcm9wZXJ0eUZvbnRTaXplLCBmb250U2l6ZSkgfHwgZm9udFNp
emUgPD0gMC4wKQogICAgICAgICBmb250U2l6ZSA9IGRlZmF1bHRGb250U2l6ZTsKICAgICBpZiAo
Zm9udFNpemUgPCBtaW5pbXVtRm9udFNpemUpCiAgICAgICAgIGZvbnRTaXplID0gbWluaW11bUZv
bnRTaXplOwogICAgIGlmIChmYWJzKGZsb29yKDIuMCAqIGZvbnRTaXplICsgMC41KSAvIDIuMCAt
IGZvbnRTaXplKSA8IDAuMDUpCi0gICAgICAgIGZvbnRTaXplID0gKENHRmxvYXQpZmxvb3IoMi4w
ICogZm9udFNpemUgKyAwLjUpIC8gMjsKKyAgICAgICAgZm9udFNpemUgPSBmbG9vcigyLjAgKiBm
b250U2l6ZSArIDAuNSkgLyAyOwogICAgIGVsc2UgaWYgKGZhYnMoZmxvb3IoMTAuMCAqIGZvbnRT
aXplICsgMC41KSAvIDEwLjAgLSBmb250U2l6ZSkgPCAwLjAwNSkKLSAgICAgICAgZm9udFNpemUg
PSAoQ0dGbG9hdClmbG9vcigxMC4wICogZm9udFNpemUgKyAwLjUpIC8gMTA7CisgICAgICAgIGZv
bnRTaXplID0gZmxvb3IoMTAuMCAqIGZvbnRTaXplICsgMC41KSAvIDEwOwogCiAgICAgaWYgKGZv
bnRTaXplIDw9IDAuMCkKICAgICAgICAgZm9udFNpemUgPSBkZWZhdWx0Rm9udFNpemU7CkBAIC0x
MTk1LDE3ICsxMTgxLDE0IEBACiAgICAgICAgIGZvbnQgPSBbZm9udE1hbmFnZXIgY29udmVydEZv
bnQ6YWN0dWFsRm9udCB0b1NpemU6Zm9udFNpemVdOwogI2VuZGlmCiAgICAgaWYgKCFmb250KSB7
Ci0gICAgICAgIE5TU3RyaW5nICpmb250TmFtZSA9IFtfc3RyaW5nRm9yTm9kZShlbGVtZW50LCBD
U1NQcm9wZXJ0eUZvbnRGYW1pbHkpIGNhcGl0YWxpemVkU3RyaW5nXTsKLSAgICAgICAgTlNTdHJp
bmcgKmZvbnRTdHlsZSA9IF9zdHJpbmdGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3BlcnR5Rm9udFN0
eWxlKTsKLSAgICAgICAgTlNTdHJpbmcgKmZvbnRXZWlnaHQgPSBfc3RyaW5nRm9yTm9kZShlbGVt
ZW50LCBDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwotI2lmICFQTEFURk9STShJT1MpCi0gICAgICAg
IE5TU3RyaW5nICpmb250VmFyaWFudCA9IF9zdHJpbmdGb3JOb2RlKGVsZW1lbnQsIENTU1Byb3Bl
cnR5Rm9udFZhcmlhbnQpOwotI2VuZGlmCi0gICAgICAgIGlmIChmb250TmFtZSkKLSAgICAgICAg
ICAgIGZvbnQgPSBfZm9udEZvck5hbWVBbmRTaXplKGZvbnROYW1lLCBmb250U2l6ZSwgX2ZvbnRD
YWNoZSk7CisgICAgICAgIFN0cmluZyBmb250TmFtZSA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVG
b3JOb2RlKGNvcmVFbGVtZW50LCBDU1NQcm9wZXJ0eUZvbnRGYW1pbHkpOworICAgICAgICBpZiAo
Zm9udE5hbWUubGVuZ3RoKCkpCisgICAgICAgICAgICBmb250ID0gX2ZvbnRGb3JOYW1lQW5kU2l6
ZShmb250TmFtZS51cHBlcigpLCBmb250U2l6ZSwgX2ZvbnRDYWNoZSk7CiAgICAgICAgIGlmICgh
Zm9udCkKICAgICAgICAgICAgIGZvbnQgPSBbUGxhdGZvcm1Gb250Q2xhc3MgZm9udFdpdGhOYW1l
OkAiVGltZXMiIHNpemU6Zm9udFNpemVdOwotICAgICAgICBpZiAoW0AiaXRhbGljIiBpc0VxdWFs
VG9TdHJpbmc6Zm9udFN0eWxlXSB8fCBbQCJvYmxpcXVlIiBpc0VxdWFsVG9TdHJpbmc6Zm9udFN0
eWxlXSkgeworCisgICAgICAgIFN0cmluZyBmb250U3R5bGUgPSBfY2FjaGVzLT5wcm9wZXJ0eVZh
bHVlRm9yTm9kZShjb3JlRWxlbWVudCwgQ1NTUHJvcGVydHlGb250U3R5bGUpOworICAgICAgICBp
ZiAoZm9udFN0eWxlID09ICJpdGFsaWMiIHx8IGZvbnRTdHlsZSA9PSAib2JsaXF1ZSIpIHsKICAg
ICAgICAgICAgIFBsYXRmb3JtRm9udCAqb3JpZ2luYWxGb250ID0gZm9udDsKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgICAgICAgICBmb250ID0gW1BsYXRmb3JtRm9udENsYXNzIGZvbnRXaXRoRmFt
aWx5TmFtZTpbZm9udCBmYW1pbHlOYW1lXSB0cmFpdHM6VUlGb250VHJhaXRJdGFsaWMgc2l6ZTpb
Zm9udCBwb2ludFNpemVdXTsKQEAgLTEyMTUsNyArMTE5OCw5IEBACiAgICAgICAgICAgICBpZiAo
IWZvbnQpCiAgICAgICAgICAgICAgICAgZm9udCA9IG9yaWdpbmFsRm9udDsKICAgICAgICAgfQot
ICAgICAgICBpZiAoW2ZvbnRXZWlnaHQgaGFzUHJlZml4OkAiYm9sZCJdIHx8IFtmb250V2VpZ2h0
IGludGVnZXJWYWx1ZV0gPj0gNzAwKSB7CisKKyAgICAgICAgU3RyaW5nIGZvbnRXZWlnaHQgPSBf
Y2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlRWxlbWVudCwgQ1NTUHJvcGVydHlGb250
U3R5bGUpOworICAgICAgICBpZiAoZm9udFdlaWdodC5zdGFydHNXaXRoKCJib2xkIikgfHwgZm9u
dFdlaWdodC50b0ludCgpID49IDcwMCkgewogICAgICAgICAgICAgLy8gPz8/IGhhbmRsZSB3ZWln
aHQgcHJvcGVybHkgdXNpbmcgTlNGb250TWFuYWdlcgogICAgICAgICAgICAgUGxhdGZvcm1Gb250
ICpvcmlnaW5hbEZvbnQgPSBmb250OwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTEyMjcsNyArMTIx
Miw3IEBACiAgICAgICAgICAgICAgICAgZm9udCA9IG9yaWdpbmFsRm9udDsKICAgICAgICAgfQog
I2lmICFQTEFURk9STShJT1MpIC8vIElKQjogTm8gc21hbGwgY2FwcyBzdXBwb3J0IG9uIGlPUwot
ICAgICAgICBpZiAoW0Aic21hbGwtY2FwcyIgaXNFcXVhbFRvU3RyaW5nOmZvbnRWYXJpYW50XSkg
eworICAgICAgICBpZiAoX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoY29yZUVsZW1lbnQs
IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQpID09ICJzbWFsbC1jYXBzIikgewogICAgICAgICAgICAg
Ly8gPz8/IHN5bnRoZXNpemUgc21hbGwtY2FwcyBpZiBbZm9udCBpc0VxdWFsOm9yaWdpbmFsRm9u
dF0KICAgICAgICAgICAgIE5TRm9udCAqb3JpZ2luYWxGb250ID0gZm9udDsKICAgICAgICAgICAg
IGZvbnQgPSBbZm9udE1hbmFnZXIgY29udmVydEZvbnQ6Zm9udCB0b0hhdmVUcmFpdDpOU1NtYWxs
Q2Fwc0ZvbnRNYXNrXTsKQEAgLTEyNDMsMTAyICsxMjI4LDEzMSBAQAogICAgIGlmIChiYWNrZ3Jv
dW5kQ29sb3IgJiYgIV9lbGVtZW50SGFzT3duQmFja2dyb3VuZENvbG9yKGVsZW1lbnQpKQogICAg
ICAgICBbYXR0cnMgc2V0T2JqZWN0OmJhY2tncm91bmRDb2xvciBmb3JLZXk6TlNCYWNrZ3JvdW5k
Q29sb3JBdHRyaWJ1dGVOYW1lXTsKIAotICAgIGlmIChfZ2V0RmxvYXQoJnN0cm9rZVdpZHRoLCBl
bGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VXaWR0aCkpIHsKKyAgICBmbG9hdCBz
dHJva2VXaWR0aCA9IDAuMDsKKyAgICBpZiAoX2NhY2hlcy0+ZmxvYXRQcm9wZXJ0eVZhbHVlRm9y
Tm9kZShjb3JlRWxlbWVudCwgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlV2lkdGgsIHN0cm9r
ZVdpZHRoKSkgewogICAgICAgICBmbG9hdCB0ZXh0U3Ryb2tlV2lkdGggPSBzdHJva2VXaWR0aCAv
IChbZm9udCBwb2ludFNpemVdICogMC4wMSk7CiAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05T
TnVtYmVyIG51bWJlcldpdGhEb3VibGU6dGV4dFN0cm9rZVdpZHRoXSBmb3JLZXk6TlNTdHJva2VX
aWR0aEF0dHJpYnV0ZU5hbWVdOwogICAgIH0KICAgICBpZiAoc3Ryb2tlQ29sb3IpCiAgICAgICAg
IFthdHRycyBzZXRPYmplY3Q6c3Ryb2tlQ29sb3IgZm9yS2V5Ok5TU3Ryb2tlQ29sb3JBdHRyaWJ1
dGVOYW1lXTsKLSAgICBpZiAoZm9udEtlcm5pbmcgfHwgbGV0dGVyU3BhY2luZykgewotICAgICAg
ICBpZiAoW2ZvbnRLZXJuaW5nIHJhbmdlT2ZTdHJpbmc6QCJub25lIl0ubG9jYXRpb24gIT0gTlNO
b3RGb3VuZCkKKworICAgIFN0cmluZyBmb250S2VybmluZyA9IF9jYWNoZXMtPnByb3BlcnR5VmFs
dWVGb3JOb2RlKGNvcmVFbGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nKTsKKyAg
ICBTdHJpbmcgbGV0dGVyU3BhY2luZyA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGNv
cmVFbGVtZW50LCBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmcpOworICAgIGlmIChmb250S2Vybmlu
Zy5sZW5ndGgoKSB8fCBsZXR0ZXJTcGFjaW5nLmxlbmd0aCgpKSB7CisgICAgICAgIGlmIChmb250
S2VybmluZyA9PSAibm9uZSIpCiAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OkAwLjAgZm9y
S2V5Ok5TS2VybkF0dHJpYnV0ZU5hbWVdOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGRv
dWJsZSBrZXJuVmFsID0gbGV0dGVyU3BhY2luZyA/IFtsZXR0ZXJTcGFjaW5nIGRvdWJsZVZhbHVl
XSA6IDAuMDsKKyAgICAgICAgICAgIGRvdWJsZSBrZXJuVmFsID0gbGV0dGVyU3BhY2luZy5sZW5n
dGgoKSA/IGxldHRlclNwYWNpbmcudG9Eb3VibGUoKSA6IDAuMDsKICAgICAgICAgICAgIGlmIChV
SUZsb2F0SXNaZXJvKGtlcm5WYWwpKQogICAgICAgICAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6
QDAuMCBmb3JLZXk6TlNLZXJuQXR0cmlidXRlTmFtZV07IC8vIGF1dG8gYW5kIG5vcm1hbCwgdGhl
IG90aGVyIHBvc3NpYmxlIHZhbHVlcywgYXJlIGJvdGggImtlcm5pbmcgZW5hYmxlZCIKICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBbYXR0cnMgc2V0T2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoRG91YmxlOmtlcm5WYWxdIGZvcktleTpOU0tlcm5BdHRyaWJ1dGVOYW1lXTsKICAg
ICAgICAgfQogICAgIH0KLSAgICBpZiAoZm9udExpZ2F0dXJlcykgewotICAgICAgICBpZiAoW2Zv
bnRMaWdhdHVyZXMgcmFuZ2VPZlN0cmluZzpAIm5vcm1hbCJdLmxvY2F0aW9uICE9IE5TTm90Rm91
bmQpCisKKyAgICBTdHJpbmcgZm9udExpZ2F0dXJlcyA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVG
b3JOb2RlKGNvcmVFbGVtZW50LCBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRWYXJpYW50TGlnYXR1cmVz
KTsKKyAgICBpZiAoZm9udExpZ2F0dXJlcy5sZW5ndGgoKSkgeworICAgICAgICBpZiAoZm9udExp
Z2F0dXJlcy5jb250YWlucygibm9ybWFsIikpCiAgICAgICAgICAgICA7ICAgLy8gZGVmYXVsdDog
d2hhdGV2ZXIgdGhlIHN5c3RlbSBkZWNpZGVzIHRvIGRvCi0gICAgICAgIGVsc2UgaWYgKFtmb250
TGlnYXR1cmVzIHJhbmdlT2ZTdHJpbmc6QCJjb21tb24tbGlnYXR1cmVzIl0ubG9jYXRpb24gIT0g
TlNOb3RGb3VuZCkKKyAgICAgICAgZWxzZSBpZiAoZm9udExpZ2F0dXJlcy5jb250YWlucygiY29t
bW9uLWxpZ2F0dXJlcyIpKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpAMSBmb3JLZXk6
TlNMaWdhdHVyZUF0dHJpYnV0ZU5hbWVdOyAgIC8vIGV4cGxpY2l0bHkgZW5hYmxlZAotICAgICAg
ICBlbHNlIGlmIChbZm9udExpZ2F0dXJlcyByYW5nZU9mU3RyaW5nOkAibm8tY29tbW9uLWxpZ2F0
dXJlcyJdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgICAgIGVsc2UgaWYgKGZvbnRMaWdh
dHVyZXMuY29udGFpbnMoIm5vLWNvbW1vbi1saWdhdHVyZXMiKSkKICAgICAgICAgICAgIFthdHRy
cyBzZXRPYmplY3Q6QDAgZm9yS2V5Ok5TTGlnYXR1cmVBdHRyaWJ1dGVOYW1lXTsgIC8vIGV4cGxp
Y2l0bHkgZGlzYWJsZWQKICAgICB9CiAKLSAgICBpZiAodGV4dERlY29yYXRpb24gJiYgW3RleHRE
ZWNvcmF0aW9uIGxlbmd0aF0gPiA0KSB7Ci0gICAgICAgIGlmIChbdGV4dERlY29yYXRpb24gcmFu
Z2VPZlN0cmluZzpAInVuZGVybGluZSJdLmxvY2F0aW9uICE9IE5TTm90Rm91bmQpCisgICAgU3Ry
aW5nIHRleHREZWNvcmF0aW9uID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoY29yZUVs
ZW1lbnQsIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pOworICAgIGlmICh0ZXh0RGVjb3JhdGlv
bi5sZW5ndGgoKSkgeworICAgICAgICBpZiAodGV4dERlY29yYXRpb24uY29udGFpbnMoInVuZGVy
bGluZSIpKQogICAgICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0
aEludGVnZXI6TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0gZm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVB
dHRyaWJ1dGVOYW1lXTsKLSAgICAgICAgaWYgKFt0ZXh0RGVjb3JhdGlvbiByYW5nZU9mU3RyaW5n
OkAibGluZS10aHJvdWdoIl0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKKyAgICAgICAgaWYgKHRl
eHREZWNvcmF0aW9uLmNvbnRhaW5zKCJsaW5lLXRocm91Z2giKSkKICAgICAgICAgICAgIFthdHRy
cyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOk5TVW5kZXJsaW5lU3R5bGVT
aW5nbGVdIGZvcktleTpOU1N0cmlrZXRocm91Z2hTdHlsZUF0dHJpYnV0ZU5hbWVdOwogICAgIH0K
LSAgICBpZiAodmVydGljYWxBbGlnbikgewotICAgICAgICBpZiAoW3ZlcnRpY2FsQWxpZ24gcmFu
Z2VPZlN0cmluZzpAInN1cGVyIl0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKKworICAgIFN0cmlu
ZyB2ZXJ0aWNhbEFsaWduID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoY29yZUVsZW1l
bnQsIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbik7CisgICAgaWYgKHZlcnRpY2FsQWxpZ24ubGVu
Z3RoKCkpIHsKKyAgICAgICAgaWYgKHZlcnRpY2FsQWxpZ24gPT0gInN1cGVyIikKICAgICAgICAg
ICAgIFthdHRycyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOjFdIGZvcktl
eTpOU1N1cGVyc2NyaXB0QXR0cmlidXRlTmFtZV07Ci0gICAgICAgIGlmIChbdmVydGljYWxBbGln
biByYW5nZU9mU3RyaW5nOkAic3ViIl0ubG9jYXRpb24gIT0gTlNOb3RGb3VuZCkKKyAgICAgICAg
ZWxzZSBpZiAodmVydGljYWxBbGlnbiA9PSAic3ViIikKICAgICAgICAgICAgIFthdHRycyBzZXRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOi0xXSBmb3JLZXk6TlNTdXBlcnNjcmlw
dEF0dHJpYnV0ZU5hbWVdOwogICAgIH0KLSAgICBpZiAoX2dldEZsb2F0KCZiYXNlbGluZU9mZnNl
dCwgZWxlbWVudCwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKSkKKworICAgIGZsb2F0IGJhc2Vs
aW5lT2Zmc2V0ID0gMC4wOworICAgIGlmIChfY2FjaGVzLT5mbG9hdFByb3BlcnR5VmFsdWVGb3JO
b2RlKGNvcmVFbGVtZW50LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGJhc2VsaW5lT2Zmc2V0
KSkKICAgICAgICAgW2F0dHJzIHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTpi
YXNlbGluZU9mZnNldF0gZm9yS2V5Ok5TQmFzZWxpbmVPZmZzZXRBdHRyaWJ1dGVOYW1lXTsKLSAg
ICBpZiAodGV4dFNoYWRvdyAmJiBbdGV4dFNoYWRvdyBsZW5ndGhdID4gNCkgeworCisgICAgU3Ry
aW5nIHRleHRTaGFkb3cgPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlRWxlbWVu
dCwgQ1NTUHJvcGVydHlUZXh0U2hhZG93KTsKKyAgICBpZiAodGV4dFNoYWRvdy5sZW5ndGgoKSA+
IDQpIHsKICAgICAgICAgTlNTaGFkb3cgKnNoYWRvdyA9IF9zaGFkb3dGb3JTaGFkb3dTdHlsZSh0
ZXh0U2hhZG93KTsKICAgICAgICAgaWYgKHNoYWRvdykKICAgICAgICAgICAgIFthdHRycyBzZXRP
YmplY3Q6c2hhZG93IGZvcktleTpOU1NoYWRvd0F0dHJpYnV0ZU5hbWVdOwogICAgIH0KKworICAg
IERPTUVsZW1lbnQgKmJsb2NrRWxlbWVudCA9IF9ibG9ja0xldmVsRWxlbWVudEZvck5vZGUoZWxl
bWVudCk7CiAgICAgaWYgKGVsZW1lbnQgIT0gYmxvY2tFbGVtZW50ICYmIFtfd3JpdGluZ0RpcmVj
dGlvbkFycmF5IGNvdW50XSA+IDApCiAgICAgICAgIFthdHRycyBzZXRPYmplY3Q6W05TQXJyYXkg
YXJyYXlXaXRoQXJyYXk6X3dyaXRpbmdEaXJlY3Rpb25BcnJheV0gZm9yS2V5Ok5TV3JpdGluZ0Rp
cmVjdGlvbkF0dHJpYnV0ZU5hbWVdOwotICAgIAorCiAgICAgaWYgKGJsb2NrRWxlbWVudCkgewor
ICAgICAgICBFbGVtZW50JiBjb3JlQmxvY2tFbGVtZW50ID0gKmNvcmUoYmxvY2tFbGVtZW50KTsK
ICAgICAgICAgTlNNdXRhYmxlUGFyYWdyYXBoU3R5bGUgKnBhcmFncmFwaFN0eWxlID0gW2RlZmF1
bHRQYXJhZ3JhcGhTdHlsZSgpIG11dGFibGVDb3B5XTsKLSAgICAgICAgTlNTdHJpbmcgKmJsb2Nr
VGFnID0gW2Jsb2NrRWxlbWVudCB0YWdOYW1lXTsKLSAgICAgICAgQk9PTCBpc1BhcmFncmFwaCA9
IChbQCJQIiBpc0VxdWFsVG9TdHJpbmc6YmxvY2tUYWddIHx8IFtAIkxJIiBpc0VxdWFsVG9TdHJp
bmc6YmxvY2tUYWddIHx8IChbYmxvY2tUYWcgaGFzUHJlZml4OkAiSCJdICYmIDIgPT0gW2Jsb2Nr
VGFnIGxlbmd0aF0pKTsKLSAgICAgICAgTlNTdHJpbmcgKnRleHRBbGlnbiA9IF9zdHJpbmdGb3JO
b2RlKGJsb2NrRWxlbWVudCwgQ1NTUHJvcGVydHlUZXh0QWxpZ24pOwotICAgICAgICBOU1N0cmlu
ZyAqZGlyZWN0aW9uID0gX3N0cmluZ0Zvck5vZGUoYmxvY2tFbGVtZW50LCBDU1NQcm9wZXJ0eURp
cmVjdGlvbik7Ci0gICAgICAgIE5TU3RyaW5nICpoeXBoZW5hdGlvbiA9IF9zdHJpbmdGb3JOb2Rl
KGJsb2NrRWxlbWVudCwgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zKTsKLSAgICAgICAgQ0dGbG9h
dCBsZWZ0TWFyZ2luID0gMDsKLSAgICAgICAgQ0dGbG9hdCByaWdodE1hcmdpbiA9IDA7Ci0gICAg
ICAgIENHRmxvYXQgYm90dG9tTWFyZ2luID0gMDsKLSAgICAgICAgQ0dGbG9hdCB0ZXh0SW5kZW50
ID0gMDsKLSAgICAgICAgaWYgKHRleHRBbGlnbikgeworICAgICAgICB1bnNpZ25lZCBoZWFkaW5n
ID0gMDsKKyAgICAgICAgaWYgKGNvcmVCbG9ja0VsZW1lbnQuaGFzVGFnTmFtZShoMVRhZykpCisg
ICAgICAgICAgICBoZWFkaW5nID0gMTsKKyAgICAgICAgZWxzZSBpZiAoY29yZUJsb2NrRWxlbWVu
dC5oYXNUYWdOYW1lKGgyVGFnKSkKKyAgICAgICAgICAgIGhlYWRpbmcgPSAyOworICAgICAgICBl
bHNlIGlmIChjb3JlQmxvY2tFbGVtZW50Lmhhc1RhZ05hbWUoaDNUYWcpKQorICAgICAgICAgICAg
aGVhZGluZyA9IDM7CisgICAgICAgIGVsc2UgaWYgKGNvcmVCbG9ja0VsZW1lbnQuaGFzVGFnTmFt
ZShoNFRhZykpCisgICAgICAgICAgICBoZWFkaW5nID0gNDsKKyAgICAgICAgZWxzZSBpZiAoY29y
ZUJsb2NrRWxlbWVudC5oYXNUYWdOYW1lKGg1VGFnKSkKKyAgICAgICAgICAgIGhlYWRpbmcgPSA1
OworICAgICAgICBlbHNlIGlmIChjb3JlQmxvY2tFbGVtZW50Lmhhc1RhZ05hbWUoaDZUYWcpKQor
ICAgICAgICAgICAgaGVhZGluZyA9IDY7CisgICAgICAgIGJvb2wgaXNQYXJhZ3JhcGggPSBjb3Jl
QmxvY2tFbGVtZW50Lmhhc1RhZ05hbWUocFRhZykgfHwgY29yZUJsb2NrRWxlbWVudC5oYXNUYWdO
YW1lKGxpVGFnKSB8fCBoZWFkaW5nOworCisgICAgICAgIFN0cmluZyB0ZXh0QWxpZ24gPSBfY2Fj
aGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlQmxvY2tFbGVtZW50LCBDU1NQcm9wZXJ0eVRl
eHRBbGlnbik7CisgICAgICAgIGlmICh0ZXh0QWxpZ24ubGVuZ3RoKCkpIHsKICAgICAgICAgICAg
IC8vIFdlYktpdCBjYW4gcmV0dXJuIC1raHRtbC1sZWZ0LCAta2h0bWwtcmlnaHQsIC1raHRtbC1j
ZW50ZXIKLSAgICAgICAgICAgIGlmIChbdGV4dEFsaWduIGhhc1N1ZmZpeDpAImxlZnQiXSkKKyAg
ICAgICAgICAgIGlmICh0ZXh0QWxpZ24uZW5kc1dpdGgoImxlZnQiKSkKICAgICAgICAgICAgICAg
ICBbcGFyYWdyYXBoU3R5bGUgc2V0QWxpZ25tZW50Ok5TVGV4dEFsaWdubWVudExlZnRdOwotICAg
ICAgICAgICAgZWxzZSBpZiAoW3RleHRBbGlnbiBoYXNTdWZmaXg6QCJyaWdodCJdKQorICAgICAg
ICAgICAgZWxzZSBpZiAodGV4dEFsaWduLmVuZHNXaXRoKCJyaWdodCIpKQogICAgICAgICAgICAg
ICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6TlNUZXh0QWxpZ25tZW50UmlnaHRdOwot
ICAgICAgICAgICAgZWxzZSBpZiAoW3RleHRBbGlnbiBoYXNTdWZmaXg6QCJjZW50ZXIiXSkKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHRleHRBbGlnbi5lbmRzV2l0aCgiY2VudGVyIikpCiAgICAgICAg
ICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDpOU1RleHRBbGlnbm1lbnRDZW50
ZXJdOwotICAgICAgICAgICAgZWxzZSBpZiAoW3RleHRBbGlnbiBoYXNTdWZmaXg6QCJqdXN0aWZ5
Il0pCisgICAgICAgICAgICBlbHNlIGlmICh0ZXh0QWxpZ24uZW5kc1dpdGgoImp1c3RpZnkiKSkK
ICAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0QWxpZ25tZW50Ok5TVGV4dEFsaWdu
bWVudEp1c3RpZmllZF07CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGRpcmVjdGlvbikgewotICAg
ICAgICAgICAgaWYgKFtkaXJlY3Rpb24gaXNFcXVhbFRvU3RyaW5nOkAibHRyIl0pCisKKyAgICAg
ICAgU3RyaW5nIGRpcmVjdGlvbiA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGNvcmVC
bG9ja0VsZW1lbnQsIENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKKyAgICAgICAgaWYgKGRpcmVjdGlv
bi5sZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSAibHRyIikKICAgICAg
ICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0QmFzZVdyaXRpbmdEaXJlY3Rpb246TlNXcml0
aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHRdOwotICAgICAgICAgICAgZWxzZSBpZiAoW2RpcmVjdGlv
biBpc0VxdWFsVG9TdHJpbmc6QCJydGwiXSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpcmVjdGlv
biA9PSAicnRsIikKICAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0QmFzZVdyaXRp
bmdEaXJlY3Rpb246TlNXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnRdOwogICAgICAgICB9Ci0g
ICAgICAgIGlmKGh5cGhlbmF0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoW2h5cGhlbmF0aW9uIGlz
RXF1YWxUb1N0cmluZzpAImF1dG8iXSkKKworICAgICAgICBTdHJpbmcgaHlwaGVuYXRpb24gPSBf
Y2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlQmxvY2tFbGVtZW50LCBDU1NQcm9wZXJ0
eVdlYmtpdEh5cGhlbnMpOworICAgICAgICBpZiAoaHlwaGVuYXRpb24ubGVuZ3RoKCkpIHsKKyAg
ICAgICAgICAgIGlmIChoeXBoZW5hdGlvbiA9PSAiYXV0byIpCiAgICAgICAgICAgICAgICAgW3Bh
cmFncmFwaFN0eWxlIHNldEh5cGhlbmF0aW9uRmFjdG9yOjEuMF07CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEh5cGhlbmF0aW9uRmFjdG9yOjAu
MF07CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFtibG9ja1RhZyBoYXNQcmVmaXg6QCJIIl0gJiYg
MiA9PSBbYmxvY2tUYWcgbGVuZ3RoXSkgewotICAgICAgICAgICAgTlNJbnRlZ2VyIGhlYWRlckxl
dmVsID0gW2Jsb2NrVGFnIGNoYXJhY3RlckF0SW5kZXg6MV0gLSAnMCc7Ci0gICAgICAgICAgICBp
ZiAoMSA8PSBoZWFkZXJMZXZlbCAmJiBoZWFkZXJMZXZlbCA8PSA2KQotICAgICAgICAgICAgICAg
IFtwYXJhZ3JhcGhTdHlsZSBzZXRIZWFkZXJMZXZlbDpoZWFkZXJMZXZlbF07Ci0gICAgICAgIH0K
KyAgICAgICAgaWYgKGhlYWRpbmcpCisgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0SGVh
ZGVyTGV2ZWw6aGVhZGluZ107CiAgICAgICAgIGlmIChpc1BhcmFncmFwaCkgewotICAgICAgICAg
ICAgaWYgKF9nZXRGbG9hdCgmbGVmdE1hcmdpbiwgYmxvY2tFbGVtZW50LCBDU1NQcm9wZXJ0eU1h
cmdpbkxlZnQpICYmIGxlZnRNYXJnaW4gPiAwLjApCi0gICAgICAgICAgICAgICAgW3BhcmFncmFw
aFN0eWxlIHNldEhlYWRJbmRlbnQ6bGVmdE1hcmdpbl07Ci0gICAgICAgICAgICBpZiAoX2dldEZs
b2F0KCZ0ZXh0SW5kZW50LCBibG9ja0VsZW1lbnQsIENTU1Byb3BlcnR5VGV4dEluZGVudCkpCisg
ICAgICAgICAgICAvLyBGSVhNRTogV2h5IGFyZSB3ZSBpZ25vcmluZyBtYXJnaW4tdG9wPworICAg
ICAgICAgICAgZmxvYXQgbWFyZ2luTGVmdCA9IDAuMDsKKyAgICAgICAgICAgIGlmIChfY2FjaGVz
LT5mbG9hdFByb3BlcnR5VmFsdWVGb3JOb2RlKGNvcmVCbG9ja0VsZW1lbnQsIENTU1Byb3BlcnR5
TWFyZ2luTGVmdCwgbWFyZ2luTGVmdCkgJiYgbWFyZ2luTGVmdCA+IDAuMCkKKyAgICAgICAgICAg
ICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0SGVhZEluZGVudDptYXJnaW5MZWZ0XTsKKyAgICAgICAg
ICAgIGZsb2F0IHRleHRJbmRlbnQgPSAwLjA7CisgICAgICAgICAgICBpZiAoX2NhY2hlcy0+Zmxv
YXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlQmxvY2tFbGVtZW50LCBDU1NQcm9wZXJ0eVRleHRJ
bmRlbnQsIHRleHRJbmRlbnQpICYmIHRleHRJbmRlbnQgPiAwLjApCiAgICAgICAgICAgICAgICAg
W3BhcmFncmFwaFN0eWxlIHNldEZpcnN0TGluZUhlYWRJbmRlbnQ6W3BhcmFncmFwaFN0eWxlIGhl
YWRJbmRlbnRdICsgdGV4dEluZGVudF07Ci0gICAgICAgICAgICBpZiAoX2dldEZsb2F0KCZyaWdo
dE1hcmdpbiwgYmxvY2tFbGVtZW50LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0KSAmJiByaWdodE1h
cmdpbiA+IDAuMCkKLSAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0VGFpbEluZGVu
dDotcmlnaHRNYXJnaW5dOwotICAgICAgICAgICAgaWYgKF9nZXRGbG9hdCgmYm90dG9tTWFyZ2lu
LCBibG9ja0VsZW1lbnQsIENTU1Byb3BlcnR5TWFyZ2luQm90dG9tKSAmJiBib3R0b21NYXJnaW4g
PiAwLjApCi0gICAgICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldFBhcmFncmFwaFNwYWNp
bmc6Ym90dG9tTWFyZ2luXTsKKyAgICAgICAgICAgIGZsb2F0IG1hcmdpblJpZ2h0ID0gMC4wOwor
ICAgICAgICAgICAgaWYgKF9jYWNoZXMtPmZsb2F0UHJvcGVydHlWYWx1ZUZvck5vZGUoY29yZUJs
b2NrRWxlbWVudCwgQ1NTUHJvcGVydHlNYXJnaW5SaWdodCwgbWFyZ2luUmlnaHQpICYmIG1hcmdp
blJpZ2h0ID4gMC4wKQorICAgICAgICAgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRUYWlsSW5k
ZW50Oi1tYXJnaW5SaWdodF07CisgICAgICAgICAgICBmbG9hdCBtYXJnaW5Cb3R0b20gPSAwLjA7
CisgICAgICAgICAgICBpZiAoX2NhY2hlcy0+ZmxvYXRQcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3Jl
QmxvY2tFbGVtZW50LCBDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20pICYmIG1h
cmdpbkJvdHRvbSA+IDAuMCkKKyAgICAgICAgICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0UGFy
YWdyYXBoU3BhY2luZzptYXJnaW5Cb3R0b21dOwogICAgICAgICB9CiAgICAgICAgIGlmIChbX3Rl
eHRMaXN0cyBjb3VudF0gPiAwKQogICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldFRleHRM
aXN0czpfdGV4dExpc3RzXTsKQEAgLTE0ODksOCArMTUwMywxMCBAQAogICAgICAgICBOU1VJbnRl
Z2VyIHRleHRMZW5ndGggPSBbX2F0dHJTdHIgbGVuZ3RoXTsKICAgICAgICAgUmV0YWluUHRyPE5T
VGV4dEF0dGFjaG1lbnQ+IGF0dGFjaG1lbnQgPSBhZG9wdE5TKFtbUGxhdGZvcm1OU1RleHRBdHRh
Y2htZW50IGFsbG9jXSBpbml0V2l0aEZpbGVXcmFwcGVyOmZpbGVXcmFwcGVyXSk7CiAjaWYgUExB
VEZPUk0oSU9TKQotICAgICAgICBOU1N0cmluZyAqdkFsaWduID0gX3N0cmluZ0Zvck5vZGUoZWxl
bWVudCwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduKTsKLSAgICAgICAgYXR0YWNobWVudC5nZXQo
KS5ib3VuZHMgPSBDR1JlY3RNYWtlKDAsIChbdkFsaWduIGZsb2F0VmFsdWVdIC8gMTAwLikgKiBl
bGVtZW50LmNsaWVudEhlaWdodCwgZWxlbWVudC5jbGllbnRXaWR0aCwgZWxlbWVudC5jbGllbnRI
ZWlnaHQpOworICAgICAgICBmbG9hdCB2ZXJ0aWNhbEFsaWduID0gMC4wOworICAgICAgICBpZiAo
ZWxlbWVudCkKKyAgICAgICAgICAgIF9jYWNoZXMtPmZsb2F0UHJvcGVydHlWYWx1ZUZvck5vZGUo
Y29yZShlbGVtZW50KSwgQ1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduLCB2ZXJ0aWNhbEFsaWduKQor
ICAgICAgICBhdHRhY2htZW50LmdldCgpLmJvdW5kcyA9IENHUmVjdE1ha2UoMCwgKHZlcnRpY2Fs
QWxpZ24gLyAxMDApICogZWxlbWVudC5jbGllbnRIZWlnaHQsIGVsZW1lbnQuY2xpZW50V2lkdGgs
IGVsZW1lbnQuY2xpZW50SGVpZ2h0KTsKICNlbmRpZgogICAgICAgICBSZXRhaW5QdHI8TlNTdHJp
bmc+IHN0cmluZyA9IGFkb3B0TlMoW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhGb3JtYXQ6KG5l
ZWRzUGFyYWdyYXBoID8gQCIlQ1xuIiA6IEAiJUMiKSwgc3RhdGljX2Nhc3Q8dW5pY2hhcj4oTlNB
dHRhY2htZW50Q2hhcmFjdGVyKV0pOwogICAgICAgICBOU1JhbmdlIHJhbmdlVG9SZXBsYWNlID0g
TlNNYWtlUmFuZ2UodGV4dExlbmd0aCwgMCk7CkBAIC0xNzc4LDE0ICsxNzk0LDE4IEBACiAgICAg
fQogfQogCi1CT09MIEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQoRE9NRWxlbWVudCAqZWxl
bWVudCwgTlNTdHJpbmcgKnRhZywgTlNTdHJpbmcgKmRpc3BsYXlWYWwsIEJPT0wgZW1iZWRkZWQp
CitCT09MIEhUTUxDb252ZXJ0ZXI6Ol9lbnRlckVsZW1lbnQoRE9NRWxlbWVudCAqZWxlbWVudCwg
Qk9PTCBlbWJlZGRlZCkKIHsKLSAgICBpZiAoW0AiSEVBRCIgaXNFcXVhbFRvU3RyaW5nOnRhZ10g
JiYgIWVtYmVkZGVkKQorICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBFbGVtZW50JiBjb3JlRWxl
bWVudCA9ICpjb3JlKGVsZW1lbnQpOworICAgIFN0cmluZyBkaXNwbGF5VmFsdWUgPSBfY2FjaGVz
LT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlRWxlbWVudCwgQ1NTUHJvcGVydHlEaXNwbGF5KTsK
KworICAgIGlmIChjb3JlRWxlbWVudC5oYXNUYWdOYW1lKGhlYWRUYWcpICYmICFlbWJlZGRlZCkK
ICAgICAgICAgX3Byb2Nlc3NIZWFkRWxlbWVudChlbGVtZW50KTsKLSAgICBlbHNlIGlmICghZGlz
cGxheVZhbCB8fCAhKFtAIm5vbmUiIGlzRXF1YWxUb1N0cmluZzpkaXNwbGF5VmFsXSB8fCBbQCJ0
YWJsZS1jb2x1bW4iIGlzRXF1YWxUb1N0cmluZzpkaXNwbGF5VmFsXSB8fCBbQCJ0YWJsZS1jb2x1
bW4tZ3JvdXAiIGlzRXF1YWxUb1N0cmluZzpkaXNwbGF5VmFsXSkpIHsKLSAgICAgICAgaWYgKF9l
bGVtZW50SXNCbG9ja0xldmVsKGVsZW1lbnQpICYmICFbQCJCUiIgaXNFcXVhbFRvU3RyaW5nOnRh
Z10gJiYgIShbQCJ0YWJsZS1jZWxsIiBpc0VxdWFsVG9TdHJpbmc6ZGlzcGxheVZhbF0gJiYgW190
ZXh0VGFibGVzIGNvdW50XSA9PSAwKQotICAgICAgICAgICAgJiYgIShbX3RleHRMaXN0cyBjb3Vu
dF0gPiAwICYmIFtAImJsb2NrIiBpc0VxdWFsVG9TdHJpbmc6ZGlzcGxheVZhbF0gJiYgIVtAIkxJ
IiBpc0VxdWFsVG9TdHJpbmc6dGFnXSAmJiAhW0AiVUwiIGlzRXF1YWxUb1N0cmluZzp0YWddICYm
ICFbQCJPTCIgaXNFcXVhbFRvU3RyaW5nOnRhZ10pKQotICAgICAgICAgICAgX25ld1BhcmFncmFw
aEZvckVsZW1lbnQoZWxlbWVudCwgdGFnLCBOTywgWUVTKTsKKyAgICBlbHNlIGlmICghZGlzcGxh
eVZhbHVlLmxlbmd0aCgpIHx8ICEoZGlzcGxheVZhbHVlID09ICJub25lIiB8fCBkaXNwbGF5VmFs
dWUgPT0gInRhYmxlLWNvbHVtbiIgfHwgZGlzcGxheVZhbHVlID09ICJ0YWJsZS1jb2x1bW4tZ3Jv
dXAiKSkgeworICAgICAgICBpZiAoX2VsZW1lbnRJc0Jsb2NrTGV2ZWwoZWxlbWVudCkgJiYgIWNv
cmVFbGVtZW50Lmhhc1RhZ05hbWUoYnJUYWcpICYmICEoZGlzcGxheVZhbHVlID09ICJ0YWJsZS1j
ZWxsIiAmJiBbX3RleHRUYWJsZXMgY291bnRdID09IDApCisgICAgICAgICAgICAmJiAhKFtfdGV4
dExpc3RzIGNvdW50XSA+IDAgJiYgZGlzcGxheVZhbHVlID09ICJibG9jayIgJiYgIWNvcmVFbGVt
ZW50Lmhhc1RhZ05hbWUobGlUYWcpICYmICFjb3JlRWxlbWVudC5oYXNUYWdOYW1lKHVsVGFnKSAm
JiAhY29yZUVsZW1lbnQuaGFzVGFnTmFtZShvbFRhZykpKQorICAgICAgICAgICAgX25ld1BhcmFn
cmFwaEZvckVsZW1lbnQoZWxlbWVudCwgW2VsZW1lbnQgdGFnTmFtZV0sIE5PLCBZRVMpOwogICAg
ICAgICByZXR1cm4gWUVTOwogICAgIH0KICAgICByZXR1cm4gTk87CkBAIC0xODAxLDkgKzE4MjEs
NiBAQAogICAgIFt0YWJsZSBzZXRDb2xsYXBzZXNCb3JkZXJzOk5PXTsKICAgICBbdGFibGUgc2V0
SGlkZXNFbXB0eUNlbGxzOk5PXTsKICAgICBpZiAodGFibGVFbGVtZW50KSB7Ci0gICAgICAgIE5T
U3RyaW5nICpib3JkZXJDb2xsYXBzZSA9IF9zdHJpbmdGb3JOb2RlKHRhYmxlRWxlbWVudCwgQ1NT
UHJvcGVydHlCb3JkZXJDb2xsYXBzZSk7Ci0gICAgICAgIE5TU3RyaW5nICplbXB0eUNlbGxzID0g
X3N0cmluZ0Zvck5vZGUodGFibGVFbGVtZW50LCBDU1NQcm9wZXJ0eUVtcHR5Q2VsbHMpOwotICAg
ICAgICBOU1N0cmluZyAqdGFibGVMYXlvdXQgPSBfc3RyaW5nRm9yTm9kZSh0YWJsZUVsZW1lbnQs
IENTU1Byb3BlcnR5VGFibGVMYXlvdXQpOwogICAgICAgICBpZiAoW3RhYmxlRWxlbWVudCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGNlbGxTcGFjaW5nKV0pIHsKICAgICAgICAgICAgIE5T
U3RyaW5nICpjZWxsU3BhY2luZyA9IFsoRE9NSFRNTFRhYmxlRWxlbWVudCAqKXRhYmxlRWxlbWVu
dCBjZWxsU3BhY2luZ107CiAgICAgICAgICAgICBpZiAoY2VsbFNwYWNpbmcgJiYgW2NlbGxTcGFj
aW5nIGxlbmd0aF0gPiAwICYmICFbY2VsbFNwYWNpbmcgaGFzU3VmZml4OkAiJSJdKQpAQCAtMTgx
NSwxMyArMTgzMiwxNiBAQAogICAgICAgICAgICAgICAgIGNlbGxQYWRkaW5nVmFsID0gW2NlbGxQ
YWRkaW5nIGZsb2F0VmFsdWVdOwogICAgICAgICB9CiAgICAgICAgIF9maWxsSW5CbG9jayh0YWJs
ZS5nZXQoKSwgdGFibGVFbGVtZW50LCBuaWwsIDAsIDAsIFlFUyk7Ci0gICAgICAgIGlmIChbQCJj
b2xsYXBzZSIgaXNFcXVhbFRvU3RyaW5nOmJvcmRlckNvbGxhcHNlXSkgeworCisgICAgICAgIEFT
U0VSVCh0YWJsZUVsZW1lbnQpOworICAgICAgICBFbGVtZW50JiBjb3JlVGFibGVFbGVtZW50ID0g
KmNvcmUodGFibGVFbGVtZW50KTsKKyAgICAgICAgaWYgKF9jYWNoZXMtPnByb3BlcnR5VmFsdWVG
b3JOb2RlKGNvcmVUYWJsZUVsZW1lbnQsIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2UpID09ICJj
b2xsYXBzZSIpIHsKICAgICAgICAgICAgIFt0YWJsZSBzZXRDb2xsYXBzZXNCb3JkZXJzOllFU107
CiAgICAgICAgICAgICBjZWxsU3BhY2luZ1ZhbCA9IDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KFtAImhpZGUiIGlzRXF1YWxUb1N0cmluZzplbXB0eUNlbGxzXSkKKyAgICAgICAgaWYgKF9jYWNo
ZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGNvcmVUYWJsZUVsZW1lbnQsIENTU1Byb3BlcnR5RW1w
dHlDZWxscykgPT0gImhpZGUiKQogICAgICAgICAgICAgW3RhYmxlIHNldEhpZGVzRW1wdHlDZWxs
czpZRVNdOwotICAgICAgICBpZiAoW0AiZml4ZWQiIGlzRXF1YWxUb1N0cmluZzp0YWJsZUxheW91
dF0pCisgICAgICAgIGlmIChfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlVGFibGVF
bGVtZW50LCBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0KSA9PSAiZml4ZWQiKQogICAgICAgICAgICAg
W3RhYmxlIHNldExheW91dEFsZ29yaXRobTpOU1RleHRUYWJsZUZpeGVkTGF5b3V0QWxnb3JpdGht
XTsKICAgICB9CiAgICAgW190ZXh0VGFibGVzIGFkZE9iamVjdDp0YWJsZS5nZXQoKV07CkBAIC0x
ODYzLDE1ICsxODgzLDE1IEBACiAgICAgfQogICAgIFJldGFpblB0cjxOU1RleHRUYWJsZUJsb2Nr
PiBibG9jayA9IGFkb3B0TlMoW1tQbGF0Zm9ybU5TVGV4dFRhYmxlQmxvY2sgYWxsb2NdIGluaXRX
aXRoVGFibGU6dGFibGUgc3RhcnRpbmdSb3c6cm93TnVtYmVyIHJvd1NwYW46cm93U3BhbiBzdGFy
dGluZ0NvbHVtbjpjb2x1bW5OdW1iZXIgY29sdW1uU3Bhbjpjb2xTcGFuXSk7CiAgICAgaWYgKHRh
YmxlQ2VsbEVsZW1lbnQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnZlcnRpY2FsQWxpZ24gPSBfc3Ry
aW5nRm9yTm9kZSh0YWJsZUNlbGxFbGVtZW50LCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwor
ICAgICAgICBTdHJpbmcgdmVydGljYWxBbGlnbiA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JO
b2RlKCpjb3JlKHRhYmxlQ2VsbEVsZW1lbnQpLCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24pOwog
ICAgICAgICBfZmlsbEluQmxvY2soYmxvY2suZ2V0KCksIHRhYmxlQ2VsbEVsZW1lbnQsIGNvbG9y
LCBjZWxsU3BhY2luZ1ZhbCAvIDIsIDAsIE5PKTsKLSAgICAgICAgaWYgKFtAIm1pZGRsZSIgaXNF
cXVhbFRvU3RyaW5nOnZlcnRpY2FsQWxpZ25dKQorICAgICAgICBpZiAodmVydGljYWxBbGlnbiA9
PSAibWlkZGxlIikKICAgICAgICAgICAgIFtibG9jayBzZXRWZXJ0aWNhbEFsaWdubWVudDpOU1Rl
eHRCbG9ja01pZGRsZUFsaWdubWVudF07Ci0gICAgICAgIGVsc2UgaWYgKFtAImJvdHRvbSIgaXNF
cXVhbFRvU3RyaW5nOnZlcnRpY2FsQWxpZ25dKQorICAgICAgICBlbHNlIGlmICh2ZXJ0aWNhbEFs
aWduID09ICJib3R0b20iKQogICAgICAgICAgICAgW2Jsb2NrIHNldFZlcnRpY2FsQWxpZ25tZW50
Ok5TVGV4dEJsb2NrQm90dG9tQWxpZ25tZW50XTsKLSAgICAgICAgZWxzZSBpZiAoW0AiYmFzZWxp
bmUiIGlzRXF1YWxUb1N0cmluZzp2ZXJ0aWNhbEFsaWduXSkKKyAgICAgICAgZWxzZSBpZiAodmVy
dGljYWxBbGlnbiA9PSAiYmFzZWxpbmUiKQogICAgICAgICAgICAgW2Jsb2NrIHNldFZlcnRpY2Fs
QWxpZ25tZW50Ok5TVGV4dEJsb2NrQmFzZWxpbmVBbGlnbm1lbnRdOwotICAgICAgICBlbHNlIGlm
IChbQCJ0b3AiIGlzRXF1YWxUb1N0cmluZzp2ZXJ0aWNhbEFsaWduXSkKKyAgICAgICAgZWxzZSBp
ZiAodmVydGljYWxBbGlnbiA9PSAidG9wIikKICAgICAgICAgICAgIFtibG9jayBzZXRWZXJ0aWNh
bEFsaWdubWVudDpOU1RleHRCbG9ja1RvcEFsaWdubWVudF07CiAgICAgfQogICAgIFtfdGV4dEJs
b2NrcyBhZGRPYmplY3Q6YmxvY2suZ2V0KCldOwpAQCAtMTg3OSw1MSArMTg5OSw1MyBAQAogICAg
IFtyb3dBcnJheSBzb3J0VXNpbmdGdW5jdGlvbjpfY29sQ29tcGFyZSBjb250ZXh0Ok5VTExdOwog
fQogCi1CT09MIEhUTUxDb252ZXJ0ZXI6Ol9wcm9jZXNzRWxlbWVudChET01FbGVtZW50ICplbGVt
ZW50LCBOU1N0cmluZyAqdGFnLCBOU1N0cmluZyAqZGlzcGxheVZhbCwgTlNJbnRlZ2VyIGRlcHRo
KQorQk9PTCBIVE1MQ29udmVydGVyOjpfcHJvY2Vzc0VsZW1lbnQoRE9NRWxlbWVudCAqZWxlbWVu
dCwgTlNJbnRlZ2VyIGRlcHRoKQogeworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgcmV0dXJu
IE5POwogICAgIEJPT0wgcmV0dmFsID0gWUVTOwogICAgIEJPT0wgaXNCbG9ja0xldmVsID0gX2Vs
ZW1lbnRJc0Jsb2NrTGV2ZWwoZWxlbWVudCk7CisgICAgRWxlbWVudCYgY29yZUVsZW1lbnQgPSAq
Y29yZShlbGVtZW50KTsKKyAgICBTdHJpbmcgZGlzcGxheVZhbHVlID0gX2NhY2hlcy0+cHJvcGVy
dHlWYWx1ZUZvck5vZGUoY29yZUVsZW1lbnQsIENTU1Byb3BlcnR5RGlzcGxheSk7CiAgICAgaWYg
KGlzQmxvY2tMZXZlbCkKICAgICAgICAgW193cml0aW5nRGlyZWN0aW9uQXJyYXkgcmVtb3ZlQWxs
T2JqZWN0c107CiAgICAgZWxzZSB7Ci0gICAgICAgIE5TU3RyaW5nICpiaWRpID0gX3N0cmluZ0Zv
ck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlVbmljb2RlQmlkaSk7Ci0gICAgICAgIGlmIChiaWRp
ICYmIFtiaWRpIGlzRXF1YWxUb1N0cmluZzpAImVtYmVkIl0pIHsKKyAgICAgICAgU3RyaW5nIGJp
ZGkgPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlRWxlbWVudCwgQ1NTUHJvcGVy
dHlVbmljb2RlQmlkaSk7CisgICAgICAgIGlmIChiaWRpID09ICJlbWJlZCIpIHsKICAgICAgICAg
ICAgIE5TVUludGVnZXIgdmFsID0gTlNUZXh0V3JpdGluZ0RpcmVjdGlvbkVtYmVkZGluZzsKLSAg
ICAgICAgICAgIE5TU3RyaW5nICpkaXJlY3Rpb24gPSBfc3RyaW5nRm9yTm9kZShlbGVtZW50LCBD
U1NQcm9wZXJ0eURpcmVjdGlvbik7Ci0gICAgICAgICAgICBpZiAoW2RpcmVjdGlvbiBpc0VxdWFs
VG9TdHJpbmc6QCJydGwiXSkKKyAgICAgICAgICAgIGlmIChfY2FjaGVzLT5wcm9wZXJ0eVZhbHVl
Rm9yTm9kZShjb3JlRWxlbWVudCwgQ1NTUHJvcGVydHlEaXJlY3Rpb24pID09ICJydGwiKQogICAg
ICAgICAgICAgICAgIHZhbCB8PSBOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKICAgICAg
ICAgICAgIFtfd3JpdGluZ0RpcmVjdGlvbkFycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVy
V2l0aFVuc2lnbmVkSW50ZWdlcjp2YWxdXTsKLSAgICAgICAgfSBlbHNlIGlmIChiaWRpICYmIFti
aWRpIGlzRXF1YWxUb1N0cmluZzpAImJpZGktb3ZlcnJpZGUiXSkgeworICAgICAgICB9IGVsc2Ug
aWYgKGJpZGkgPT0gImJpZGktb3ZlcnJpZGUiKSB7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIHZh
bCA9IE5TVGV4dFdyaXRpbmdEaXJlY3Rpb25PdmVycmlkZTsKLSAgICAgICAgICAgIE5TU3RyaW5n
ICpkaXJlY3Rpb24gPSBfc3RyaW5nRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eURpcmVjdGlv
bik7Ci0gICAgICAgICAgICBpZiAoW2RpcmVjdGlvbiBpc0VxdWFsVG9TdHJpbmc6QCJydGwiXSkK
KyAgICAgICAgICAgIGlmIChfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjb3JlRWxlbWVu
dCwgQ1NTUHJvcGVydHlEaXJlY3Rpb24pID09ICJydGwiKQogICAgICAgICAgICAgICAgIHZhbCB8
PSBOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKICAgICAgICAgICAgIFtfd3JpdGluZ0Rp
cmVjdGlvbkFycmF5IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50ZWdl
cjp2YWxdXTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoW0AidGFibGUiIGlzRXF1YWxUb1N0
cmluZzpkaXNwbGF5VmFsXSB8fCAoW190ZXh0VGFibGVzIGNvdW50XSA9PSAwICYmIFtAInRhYmxl
LXJvdy1ncm91cCIgaXNFcXVhbFRvU3RyaW5nOmRpc3BsYXlWYWxdKSkgeworICAgIGlmIChkaXNw
bGF5VmFsdWUgPT0gInRhYmxlIiB8fCAoW190ZXh0VGFibGVzIGNvdW50XSA9PSAwICYmIGRpc3Bs
YXlWYWx1ZSA9PSAidGFibGUtcm93LWdyb3VwIikpIHsKICAgICAgICAgRE9NRWxlbWVudCAqdGFi
bGVFbGVtZW50ID0gZWxlbWVudDsKLSAgICAgICAgaWYgKFtAInRhYmxlLXJvdy1ncm91cCIgaXNF
cXVhbFRvU3RyaW5nOmRpc3BsYXlWYWxdKSB7CisgICAgICAgIGlmIChkaXNwbGF5VmFsdWUgPT0g
InRhYmxlLXJvdy1ncm91cCIpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBzdGFydGluZyBp
biBtZWRpYXMgcmVzLCB0aGUgZmlyc3QgdGhpbmcgd2Ugc2VlIG1heSBiZSB0aGUgdGJvZHksIHNv
IGdvIHVwIHRvIHRoZSB0YWJsZQogICAgICAgICAgICAgdGFibGVFbGVtZW50ID0gX2Jsb2NrTGV2
ZWxFbGVtZW50Rm9yTm9kZShbZWxlbWVudCBwYXJlbnROb2RlXSk7Ci0gICAgICAgICAgICBpZiAo
IVtAInRhYmxlIiBpc0VxdWFsVG9TdHJpbmc6X3N0cmluZ0Zvck5vZGUodGFibGVFbGVtZW50LCBD
U1NQcm9wZXJ0eURpc3BsYXkpXSkKKyAgICAgICAgICAgIGlmICghdGFibGVFbGVtZW50IHx8IF9j
YWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKCpjb3JlKHRhYmxlRWxlbWVudCksIENTU1Byb3Bl
cnR5RGlzcGxheSkgIT0gInRhYmxlIikKICAgICAgICAgICAgICAgICB0YWJsZUVsZW1lbnQgPSBl
bGVtZW50OwogICAgICAgICB9CiAgICAgICAgIHdoaWxlIChbX3RleHRUYWJsZXMgY291bnRdID4g
W190ZXh0QmxvY2tzIGNvdW50XSkKICAgICAgICAgICAgIF9hZGRUYWJsZUNlbGxGb3JFbGVtZW50
KG5pbCk7CiAgICAgICAgIF9hZGRUYWJsZUZvckVsZW1lbnQodGFibGVFbGVtZW50KTsKLSAgICB9
IGVsc2UgaWYgKFtAInRhYmxlLWZvb3Rlci1ncm91cCIgaXNFcXVhbFRvU3RyaW5nOmRpc3BsYXlW
YWxdICYmIFtfdGV4dFRhYmxlcyBjb3VudF0gPiAwKSB7CisgICAgfSBlbHNlIGlmIChkaXNwbGF5
VmFsdWUgPT0gInRhYmxlLWZvb3Rlci1ncm91cCIgJiYgW190ZXh0VGFibGVzIGNvdW50XSA+IDAp
IHsKICAgICAgICAgW190ZXh0VGFibGVGb290ZXJzIHNldE9iamVjdDplbGVtZW50IGZvcktleTpb
TlNWYWx1ZSB2YWx1ZVdpdGhOb25yZXRhaW5lZE9iamVjdDpbX3RleHRUYWJsZXMgbGFzdE9iamVj
dF1dXTsKICAgICAgICAgcmV0dmFsID0gTk87Ci0gICAgfSBlbHNlIGlmIChbQCJ0YWJsZS1yb3ci
IGlzRXF1YWxUb1N0cmluZzpkaXNwbGF5VmFsXSAmJiBbX3RleHRUYWJsZXMgY291bnRdID4gMCkg
eworICAgIH0gZWxzZSBpZiAoZGlzcGxheVZhbHVlID09ICJ0YWJsZS1yb3ciICYmIFtfdGV4dFRh
YmxlcyBjb3VudF0gPiAwKSB7CiAgICAgICAgIFBsYXRmb3JtQ29sb3IgKmNvbG9yID0gX2NvbG9y
Rm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAgICAgICAgIGlm
ICghY29sb3IpIGNvbG9yID0gW1BsYXRmb3JtQ29sb3JDbGFzcyBjbGVhckNvbG9yXTsKICAgICAg
ICAgW190ZXh0VGFibGVSb3dCYWNrZ3JvdW5kQ29sb3JzIGFkZE9iamVjdDpjb2xvcl07Ci0gICAg
fSBlbHNlIGlmIChbQCJ0YWJsZS1jZWxsIiBpc0VxdWFsVG9TdHJpbmc6ZGlzcGxheVZhbF0pIHsK
KyAgICB9IGVsc2UgaWYgKGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY2VsbCIpIHsKICAgICAgICAg
d2hpbGUgKFtfdGV4dFRhYmxlcyBjb3VudF0gPCBbX3RleHRCbG9ja3MgY291bnRdICsgMSkKICAg
ICAgICAgICAgIF9hZGRUYWJsZUZvckVsZW1lbnQobmlsKTsKICAgICAgICAgX2FkZFRhYmxlQ2Vs
bEZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChbQCJJTUciIGlzRXF1YWxUb1N0
cmluZzp0YWddKSB7CisgICAgfSBlbHNlIGlmIChjb3JlRWxlbWVudC5oYXNUYWdOYW1lKGltZ1Rh
ZykpIHsKICAgICAgICAgTlNTdHJpbmcgKnVybFN0cmluZyA9IFtlbGVtZW50IGdldEF0dHJpYnV0
ZTpAInNyYyJdOwogICAgICAgICBpZiAodXJsU3RyaW5nICYmIFt1cmxTdHJpbmcgbGVuZ3RoXSA+
IDApIHsKICAgICAgICAgICAgIE5TVVJMICp1cmwgPSBjb3JlKFtlbGVtZW50IG93bmVyRG9jdW1l
bnRdKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVybFN0
cmluZykpOwpAQCAtMTkzNyw3ICsxOTU5LDcgQEAKICAgICAgICAgICAgICAgICBfYWRkQXR0YWNo
bWVudEZvckVsZW1lbnQoZWxlbWVudCwgdXJsLCBpc0Jsb2NrTGV2ZWwsIHVzZVBsYWNlaG9sZGVy
SW1hZ2UpOwogICAgICAgICB9CiAgICAgICAgIHJldHZhbCA9IE5POwotICAgIH0gZWxzZSBpZiAo
W0AiT0JKRUNUIiBpc0VxdWFsVG9TdHJpbmc6dGFnXSkgeworICAgIH0gZWxzZSBpZiAoY29yZUVs
ZW1lbnQuaGFzVGFnTmFtZShvYmplY3RUYWcpKSB7CiAgICAgICAgIE5TU3RyaW5nICpiYXNlU3Ry
aW5nID0gW2VsZW1lbnQgZ2V0QXR0cmlidXRlOkAiY29kZWJhc2UiXTsKICAgICAgICAgTlNTdHJp
bmcgKnVybFN0cmluZyA9IFtlbGVtZW50IGdldEF0dHJpYnV0ZTpAImRhdGEiXTsKICAgICAgICAg
TlNTdHJpbmcgKmRlY2xhcmVTdHJpbmcgPSBbZWxlbWVudCBnZXRBdHRyaWJ1dGU6QCJkZWNsYXJl
Il07CkBAIC0xOTU4LDE0ICsxOTgwLDE0IEBACiAgICAgICAgICAgICBpZiAodXJsKQogICAgICAg
ICAgICAgICAgIHJldHZhbCA9ICFfYWRkQXR0YWNobWVudEZvckVsZW1lbnQoZWxlbWVudCwgdXJs
LCBpc0Jsb2NrTGV2ZWwsIE5PKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoW0AiRlJBTUUi
IGlzRXF1YWxUb1N0cmluZzp0YWddKSB7CisgICAgfSBlbHNlIGlmIChjb3JlRWxlbWVudC5oYXNU
YWdOYW1lKGZyYW1lVGFnKSkgewogICAgICAgICBpZiAoW2VsZW1lbnQgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihjb250ZW50RG9jdW1lbnQpXSkgewogICAgICAgICAgICAgRE9NRG9jdW1l
bnQgKmNvbnRlbnREb2N1bWVudCA9IFsoRE9NSFRNTEZyYW1lRWxlbWVudCAqKWVsZW1lbnQgY29u
dGVudERvY3VtZW50XTsKICAgICAgICAgICAgIGlmIChjb250ZW50RG9jdW1lbnQpCiAgICAgICAg
ICAgICAgICAgX3RyYXZlcnNlTm9kZShjb250ZW50RG9jdW1lbnQsIGRlcHRoICsgMSwgWUVTKTsK
ICAgICAgICAgfQogICAgICAgICByZXR2YWwgPSBOTzsKLSAgICB9IGVsc2UgaWYgKFtAIklGUkFN
RSIgaXNFcXVhbFRvU3RyaW5nOnRhZ10pIHsKKyAgICB9IGVsc2UgaWYgKGNvcmVFbGVtZW50Lmhh
c1RhZ05hbWUoaWZyYW1lVGFnKSkgewogICAgICAgICBpZiAoW2VsZW1lbnQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihjb250ZW50RG9jdW1lbnQpXSkgewogICAgICAgICAgICAgRE9NRG9j
dW1lbnQgKmNvbnRlbnREb2N1bWVudCA9IFsoRE9NSFRNTElGcmFtZUVsZW1lbnQgKillbGVtZW50
IGNvbnRlbnREb2N1bWVudF07CiAgICAgICAgICAgICBpZiAoY29udGVudERvY3VtZW50KSB7CkBA
IC0xOTczLDcgKzE5OTUsNyBAQAogICAgICAgICAgICAgICAgIHJldHZhbCA9IE5POwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChbQCJCUiIgaXNFcXVhbFRvU3RyaW5n
OnRhZ10pIHsKKyAgICB9IGVsc2UgaWYgKGNvcmVFbGVtZW50Lmhhc1RhZ05hbWUoYnJUYWcpKSB7
CiAgICAgICAgIERPTUVsZW1lbnQgKmJsb2NrRWxlbWVudCA9IF9ibG9ja0xldmVsRWxlbWVudEZv
ck5vZGUoW2VsZW1lbnQgcGFyZW50Tm9kZV0pOwogICAgICAgICBOU1N0cmluZyAqYnJlYWtDbGFz
cyA9IFtlbGVtZW50IGdldEF0dHJpYnV0ZTpAImNsYXNzIl0sICpibG9ja1RhZyA9IFtibG9ja0Vs
ZW1lbnQgdGFnTmFtZV07CiAgICAgICAgIEJPT0wgaXNFeHRyYUJyZWFrID0gW0AiQXBwbGUtaW50
ZXJjaGFuZ2UtbmV3bGluZSIgaXNFcXVhbFRvU3RyaW5nOmJyZWFrQ2xhc3NdLCBibG9ja0VsZW1l
bnRJc1BhcmFncmFwaCA9IChbQCJQIiBpc0VxdWFsVG9TdHJpbmc6YmxvY2tUYWddIHx8IFtAIkxJ
IiBpc0VxdWFsVG9TdHJpbmc6YmxvY2tUYWddIHx8IChbYmxvY2tUYWcgaGFzUHJlZml4OkAiSCJd
ICYmIDIgPT0gW2Jsb2NrVGFnIGxlbmd0aF0pKTsKQEAgLTE5ODMsMzUgKzIwMDUsMzUgQEAKICAg
ICAgICAgICAgIGlmIChibG9ja0VsZW1lbnQgJiYgYmxvY2tFbGVtZW50SXNQYXJhZ3JhcGgpCiAg
ICAgICAgICAgICAgICAgX25ld0xpbmVGb3JFbGVtZW50KGVsZW1lbnQpOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIF9uZXdQYXJhZ3JhcGhGb3JFbGVtZW50KGVsZW1lbnQsIHRh
ZywgWUVTLCBOTyk7CisgICAgICAgICAgICAgICAgX25ld1BhcmFncmFwaEZvckVsZW1lbnQoZWxl
bWVudCwgW2VsZW1lbnQgdGFnTmFtZV0sIFlFUywgTk8pOwogICAgICAgICB9Ci0gICAgfSBlbHNl
IGlmIChbQCJVTCIgaXNFcXVhbFRvU3RyaW5nOnRhZ10pIHsKKyAgICB9IGVsc2UgaWYgKGNvcmVF
bGVtZW50Lmhhc1RhZ05hbWUodWxUYWcpKSB7CiAgICAgICAgIFJldGFpblB0cjxOU1RleHRMaXN0
PiBsaXN0OwotICAgICAgICBOU1N0cmluZyAqbGlzdFN0eWxlVHlwZSA9IF9zdHJpbmdGb3JOb2Rl
KGVsZW1lbnQsIENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSk7Ci0gICAgICAgIGlmICghbGlzdFN0
eWxlVHlwZSB8fCBbbGlzdFN0eWxlVHlwZSBsZW5ndGhdID09IDApCisgICAgICAgIFN0cmluZyBs
aXN0U3R5bGVUeXBlID0gX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZvck5vZGUoY29yZUVsZW1lbnQs
IENTU1Byb3BlcnR5TGlzdFN0eWxlVHlwZSk7CisgICAgICAgIGlmICghbGlzdFN0eWxlVHlwZS5s
ZW5ndGgoKSkKICAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBAImRpc2MiOwotICAgICAgICBs
aXN0ID0gYWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0TGlzdCBhbGxvY10gaW5pdFdpdGhNYXJrZXJG
b3JtYXQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7JUB9IiwgbGlzdFN0eWxlVHlwZV0g
b3B0aW9uczowXSk7CisgICAgICAgIGxpc3QgPSBhZG9wdE5TKFtbUGxhdGZvcm1OU1RleHRMaXN0
IGFsbG9jXSBpbml0V2l0aE1hcmtlckZvcm1hdDpTdHJpbmcoInsiICsgbGlzdFN0eWxlVHlwZSAr
ICJ9Iikgb3B0aW9uczowXSk7CiAgICAgICAgIFtfdGV4dExpc3RzIGFkZE9iamVjdDpsaXN0Lmdl
dCgpXTsKLSAgICB9IGVsc2UgaWYgKFtAIk9MIiBpc0VxdWFsVG9TdHJpbmc6dGFnXSkgeworICAg
IH0gZWxzZSBpZiAoY29yZUVsZW1lbnQuaGFzVGFnTmFtZShvbFRhZykpIHsKICAgICAgICAgUmV0
YWluUHRyPE5TVGV4dExpc3Q+IGxpc3Q7Ci0gICAgICAgIE5TU3RyaW5nICpsaXN0U3R5bGVUeXBl
ID0gX3N0cmluZ0Zvck5vZGUoZWxlbWVudCwgQ1NTUHJvcGVydHlMaXN0U3R5bGVUeXBlKTsKLSAg
ICAgICAgaWYgKCFsaXN0U3R5bGVUeXBlIHx8IFtsaXN0U3R5bGVUeXBlIGxlbmd0aF0gPT0gMCkK
LSAgICAgICAgICAgIGxpc3RTdHlsZVR5cGUgPSBAImRlY2ltYWwiOwotICAgICAgICBsaXN0ID0g
YWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0TGlzdCBhbGxvY10gaW5pdFdpdGhNYXJrZXJGb3JtYXQ6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJ7JUB9LiIsIGxpc3RTdHlsZVR5cGVdIG9wdGlv
bnM6MF0pOworICAgICAgICBTdHJpbmcgbGlzdFN0eWxlVHlwZSA9IF9jYWNoZXMtPnByb3BlcnR5
VmFsdWVGb3JOb2RlKGNvcmVFbGVtZW50LCBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGUpOworICAg
ICAgICBpZiAoIWxpc3RTdHlsZVR5cGUubGVuZ3RoKCkpCisgICAgICAgICAgICBsaXN0U3R5bGVU
eXBlID0gImRlY2ltYWwiOworICAgICAgICBsaXN0ID0gYWRvcHROUyhbW1BsYXRmb3JtTlNUZXh0
TGlzdCBhbGxvY10gaW5pdFdpdGhNYXJrZXJGb3JtYXQ6U3RyaW5nKCJ7IiArIGxpc3RTdHlsZVR5
cGUgKyAifSIpIG9wdGlvbnM6MF0pOwogICAgICAgICBpZiAoW2VsZW1lbnQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzdGFydCldKSB7CiAgICAgICAgICAgICBOU0ludGVnZXIgc3RhcnRp
bmdJdGVtTnVtYmVyID0gWyhET01IVE1MT0xpc3RFbGVtZW50ICopZWxlbWVudCBzdGFydF07CiAg
ICAgICAgICAgICBbbGlzdCBzZXRTdGFydGluZ0l0ZW1OdW1iZXI6c3RhcnRpbmdJdGVtTnVtYmVy
XTsKICAgICAgICAgfQogICAgICAgICBbX3RleHRMaXN0cyBhZGRPYmplY3Q6bGlzdC5nZXQoKV07
Ci0gICAgfSBlbHNlIGlmIChbQCJRIiBpc0VxdWFsVG9TdHJpbmc6dGFnXSkgeworICAgIH0gZWxz
ZSBpZiAoY29yZUVsZW1lbnQuaGFzVGFnTmFtZShxVGFnKSkgewogICAgICAgICBfYWRkUXVvdGVG
b3JFbGVtZW50KGVsZW1lbnQsIFlFUywgX3F1b3RlTGV2ZWwrKyk7Ci0gICAgfSBlbHNlIGlmIChb
QCJJTlBVVCIgaXNFcXVhbFRvU3RyaW5nOnRhZ10pIHsKKyAgICB9IGVsc2UgaWYgKGNvcmVFbGVt
ZW50Lmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7CiAgICAgICAgIGlmIChbZWxlbWVudCByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHR5cGUpXSAmJiBbZWxlbWVudCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHZhbHVlKV0gJiYgW0AidGV4dCIgY29tcGFyZTpbKERPTUhUTUxJbnB1dEVs
ZW1lbnQgKillbGVtZW50IHR5cGVdIG9wdGlvbnM6TlNDYXNlSW5zZW5zaXRpdmVTZWFyY2hdID09
IE5TT3JkZXJlZFNhbWUpIHsKICAgICAgICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IFsoRE9NSFRN
TElucHV0RWxlbWVudCAqKWVsZW1lbnQgdmFsdWVdOwogICAgICAgICAgICAgaWYgKHZhbHVlICYm
IFt2YWx1ZSBsZW5ndGhdID4gMCkKICAgICAgICAgICAgICAgICBfYWRkVmFsdWUodmFsdWUsIGVs
ZW1lbnQpOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChbQCJURVhUQVJFQSIgaXNFcXVhbFRv
U3RyaW5nOnRhZ10pIHsKKyAgICB9IGVsc2UgaWYgKGNvcmVFbGVtZW50Lmhhc1RhZ05hbWUodGV4
dGFyZWFUYWcpKSB7CiAgICAgICAgIGlmIChbZWxlbWVudCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHZhbHVlKV0pIHsKICAgICAgICAgICAgIE5TU3RyaW5nICp2YWx1ZSA9IFsoRE9NSFRN
TFRleHRBcmVhRWxlbWVudCAqKWVsZW1lbnQgdmFsdWVdOwogICAgICAgICAgICAgaWYgKHZhbHVl
ICYmIFt2YWx1ZSBsZW5ndGhdID4gMCkKQEAgLTIxMDksMTAgKzIxMzEsMTMgQEAKICAgICB9CiB9
CiAKLXZvaWQgSFRNTENvbnZlcnRlcjo6X2V4aXRFbGVtZW50KERPTUVsZW1lbnQgKmVsZW1lbnQs
IE5TU3RyaW5nICp0YWcsIE5TU3RyaW5nICpkaXNwbGF5VmFsLCBOU0ludGVnZXIgZGVwdGgsIE5T
VUludGVnZXIgc3RhcnRJbmRleCkKK3ZvaWQgSFRNTENvbnZlcnRlcjo6X2V4aXRFbGVtZW50KERP
TUVsZW1lbnQgKmVsZW1lbnQsIE5TSW50ZWdlciBkZXB0aCwgTlNVSW50ZWdlciBzdGFydEluZGV4
KQogeworICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBFbGVtZW50JiBjb3JlRWxlbWVudCA9ICpj
b3JlKGVsZW1lbnQpOworICAgIFN0cmluZyBkaXNwbGF5VmFsdWUgPSBfY2FjaGVzLT5wcm9wZXJ0
eVZhbHVlRm9yTm9kZShjb3JlRWxlbWVudCwgQ1NTUHJvcGVydHlEaXNwbGF5KTsKICAgICBOU1Jh
bmdlIHJhbmdlID0gTlNNYWtlUmFuZ2Uoc3RhcnRJbmRleCwgW19hdHRyU3RyIGxlbmd0aF0gLSBz
dGFydEluZGV4KTsKLSAgICBpZiAocmFuZ2UubGVuZ3RoID4gMCAmJiBbQCJBIiBpc0VxdWFsVG9T
dHJpbmc6dGFnXSkgeworICAgIGlmIChyYW5nZS5sZW5ndGggPiAwICYmIGNvcmVFbGVtZW50Lmhh
c1RhZ05hbWUoYVRhZykpIHsKICAgICAgICAgTlNTdHJpbmcgKnVybFN0cmluZyA9IFtlbGVtZW50
IGdldEF0dHJpYnV0ZTpAImhyZWYiXTsKICAgICAgICAgTlNTdHJpbmcgKnN0cmlwcGVkU3RyaW5n
ID0gW3VybFN0cmluZyBzdHJpbmdCeVRyaW1taW5nQ2hhcmFjdGVyc0luU2V0OltOU0NoYXJhY3Rl
clNldCB3aGl0ZXNwYWNlQW5kTmV3bGluZUNoYXJhY3RlclNldF1dOwogICAgICAgICBpZiAodXJs
U3RyaW5nICYmIFt1cmxTdHJpbmcgbGVuZ3RoXSA+IDAgJiYgc3RyaXBwZWRTdHJpbmcgJiYgW3N0
cmlwcGVkU3RyaW5nIGxlbmd0aF0gPiAwICYmICFbc3RyaXBwZWRTdHJpbmcgaGFzUHJlZml4OkAi
IyJdKSB7CkBAIC0yMTI2LDIxICsyMTUxLDIwIEBACiAgICAgfQogICAgIGlmICghX2ZsYWdzLnJl
YWNoZWRFbmQgJiYgX2VsZW1lbnRJc0Jsb2NrTGV2ZWwoZWxlbWVudCkpIHsKICAgICAgICAgW193
cml0aW5nRGlyZWN0aW9uQXJyYXkgcmVtb3ZlQWxsT2JqZWN0c107Ci0gICAgICAgIGlmIChbQCJ0
YWJsZS1jZWxsIiBpc0VxdWFsVG9TdHJpbmc6ZGlzcGxheVZhbF0gJiYgW190ZXh0QmxvY2tzIGNv
dW50XSA9PSAwKSB7CisgICAgICAgIGlmIChkaXNwbGF5VmFsdWUgPT0gInRhYmxlLWNlbGwiICYm
IFtfdGV4dEJsb2NrcyBjb3VudF0gPT0gMCkgewogICAgICAgICAgICAgX25ld1RhYkZvckVsZW1l
bnQoZWxlbWVudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoW190ZXh0TGlzdHMgY291bnRdID4gMCAm
JiBbQCJibG9jayIgaXNFcXVhbFRvU3RyaW5nOmRpc3BsYXlWYWxdICYmICFbQCJMSSIgaXNFcXVh
bFRvU3RyaW5nOnRhZ10gJiYgIVtAIlVMIiBpc0VxdWFsVG9TdHJpbmc6dGFnXSAmJiAhW0AiT0wi
IGlzRXF1YWxUb1N0cmluZzp0YWddKSB7CisgICAgICAgIH0gZWxzZSBpZiAoW190ZXh0TGlzdHMg
Y291bnRdID4gMCAmJiBkaXNwbGF5VmFsdWUgPT0gImJsb2NrIiAmJiAhY29yZUVsZW1lbnQuaGFz
VGFnTmFtZShsaVRhZykgJiYgIWNvcmVFbGVtZW50Lmhhc1RhZ05hbWUodWxUYWcpICYmICFjb3Jl
RWxlbWVudC5oYXNUYWdOYW1lKG9sVGFnKSkgewogICAgICAgICAgICAgX25ld0xpbmVGb3JFbGVt
ZW50KGVsZW1lbnQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgX25ld1BhcmFncmFw
aEZvckVsZW1lbnQoZWxlbWVudCwgdGFnLCAocmFuZ2UubGVuZ3RoID09IDApLCBZRVMpOworICAg
ICAgICAgICAgX25ld1BhcmFncmFwaEZvckVsZW1lbnQoZWxlbWVudCwgW2VsZW1lbnQgdGFnTmFt
ZV0sIChyYW5nZS5sZW5ndGggPT0gMCksIFlFUyk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KFtfd3JpdGluZ0RpcmVjdGlvbkFycmF5IGNvdW50XSA+IDApIHsKLSAgICAgICAgTlNTdHJpbmcg
KmJpZGkgPSBfc3RyaW5nRm9yTm9kZShlbGVtZW50LCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpKTsK
LSAgICAgICAgaWYgKGJpZGkgJiYgKFtiaWRpIGlzRXF1YWxUb1N0cmluZzpAImVtYmVkIl0gfHwg
W2JpZGkgaXNFcXVhbFRvU3RyaW5nOkAiYmlkaS1vdmVycmlkZSJdKSkgeworICAgICAgICBTdHJp
bmcgYmlkaSA9IF9jYWNoZXMtPnByb3BlcnR5VmFsdWVGb3JOb2RlKGNvcmVFbGVtZW50LCBDU1NQ
cm9wZXJ0eVVuaWNvZGVCaWRpKTsKKyAgICAgICAgaWYgKGJpZGkgPT0gImVtYmVkIiB8fCBiaWRp
ID09ICJiaWRpLW92ZXJyaWRlIikKICAgICAgICAgICAgIFtfd3JpdGluZ0RpcmVjdGlvbkFycmF5
IHJlbW92ZUxhc3RPYmplY3RdOwotICAgICAgICB9CiAgICAgfQogICAgIHJhbmdlID0gTlNNYWtl
UmFuZ2Uoc3RhcnRJbmRleCwgW19hdHRyU3RyIGxlbmd0aF0gLSBzdGFydEluZGV4KTsKLSAgICBp
ZiAoW0AidGFibGUiIGlzRXF1YWxUb1N0cmluZzpkaXNwbGF5VmFsXSAmJiBbX3RleHRUYWJsZXMg
Y291bnRdID4gMCkgeworICAgIGlmIChkaXNwbGF5VmFsdWUgPT0gInRhYmxlIiAmJiBbX3RleHRU
YWJsZXMgY291bnRdID4gMCkgewogICAgICAgICBOU1ZhbHVlICprZXkgPSBbTlNWYWx1ZSB2YWx1
ZVdpdGhOb25yZXRhaW5lZE9iamVjdDpbX3RleHRUYWJsZXMgbGFzdE9iamVjdF1dOwogICAgICAg
ICBET01Ob2RlICpmb290ZXIgPSBbX3RleHRUYWJsZUZvb3RlcnMgb2JqZWN0Rm9yS2V5OmtleV07
CiAgICAgICAgIHdoaWxlIChbX3RleHRUYWJsZXMgY291bnRdIDwgW190ZXh0QmxvY2tzIGNvdW50
XSArIDEpCkBAIC0yMTU0LDcgKzIxNzgsNyBAQAogICAgICAgICBbX3RleHRUYWJsZVBhZGRpbmdz
IHJlbW92ZUxhc3RPYmplY3RdOwogICAgICAgICBbX3RleHRUYWJsZVJvd3MgcmVtb3ZlTGFzdE9i
amVjdF07CiAgICAgICAgIFtfdGV4dFRhYmxlUm93QXJyYXlzIHJlbW92ZUxhc3RPYmplY3RdOwot
ICAgIH0gZWxzZSBpZiAoW0AidGFibGUtcm93IiBpc0VxdWFsVG9TdHJpbmc6ZGlzcGxheVZhbF0g
JiYgW190ZXh0VGFibGVzIGNvdW50XSA+IDApIHsKKyAgICB9IGVsc2UgaWYgKGRpc3BsYXlWYWx1
ZSA9PSAidGFibGUtcm93IiAmJiBbX3RleHRUYWJsZXMgY291bnRdID4gMCkgewogICAgICAgICBO
U1RleHRUYWJsZSAqdGFibGUgPSBbX3RleHRUYWJsZXMgbGFzdE9iamVjdF07CiAgICAgICAgIE5T
VGV4dFRhYmxlQmxvY2sgKmJsb2NrOwogICAgICAgICBOU011dGFibGVBcnJheSAqcm93QXJyYXkg
PSBbX3RleHRUYWJsZVJvd0FycmF5cyBsYXN0T2JqZWN0XSwgKnByZXZpb3VzUm93QXJyYXk7CkBA
IC0yMTg3LDcgKzIyMTEsNyBAQAogICAgICAgICBbX3RleHRUYWJsZVJvd0FycmF5cyBhZGRPYmpl
Y3Q6cm93QXJyYXldOwogICAgICAgICBpZiAoW190ZXh0VGFibGVSb3dCYWNrZ3JvdW5kQ29sb3Jz
IGNvdW50XSA+IDApCiAgICAgICAgICAgICBbX3RleHRUYWJsZVJvd0JhY2tncm91bmRDb2xvcnMg
cmVtb3ZlTGFzdE9iamVjdF07Ci0gICAgfSBlbHNlIGlmIChbQCJ0YWJsZS1jZWxsIiBpc0VxdWFs
VG9TdHJpbmc6ZGlzcGxheVZhbF0gJiYgW190ZXh0QmxvY2tzIGNvdW50XSA+IDApIHsKKyAgICB9
IGVsc2UgaWYgKGRpc3BsYXlWYWx1ZSA9PSAidGFibGUtY2VsbCIgJiYgW190ZXh0QmxvY2tzIGNv
dW50XSA+IDApIHsKICAgICAgICAgd2hpbGUgKFtfdGV4dFRhYmxlcyBjb3VudF0gPiBbX3RleHRC
bG9ja3MgY291bnRdKSB7CiAgICAgICAgICAgICBbX3RleHRUYWJsZXMgcmVtb3ZlTGFzdE9iamVj
dF07CiAgICAgICAgICAgICBbX3RleHRUYWJsZVNwYWNpbmdzIHJlbW92ZUxhc3RPYmplY3RdOwpA
QCAtMjE5NiwxMyArMjIyMCwxMyBAQAogICAgICAgICAgICAgW190ZXh0VGFibGVSb3dBcnJheXMg
cmVtb3ZlTGFzdE9iamVjdF07CiAgICAgICAgIH0KICAgICAgICAgW190ZXh0QmxvY2tzIHJlbW92
ZUxhc3RPYmplY3RdOwotICAgIH0gZWxzZSBpZiAoKFtAIlVMIiBpc0VxdWFsVG9TdHJpbmc6dGFn
XSB8fCBbQCJPTCIgaXNFcXVhbFRvU3RyaW5nOnRhZ10pICYmIFtfdGV4dExpc3RzIGNvdW50XSA+
IDApIHsKKyAgICB9IGVsc2UgaWYgKChjb3JlRWxlbWVudC5oYXNUYWdOYW1lKHVsVGFnKSB8fCBj
b3JlRWxlbWVudC5oYXNUYWdOYW1lKG9sVGFnKSkgJiYgW190ZXh0TGlzdHMgY291bnRdID4gMCkg
ewogICAgICAgICBOU1RleHRMaXN0ICpsaXN0ID0gW190ZXh0TGlzdHMgbGFzdE9iamVjdF07CiAg
ICAgICAgIF9hZGRNYXJrZXJzVG9MaXN0KGxpc3QsIHJhbmdlKTsKICAgICAgICAgW190ZXh0TGlz
dHMgcmVtb3ZlTGFzdE9iamVjdF07Ci0gICAgfSBlbHNlIGlmIChbQCJRIiBpc0VxdWFsVG9TdHJp
bmc6dGFnXSkgeworICAgIH0gZWxzZSBpZiAoY29yZUVsZW1lbnQuaGFzVGFnTmFtZShxVGFnKSkg
ewogICAgICAgICBfYWRkUXVvdGVGb3JFbGVtZW50KGVsZW1lbnQsIE5PLCAtLV9xdW90ZUxldmVs
KTsKLSAgICB9IGVsc2UgaWYgKFtAIlNQQU4iIGlzRXF1YWxUb1N0cmluZzp0YWddKSB7CisgICAg
fSBlbHNlIGlmIChjb3JlRWxlbWVudC5oYXNUYWdOYW1lKHNwYW5UYWcpKSB7CiAgICAgICAgIE5T
U3RyaW5nICpjbGFzc05hbWUgPSBbZWxlbWVudCBnZXRBdHRyaWJ1dGU6QCJjbGFzcyJdOwogICAg
ICAgICBOU011dGFibGVTdHJpbmcgKm11dGFibGVTdHJpbmc7CiAgICAgICAgIE5TVUludGVnZXIg
aSwgY291bnQgPSAwOwpAQCAtMjI0NSwxMCArMjI2OSwxMCBAQAogCiB2b2lkIEhUTUxDb252ZXJ0
ZXI6Ol9wcm9jZXNzVGV4dChET01DaGFyYWN0ZXJEYXRhICp0ZXh0KQogeworICAgIEFTU0VSVCh0
ZXh0KTsKKyAgICBDaGFyYWN0ZXJEYXRhJiBjaGFyYWN0ZXJEYXRhID0gKmNvcmUodGV4dCk7CiAg
ICAgTlNTdHJpbmcgKmluc3RyID0gW3RleHQgZGF0YV07CiAgICAgTlNTdHJpbmcgKm91dHN0ciA9
IGluc3RyOwotICAgIE5TU3RyaW5nICp3aGl0ZXNwYWNlVmFsOwotICAgIE5TU3RyaW5nICp0cmFu
c2Zvcm1WYWw7CiAgICAgTlNVSW50ZWdlciB0ZXh0TGVuZ3RoID0gW19hdHRyU3RyIGxlbmd0aF07
CiAgICAgTlNVSW50ZWdlciBzdGFydE9mZnNldCA9IDA7CiAgICAgTlNVSW50ZWdlciBlbmRPZmZz
ZXQgPSBbaW5zdHIgbGVuZ3RoXTsKQEAgLTIyNTgsOSArMjI4Miw3IEBACiAgICAgQk9PTCBzdXBw
cmVzc0xlYWRpbmdTcGFjZSA9ICgoX2ZsYWdzLmlzU29mdCAmJiBsYXN0Q2hhciA9PSAnICcpIHx8
IGxhc3RDaGFyID09ICdcbicgfHwgbGFzdENoYXIgPT0gJ1xyJyB8fCBsYXN0Q2hhciA9PSAnXHQn
IHx8IGxhc3RDaGFyID09IE5TUGFyYWdyYXBoU2VwYXJhdG9yQ2hhcmFjdGVyIHx8IGxhc3RDaGFy
ID09IE5TTGluZVNlcGFyYXRvckNoYXJhY3RlciB8fCBsYXN0Q2hhciA9PSBOU0Zvcm1GZWVkQ2hh
cmFjdGVyIHx8IGxhc3RDaGFyID09IFdlYk5leHRMaW5lQ2hhcmFjdGVyKTsKICAgICBOU1Jhbmdl
IHJhbmdlVG9SZXBsYWNlID0gTlNNYWtlUmFuZ2UodGV4dExlbmd0aCwgMCk7CiAgICAgQ0ZNdXRh
YmxlU3RyaW5nUmVmIG11dHN0ciA9IE5VTEw7Ci0gICAgd2hpdGVzcGFjZVZhbCA9IF9zdHJpbmdG
b3JOb2RlKHRleHQsIENTU1Byb3BlcnR5V2hpdGVTcGFjZSk7Ci0gICAgdHJhbnNmb3JtVmFsID0g
X3N0cmluZ0Zvck5vZGUodGV4dCwgQ1NTUHJvcGVydHlUZXh0VHJhbnNmb3JtKTsKLSAgICAKKwog
ICAgIGlmIChfZG9tUmFuZ2UpIHsKICAgICAgICAgaWYgKHRleHQgPT0gW19kb21SYW5nZSBzdGFy
dENvbnRhaW5lcl0pIHsKICAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gKE5TVUludGVnZXIpW19k
b21SYW5nZSBzdGFydE9mZnNldF07CkBAIC0yMjc2LDcgKzIyOTgsOCBAQAogICAgICAgICAgICAg
b3V0c3RyID0gaW5zdHI7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFt3aGl0ZXNwYWNlVmFs
IGhhc1ByZWZpeDpAInByZSJdKSB7CisKKyAgICBpZiAoX2NhY2hlcy0+cHJvcGVydHlWYWx1ZUZv
ck5vZGUoY2hhcmFjdGVyRGF0YSwgQ1NTUHJvcGVydHlXaGl0ZVNwYWNlKS5zdGFydHNXaXRoKCJw
cmUiKSkgewogICAgICAgICBpZiAodGV4dExlbmd0aCA+IDAgJiYgW2luc3RyIGxlbmd0aF0gPiAw
ICYmIF9mbGFncy5pc1NvZnQpIHsKICAgICAgICAgICAgIHVuaWNoYXIgYyA9IFtpbnN0ciBjaGFy
YWN0ZXJBdEluZGV4OjBdOwogICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJyB8fCBjID09ICdccicg
fHwgYyA9PSBOU1BhcmFncmFwaFNlcGFyYXRvckNoYXJhY3RlciB8fCBjID09IE5TTGluZVNlcGFy
YXRvckNoYXJhY3RlciB8fCBjID09IE5TRm9ybUZlZWRDaGFyYWN0ZXIgfHwgYyA9PSBXZWJOZXh0
TGluZUNoYXJhY3RlcikKQEAgLTIzMTMsMTIgKzIzMzYsMTYgQEAKICAgICAgICAgb3V0c3RyID0g
KE5TU3RyaW5nICopbXV0c3RyOwogICAgIH0KICAgICBpZiAoW291dHN0ciBsZW5ndGhdID4gMCkg
ewotICAgICAgICBpZiAoW0AiY2FwaXRhbGl6ZSIgaXNFcXVhbFRvU3RyaW5nOnRyYW5zZm9ybVZh
bF0pCi0gICAgICAgICAgICBvdXRzdHIgPSBbb3V0c3RyIGNhcGl0YWxpemVkU3RyaW5nXTsKLSAg
ICAgICAgZWxzZSBpZiAoW0AidXBwZXJjYXNlIiBpc0VxdWFsVG9TdHJpbmc6dHJhbnNmb3JtVmFs
XSkKLSAgICAgICAgICAgIG91dHN0ciA9IFtvdXRzdHIgdXBwZXJjYXNlU3RyaW5nXTsKLSAgICAg
ICAgZWxzZSBpZiAoW0AibG93ZXJjYXNlIiBpc0VxdWFsVG9TdHJpbmc6dHJhbnNmb3JtVmFsXSkK
LSAgICAgICAgICAgIG91dHN0ciA9IFtvdXRzdHIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICAgICAg
U3RyaW5nIHRleHRUcmFuc2Zvcm0gPSBfY2FjaGVzLT5wcm9wZXJ0eVZhbHVlRm9yTm9kZShjaGFy
YWN0ZXJEYXRhLCBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zvcm0pOworICAgICAgICBpZiAodGV4dFRy
YW5zZm9ybS5sZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKHRleHRUcmFuc2Zvcm0gPT0gImNh
cGl0YWxpemUiKQorICAgICAgICAgICAgICAgIG91dHN0ciA9IFtvdXRzdHIgY2FwaXRhbGl6ZWRT
dHJpbmddOworICAgICAgICAgICAgZWxzZSBpZiAodGV4dFRyYW5zZm9ybSA9PSAidXBwZXJjYXNl
IikKKyAgICAgICAgICAgICAgICBvdXRzdHIgPSBbb3V0c3RyIHVwcGVyY2FzZVN0cmluZ107Cisg
ICAgICAgICAgICBlbHNlIGlmICh0ZXh0VHJhbnNmb3JtID09ICJsb3dlcmNhc2UiKQorICAgICAg
ICAgICAgICAgIG91dHN0ciA9IFtvdXRzdHIgbG93ZXJjYXNlU3RyaW5nXTsKKyAgICAgICAgfQor
CiAgICAgICAgIFtfYXR0clN0ciByZXBsYWNlQ2hhcmFjdGVyc0luUmFuZ2U6cmFuZ2VUb1JlcGxh
Y2Ugd2l0aFN0cmluZzpvdXRzdHJdOwogICAgICAgICByYW5nZVRvUmVwbGFjZS5sZW5ndGggPSBb
b3V0c3RyIGxlbmd0aF07CiAgICAgICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGF0dHJzOwpA
QCAtMjM4OCwxMSArMjQxNSw5IEBACiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5vZGVUeXBl
ID09IERPTV9FTEVNRU5UX05PREUpIHsKICAgICAgICAgRE9NRWxlbWVudCAqZWxlbWVudCA9IChE
T01FbGVtZW50ICopbm9kZTsKLSAgICAgICAgTlNTdHJpbmcgKnRhZyA9IFtlbGVtZW50IHRhZ05h
bWVdOwotICAgICAgICBOU1N0cmluZyAqZGlzcGxheVZhbCA9IF9zdHJpbmdGb3JOb2RlKGVsZW1l
bnQsIENTU1Byb3BlcnR5RGlzcGxheSk7Ci0gICAgICAgIGlmIChfZW50ZXJFbGVtZW50KGVsZW1l
bnQsIHRhZywgZGlzcGxheVZhbCwgZW1iZWRkZWQpKSB7CisgICAgICAgIGlmIChfZW50ZXJFbGVt
ZW50KGVsZW1lbnQsIGVtYmVkZGVkKSkgewogICAgICAgICAgICAgTlNVSW50ZWdlciBzdGFydElu
ZGV4ID0gW19hdHRyU3RyIGxlbmd0aF07Ci0gICAgICAgICAgICBpZiAoX3Byb2Nlc3NFbGVtZW50
KGVsZW1lbnQsIHRhZywgZGlzcGxheVZhbCwgZGVwdGgpKSB7CisgICAgICAgICAgICBpZiAoX3By
b2Nlc3NFbGVtZW50KGVsZW1lbnQsIGRlcHRoKSkgewogICAgICAgICAgICAgICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGlzU3RhcnQgJiYgaSA9PSBzdGFydE9mZnNldCkKICAgICAgICAgICAgICAgICAgICAgICAgIF9k
b21SYW5nZVN0YXJ0SW5kZXggPSBbX2F0dHJTdHIgbGVuZ3RoXTsKQEAgLTI0MDMsNyArMjQyOCw3
IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChfZmxhZ3MucmVhY2hlZEVuZCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBfZXhpdEVsZW1lbnQoZWxlbWVudCwgdGFnLCBkaXNwbGF5VmFsLCBkZXB0aCwgc3RhcnRJbmRl
eCk7CisgICAgICAgICAgICAgICAgX2V4aXRFbGVtZW50KGVsZW1lbnQsIGRlcHRoLCBzdGFydElu
ZGV4KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobm9kZVR5cGUg
PT0gRE9NX1RFWFRfTk9ERSB8fCBub2RlVHlwZSA9PSBET01fQ0RBVEFfU0VDVElPTl9OT0RFKSB7
CkBAIC0yNDE4LDcgKzI0NDMsNiBAQAogewogICAgIERPTUVsZW1lbnQgKmVsZW1lbnQgPSAoRE9N
RWxlbWVudCAqKW5vZGU7CiAgICAgTlNBcnJheSAqY2hpbGROb2RlcyA9IF9jaGlsZHJlbkZvck5v
ZGUobm9kZSk7Ci0gICAgTlNTdHJpbmcgKnRhZyA9IEAiVEJPRFkiLCAqZGlzcGxheVZhbCA9IEAi
dGFibGUtcm93LWdyb3VwIjsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2NoaWxkTm9kZXMgY291
bnRdOwogICAgIE5TVUludGVnZXIgc3RhcnRPZmZzZXQgPSAwOwogICAgIE5TVUludGVnZXIgZW5k
T2Zmc2V0ID0gY291bnQ7CkBAIC0yNDQwLDkgKzI0NjQsOSBAQAogICAgICAgICAgICAgaXNFbmQg
PSBZRVM7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKF9lbnRlckVsZW1lbnQoZWxlbWVudCwg
dGFnLCBkaXNwbGF5VmFsLCBZRVMpKSB7CisgICAgaWYgKF9lbnRlckVsZW1lbnQoZWxlbWVudCwg
WUVTKSkgewogICAgICAgICBOU1VJbnRlZ2VyIHN0YXJ0SW5kZXggPSBbX2F0dHJTdHIgbGVuZ3Ro
XTsKLSAgICAgICAgaWYgKF9wcm9jZXNzRWxlbWVudChlbGVtZW50LCB0YWcsIGRpc3BsYXlWYWws
IGRlcHRoKSkgeworICAgICAgICBpZiAoX3Byb2Nlc3NFbGVtZW50KGVsZW1lbnQsIGRlcHRoKSkg
ewogICAgICAgICAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewog
ICAgICAgICAgICAgICAgIGlmIChpc1N0YXJ0ICYmIGkgPT0gc3RhcnRPZmZzZXQpCiAgICAgICAg
ICAgICAgICAgICAgIF9kb21SYW5nZVN0YXJ0SW5kZXggPSBbX2F0dHJTdHIgbGVuZ3RoXTsKQEAg
LTI0NTMsNyArMjQ3Nyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKF9mbGFncy5yZWFjaGVkRW5k
KQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IF9leGl0RWxlbWVudChlbGVtZW50LCB0YWcsIGRpc3BsYXlWYWwsIGRlcHRoLCBzdGFydEluZGV4
KTsKKyAgICAgICAgICAgIF9leGl0RWxlbWVudChlbGVtZW50LCBkZXB0aCwgc3RhcnRJbmRleCk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKGlzRW5kKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>