<?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>54528</bug_id>
          
          <creation_ts>2011-02-15 21:33:48 -0800</creation_ts>
          <short_desc>Deploy EditingStyle more in ApplyStyleCommand and do some cleanup</short_desc>
          <delta_ts>2011-02-21 19:57:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>49956</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>351874</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-15 21:33:48 -0800</bug_when>
    <thetext>This is a refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>351881</commentid>
    <comment_count>1</comment_count>
      <attachid>82589</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-15 21:55:42 -0800</bug_when>
    <thetext>Created attachment 82589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>354968</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-21 18:28:34 -0800</bug_when>
    <thetext>Committed r79278: &lt;http://trac.webkit.org/changeset/79278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355007</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-21 19:57:37 -0800</bug_when>
    <thetext>Thanks for the review, Darin.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82589</attachid>
            <date>2011-02-15 21:55:42 -0800</date>
            <delta_ts>2011-02-21 16:27:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-54528-20110216145540.patch</filename>
            <type>text/plain</type>
            <size>22587</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc4NjgyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDItMTUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVwbG95IEVkaXRpbmdTdHlsZSBtb3JlIGluIEFwcGx5U3R5bGVD
b21tYW5kIGFuZCBkbyBzb21lIGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU0NTI4CisKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVD
b21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2hhbmdlOjppbml0KTogQWxsb3dz
IHN0eWxlIHRvIGJlIGEgbnVsbCBwb2ludGVyLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHls
ZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUpOiBPdmVycmlkZXMgdGhlIHZhbHVlIG9mIHRleHQt
ZGVjb3JhdGlvbiBwcm9wZXJ0eSBieSB0aGF0IG9mCisgICAgICAgIC13ZWJraXQtdGV4dC1kZWNv
cmF0aW9ucy1pbi1lZmZlY3QgYW5kIHJlbW92ZSB0aGUgbGF0dGVyIHByb3BlcnR5IHdoZW4gcHJl
c2VudC4gVGhpcyBhbGxvd3MgcmVtb3ZlSW1wbGljaXRseVN0eWxlZEVsZW1lbnQKKyAgICAgICAg
dG8gaWdub3JlIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QuIEFsc28gdXNlcyB0
aGUgcmV0dXJuIHZhbHVlIG9mIEVkaXRpbmdTdHlsZTo6dGV4dERpcmVjdGlvbiB0byBkZXRlcm1p
bmUKKyAgICAgICAgd2hldGhlciBvciBub3Qgd2UgbmVlZCB0byBhcHBseSB1bmljb2RlLWJpZGkg
LyBkaXJlY3Rpb24gaW5zdGVhZCBvZiBkaXJlY3RseSBjaGVja2luZyB0aGUgdmFsdWUgb2YgdW5p
Y29kZS1iaWRpIHByb3BlcnR5LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6
OmZpeFJhbmdlQW5kQXBwbHlJbmxpbmVTdHlsZSk6IFRha2VzIEVkaXRpbmdTdHlsZSogaW5zdGVh
ZCBvZiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiouCisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9tUnVuQmVmb3Jl
QXBwbHlpbmdTdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1h
bmQ6OnJlbW92ZUNTU1N0eWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxl
Q29tbWFuZDo6aGlnaGVzdEFuY2VzdG9yV2l0aENvbmZsaWN0aW5nSW5saW5lU3R5bGUpOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0
eWxlQXJvdW5kTm9kZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1h
bmQ6OnJlbW92ZUlubGluZVN0eWxlKTogRGl0dG87IG5vIGxvbmdlciBjb2xsYXBzZSB0ZXh0IGRl
Y29yYXRpb24gcHJvcGVydGllcyBiZWNhdXNlCisgICAgICAgIEFwcGx5U3R5bGVDb21tYW5kOjph
cHBseUlubGluZVN0eWxlIGFscmVhZHkgZG9lcyBpdC4KKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5
U3R5bGVDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjp0ZXh0RGlyZWN0aW9uKTogRXhpdHMgZWFybHkg
d2hlbiBtX211dGFibGVTdHlsZSBpcyBudWxsLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0
eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyk6IEV4dHJhY3RlZCBmcm9tIEFw
cGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZS4KKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRpbmdTdHlsZS5oOgorCiAyMDExLTAyLTE1ICBBbWkgRmlzY2htYW4gIDxmaXNjaG1hbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2aXNpb24gNzg2
NTUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQyLDcgKzE0Miw3IEBAIFN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZShD
U1NTdHlsZURlY2xhcmEKIHZvaWQgU3R5bGVDaGFuZ2U6OmluaXQoUGFzc1JlZlB0cjxDU1NTdHls
ZURlY2xhcmF0aW9uPiBzdHlsZSwgY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IHBvc2l0aW9uLm5vZGUoKSA/IHBvc2l0aW9uLm5vZGUoKS0+ZG9j
dW1lbnQoKSA6IDA7Ci0gICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCisg
ICAgaWYgKCFzdHlsZSB8fCAhZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5mcmFtZSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21w
dXRlZFN0eWxlID0gcG9zaXRpb24uY29tcHV0ZWRTdHlsZSgpOwpAQCAtODU3LDcgKzg1Nyw5IEBA
IHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUKIHsKICAgICBOb2RlKiBz
dGFydER1bW15U3BhbkFuY2VzdG9yID0gMDsKICAgICBOb2RlKiBlbmREdW1teVNwYW5BbmNlc3Rv
ciA9IDA7Ci0gICAgCisKKyAgICBzdHlsZS0+Y29sbGFwc2VUZXh0RGVjb3JhdGlvblByb3BlcnRp
ZXMoKTsKKwogICAgIC8vIHVwZGF0ZSBkb2N1bWVudCBsYXlvdXQgb25jZSBiZWZvcmUgcmVtb3Zp
bmcgc3R5bGVzCiAgICAgLy8gc28gdGhhdCB3ZSBhdm9pZCB0aGUgZXhwZW5zZSBvZiB1cGRhdGlu
ZyBiZWZvcmUgZWFjaCBhbmQgZXZlcnkgY2FsbAogICAgIC8vIHRvIGNoZWNrIGEgY29tcHV0ZWQg
c3R5bGUKQEAgLTkwMiwxMyArOTA0LDExIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5
SW5saW5lU3R5bGUKICAgICAvLyBhbmQgcHJldmVudCB1cyBmcm9tIGFkZGluZyByZWR1bmRhbnQg
b25lcywgYXMgZGVzY3JpYmVkIGluOgogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zNzI0MzQ0PiBC
b2xkaW5nIGFuZCB1bmJvbGRpbmcgY3JlYXRlcyBleHRyYW5lb3VzIHRhZ3MKICAgICBQb3NpdGlv
biByZW1vdmVTdGFydCA9IHN0YXJ0LnVwc3RyZWFtKCk7Ci0gICAgaW50IHVuaWNvZGVCaWRpID0g
Z2V0SWRlbnRpZmllclZhbHVlKHN0eWxlLT5zdHlsZSgpLCBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRp
KTsKKyAgICBXcml0aW5nRGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBOYXR1cmFsV3JpdGluZ0Rp
cmVjdGlvbjsKKyAgICBib29sIGhhc1RleHREaXJlY3Rpb24gPSBzdHlsZS0+dGV4dERpcmVjdGlv
bih0ZXh0RGlyZWN0aW9uKTsKICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZVdpdGhvdXRF
bWJlZGRpbmc7CiAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gZW1iZWRkaW5nU3R5bGU7Ci0gICAg
aWYgKHVuaWNvZGVCaWRpKSB7Ci0gICAgICAgIFdyaXRpbmdEaXJlY3Rpb24gdGV4dERpcmVjdGlv
biA9IE5hdHVyYWxXcml0aW5nRGlyZWN0aW9uOwotICAgICAgICBzdHlsZS0+dGV4dERpcmVjdGlv
bih0ZXh0RGlyZWN0aW9uKTsKLQorICAgIGlmIChoYXNUZXh0RGlyZWN0aW9uKSB7CiAgICAgICAg
IC8vIExlYXZlIGFsb25lIGFuIGFuY2VzdG9yIHRoYXQgcHJvdmlkZXMgdGhlIGRlc2lyZWQgc2lu
Z2xlIGxldmVsIGVtYmVkZGluZywgaWYgdGhlcmUgaXMgb25lLgogICAgICAgICBIVE1MRWxlbWVu
dCogc3RhcnRVbnNwbGl0QW5jZXN0b3IgPSBzcGxpdEFuY2VzdG9yc1dpdGhVbmljb2RlQmlkaShz
dGFydC5ub2RlKCksIHRydWUsIHRleHREaXJlY3Rpb24pOwogICAgICAgICBIVE1MRWxlbWVudCog
ZW5kVW5zcGxpdEFuY2VzdG9yID0gc3BsaXRBbmNlc3RvcnNXaXRoVW5pY29kZUJpZGkoZW5kLm5v
ZGUoKSwgZmFsc2UsIHRleHREaXJlY3Rpb24pOwpAQCAtOTI5LDIxICs5MjksMTkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZQogICAgICAgICAgICAgZW1iZWRkaW5n
U3R5bGUgPSBzdHlsZVdpdGhvdXRFbWJlZGRpbmctPmV4dHJhY3RBbmRSZW1vdmVUZXh0RGlyZWN0
aW9uKCk7CiAKICAgICAgICAgICAgIGlmIChjb21wYXJlUG9zaXRpb25zKGVtYmVkZGluZ1JlbW92
ZVN0YXJ0LCBlbWJlZGRpbmdSZW1vdmVFbmQpIDw9IDApCi0gICAgICAgICAgICAgICAgcmVtb3Zl
SW5saW5lU3R5bGUoZW1iZWRkaW5nU3R5bGUtPnN0eWxlKCksIGVtYmVkZGluZ1JlbW92ZVN0YXJ0
LCBlbWJlZGRpbmdSZW1vdmVFbmQpOworICAgICAgICAgICAgICAgIHJlbW92ZUlubGluZVN0eWxl
KGVtYmVkZGluZ1N0eWxlLmdldCgpLCBlbWJlZGRpbmdSZW1vdmVTdGFydCwgZW1iZWRkaW5nUmVt
b3ZlRW5kKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJlbW92ZUlubGluZVN0eWxlKHN0eWxl
V2l0aG91dEVtYmVkZGluZyA/IHN0eWxlV2l0aG91dEVtYmVkZGluZy0+c3R5bGUoKSA6IHN0eWxl
LT5zdHlsZSgpLCByZW1vdmVTdGFydCwgZW5kKTsKKyAgICByZW1vdmVJbmxpbmVTdHlsZShzdHls
ZVdpdGhvdXRFbWJlZGRpbmcgPyBzdHlsZVdpdGhvdXRFbWJlZGRpbmcuZ2V0KCkgOiBzdHlsZSwg
cmVtb3ZlU3RhcnQsIGVuZCk7CiAgICAgc3RhcnQgPSBzdGFydFBvc2l0aW9uKCk7CiAgICAgZW5k
ID0gZW5kUG9zaXRpb24oKTsKICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgc3RhcnQuaXNPcnBo
YW4oKSB8fCBlbmQuaXNOdWxsKCkgfHwgZW5kLmlzT3JwaGFuKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChzcGxpdFN0YXJ0KSB7Ci0gICAgICAgIGlmIChtZXJnZVN0YXJ0V2l0aFByZXZp
b3VzSWZJZGVudGljYWwoc3RhcnQsIGVuZCkpIHsKLSAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnRQ
b3NpdGlvbigpOwotICAgICAgICAgICAgZW5kID0gZW5kUG9zaXRpb24oKTsKLSAgICAgICAgfQor
ICAgIGlmIChzcGxpdFN0YXJ0ICYmIG1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbChz
dGFydCwgZW5kKSkgeworICAgICAgICBzdGFydCA9IHN0YXJ0UG9zaXRpb24oKTsKKyAgICAgICAg
ZW5kID0gZW5kUG9zaXRpb24oKTsKICAgICB9CiAKICAgICBpZiAoc3BsaXRFbmQpIHsKQEAgLTk1
Nyw4ICs5NTUsOCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlCiAg
ICAgLy8gdG8gY2hlY2sgYSBjb21wdXRlZCBzdHlsZQogICAgIHVwZGF0ZUxheW91dCgpOwogCi0g
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZVRvQXBwbHkgPSBzdHls
ZS0+aXNFbXB0eSgpID8gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpIDogc3R5
bGUtPnN0eWxlKCk7Ci0gICAgaWYgKHVuaWNvZGVCaWRpKSB7CisgICAgUmVmUHRyPEVkaXRpbmdT
dHlsZT4gc3R5bGVUb0FwcGx5ID0gc3R5bGU7CisgICAgaWYgKGhhc1RleHREaXJlY3Rpb24pIHsK
ICAgICAgICAgLy8gQXZvaWQgYXBwbHlpbmcgdGhlIHVuaWNvZGUtYmlkaSBhbmQgZGlyZWN0aW9u
IHByb3BlcnRpZXMgYmVuZWF0aCBhbmNlc3RvcnMgdGhhdCBhbHJlYWR5IGhhdmUgdGhlbS4KICAg
ICAgICAgTm9kZSogZW1iZWRkaW5nU3RhcnROb2RlID0gaGlnaGVzdEVtYmVkZGluZ0FuY2VzdG9y
KHN0YXJ0Lm5vZGUoKSwgZW5jbG9zaW5nQmxvY2soc3RhcnQubm9kZSgpKSk7CiAgICAgICAgIE5v
ZGUqIGVtYmVkZGluZ0VuZE5vZGUgPSBoaWdoZXN0RW1iZWRkaW5nQW5jZXN0b3IoZW5kLm5vZGUo
KSwgZW5jbG9zaW5nQmxvY2soZW5kLm5vZGUoKSkpOwpAQCAtOTcyLDkgKzk3MCw5IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGUKICAgICAgICAgICAgICAgICBzdHls
ZVdpdGhvdXRFbWJlZGRpbmcgPSBzdHlsZS0+Y29weSgpOwogICAgICAgICAgICAgICAgIGVtYmVk
ZGluZ1N0eWxlID0gc3R5bGVXaXRob3V0RW1iZWRkaW5nLT5leHRyYWN0QW5kUmVtb3ZlVGV4dERp
cmVjdGlvbigpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZml4UmFuZ2VBbmRBcHBseUlu
bGluZVN0eWxlKGVtYmVkZGluZ1N0eWxlLT5zdHlsZSgpLCBlbWJlZGRpbmdBcHBseVN0YXJ0LCBl
bWJlZGRpbmdBcHBseUVuZCk7CisgICAgICAgICAgICBmaXhSYW5nZUFuZEFwcGx5SW5saW5lU3R5
bGUoZW1iZWRkaW5nU3R5bGUuZ2V0KCksIGVtYmVkZGluZ0FwcGx5U3RhcnQsIGVtYmVkZGluZ0Fw
cGx5RW5kKTsKIAotICAgICAgICAgICAgc3R5bGVUb0FwcGx5ID0gc3R5bGVXaXRob3V0RW1iZWRk
aW5nLT5zdHlsZSgpOworICAgICAgICAgICAgc3R5bGVUb0FwcGx5ID0gc3R5bGVXaXRob3V0RW1i
ZWRkaW5nOwogICAgICAgICB9CiAgICAgfQogCkBAIC05ODYsNyArOTg0LDcgQEAgdm9pZCBBcHBs
eVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZQogICAgICAgICBjbGVhbnVwVW5zdHlsZWRB
cHBsZVN0eWxlU3BhbnMoZW5kRHVtbXlTcGFuQW5jZXN0b3IpOwogfQogCi12b2lkIEFwcGx5U3R5
bGVDb21tYW5kOjpmaXhSYW5nZUFuZEFwcGx5SW5saW5lU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBl
bmQpCit2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpmaXhSYW5nZUFuZEFwcGx5SW5saW5lU3R5bGUo
RWRpdGluZ1N0eWxlKiBzdHlsZSwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlv
biYgZW5kKQogewogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHN0YXJ0Lm5vZGUoKTsKIApAQCAtMTAz
Miw3ICsxMDMwLDcgQEAgc3RhdGljIGJvb2wgY29udGFpbnNOb25FZGl0YWJsZVJlZ2lvbihObwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxp
bmVTdHlsZVRvTm9kZVJhbmdlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgTm9k
ZSogbm9kZSwgTm9kZSogcGFzdEVuZE5vZGUpCit2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBs
eUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UoRWRpdGluZ1N0eWxlKiBzdHlsZSwgTm9kZSogbm9kZSwg
Tm9kZSogcGFzdEVuZE5vZGUpCiB7CiAgICAgaWYgKG1fcmVtb3ZlT25seSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA1Miw3ICsxMDUwLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJ
bmxpbmVTdHlsZQogICAgICAgICAgICAgLy8gQWRkIHRvIHRoaXMgZWxlbWVudCdzIGlubGluZSBz
dHlsZSBhbmQgc2tpcCBvdmVyIGl0cyBjb250ZW50cy4KICAgICAgICAgICAgIEhUTUxFbGVtZW50
KiBlbGVtZW50ID0gdG9IVE1MRWxlbWVudChub2RlKTsKICAgICAgICAgICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gaW5saW5lU3R5bGUgPSBlbGVtZW50LT5nZXRJbmxpbmVT
dHlsZURlY2woKS0+Y29weSgpOwotICAgICAgICAgICAgaW5saW5lU3R5bGUtPm1lcmdlKHN0eWxl
KTsKKyAgICAgICAgICAgIGlubGluZVN0eWxlLT5tZXJnZShzdHlsZS0+c3R5bGUoKSk7CiAgICAg
ICAgICAgICBzZXROb2RlQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlQXR0ciwgaW5saW5lU3R5bGUt
PmNzc1RleHQoKSk7CiAgICAgICAgICAgICBuZXh0ID0gbm9kZS0+dHJhdmVyc2VOZXh0U2libGlu
ZygpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMDgzLDcgKzEwODEsNyBAQCB2b2lkIEFw
cGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlCiAKICAgICAgICAgaWYgKCFyZW1vdmVT
dHlsZUZyb21SdW5CZWZvcmVBcHBseWluZ1N0eWxlKHN0eWxlLCBydW5TdGFydCwgcnVuRW5kKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBhZGRJbmxpbmVTdHlsZUlmTmVlZGVkKHN0
eWxlLCBydW5TdGFydC5nZXQoKSwgcnVuRW5kLmdldCgpLCBBZGRTdHlsZWRFbGVtZW50KTsKKyAg
ICAgICAgYWRkSW5saW5lU3R5bGVJZk5lZWRlZChzdHlsZS0+c3R5bGUoKSwgcnVuU3RhcnQuZ2V0
KCksIHJ1bkVuZC5nZXQoKSwgQWRkU3R5bGVkRWxlbWVudCk7CiAgICAgfQogfQogCkBAIC0xMDkz
LDcgKzEwOTEsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjppc1N0eWxlZElubGluZUVsCiAg
ICAgICAgIHx8IChtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gJiYgbV9pc0lubGlu
ZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uKGVsZW1lbnQpKTsKIH0KIAotYm9vbCBBcHBseVN0eWxl
Q29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9tUnVuQmVmb3JlQXBwbHlpbmdTdHlsZShDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIFJlZlB0cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0cjxO
b2RlPiYgcnVuRW5kKQorYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9tUnVu
QmVmb3JlQXBwbHlpbmdTdHlsZShFZGl0aW5nU3R5bGUqIHN0eWxlLCBSZWZQdHI8Tm9kZT4mIHJ1
blN0YXJ0LCBSZWZQdHI8Tm9kZT4mIHJ1bkVuZCkKIHsKICAgICBBU1NFUlQocnVuU3RhcnQgJiYg
cnVuRW5kICYmIHJ1blN0YXJ0LT5wYXJlbnROb2RlKCkgPT0gcnVuRW5kLT5wYXJlbnROb2RlKCkp
OwogICAgIFJlZlB0cjxOb2RlPiBwYXN0RW5kTm9kZSA9IHJ1bkVuZC0+dHJhdmVyc2VOZXh0U2li
bGluZygpOwpAQCAtMTEwMiw3ICsxMTAwLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVt
b3ZlU3R5bGVGcm9tUgogICAgICAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAvLyBXZSBkb24ndCBjb25zaWRlciBtX2lzSW5saW5l
RWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24gaGVyZSBiZWNhdXNlIHdlIG5ldmVyIGFwcGx5IHN0eWxl
IHdoZW4gbV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uIGlzIHNwZWNpZmllZAotICAg
ICAgICBpZiAoZ2V0UHJvcGVydGllc05vdEluKHN0eWxlLCBjb21wdXRlZFN0eWxlKG5vZGUpLmdl
dCgpKS0+bGVuZ3RoKCkKKyAgICAgICAgaWYgKCghc3R5bGUtPmlzRW1wdHkoKSAmJiBnZXRQcm9w
ZXJ0aWVzTm90SW4oc3R5bGUtPnN0eWxlKCksIGNvbXB1dGVkU3R5bGUobm9kZSkuZ2V0KCkpLT5s
ZW5ndGgoKSkKICAgICAgICAgICAgIHx8IChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgIWVuY2xv
c2luZ05vZGVXaXRoVGFnKHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKSwgbV9zdHlsZWRJbmxpbmVF
bGVtZW50LT50YWdRTmFtZSgpKSkpIHsKICAgICAgICAgICAgIG5lZWRUb0FwcGx5U3R5bGUgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTIwLDcgKzExMTgsNyBAQCBib29sIEFwcGx5
U3R5bGVDb21tYW5kOjpyZW1vdmVTdHlsZUZyb21SCiAgICAgICAgIFJlZlB0cjxOb2RlPiBwcmV2
aW91c1NpYmxpbmcgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKICAgICAgICAgUmVmUHRyPE5v
ZGU+IG5leHRTaWJsaW5nID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKICAgICAgICAgUmVmUHRyPENv
bnRhaW5lck5vZGU+IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgcmVtb3Zl
SW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgdG9IVE1MRWxlbWVudChub2RlLmdldCgpKSwg
UmVtb3ZlQWx3YXlzKTsKKyAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHls
ZS0+c3R5bGUoKSwgdG9IVE1MRWxlbWVudChub2RlLmdldCgpKSwgUmVtb3ZlQWx3YXlzKTsKICAg
ICAgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBtaWdodCBuZWVkIHRvIHVwZGF0ZSB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgY3VycmVudCBz
ZWxlY3Rpb24gaGVyZSBidXQgbmVlZCBhIHRlc3QuCiAgICAgICAgICAgICBpZiAocnVuU3RhcnQg
PT0gbm9kZSkKQEAgLTEyMDksOSArMTIwNyw2IEBAIHN0YXRpYyBjb25zdCBIVE1MRXF1aXZhbGVu
dCBIVE1MRXF1aXZhbGUKICAgICB7IENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRydWUsIENT
U1ZhbHVlVW5kZXJsaW5lLCAmdVRhZywgMCwgMCwgU2hvdWxkQmVQdXNoZWREb3duIH0sCiAgICAg
eyBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCB0cnVlLCBDU1NWYWx1ZUxpbmVUaHJvdWdoLCAm
c1RhZywgMCwgMCwgU2hvdWxkQmVQdXNoZWREb3duIH0sCiAgICAgeyBDU1NQcm9wZXJ0eVRleHRE
ZWNvcmF0aW9uLCB0cnVlLCBDU1NWYWx1ZUxpbmVUaHJvdWdoLCAmc3RyaWtlVGFnLCAwLCAwLCBT
aG91bGRCZVB1c2hlZERvd24gfSwKLSAgICB7IENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRp
b25zSW5FZmZlY3QsIHRydWUsIENTU1ZhbHVlVW5kZXJsaW5lLCAmdVRhZywgMCwgMCwgU2hvdWxk
QmVQdXNoZWREb3duIH0sCi0gICAgeyBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0lu
RWZmZWN0LCB0cnVlLCBDU1NWYWx1ZUxpbmVUaHJvdWdoLCAmc1RhZywgMCwgMCwgU2hvdWxkQmVQ
dXNoZWREb3duIH0sCi0gICAgeyBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0LCB0cnVlLCBDU1NWYWx1ZUxpbmVUaHJvdWdoLCAmc3RyaWtlVGFnLCAwLCAwLCBTaG91bGRC
ZVB1c2hlZERvd24gfSwKIAogICAgIC8vIEZJWE1FOiBmb250IGF0dHJpYnV0ZXMgc2hvdWxkIG9u
bHkgYmUgcmVtb3ZlZCBpZiB2YWx1ZXMgd2VyZSBkaWZmZXJlbnQKICAgICB7IENTU1Byb3BlcnR5
Q29sb3IsIGZhbHNlLCBDU1NWYWx1ZUludmFsaWQsICZmb250VGFnLCAmY29sb3JBdHRyLCBzdHJp
bmdUb0NTU1ZhbHVlLCBTaG91bGRCZVB1c2hlZERvd24gfSwKQEAgLTEzMDksMjEgKzEzMDQsMjIg
QEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5bGUoQwogICAgIGZvciAoQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc3R5bGUtPmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQg
PSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpdC0+aWQoKSk7CiAgICAgICAgIFJlZlB0cjxD
U1NWYWx1ZT4gdmFsdWUgPSBkZWNsLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwot
ICAgICAgICBpZiAodmFsdWUgJiYgKHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVydHlXaGl0ZVNwYWNl
IHx8ICFpc1RhYlNwYW5Ob2RlKGVsZW1lbnQpKSkgewotICAgICAgICAgICAgcmVtb3ZlZCA9IHRy
dWU7Ci0gICAgICAgICAgICBpZiAobW9kZSA9PSBSZW1vdmVOb25lKQotICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBpZiAoIXZhbHVlIHx8IChpc1RhYlNwYW5Ob2RlKGVsZW1l
bnQpICYmIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXaGl0ZVNwYWNlKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAg
ICAgIGlmIChleHRyYWN0ZWRTdHlsZSkKLSAgICAgICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+
c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUtPmNzc1RleHQoKSwgZGVjbC0+Z2V0UHJvcGVy
dHlQcmlvcml0eShwcm9wZXJ0eUlEKSwgZWMpOwotICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoZWxlbWVudCwgcHJvcGVydHlJRCk7CisgICAgICAgIHJlbW92ZWQgPSB0cnVlOworICAgICAg
ICBpZiAobW9kZSA9PSBSZW1vdmVOb25lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5VW5pY29kZUJpZGkgJiYgIWRl
Y2wtPmdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pLmlzRW1wdHkoKSkgewot
ICAgICAgICAgICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkKLSAgICAgICAgICAgICAgICAgICAg
ZXh0cmFjdGVkU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlyZWN0aW9uLCBkZWNsLT5n
ZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKSwgZGVjbC0+Z2V0UHJvcGVydHlQ
cmlvcml0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiksIGVjKTsKLSAgICAgICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShlbGVtZW50LCBDU1NQcm9wZXJ0eURpcmVjdGlvbik7Ci0gICAgICAgICAg
ICB9CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBpZiAoZXh0cmFjdGVk
U3R5bGUpCisgICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJ
RCwgdmFsdWUtPmNzc1RleHQoKSwgZGVjbC0+Z2V0UHJvcGVydHlQcmlvcml0eShwcm9wZXJ0eUlE
KSwgZWMpOworICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShlbGVtZW50LCBwcm9wZXJ0eUlEKTsK
KworICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVVuaWNvZGVCaWRpICYmICFk
ZWNsLT5nZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKS5pc0VtcHR5KCkpIHsK
KyAgICAgICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkKKyAgICAgICAgICAgICAgICBleHRyYWN0
ZWRTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXJlY3Rpb24sIGRlY2wtPmdldFByb3Bl
cnR5VmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pLCBkZWNsLT5nZXRQcm9wZXJ0eVByaW9yaXR5
KENTU1Byb3BlcnR5RGlyZWN0aW9uKSwgZWMpOworICAgICAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoZWxlbWVudCwgQ1NTUHJvcGVydHlEaXJlY3Rpb24pOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xMzQwLDcgKzEzMzYsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVDU1NTdHls
ZShDCiAgICAgcmV0dXJuIHJlbW92ZWQ7CiB9CiAKLUhUTUxFbGVtZW50KiBBcHBseVN0eWxlQ29t
bWFuZDo6aGlnaGVzdEFuY2VzdG9yV2l0aENvbmZsaWN0aW5nSW5saW5lU3R5bGUoQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBOb2RlKiBub2RlKQorSFRNTEVsZW1lbnQqIEFwcGx5
U3R5bGVDb21tYW5kOjpoaWdoZXN0QW5jZXN0b3JXaXRoQ29uZmxpY3RpbmdJbmxpbmVTdHlsZShF
ZGl0aW5nU3R5bGUqIHN0eWxlLCBOb2RlKiBub2RlKQogewogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0xMzQ5LDcgKzEzNDUsNyBAQCBIVE1MRWxlbWVudCogQXBwbHlTdHls
ZUNvbW1hbmQ6OmhpZ2hlc3RBCiAgICAgTm9kZSogdW5zcGxpdHRhYmxlRWxlbWVudCA9IHVuc3Bs
aXR0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUobm9k
ZSkpOwogCiAgICAgZm9yIChOb2RlICpuID0gbm9kZTsgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkg
ewotICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVudCgpICYmIHNob3VsZFJlbW92ZUlubGluZVN0
eWxlRnJvbUVsZW1lbnQoc3R5bGUsIHRvSFRNTEVsZW1lbnQobikpKQorICAgICAgICBpZiAobi0+
aXNIVE1MRWxlbWVudCgpICYmIHNob3VsZFJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5
bGUtPnN0eWxlKCksIHRvSFRNTEVsZW1lbnQobikpKQogICAgICAgICAgICAgcmVzdWx0ID0gdG9I
VE1MRWxlbWVudChuKTsKICAgICAgICAgLy8gU2hvdWxkIHN0b3AgYXQgdGhlIGVkaXRhYmxlIHJv
b3QgKGNhbm5vdCBjcm9zcyBlZGl0aW5nIGJvdW5kYXJ5KSBhbmQKICAgICAgICAgLy8gYWxzbyBz
dG9wIGF0IHRoZSB1bnNwbGl0dGFibGUgZWxlbWVudCB0byBiZSBjb25zaXN0ZW50IHdpdGggb3Ro
ZXIgVUFzCkBAIC0xNDE4LDcgKzE0MTQsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBs
eUlubGluZVN0eWxlCiAgICAgYWRkSW5saW5lU3R5bGVJZk5lZWRlZChuZXdJbmxpbmVTdHlsZS5n
ZXQoKSwgbm9kZSwgbm9kZSwgRG9Ob3RBZGRTdHlsZWRFbGVtZW50KTsKIH0KIAotdm9pZCBBcHBs
eVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBOb2RlKiB0YXJnZXROb2RlKQordm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlKiBzdHls
ZSwgTm9kZSogdGFyZ2V0Tm9kZSkKIHsKICAgICBIVE1MRWxlbWVudCogaGlnaGVzdEFuY2VzdG9y
ID0gaGlnaGVzdEFuY2VzdG9yV2l0aENvbmZsaWN0aW5nSW5saW5lU3R5bGUoc3R5bGUsIHRhcmdl
dE5vZGUpOwogICAgIGlmICghaGlnaGVzdEFuY2VzdG9yKQpAQCAtMTQ0MSw3ICsxNDM3LDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdAogICAgICAgICAgICAgZWxl
bWVudHNUb1B1c2hEb3duLmFwcGVuZChzdHlsZWRFbGVtZW50KTsKICAgICAgICAgfQogICAgICAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlVG9QdXNoRG93biA9IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKLSAgICAgICAgcmVtb3ZlSW5saW5l
U3R5bGVGcm9tRWxlbWVudChzdHlsZSwgdG9IVE1MRWxlbWVudChjdXJyZW50KSwgUmVtb3ZlSWZO
ZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CisgICAgICAgIHJlbW92ZUlubGluZVN0eWxl
RnJvbUVsZW1lbnQoc3R5bGUtPnN0eWxlKCksIHRvSFRNTEVsZW1lbnQoY3VycmVudCksIFJlbW92
ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOwogCiAgICAgICAgIC8vIFRoZSBpbm5l
ciBsb29wIHdpbGwgZ28gdGhyb3VnaCBjaGlsZHJlbiBvbiBlYWNoIGxldmVsCiAgICAgICAgIC8v
IEZJWE1FOiB3ZSBzaG91bGQgYWdncmVnYXRlIGlubGluZSBjaGlsZCBlbGVtZW50cyB0b2dldGhl
ciBzbyB0aGF0IHdlIGRvbid0IHdyYXAgZWFjaCBjaGlsZCBzZXBhcmF0ZWx5LgpAQCAtMTQ3NSw3
ICsxNDcxLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cHVzaERvd25JbmxpbmVTdAogICAg
IH0KIH0KIAotdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGUoUGFzc1Jl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUsIGNvbnN0IFBvc2l0aW9uICZz
dGFydCwgY29uc3QgUG9zaXRpb24gJmVuZCkKK3ZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92
ZUlubGluZVN0eWxlKEVkaXRpbmdTdHlsZSogc3R5bGUsIGNvbnN0IFBvc2l0aW9uICZzdGFydCwg
Y29uc3QgUG9zaXRpb24gJmVuZCkKIHsKICAgICBBU1NFUlQoc3RhcnQuaXNOb3ROdWxsKCkpOwog
ICAgIEFTU0VSVChlbmQuaXNOb3ROdWxsKCkpOwpAQCAtMTQ4MywxMiArMTQ3OSw2IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWwKICAgICBBU1NFUlQoZW5kLm5vZGUo
KS0+aW5Eb2N1bWVudCgpKTsKICAgICBBU1NFUlQoY29tcGFyZVBvc2l0aW9ucyhzdGFydCwgZW5k
KSA8PSAwKTsKIAotICAgIFJlZlB0cjxDU1NWYWx1ZT4gdGV4dERlY29yYXRpb25TcGVjaWFsUHJv
cGVydHkgPSBzdHlsZSA/IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5V2Vi
a2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpIDogMDsKLSAgICBpZiAodGV4dERlY29yYXRpb25T
cGVjaWFsUHJvcGVydHkpIHsKLSAgICAgICAgc3R5bGUgPSBzdHlsZS0+Y29weSgpOwotICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgdGV4dERlY29y
YXRpb25TcGVjaWFsUHJvcGVydHktPmNzc1RleHQoKSwgc3R5bGUtPmdldFByb3BlcnR5UHJpb3Jp
dHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkpOwotICAgIH0KLQog
ICAgIFBvc2l0aW9uIHB1c2hEb3duU3RhcnQgPSBzdGFydC5kb3duc3RyZWFtKCk7CiAgICAgLy8g
SWYgdGhlIHB1c2hEb3duU3RhcnQgaXMgYXQgdGhlIGVuZCBvZiBhIHRleHQgbm9kZSwgdGhlbiB0
aGlzIG5vZGUgaXMgbm90IGZ1bGx5IHNlbGVjdGVkLgogICAgIC8vIE1vdmUgaXQgdG8gdGhlIG5l
eHQgZGVlcCBxdWl2YWxlbnQgcG9zaXRpb24gdG8gYXZvaWQgcmVtb3ZpbmcgdGhlIHN0eWxlIGZy
b20gdGhpcyBub2RlLgpAQCAtMTQ5OCw4ICsxNDg4LDggQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFu
ZDo6cmVtb3ZlSW5saW5lU3R5bAogICAgICAgICAmJiBwdXNoRG93blN0YXJ0LmNvbXB1dGVPZmZz
ZXRJbkNvbnRhaW5lck5vZGUoKSA9PSBwdXNoRG93blN0YXJ0Q29udGFpbmVyLT5tYXhDaGFyYWN0
ZXJPZmZzZXQoKSkKICAgICAgICAgcHVzaERvd25TdGFydCA9IG5leHRWaXN1YWxseURpc3RpbmN0
Q2FuZGlkYXRlKHB1c2hEb3duU3RhcnQpOwogICAgIFBvc2l0aW9uIHB1c2hEb3duRW5kID0gZW5k
LnVwc3RyZWFtKCk7Ci0gICAgcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoc3R5bGUuZ2V0
KCksIHB1c2hEb3duU3RhcnQubm9kZSgpKTsKLSAgICBwdXNoRG93bklubGluZVN0eWxlQXJvdW5k
Tm9kZShzdHlsZS5nZXQoKSwgcHVzaERvd25FbmQubm9kZSgpKTsKKyAgICBwdXNoRG93bklubGlu
ZVN0eWxlQXJvdW5kTm9kZShzdHlsZSwgcHVzaERvd25TdGFydC5ub2RlKCkpOworICAgIHB1c2hE
b3duSW5saW5lU3R5bGVBcm91bmROb2RlKHN0eWxlLCBwdXNoRG93bkVuZC5ub2RlKCkpOwogCiAg
ICAgLy8gVGhlIHMgYW5kIGUgdmFyaWFibGVzIHN0b3JlIHRoZSBwb3NpdGlvbnMgdXNlZCB0byBz
ZXQgdGhlIGVuZGluZyBzZWxlY3Rpb24gYWZ0ZXIgc3R5bGUgcmVtb3ZhbAogICAgIC8vIHRha2Vz
IHBsYWNlLiBUaGlzIHdpbGwgaGVscCBjYWxsZXJzIHRvIHJlY29nbml6ZSB3aGVuIGVpdGhlciB0
aGUgc3RhcnQgbm9kZSBvciB0aGUgZW5kIG5vZGUKQEAgLTE1MjMsNyArMTUxMyw3IEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWwKICAgICAgICAgICAgICAgICBjaGls
ZE5vZGUgPSBlbGVtLT5maXJzdENoaWxkKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUuZ2V0KCksIGVsZW0uZ2V0KCksIFJl
bW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOworICAgICAgICAgICAgcmVtb3Zl
SW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZS0+c3R5bGUoKSwgZWxlbS5nZXQoKSwgUmVtb3Zl
SWZOZWVkZWQsIHN0eWxlVG9QdXNoRG93bi5nZXQoKSk7CiAgICAgICAgICAgICBpZiAoIWVsZW0t
PmluRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgICAgIGlmIChzLm5vZGUoKSA9PSBlbGVtKSB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIGVsZW0gbXVzdCBoYXZlIGJlZW4gZnVsbHkg
c2VsZWN0ZWQsIGFuZCBpdCBpcyBhdCB0aGUgc3RhcnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9uIDc4NjU1KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nywx
NiArNzcsMTYgQEAgcHJpdmF0ZToKIAogICAgIC8vIHN0eWxlLXJlbW92YWwgaGVscGVycwogICAg
IGJvb2wgaXNTdHlsZWRJbmxpbmVFbGVtZW50VG9SZW1vdmUoRWxlbWVudCopIGNvbnN0OwotICAg
IGJvb2wgcmVtb3ZlU3R5bGVGcm9tUnVuQmVmb3JlQXBwbHlpbmdTdHlsZShDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUsIFJlZlB0cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0cjxOb2Rl
PiYgcnVuRW5kKTsKKyAgICBib29sIHJlbW92ZVN0eWxlRnJvbVJ1bkJlZm9yZUFwcGx5aW5nU3R5
bGUoRWRpdGluZ1N0eWxlKiwgUmVmUHRyPE5vZGU+JiBydW5TdGFydCwgUmVmUHRyPE5vZGU+JiBy
dW5FbmQpOwogICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbiosIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+LCBJbmxpbmVTdHlsZVJl
bW92YWxNb2RlID0gUmVtb3ZlSWZOZWVkZWQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBl
eHRyYWN0ZWRTdHlsZSA9IDApOwogICAgIGlubGluZSBib29sIHNob3VsZFJlbW92ZUlubGluZVN0
eWxlRnJvbUVsZW1lbnQoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBIVE1MRWxl
bWVudCogZWxlbWVudCkge3JldHVybiByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxl
LCBlbGVtZW50LCBSZW1vdmVOb25lKTt9CiAgICAgYm9vbCByZW1vdmVJbXBsaWNpdGx5U3R5bGVk
RWxlbWVudChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIEhUTUxFbGVtZW50KiwgSW5saW5l
U3R5bGVSZW1vdmFsTW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0
eWxlKTsKICAgICB2b2lkIHJlcGxhY2VXaXRoU3Bhbk9yUmVtb3ZlSWZXaXRob3V0QXR0cmlidXRl
cyhIVE1MRWxlbWVudComKTsKICAgICBib29sIHJlbW92ZUNTU1N0eWxlKENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlID0gUmVt
b3ZlSWZOZWVkZWQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBleHRyYWN0ZWRTdHlsZSA9
IDApOwotICAgIEhUTUxFbGVtZW50KiBoaWdoZXN0QW5jZXN0b3JXaXRoQ29uZmxpY3RpbmdJbmxp
bmVTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIE5vZGUqKTsKLSAgICB2b2lkIGFw
cGx5SW5saW5lU3R5bGVUb1B1c2hEb3duKE5vZGUqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
biAqc3R5bGUpOwotICAgIHZvaWQgcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBOb2RlKik7Ci0gICAgdm9pZCByZW1vdmVJbmxpbmVTdHls
ZShQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiwgY29uc3QgUG9zaXRpb24m
IHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKKyAgICBIVE1MRWxlbWVudCogaGlnaGVzdEFu
Y2VzdG9yV2l0aENvbmZsaWN0aW5nSW5saW5lU3R5bGUoRWRpdGluZ1N0eWxlKiwgTm9kZSopOwor
ICAgIHZvaWQgYXBwbHlJbmxpbmVTdHlsZVRvUHVzaERvd24oTm9kZSosIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKik7CisgICAgdm9pZCBwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZShF
ZGl0aW5nU3R5bGUqLCBOb2RlKik7CisgICAgdm9pZCByZW1vdmVJbmxpbmVTdHlsZShFZGl0aW5n
U3R5bGUqICwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKICAg
ICBib29sIG5vZGVGdWxseVNlbGVjdGVkKE5vZGUqLCBjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNv
bnN0IFBvc2l0aW9uJiBlbmQpIGNvbnN0OwogICAgIGJvb2wgbm9kZUZ1bGx5VW5zZWxlY3RlZChO
b2RlKiwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKSBjb25zdDsK
IApAQCAtOTQsOCArOTQsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwbHlCbG9ja1N0eWxlKEVk
aXRpbmdTdHlsZSopOwogICAgIHZvaWQgYXBwbHlSZWxhdGl2ZUZvbnRTdHlsZUNoYW5nZShFZGl0
aW5nU3R5bGUqKTsKICAgICB2b2lkIGFwcGx5SW5saW5lU3R5bGUoRWRpdGluZ1N0eWxlKik7Ci0g
ICAgdm9pZCBmaXhSYW5nZUFuZEFwcGx5SW5saW5lU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qLCBjb25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwotICAg
IHZvaWQgYXBwbHlJbmxpbmVTdHlsZVRvTm9kZVJhbmdlKENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiwgTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kTm9kZSk7CisgICAgdm9pZCBmaXhS
YW5nZUFuZEFwcGx5SW5saW5lU3R5bGUoRWRpdGluZ1N0eWxlKiwgY29uc3QgUG9zaXRpb24mIHN0
YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kKTsKKyAgICB2b2lkIGFwcGx5SW5saW5lU3R5bGVUb05v
ZGVSYW5nZShFZGl0aW5nU3R5bGUqLCBOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmROb2Rl
KTsKICAgICB2b2lkIGFkZEJsb2NrU3R5bGUoY29uc3QgU3R5bGVDaGFuZ2UmLCBIVE1MRWxlbWVu
dCopOwogICAgIHZvaWQgYWRkSW5saW5lU3R5bGVJZk5lZWRlZChDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiosIFBhc3NSZWZQdHI8Tm9kZT4gc3RhcnQsIFBhc3NSZWZQdHI8Tm9kZT4gZW5kLCBF
QWRkU3R5bGVkRWxlbWVudCBhZGRTdHlsZWRFbGVtZW50ID0gQWRkU3R5bGVkRWxlbWVudCk7CiAg
ICAgdm9pZCBzcGxpdFRleHRBdFN0YXJ0KGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9z
aXRpb24mIGVuZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3Bw
CShyZXZpc2lvbiA3ODY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw5IEBAIGJvb2wgRWRpdGluZ1N0eWxl
Ojppc0VtcHR5KCkgY29uc3QKIAogYm9vbCBFZGl0aW5nU3R5bGU6OnRleHREaXJlY3Rpb24oV3Jp
dGluZ0RpcmVjdGlvbiYgd3JpdGluZ0RpcmVjdGlvbikgY29uc3QKIHsKKyAgICBpZiAoIW1fbXV0
YWJsZVN0eWxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBSZWZQdHI8Q1NTVmFsdWU+
IHVuaWNvZGVCaWRpID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlVbmljb2RlQmlkaSk7CiAgICAgaWYgKCF1bmljb2RlQmlkaSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzA2LDYgKzMwOSwxOSBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlTm9u
RWRpdGluZ1Byb3BlCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlID0gY29weUVkaXRpbmdQcm9wZXJ0
aWVzKG1fbXV0YWJsZVN0eWxlLmdldCgpKTsKIH0KIAordm9pZCBFZGl0aW5nU3R5bGU6OmNvbGxh
cHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCkKK3sKKyAgICBpZiAoIW1fbXV0YWJsZVN0eWxl
KQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHRleHREZWNvcmF0aW9u
c0luRWZmZWN0ID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7CisgICAgaWYgKCF0ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9tdXRhYmxlU3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uc0luRWZmZWN0
LT5jc3NUZXh0KCksIG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3Bl
cnR5VGV4dERlY29yYXRpb24pKTsKKyAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHko
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7Cit9CisKIHZvaWQgRWRp
dGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hv
dWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uIHNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlv
bikKIHsKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5oCShyZXZpc2lvbiA3ODY1NSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShOb2RlKik7CiAgICAgdm9pZCByZW1v
dmVTdHlsZUNvbmZsaWN0aW5nV2l0aFN0eWxlT2ZOb2RlKE5vZGUqKTsKICAgICB2b2lkIHJlbW92
ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzKCk7CisgICAgdm9pZCBjb2xsYXBzZVRleHREZWNvcmF0aW9u
UHJvcGVydGllcygpOwogICAgIHZvaWQgcHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYs
IFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiA9IERvTm90UHJlc2VydmVXcml0aW5nRGly
ZWN0aW9uKTsKIAogICAgIGZsb2F0IGZvbnRTaXplRGVsdGEoKSBjb25zdCB7IHJldHVybiBtX2Zv
bnRTaXplRGVsdGE7IH0K
</data>
<flag name="review"
          id="74269"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>