<?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>4757</bug_id>
          
          <creation_ts>2005-08-30 10:47:13 -0700</creation_ts>
          <short_desc>leaks found by code inspection in apply-style command</short_desc>
          <delta_ts>2005-09-02 09:45:06 -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>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>17936</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-30 10:47:13 -0700</bug_when>
    <thetext> </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>17937</commentid>
    <comment_count>1</comment_count>
      <attachid>3675</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-30 10:48:18 -0700</bug_when>
    <thetext>Created attachment 3675
patch to fix the leaks I spotted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18002</commentid>
    <comment_count>2</comment_count>
      <attachid>3675</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-31 00:31:31 -0700</bug_when>
    <thetext>Comment on attachment 3675
patch to fix the leaks I spotted

I have no tests, but still probably should get this reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18026</commentid>
    <comment_count>3</comment_count>
      <attachid>3675</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-08-31 02:10:03 -0700</bug_when>
    <thetext>Comment on attachment 3675
patch to fix the leaks I spotted

Perhaps it would be better to store the CSSValueImpls in a SharedPtr instead of
doing the ref()/deref() pair manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18186</commentid>
    <comment_count>4</comment_count>
      <attachid>3710</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-01 09:35:56 -0700</bug_when>
    <thetext>Created attachment 3710
patch revised to use SharedPtr as per Maciej&apos;s suggestion</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>18221</commentid>
    <comment_count>5</comment_count>
      <attachid>3710</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-09-02 02:49:02 -0700</bug_when>
    <thetext>Comment on attachment 3710
patch revised to use SharedPtr as per Maciej&apos;s suggestion

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3675</attachid>
            <date>2005-08-30 10:48:18 -0700</date>
            <delta_ts>2005-09-01 09:32:57 -0700</delta_ts>
            <desc>patch to fix the leaks I spotted</desc>
            <filename>ApplyStyleLeaksPatch.txt</filename>
            <type>text/plain</type>
            <size>4820</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VkaXRpbmcvYXBwbHlfc3R5bGVfY29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvZWRpdGluZy9hcHBseV9zdHlsZV9jb21t
YW5kLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMQpkaWZmIC1wIC11IC1yMS4xMSBraHRt
bC9lZGl0aW5nL2FwcGx5X3N0eWxlX2NvbW1hbmQuY3BwCi0tLSBraHRtbC9lZGl0aW5nL2FwcGx5
X3N0eWxlX2NvbW1hbmQuY3BwCTI1IEF1ZyAyMDA1IDIzOjEzOjQzIC0wMDAwCTEuMTEKKysrIGto
dG1sL2VkaXRpbmcvYXBwbHlfc3R5bGVfY29tbWFuZC5jcHAJMzAgQXVnIDIwMDUgMTc6NTA6Mjgg
LTAwMDAKQEAgLTM4OSwxNCArMzg5LDE3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5
QmxvY2tTdHlsZSgKIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbnRT
dHlsZUNoYW5nZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwgKnN0eWxlKQogewotICAg
IGlmIChzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NfUFJPUF9GT05UX1NJWkUpKSB7Cisg
ICAgQ1NTVmFsdWVJbXBsICp2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU19Q
Uk9QX0ZPTlRfU0laRSk7CisgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgIC8vIEV4cGxpY2l0IGZv
bnQgc2l6ZSBvdmVycmlkZXMgYW55IGRlbHRhLgorICAgICAgICB2YWx1ZS0+cmVmKCk7CisgICAg
ICAgIHZhbHVlLT5kZXJlZigpOwogICAgICAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTX1BS
T1BfX0tIVE1MX0ZPTlRfU0laRV9ERUxUQSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICAvLyBHZXQgdGhlIGFkanVzdG1lbnQgYW1vdW50IG91dCBvZiB0aGUgc3R5bGUuCi0gICAgQ1NT
VmFsdWVJbXBsICp2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU19QUk9QX19L
SFRNTF9GT05UX1NJWkVfREVMVEEpOworICAgIHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTX1BST1BfX0tIVE1MX0ZPTlRfU0laRV9ERUxUQSk7CiAgICAgaWYgKCF2YWx1ZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIHZhbHVlLT5yZWYoKTsKQEAgLTQ5MCw3ICs0OTMsMTAgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbgogICAgICAgICBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbkltcGwgKmlubGluZVN0eWxlRGVjbCA9IGVsZW0tPmdldElubGlu
ZVN0eWxlRGVjbCgpOwogICAgICAgICBmbG9hdCBjdXJyZW50Rm9udFNpemUgPSBjb21wdXRlZEZv
bnRTaXplKG5vZGUpOwogICAgICAgICBmbG9hdCBkZXNpcmVkRm9udFNpemUgPSBrTWF4KE1pbmlt
dW1Gb250U2l6ZSwgc3RhcnRpbmdGb250U2l6ZXNbbm9kZV0gKyBhZGp1c3RtZW50KTsKLSAgICAg
ICAgaWYgKGlubGluZVN0eWxlRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NfUFJPUF9GT05U
X1NJWkUpKSB7CisgICAgICAgIENTU1ZhbHVlSW1wbCAqdmFsdWUgPSBpbmxpbmVTdHlsZURlY2wt
PmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTX1BST1BfRk9OVF9TSVpFKTsKKyAgICAgICAgaWYgKHZh
bHVlKSB7CisgICAgICAgICAgICB2YWx1ZS0+cmVmKCk7CisgICAgICAgICAgICB2YWx1ZS0+ZGVy
ZWYoKTsKICAgICAgICAgICAgIGlubGluZVN0eWxlRGVjbC0+cmVtb3ZlUHJvcGVydHkoQ1NTX1BS
T1BfRk9OVF9TSVpFLCB0cnVlKTsKICAgICAgICAgICAgIGN1cnJlbnRGb250U2l6ZSA9IGNvbXB1
dGVkRm9udFNpemUobm9kZSk7CiAgICAgICAgIH0KQEAgLTY4MCwxMCArNjg2LDkgQEAgdm9pZCBB
cHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5bGUoQwogICAgICAgICBpbnQgcHJvcGVydHlJ
RCA9ICgqaXQpLmlkKCk7CiAgICAgICAgIENTU1ZhbHVlSW1wbCAqdmFsdWUgPSBkZWNsLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogICAgICAgICBpZiAodmFsdWUpIHsKLSAgICAg
ICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU19QUk9QX1dISVRFX1NQQUNFICYmIGlzVGFiU3Bh
bk5vZGUoZWxlbSkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB2YWx1
ZS0+cmVmKCk7Ci0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShkZWNsLCBwcm9wZXJ0eUlE
KTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUlEICE9IENTU19QUk9QX1dISVRFX1NQQUNFIHx8
ICFpc1RhYlNwYW5Ob2RlKGVsZW0pKQorICAgICAgICAgICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5
KGRlY2wsIHByb3BlcnR5SUQpOwogICAgICAgICAgICAgdmFsdWUtPmRlcmVmKCk7CiAgICAgICAg
IH0KICAgICB9CkBAIC03NTQsOCArNzU5LDExIEBAIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
SW1wbCAqQXBwbHlTdHkKICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwgKnRleHRE
ZWNvcmF0aW9uU3R5bGUgPSBzdHlsZS0+Y29weVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzLCAx
KTsKIAogICAgIENTU1ZhbHVlSW1wbCAqcHJvcGVydHkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NfUFJPUF9URVhUX0RFQ09SQVRJT04pOwotICAgIGlmIChwcm9wZXJ0eSAmJiBzdHJj
YXNlY21wKHByb3BlcnR5LT5jc3NUZXh0KCksICJub25lIikgIT0gMCkgewotICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShzdHlsZSwgQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OKTsKKyAgICBpZiAo
cHJvcGVydHkpIHsKKyAgICAgICAgcHJvcGVydHktPnJlZigpOworICAgICAgICBpZiAoc3RyY2Fz
ZWNtcChwcm9wZXJ0eS0+Y3NzVGV4dCgpLCAibm9uZSIpICE9IDApCisgICAgICAgICAgICByZW1v
dmVDU1NQcm9wZXJ0eShzdHlsZSwgQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OKTsKKyAgICAgICAg
cHJvcGVydHktPmRlcmVmKCk7CiAgICAgfQogCiAgICAgc3R5bGUtPmRlcmVmKCk7CkBAIC03ODAs
MTcgKzc4OCwxOSBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwgKkFwcGx5U3R5CiAK
ICAgICBpbnQgcHJvcGVydGllc1sxXSA9IHsgQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OIH07CiAg
ICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsICp0ZXh0RGVjb3JhdGlvblN0eWxlID0g
Y29tcHV0ZWRTdHlsZS0+Y29weVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzLCAxKTsKLSAgICAK
IAogICAgIENTU1ZhbHVlSW1wbCAqcHJvcGVydHkgPSBjb21wdXRlZFN0eWxlLT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU19QUk9QX1RFWFRfREVDT1JBVElPTik7Ci0gICAgaWYgKHByb3BlcnR5ICYm
IHN0cmNhc2VjbXAocHJvcGVydHktPmNzc1RleHQoKSwgIm5vbmUiKSAhPSAwKSB7CisgICAgaWYg
KHByb3BlcnR5KSB7CiAgICAgICAgIHByb3BlcnR5LT5yZWYoKTsKLSAgICAgICAgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb25JbXBsICpuZXdTdHlsZSA9IHRleHREZWNvcmF0aW9uU3R5bGUtPmNv
cHkoKTsKIAotICAgICAgICBuZXdTdHlsZS0+cmVmKCk7Ci0gICAgICAgIG5ld1N0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NfUFJPUF9URVhUX0RFQ09SQVRJT04sICJub25lIik7Ci0gICAgICAgIGFwcGx5
VGV4dERlY29yYXRpb25TdHlsZShub2RlLCBuZXdTdHlsZSk7Ci0gICAgICAgIG5ld1N0eWxlLT5k
ZXJlZigpOworICAgICAgICBpZiAoc3RyY2FzZWNtcChwcm9wZXJ0eS0+Y3NzVGV4dCgpLCAibm9u
ZSIpICE9IDApIHsKKyAgICAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1wbCAq
bmV3U3R5bGUgPSB0ZXh0RGVjb3JhdGlvblN0eWxlLT5jb3B5KCk7CisKKyAgICAgICAgICAgIG5l
d1N0eWxlLT5yZWYoKTsKKyAgICAgICAgICAgIG5ld1N0eWxlLT5zZXRQcm9wZXJ0eShDU1NfUFJP
UF9URVhUX0RFQ09SQVRJT04sICJub25lIik7CisgICAgICAgICAgICBhcHBseVRleHREZWNvcmF0
aW9uU3R5bGUobm9kZSwgbmV3U3R5bGUpOworICAgICAgICAgICAgbmV3U3R5bGUtPmRlcmVmKCk7
CisgICAgICAgIH0KIAogICAgICAgICBwcm9wZXJ0eS0+ZGVyZWYoKTsKICAgICB9CkBAIC05MDIs
OSArOTEyLDExIEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUlubGluZVN0eWwKICAg
ICBDU1NWYWx1ZUltcGwgKnRleHREZWNvcmF0aW9uU3BlY2lhbFByb3BlcnR5ID0gc3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTX1BST1BfX0tIVE1MX1RFWFRfREVDT1JBVElPTlNfSU5fRUZG
RUNUKTsKIAogICAgIGlmICh0ZXh0RGVjb3JhdGlvblNwZWNpYWxQcm9wZXJ0eSkgeworICAgICAg
ICB0ZXh0RGVjb3JhdGlvblNwZWNpYWxQcm9wZXJ0eS0+cmVmKCk7CiAgICAgICAgIHB1c2hEb3du
VGV4dERlY29yYXRpb25TdHlsZUF0Qm91bmRhcmllcyhzdGFydC5kb3duc3RyZWFtKCksIGVuZC51
cHN0cmVhbSgpKTsKICAgICAgICAgc3R5bGUgPSBzdHlsZS0+Y29weSgpOwogICAgICAgICBzdHls
ZS0+c2V0UHJvcGVydHkoQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OLCB0ZXh0RGVjb3JhdGlvblNw
ZWNpYWxQcm9wZXJ0eS0+Y3NzVGV4dCgpLCBzdHlsZS0+Z2V0UHJvcGVydHlQcmlvcml0eShDU1Nf
UFJPUF9fS0hUTUxfVEVYVF9ERUNPUkFUSU9OU19JTl9FRkZFQ1QpKTsKKyAgICAgICAgdGV4dERl
Y29yYXRpb25TcGVjaWFsUHJvcGVydHktPmRlcmVmKCk7CiAgICAgfQogCiAgICAgLy8gVGhlIHMg
YW5kIGUgdmFyaWFibGVzIHN0b3JlIHRoZSBwb3NpdGlvbnMgdXNlZCB0byBzZXQgdGhlIGVuZGlu
ZyBzZWxlY3Rpb24gYWZ0ZXIgc3R5bGUgcmVtb3ZhbAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3710</attachid>
            <date>2005-09-01 09:35:56 -0700</date>
            <delta_ts>2005-09-02 02:49:02 -0700</delta_ts>
            <desc>patch revised to use SharedPtr as per Maciej&apos;s suggestion</desc>
            <filename>ApplyStyleLeaksPatch.txt</filename>
            <type>text/plain</type>
            <size>14925</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2VkaXRpbmcvYXBwbHlfc3R5bGVfY29tbWFuZC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS
Q1MgZmlsZTogL2N2cy9yb290L1dlYkNvcmUva2h0bWwvZWRpdGluZy9hcHBseV9zdHlsZV9jb21t
YW5kLmNwcCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMQpkaWZmIC1wIC11IC1yMS4xMSBraHRt
bC9lZGl0aW5nL2FwcGx5X3N0eWxlX2NvbW1hbmQuY3BwCi0tLSBraHRtbC9lZGl0aW5nL2FwcGx5
X3N0eWxlX2NvbW1hbmQuY3BwCTI1IEF1ZyAyMDA1IDIzOjEzOjQzIC0wMDAwCTEuMTEKKysrIGto
dG1sL2VkaXRpbmcvYXBwbHlfc3R5bGVfY29tbWFuZC5jcHAJMSBTZXAgMjAwNSAxNjozNTo0MSAt
MDAwMApAQCAtMTIzLDggKzEyMyw3IEBAIFN0eWxlQ2hhbmdlOjpTdHlsZUNoYW5nZShDU1NTdHls
ZURlY2xhcmEKIHZvaWQgU3R5bGVDaGFuZ2U6OmluaXQoQ1NTU3R5bGVEZWNsYXJhdGlvbkltcGwg
KnN0eWxlLCBjb25zdCBQb3NpdGlvbiAmcG9zaXRpb24pCiB7CiAgICAgc3R5bGUtPnJlZigpOwot
ICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1wbCAqbXV0YWJsZVN0eWxlID0gc3R5bGUt
Pm1ha2VNdXRhYmxlKCk7Ci0gICAgbXV0YWJsZVN0eWxlLT5yZWYoKTsKKyAgICBTaGFyZWRQdHI8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsPiBtdXRhYmxlU3R5bGUgPSBzdHlsZS0+bWFr
ZU11dGFibGUoKTsKICAgICBzdHlsZS0+ZGVyZWYoKTsKICAgICAKICAgICBRU3RyaW5nIHN0eWxl
VGV4dCgiIik7CkBAIC0xNTMsOCArMTUyLDYgQEAgdm9pZCBTdHlsZUNoYW5nZTo6aW5pdChDU1NT
dHlsZURlY2xhcmF0aQogICAgICAgICB9CiAgICAgfQogCi0gICAgbXV0YWJsZVN0eWxlLT5kZXJl
ZigpOwotCiAgICAgLy8gU2F2ZSB0aGUgcmVzdWx0IGZvciBsYXRlcgogICAgIG1fY3NzU3R5bGUg
PSBzdHlsZVRleHQuc3RyaXBXaGl0ZVNwYWNlKCk7CiB9CkBAIC0yMjYsMTcgKzIyMywxMSBAQCBi
b29sIFN0eWxlQ2hhbmdlOjpjaGVja0ZvckxlZ2FjeUhUTUxTdHlsCiBib29sIFN0eWxlQ2hhbmdl
OjpjdXJyZW50bHlIYXNTdHlsZShjb25zdCBQb3NpdGlvbiAmcG9zLCBjb25zdCBDU1NQcm9wZXJ0
eSAqcHJvcGVydHkpCiB7CiAgICAgQVNTRVJUKHBvcy5pc05vdE51bGwoKSk7Ci0gICAgQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uSW1wbCAqc3R5bGUgPSBwb3MuY29tcHV0ZWRTdHlsZSgpOwot
ICAgIEFTU0VSVChzdHlsZSk7Ci0gICAgc3R5bGUtPnJlZigpOwotICAgIENTU1ZhbHVlSW1wbCAq
dmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eS0+aWQoKSwgRG9Ob3RV
cGRhdGVMYXlvdXQpOwotICAgIHN0eWxlLT5kZXJlZigpOworICAgIFNoYXJlZFB0cjxDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb25JbXBsPiBzdHlsZSA9IHBvcy5jb21wdXRlZFN0eWxlKCk7Cisg
ICAgU2hhcmVkUHRyPENTU1ZhbHVlSW1wbD4gdmFsdWUgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShwcm9wZXJ0eS0+aWQoKSwgRG9Ob3RVcGRhdGVMYXlvdXQpOwogICAgIGlmICghdmFsdWUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgYm9vbCByZXN1
bHQgPSBzdHJjYXNlY21wKHZhbHVlLT5jc3NUZXh0KCksIHByb3BlcnR5LT52YWx1ZSgpLT5jc3NU
ZXh0KCkpID09IDA7Ci0gICAgdmFsdWUtPmRlcmVmKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICByZXR1cm4gc3RyY2FzZWNtcCh2YWx1ZS0+Y3NzVGV4dCgpLCBwcm9wZXJ0eS0+dmFsdWUoKS0+
Y3NzVGV4dCgpKSA9PSAwOwogfQogCiBzdGF0aWMgRE9NU3RyaW5nICZzdHlsZVNwYW5DbGFzc1N0
cmluZygpCkBAIC0yOTUsMTQgKzI4NiwxMSBAQCBFbGVtZW50SW1wbCAqY3JlYXRlU3R5bGVTcGFu
RWxlbWVudChEb2N1CiBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1l
bnRJbXBsICpkb2N1bWVudCwgQ1NTU3R5bGVEZWNsYXJhdGlvbkltcGwgKnN0eWxlLCBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24sIEVQcm9wZXJ0eUxldmVsIHByb3BlcnR5TGV2ZWwpCiAgICAgOiBD
b21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCksIG1fc3R5bGUoc3R5bGUtPm1ha2VNdXRhYmxl
KCkpLCBtX2VkaXRpbmdBY3Rpb24oZWRpdGluZ0FjdGlvbiksIG1fcHJvcGVydHlMZXZlbChwcm9w
ZXJ0eUxldmVsKQogeyAgIAotICAgIEFTU0VSVChtX3N0eWxlKTsKLSAgICBtX3N0eWxlLT5yZWYo
KTsKKyAgICBBU1NFUlQoc3R5bGUpOwogfQogCiBBcHBseVN0eWxlQ29tbWFuZDo6fkFwcGx5U3R5
bGVDb21tYW5kKCkKIHsKLSAgICBBU1NFUlQobV9zdHlsZSk7Ci0gICAgbV9zdHlsZS0+ZGVyZWYo
KTsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6ZG9BcHBseSgpCkBAIC0zMTAsMjUgKzI5
OCwyMSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICBzd2l0Y2ggKG1f
cHJvcGVydHlMZXZlbCkgewogICAgICAgICBjYXNlIFByb3BlcnR5RGVmYXVsdDogewogICAgICAg
ICAgICAgLy8gYXBwbHkgdGhlIGJsb2NrLWNlbnRyaWMgcHJvcGVydGllcyBvZiB0aGUgc3R5bGUK
LSAgICAgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1wbCAqYmxvY2tTdHlsZSA9
IG1fc3R5bGUtPmNvcHlCbG9ja1Byb3BlcnRpZXMoKTsKLSAgICAgICAgICAgIGJsb2NrU3R5bGUt
PnJlZigpOwotICAgICAgICAgICAgYXBwbHlCbG9ja1N0eWxlKGJsb2NrU3R5bGUpOworICAgICAg
ICAgICAgU2hhcmVkUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1wbD4gYmxvY2tTdHls
ZSA9IG1fc3R5bGUtPmNvcHlCbG9ja1Byb3BlcnRpZXMoKTsKKyAgICAgICAgICAgIGFwcGx5Qmxv
Y2tTdHlsZShibG9ja1N0eWxlLmdldCgpKTsKICAgICAgICAgICAgIC8vIGFwcGx5IGFueSByZW1h
aW5pbmcgc3R5bGVzIHRvIHRoZSBpbmxpbmUgZWxlbWVudHMKICAgICAgICAgICAgIC8vIE5PVEU6
IGhvcGVmdWxseSwgdGhpcyBzdHJpbmcgY29tcGFyaXNvbiBpcyB0aGUgc2FtZSBhcyBjaGVja2lu
ZyBmb3IgYSBub24tbnVsbCBkaWZmCiAgICAgICAgICAgICBpZiAoYmxvY2tTdHlsZS0+bGVuZ3Ro
KCkgPCBtX3N0eWxlLT5sZW5ndGgoKSkgewotICAgICAgICAgICAgICAgIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uSW1wbCAqaW5saW5lU3R5bGUgPSBtX3N0eWxlLT5jb3B5KCk7Ci0gICAgICAg
ICAgICAgICAgaW5saW5lU3R5bGUtPnJlZigpOwotICAgICAgICAgICAgICAgIGFwcGx5UmVsYXRp
dmVGb250U3R5bGVDaGFuZ2UoaW5saW5lU3R5bGUpOwotICAgICAgICAgICAgICAgIGJsb2NrU3R5
bGUtPmRpZmYoaW5saW5lU3R5bGUpOwotICAgICAgICAgICAgICAgIGFwcGx5SW5saW5lU3R5bGUo
aW5saW5lU3R5bGUpOwotICAgICAgICAgICAgICAgIGlubGluZVN0eWxlLT5kZXJlZigpOworICAg
ICAgICAgICAgICAgIFNoYXJlZFB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGw+IGlu
bGluZVN0eWxlID0gbV9zdHlsZS0+Y29weSgpOworICAgICAgICAgICAgICAgIGFwcGx5UmVsYXRp
dmVGb250U3R5bGVDaGFuZ2UoaW5saW5lU3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGJs
b2NrU3R5bGUtPmRpZmYoaW5saW5lU3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGFwcGx5
SW5saW5lU3R5bGUoaW5saW5lU3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYmxvY2tTdHlsZS0+ZGVyZWYoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRm9yY2VCbG9ja1Byb3BlcnRpZXM6CiAgICAgICAgICAgICAvLyBGb3JjZSBh
bGwgcHJvcGVydGllcyB0byBiZSBhcHBsaWVkIGFzIGJsb2NrIHN0eWxlcy4KLSAgICAgICAgICAg
IGFwcGx5QmxvY2tTdHlsZShtX3N0eWxlKTsKKyAgICAgICAgICAgIGFwcGx5QmxvY2tTdHlsZSht
X3N0eWxlLmdldCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgIApAQCAtMzg5LDIw
ICszNzMsMjAgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKAogCiB2
b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxlQ2hhbmdlKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uSW1wbCAqc3R5bGUpCiB7Ci0gICAgaWYgKHN0eWxlLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKENTU19QUk9QX0ZPTlRfU0laRSkpIHsKKyAgICBTaGFyZWRQdHI8Q1NT
VmFsdWVJbXBsPiB2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU19QUk9QX0ZP
TlRfU0laRSk7CisgICAgaWYgKHZhbHVlKSB7CiAgICAgICAgIC8vIEV4cGxpY2l0IGZvbnQgc2l6
ZSBvdmVycmlkZXMgYW55IGRlbHRhLgogICAgICAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NT
X1BST1BfX0tIVE1MX0ZPTlRfU0laRV9ERUxUQSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICAvLyBHZXQgdGhlIGFkanVzdG1lbnQgYW1vdW50IG91dCBvZiB0aGUgc3R5bGUuCi0gICAg
Q1NTVmFsdWVJbXBsICp2YWx1ZSA9IHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU19QUk9Q
X19LSFRNTF9GT05UX1NJWkVfREVMVEEpOworICAgIHZhbHVlID0gc3R5bGUtPmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTX1BST1BfX0tIVE1MX0ZPTlRfU0laRV9ERUxUQSk7CiAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgcmV0dXJuOwotICAgIHZhbHVlLT5yZWYoKTsKICAgICBmbG9hdCBhZGp1c3Rt
ZW50ID0gTm9Gb250RGVsdGE7CiAgICAgaWYgKHZhbHVlLT5jc3NWYWx1ZVR5cGUoKSA9PSBDU1NW
YWx1ZTo6Q1NTX1BSSU1JVElWRV9WQUxVRSkgewotICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZUlt
cGwgKnByaW1pdGl2ZVZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWVJbXBsICo+
KHZhbHVlKTsKKyAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsICpwcmltaXRpdmVWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqPih2YWx1ZS5nZXQoKSk7CiAgICAg
ICAgIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUFgpIHsKICAgICAgICAgICAgIC8vIE9ubHkgUFggaGFuZGxlZCBub3cuIElmIHdl
IGhhbmRsZSBtb3JlIHR5cGVzIGluIHRoZSBmdXR1cmUsIHBlcmhhcHMKICAgICAgICAgICAgIC8v
IGEgc3dpdGNoIHN0YXRlbWVudCBoZXJlIHdvdWxkIGJlIG1vcmUgYXBwcm9wcmlhdGUuCkBAIC00
MTAsNyArMzk0LDYgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlSZWxhdGl2ZUZvbgog
ICAgICAgICB9CiAgICAgfQogICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NfUFJPUF9fS0hU
TUxfRk9OVF9TSVpFX0RFTFRBKTsKLSAgICB2YWx1ZS0+ZGVyZWYoKTsKICAgICBpZiAoYWRqdXN0
bWVudCA9PSBOb0ZvbnREZWx0YSkKICAgICAgICAgcmV0dXJuOwogICAgIApAQCAtNDkwLDcgKzQ3
Myw4IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5UmVsYXRpdmVGb24KICAgICAgICAg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsICppbmxpbmVTdHlsZURlY2wgPSBlbGVtLT5n
ZXRJbmxpbmVTdHlsZURlY2woKTsKICAgICAgICAgZmxvYXQgY3VycmVudEZvbnRTaXplID0gY29t
cHV0ZWRGb250U2l6ZShub2RlKTsKICAgICAgICAgZmxvYXQgZGVzaXJlZEZvbnRTaXplID0ga01h
eChNaW5pbXVtRm9udFNpemUsIHN0YXJ0aW5nRm9udFNpemVzW25vZGVdICsgYWRqdXN0bWVudCk7
Ci0gICAgICAgIGlmIChpbmxpbmVTdHlsZURlY2wtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTX1BS
T1BfRk9OVF9TSVpFKSkgeworICAgICAgICBTaGFyZWRQdHI8Q1NTVmFsdWVJbXBsPiB2YWx1ZSA9
IGlubGluZVN0eWxlRGVjbC0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NfUFJPUF9GT05UX1NJWkUp
OworICAgICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgICAgIGlubGluZVN0eWxlRGVjbC0+cmVt
b3ZlUHJvcGVydHkoQ1NTX1BST1BfRk9OVF9TSVpFLCB0cnVlKTsKICAgICAgICAgICAgIGN1cnJl
bnRGb250U2l6ZSA9IGNvbXB1dGVkRm9udFNpemUobm9kZSk7CiAgICAgICAgIH0KQEAgLTY3OCwx
NCArNjYyLDkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5bGUoQwogICAg
IFFWYWx1ZUxpc3RDb25zdEl0ZXJhdG9yPENTU1Byb3BlcnR5PiBlbmQ7CiAgICAgZm9yIChRVmFs
dWVMaXN0Q29uc3RJdGVyYXRvcjxDU1NQcm9wZXJ0eT4gaXQgPSBzdHlsZS0+dmFsdWVzSXRlcmF0
b3IoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGludCBwcm9wZXJ0eUlEID0gKCppdCku
aWQoKTsKLSAgICAgICAgQ1NTVmFsdWVJbXBsICp2YWx1ZSA9IGRlY2wtPmdldFByb3BlcnR5Q1NT
VmFsdWUocHJvcGVydHlJRCk7Ci0gICAgICAgIGlmICh2YWx1ZSkgewotICAgICAgICAgICAgaWYg
KHByb3BlcnR5SUQgPT0gQ1NTX1BST1BfV0hJVEVfU1BBQ0UgJiYgaXNUYWJTcGFuTm9kZShlbGVt
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHZhbHVlLT5yZWYoKTsK
KyAgICAgICAgU2hhcmVkUHRyPENTU1ZhbHVlSW1wbD4gdmFsdWUgPSBkZWNsLT5nZXRQcm9wZXJ0
eUNTU1ZhbHVlKHByb3BlcnR5SUQpOworICAgICAgICBpZiAodmFsdWUgJiYgKHByb3BlcnR5SUQg
IT0gQ1NTX1BST1BfV0hJVEVfU1BBQ0UgfHwgIWlzVGFiU3Bhbk5vZGUoZWxlbSkpKQogICAgICAg
ICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoZGVjbCwgcHJvcGVydHlJRCk7Ci0gICAgICAgICAgICB2
YWx1ZS0+ZGVyZWYoKTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChpc0VtcHR5U3R5bGVT
cGFuKGVsZW0pKQpAQCAtNzA5LDE4ICs2ODgsOCBAQCBzdGF0aWMgYm9vbCBoYXNUZXh0RGVjb3Jh
dGlvblByb3BlcnR5KE5vCiAKICAgICBFbGVtZW50SW1wbCAqZWxlbWVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnRJbXBsICo+KG5vZGUpOwogICAgIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbklt
cGwgc3R5bGUoZWxlbWVudCk7Ci0KLSAgICBDU1NWYWx1ZUltcGwgKnZhbHVlID0gc3R5bGUuZ2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NfUFJPUF9URVhUX0RFQ09SQVRJT04sIERvTm90VXBkYXRlTGF5
b3V0KTsKLQotICAgIGlmICh2YWx1ZSkgewotICAgICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgICAg
IERPTVN0cmluZyB2YWx1ZVRleHQodmFsdWUtPmNzc1RleHQoKSk7Ci0gICAgICAgIHZhbHVlLT5k
ZXJlZigpOwotICAgICAgICBpZiAoc3RyY2FzZWNtcCh2YWx1ZVRleHQsIm5vbmUiKSAhPSAwKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IFNoYXJlZFB0cjxDU1NWYWx1ZUltcGw+IHZhbHVlID0gc3R5bGUuZ2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NfUFJPUF9URVhUX0RFQ09SQVRJT04sIERvTm90VXBkYXRlTGF5b3V0KTsKKyAgICByZXR1
cm4gdmFsdWUgJiYgc3RyY2FzZWNtcCh2YWx1ZS0+Y3NzVGV4dCgpLCAibm9uZSIpICE9IDA7CiB9
CiAKIHN0YXRpYyBOb2RlSW1wbCogaGlnaGVzdEFuY2VzdG9yV2l0aFRleHREZWNvcmF0aW9uKE5v
ZGVJbXBsICpub2RlKQpAQCAtNzQ1LDIwICs3MTQsMTYgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb25JbXBsICpBcHBseVN0eQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEhUTUxFbGVtZW50
SW1wbCAqZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50SW1wbCAqPihub2RlKTsKLSAg
ICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwgKnN0eWxlID0gZWxlbWVudC0+aW5saW5l
U3R5bGVEZWNsKCk7CisgICAgU2hhcmVkUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1w
bD4gc3R5bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKICAgICBpZiAoIXN0eWxlKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHN0eWxlLT5yZWYoKTsKICAgICBpbnQgcHJvcGVydGll
c1sxXSA9IHsgQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OIH07CiAgICAgQ1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb25JbXBsICp0ZXh0RGVjb3JhdGlvblN0eWxlID0gc3R5bGUtPmNvcHlQcm9wZXJ0
aWVzSW5TZXQocHJvcGVydGllcywgMSk7CiAKLSAgICBDU1NWYWx1ZUltcGwgKnByb3BlcnR5ID0g
c3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OKTsKLSAg
ICBpZiAocHJvcGVydHkgJiYgc3RyY2FzZWNtcChwcm9wZXJ0eS0+Y3NzVGV4dCgpLCAibm9uZSIp
ICE9IDApIHsKLSAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoc3R5bGUsIENTU19QUk9QX1RFWFRf
REVDT1JBVElPTik7Ci0gICAgfQotCi0gICAgc3R5bGUtPmRlcmVmKCk7CisgICAgU2hhcmVkUHRy
PENTU1ZhbHVlSW1wbD4gcHJvcGVydHkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1Nf
UFJPUF9URVhUX0RFQ09SQVRJT04pOworICAgIGlmIChwcm9wZXJ0eSAmJiBzdHJjYXNlY21wKHBy
b3BlcnR5LT5jc3NUZXh0KCksICJub25lIikgIT0gMCkKKyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVy
dHkoc3R5bGUuZ2V0KCksIENTU19QUk9QX1RFWFRfREVDT1JBVElPTik7CiAKICAgICByZXR1cm4g
dGV4dERlY29yYXRpb25TdHlsZTsKIH0KQEAgLTc3MywzMCArNzM4LDE5IEBAIENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uSW1wbCAqQXBwbHlTdHkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBI
VE1MRWxlbWVudEltcGwgKmVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MRWxlbWVudEltcGwgKj4o
bm9kZSk7Ci0gICAgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uSW1wbCAqY29tcHV0ZWRTdHls
ZSA9IG5ldyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25JbXBsKGVsZW1lbnQpOworICAgIFNo
YXJlZFB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb25JbXBsPiBjb21wdXRlZFN0eWxlID0g
bmV3IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbkltcGwoZWxlbWVudCk7CiAgICAgQVNTRVJU
KGNvbXB1dGVkU3R5bGUpOwogCi0gICAgY29tcHV0ZWRTdHlsZS0+cmVmKCk7Ci0KICAgICBpbnQg
cHJvcGVydGllc1sxXSA9IHsgQ1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OIH07CiAgICAgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsICp0ZXh0RGVjb3JhdGlvblN0eWxlID0gY29tcHV0ZWRT
dHlsZS0+Y29weVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzLCAxKTsKLSAgICAKIAotICAgIENT
U1ZhbHVlSW1wbCAqcHJvcGVydHkgPSBjb21wdXRlZFN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVl
KENTU19QUk9QX1RFWFRfREVDT1JBVElPTik7CisgICAgU2hhcmVkUHRyPENTU1ZhbHVlSW1wbD4g
cHJvcGVydHkgPSBjb21wdXRlZFN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU19QUk9QX1RF
WFRfREVDT1JBVElPTik7CiAgICAgaWYgKHByb3BlcnR5ICYmIHN0cmNhc2VjbXAocHJvcGVydHkt
PmNzc1RleHQoKSwgIm5vbmUiKSAhPSAwKSB7Ci0gICAgICAgIHByb3BlcnR5LT5yZWYoKTsKLSAg
ICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsICpuZXdTdHlsZSA9IHRleHREZWNv
cmF0aW9uU3R5bGUtPmNvcHkoKTsKLQotICAgICAgICBuZXdTdHlsZS0+cmVmKCk7CisgICAgICAg
IFNoYXJlZFB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGw+IG5ld1N0eWxlID0gdGV4
dERlY29yYXRpb25TdHlsZS0+Y29weSgpOwogICAgICAgICBuZXdTdHlsZS0+c2V0UHJvcGVydHko
Q1NTX1BST1BfVEVYVF9ERUNPUkFUSU9OLCAibm9uZSIpOwotICAgICAgICBhcHBseVRleHREZWNv
cmF0aW9uU3R5bGUobm9kZSwgbmV3U3R5bGUpOwotICAgICAgICBuZXdTdHlsZS0+ZGVyZWYoKTsK
LQotICAgICAgICBwcm9wZXJ0eS0+ZGVyZWYoKTsKKyAgICAgICAgYXBwbHlUZXh0RGVjb3JhdGlv
blN0eWxlKG5vZGUsIG5ld1N0eWxlLmdldCgpKTsKICAgICB9CiAKLSAgICBjb21wdXRlZFN0eWxl
LT5kZXJlZigpOwotCiAgICAgcmV0dXJuIHRleHREZWNvcmF0aW9uU3R5bGU7CiB9CiAKQEAgLTg0
MSw5ICs3OTUsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93blRleHREZWNvCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG5leHRDdXJyZW50ID0gTlVMTDsKICAgICAgICAgICAg
IAotICAgICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsICpkZWNvcmF0aW9u
ID0gZm9yY2UgPyBleHRyYWN0QW5kTmVnYXRlVGV4dERlY29yYXRpb25TdHlsZShjdXJyZW50KSA6
IGV4dHJhY3RUZXh0RGVjb3JhdGlvblN0eWxlKGN1cnJlbnQpOwotICAgICAgICAgICAgaWYgKGRl
Y29yYXRpb24pCi0gICAgICAgICAgICAgICAgZGVjb3JhdGlvbi0+cmVmKCk7CisgICAgICAgICAg
ICBTaGFyZWRQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsPiBkZWNvcmF0aW9uID0g
Zm9yY2UgPyBleHRyYWN0QW5kTmVnYXRlVGV4dERlY29yYXRpb25TdHlsZShjdXJyZW50KSA6IGV4
dHJhY3RUZXh0RGVjb3JhdGlvblN0eWxlKGN1cnJlbnQpOwogCiAgICAgICAgICAgICBmb3IgKE5v
ZGVJbXBsICpjaGlsZCA9IGN1cnJlbnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gbmV4
dENoaWxkKSB7CiAgICAgICAgICAgICAgICAgbmV4dENoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCk7CkBAIC04NTEsMTUgKzgwMywxMiBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93
blRleHREZWNvCiAgICAgICAgICAgICAgICAgaWYgKG5vZGUgPT0gY2hpbGQpIHsKICAgICAgICAg
ICAgICAgICAgICAgbmV4dEN1cnJlbnQgPSBjaGlsZDsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKG5vZGUtPmlzQW5jZXN0b3IoY2hpbGQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGx5
VGV4dERlY29yYXRpb25TdHlsZShjaGlsZCwgZGVjb3JhdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIGFwcGx5VGV4dERlY29yYXRpb25TdHlsZShjaGlsZCwgZGVjb3JhdGlvbi5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgICAgIG5leHRDdXJyZW50ID0gY2hpbGQ7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYXBwbHlUZXh0RGVjb3JhdGlvblN0eWxlKGNo
aWxkLCBkZWNvcmF0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgYXBwbHlUZXh0RGVjb3JhdGlv
blN0eWxlKGNoaWxkLCBkZWNvcmF0aW9uLmdldCgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChkZWNvcmF0aW9uKQotICAgICAgICAgICAgICAg
IGRlY29yYXRpb24tPmRlcmVmKCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC04OTksNyArODQ4
LDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bAogICAgIEFTU0VS
VChlbmQubm9kZSgpLT5pbkRvY3VtZW50KCkpOwogICAgIEFTU0VSVChSYW5nZUltcGw6OmNvbXBh
cmVCb3VuZGFyeVBvaW50cyhzdGFydCwgZW5kKSA8IDApOwogICAgIAotICAgIENTU1ZhbHVlSW1w
bCAqdGV4dERlY29yYXRpb25TcGVjaWFsUHJvcGVydHkgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NW
YWx1ZShDU1NfUFJPUF9fS0hUTUxfVEVYVF9ERUNPUkFUSU9OU19JTl9FRkZFQ1QpOworICAgIFNo
YXJlZFB0cjxDU1NWYWx1ZUltcGw+IHRleHREZWNvcmF0aW9uU3BlY2lhbFByb3BlcnR5ID0gc3R5
bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTX1BST1BfX0tIVE1MX1RFWFRfREVDT1JBVElPTlNf
SU5fRUZGRUNUKTsKIAogICAgIGlmICh0ZXh0RGVjb3JhdGlvblNwZWNpYWxQcm9wZXJ0eSkgewog
ICAgICAgICBwdXNoRG93blRleHREZWNvcmF0aW9uU3R5bGVBdEJvdW5kYXJpZXMoc3RhcnQuZG93
bnN0cmVhbSgpLCBlbmQudXBzdHJlYW0oKSk7CkBAIC0xMjczLDEyICsxMjIyLDEwIEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OmFkZElubGluZVN0eWxlSWYKICAgICB9CiAKICAgICBpZiAoc3R5
bGVDaGFuZ2UuY3NzU3R5bGUoKS5sZW5ndGgoKSA+IDApIHsKLSAgICAgICAgRWxlbWVudEltcGwg
KnN0eWxlRWxlbWVudCA9IGNyZWF0ZVN0eWxlU3BhbkVsZW1lbnQoZG9jdW1lbnQoKSk7Ci0gICAg
ICAgIHN0eWxlRWxlbWVudC0+cmVmKCk7CisgICAgICAgIFNoYXJlZFB0cjxFbGVtZW50SW1wbD4g
c3R5bGVFbGVtZW50ID0gY3JlYXRlU3R5bGVTcGFuRWxlbWVudChkb2N1bWVudCgpKTsKICAgICAg
ICAgc3R5bGVFbGVtZW50LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBzdHlsZUNoYW5nZS5jc3NT
dHlsZSgpKTsKLSAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShzdHlsZUVsZW1lbnQsIHN0YXJ0Tm9k
ZSk7Ci0gICAgICAgIHN0eWxlRWxlbWVudC0+ZGVyZWYoKTsKLSAgICAgICAgc3Vycm91bmROb2Rl
UmFuZ2VXaXRoRWxlbWVudChzdGFydE5vZGUsIGVuZE5vZGUsIHN0eWxlRWxlbWVudCk7CisgICAg
ICAgIGluc2VydE5vZGVCZWZvcmUoc3R5bGVFbGVtZW50LmdldCgpLCBzdGFydE5vZGUpOworICAg
ICAgICBzdXJyb3VuZE5vZGVSYW5nZVdpdGhFbGVtZW50KHN0YXJ0Tm9kZSwgZW5kTm9kZSwgc3R5
bGVFbGVtZW50LmdldCgpKTsKICAgICB9CiAKICAgICBpZiAoc3R5bGVDaGFuZ2UuYXBwbHlCb2xk
KCkpIHsKQEAgLTEyOTgsMjYgKzEyNDUsMTkgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YWRk
SW5saW5lU3R5bGVJZgogCiBmbG9hdCBBcHBseVN0eWxlQ29tbWFuZDo6Y29tcHV0ZWRGb250U2l6
ZShjb25zdCBOb2RlSW1wbCAqbm9kZSkKIHsKLSAgICBmbG9hdCBzaXplID0gMC4wZjsKLSAgICAK
ICAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBzaXplOworICAgICAgICByZXR1cm4gMDsK
ICAgICAKICAgICBQb3NpdGlvbiBwb3MoY29uc3RfY2FzdDxOb2RlSW1wbCAqPihub2RlKSwgMCk7
Ci0gICAgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uSW1wbCAqY29tcHV0ZWRTdHlsZSA9IHBv
cy5jb21wdXRlZFN0eWxlKCk7CisgICAgU2hhcmVkUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbkltcGw+IGNvbXB1dGVkU3R5bGUgPSBwb3MuY29tcHV0ZWRTdHlsZSgpOwogICAgIGlmICgh
Y29tcHV0ZWRTdHlsZSkKLSAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgY29tcHV0ZWRTdHlsZS0+
cmVmKCk7CisgICAgICAgIHJldHVybiAwOwogCi0gICAgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsICp2
YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCAqPihjb21wdXRlZFN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU19QUk9QX0ZPTlRfU0laRSkpOwotICAgIGlmICh2YWx1
ZSkgewotICAgICAgICB2YWx1ZS0+cmVmKCk7Ci0gICAgICAgIHNpemUgPSB2YWx1ZS0+Z2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKLSAgICAgICAgdmFsdWUtPmRlcmVm
KCk7Ci0gICAgfQorICAgIFNoYXJlZFB0cjxDU1NQcmltaXRpdmVWYWx1ZUltcGw+IHZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWVJbXBsICo+KGNvbXB1dGVkU3R5bGUtPmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTX1BST1BfRk9OVF9TSVpFKSk7CisgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBjb21wdXRlZFN0eWxlLT5kZXJlZigpOwotICAgIHJldHVy
biBzaXplOworICAgIHJldHVybiB2YWx1ZS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BYKTsKIH0KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6am9pbkNoaWxkVGV4dE5v
ZGVzKE5vZGVJbXBsICpub2RlLCBjb25zdCBQb3NpdGlvbiAmc3RhcnQsIGNvbnN0IFBvc2l0aW9u
ICZlbmQpCkluZGV4OiBraHRtbC9lZGl0aW5nL2FwcGx5X3N0eWxlX2NvbW1hbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViQ29yZS9raHRtbC9lZGl0aW5nL2FwcGx5X3N0eWxl
X2NvbW1hbmQuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xCmRpZmYgLXAgLXUgLXIxLjEga2h0
bWwvZWRpdGluZy9hcHBseV9zdHlsZV9jb21tYW5kLmgKLS0tIGtodG1sL2VkaXRpbmcvYXBwbHlf
c3R5bGVfY29tbWFuZC5oCTEyIE1heSAyMDA1IDA0OjAwOjE5IC0wMDAwCTEuMQorKysga2h0bWwv
ZWRpdGluZy9hcHBseV9zdHlsZV9jb21tYW5kLmgJMSBTZXAgMjAwNSAxNjozNTo0MSAtMDAwMApA
QCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsKICAg
ICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0OwogCi0gICAgRE9NOjpD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwgKnN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9z
dHlsZTsgfQorICAgIERPTTo6Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsICpzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICAvLyBzdHls
ZS1yZW1vdmFsIGhlbHBlcnMKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBmbG9hdCBj
b21wdXRlZEZvbnRTaXplKGNvbnN0IERPTTo6Tm9kZUltcGwgKik7CiAgICAgdm9pZCBqb2luQ2hp
bGRUZXh0Tm9kZXMoRE9NOjpOb2RlSW1wbCAqLCBjb25zdCBET006OlBvc2l0aW9uICZzdGFydCwg
Y29uc3QgRE9NOjpQb3NpdGlvbiAmZW5kKTsKICAgICAKLSAgICBET006OkNTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uSW1wbCAqbV9zdHlsZTsKKyAgICBTaGFyZWRQdHI8RE9NOjpDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbkltcGw+IG1fc3R5bGU7CiAgICAgRWRpdEFjdGlvbiBtX2VkaXRpbmdB
Y3Rpb247CiAgICAgRVByb3BlcnR5TGV2ZWwgbV9wcm9wZXJ0eUxldmVsOwogfTsK
</data>
<flag name="review"
          id="483"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>