<?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>54944</bug_id>
          
          <creation_ts>2011-02-22 01:37:22 -0800</creation_ts>
          <short_desc>Deploy EditingStyle in removeInlineStyleFromElement and removeCSSStyle</short_desc>
          <delta_ts>2011-02-22 18:22:47 -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>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>355124</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 01:37:22 -0800</bug_when>
    <thetext>This is a refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355126</commentid>
    <comment_count>1</comment_count>
      <attachid>83286</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 01:39:20 -0800</bug_when>
    <thetext>Created attachment 83286
cleanup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355129</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 01:40:58 -0800</bug_when>
    <thetext>I wanted to refactor removeImplicitlyStyledElement as well but that turned out to be more challenging than I initially anticipated so I&apos;ll do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355135</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-22 01:54:17 -0800</bug_when>
    <thetext>Attachment 83286 did not build on chromium:
Build output: http://queues.webkit.org/results/7946154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355136</commentid>
    <comment_count>4</comment_count>
      <attachid>83287</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 01:57:05 -0800</bug_when>
    <thetext>Created attachment 83287
cleanup; fixed build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355744</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 18:22:47 -0800</bug_when>
    <thetext>Committed r79382: &lt;http://trac.webkit.org/changeset/79382&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83286</attachid>
            <date>2011-02-22 01:39:20 -0800</date>
            <delta_ts>2011-02-22 01:57:01 -0800</delta_ts>
            <desc>cleanup</desc>
            <filename>bug-54944-20110222183918.patch</filename>
            <type>text/plain</type>
            <size>17605</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MzAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDItMjIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVwbG95IEVkaXRpbmdTdHlsZSBpbiByZW1vdmVJbmxpbmVTdHls
ZUZyb21FbGVtZW50IGFuZCByZW1vdmVDU1NTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5NDQKKworICAgICAgICBEZXBsb3llZCBFZGl0aW5n
U3R5bGUgaW4gcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCBhbmQgcmVtb3ZlQ1NTU3R5bGUu
CisKKyAgICAgICAgQWxzbyBleHRyYWN0ZWQgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQgZnJvbSBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5bGUs
CisgICAgICAgIHdoaWNoIHJldHVybnMgdHJ1ZSBpZmYgdGhlIHNwZWNpZmllZCBlbGVtZW50IGhh
cyBpbmxpbmUgc3R5bGUgdGhhdCBjb25mbGljdHMgb3IgbWF0Y2hlcyB0aGUgZWRpdGluZyBzdHls
ZS4KKyAgICAgICAgSXQgYWxzbyBhcHBlbmRzIGNvbmZsaWN0aW5nIHByb3BlcnR5IElEcyB0byB0
aGUgdmVjdG9yIG9mIHByb3BlcnR5IElEcyBpZiBvbmUgaXMgc3BlY2lmaWVkLgorCisgICAgICAg
ICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKTogQ2FsbHMgcmVtb3ZlQ1NTU3R5bGUuCisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZSk6IENh
bGxzIHNob3VsZFNwbGl0VGV4dEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxl
Q29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9tUnVuQmVmb3JlQXBwbHlpbmdTdHlsZSk6IENhbGxzIHJl
bW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxl
Q29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCk6IFRha2VzIEVkaXRpbmdTdHls
ZSogaW5zdGVhZCBvZiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiouCisgICAgICAgIChXZWJD
b3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5bGUpOiBEaXR0bzsgZXh0cmFjdGVk
IHRoZSBsb2dpYyB0byBkZWNpZGUgcHJvcGVydGllcyB0byByZW1vdmUgYXMKKyAgICAgICAgY29u
ZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OmhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGluZ0lubGluZVN0eWxlKTog
Q2FsbHMgc2hvdWxkUmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZSk6IENh
bGxzIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzaG91bGRTcGxpdFRleHRFbGVtZW50KTogVGFrZXMgRWRp
dGluZ1N0eWxlKiBpbnN0ZWFkIG9mIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKi4KKyAgICAg
ICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6c2hvdWxkUmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCk6IERpdHRv
LgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KTogRXh0cmFj
dGVkIGZyb20gQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUNTU1N0eWxlLgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNv
bmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudCk6IEFkZGVkLgorCiAyMDExLTAyLTIyICBT
dGV2ZSBMYWNleSAgPHNqbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAJKHJldmlzaW9uIDc5Mjc4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lk
IEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBBU1NFUlQoYmxvY2stPmlzSFRNTEVsZW1lbnQoKSk7CiAgICAgICAgICAgICBpZiAo
YmxvY2stPmlzSFRNTEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIHJlbW92ZUNTU1N0eWxl
KHN0eWxlLT5zdHlsZSgpLCB0b0hUTUxFbGVtZW50KGJsb2NrLmdldCgpKSk7CisgICAgICAgICAg
ICAgICAgcmVtb3ZlQ1NTU3R5bGUoc3R5bGUsIHRvSFRNTEVsZW1lbnQoYmxvY2suZ2V0KCkpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIW1fcmVtb3ZlT25seSkKICAgICAgICAgICAgICAgICAgICAg
YWRkQmxvY2tTdHlsZShzdHlsZUNoYW5nZSwgdG9IVE1MRWxlbWVudChibG9jay5nZXQoKSkpOwog
ICAgICAgICAgICAgfQpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6
OmFwcGx5SW5saW5lU3R5bGUKICAgICAvLyBzcGxpdCB0aGUgc3RhcnQgbm9kZSBhbmQgY29udGFp
bmluZyBlbGVtZW50IGlmIHRoZSBzZWxlY3Rpb24gc3RhcnRzIGluc2lkZSBvZiBpdAogICAgIGJv
b2wgc3BsaXRTdGFydCA9IGlzVmFsaWRDYXJldFBvc2l0aW9uSW5UZXh0Tm9kZShzdGFydCk7CiAg
ICAgaWYgKHNwbGl0U3RhcnQpIHsKLSAgICAgICAgaWYgKHNob3VsZFNwbGl0VGV4dEVsZW1lbnQo
c3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cGFyZW50RWxlbWVudCgpLCBzdHlsZS0+c3R5bGUoKSkp
CisgICAgICAgIGlmIChzaG91bGRTcGxpdFRleHRFbGVtZW50KHN0YXJ0LmRlcHJlY2F0ZWROb2Rl
KCktPnBhcmVudEVsZW1lbnQoKSwgc3R5bGUpKQogICAgICAgICAgICAgc3BsaXRUZXh0RWxlbWVu
dEF0U3RhcnQoc3RhcnQsIGVuZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNwbGl0VGV4
dEF0U3RhcnQoc3RhcnQsIGVuZCk7CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZQogICAgIC8vIHNwbGl0IHRoZSBlbmQgbm9kZSBhbmQg
Y29udGFpbmluZyBlbGVtZW50IGlmIHRoZSBzZWxlY3Rpb24gZW5kcyBpbnNpZGUgb2YgaXQKICAg
ICBib29sIHNwbGl0RW5kID0gaXNWYWxpZENhcmV0UG9zaXRpb25JblRleHROb2RlKGVuZCk7CiAg
ICAgaWYgKHNwbGl0RW5kKSB7Ci0gICAgICAgIGlmIChzaG91bGRTcGxpdFRleHRFbGVtZW50KGVu
ZC5kZXByZWNhdGVkTm9kZSgpLT5wYXJlbnRFbGVtZW50KCksIHN0eWxlLT5zdHlsZSgpKSkKKyAg
ICAgICAgaWYgKHNob3VsZFNwbGl0VGV4dEVsZW1lbnQoZW5kLmRlcHJlY2F0ZWROb2RlKCktPnBh
cmVudEVsZW1lbnQoKSwgc3R5bGUpKQogICAgICAgICAgICAgc3BsaXRUZXh0RWxlbWVudEF0RW5k
KHN0YXJ0LCBlbmQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzcGxpdFRleHRBdEVuZChz
dGFydCwgZW5kKTsKQEAgLTExMTcsNyArMTExNyw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6
OnJlbW92ZVN0eWxlRnJvbVIKICAgICAgICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzU2libGluZyA9
IG5vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICBSZWZQdHI8Tm9kZT4gbmV4dFNpYmxp
bmcgPSBub2RlLT5uZXh0U2libGluZygpOwogICAgICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4g
cGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZy
b21FbGVtZW50KHN0eWxlLT5zdHlsZSgpLCB0b0hUTUxFbGVtZW50KG5vZGUuZ2V0KCkpLCBSZW1v
dmVBbHdheXMpOworICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCB0
b0hUTUxFbGVtZW50KG5vZGUuZ2V0KCkpLCBSZW1vdmVBbHdheXMpOwogICAgICAgICBpZiAoIW5v
ZGUtPmluRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQg
dG8gdXBkYXRlIHRoZSBzdGFydCBhbmQgdGhlIGVuZCBvZiBjdXJyZW50IHNlbGVjdGlvbiBoZXJl
IGJ1dCBuZWVkIGEgdGVzdC4KICAgICAgICAgICAgIGlmIChydW5TdGFydCA9PSBub2RlKQpAQCAt
MTEzMCw3ICsxMTMwLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9t
UgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJ
bmxpbmVTdHlsZUZyb21FbGVtZW50KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwg
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSBt
b2RlLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpCitib29sIEFw
cGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KEVkaXRpbmdTdHls
ZSogc3R5bGUsIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQsIElubGluZVN0eWxlUmVt
b3ZhbE1vZGUgbW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxl
KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKIApAQCAtMTE0NywxMSArMTE0NywxMSBAQCBib29s
IEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIGlmICghc3R5bGUpCisgICAgaWYgKCFzdHlsZS0+c3R5bGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCByZW1vdmVkID0gZmFsc2U7Ci0gICAgaWYg
KHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KHN0eWxlLCBlbGVtZW50LmdldCgpLCBtb2Rl
LCBleHRyYWN0ZWRTdHlsZSkpCisgICAgaWYgKHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50
KHN0eWxlLT5zdHlsZSgpLCBlbGVtZW50LmdldCgpLCBtb2RlLCBleHRyYWN0ZWRTdHlsZSkpCiAg
ICAgICAgIHJlbW92ZWQgPSB0cnVlOwogCiAgICAgaWYgKCFlbGVtZW50LT5pbkRvY3VtZW50KCkp
CkBAIC0xMjg5LDUwICsxMjg5LDM3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlcGxhY2VX
aXRoU3Bhbk8KICAgICB9CiB9CiAKLWJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUNTU1N0
eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgSFRNTEVsZW1lbnQqIGVsZW1l
bnQsIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgbW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIGV4dHJhY3RlZFN0eWxlKQorYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5
bGUoRWRpdGluZ1N0eWxlKiBzdHlsZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQsIElubGluZVN0eWxl
UmVtb3ZhbE1vZGUgbW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0
eWxlKQogewogICAgIEFTU0VSVChzdHlsZSk7CiAgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIAor
ICAgIGlmIChtb2RlID09IFJlbW92ZU5vbmUpCisgICAgICAgIHJldHVybiBzdHlsZS0+Y29uZmxp
Y3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQpOwogCi0gICAgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIGRlY2wgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKLSAgICBp
ZiAoIWRlY2wpCisgICAgVmVjdG9yPENTU1Byb3BlcnR5SUQ+IHByb3BlcnRpZXM7CisgICAgaWYg
KCFzdHlsZS0+Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQsIHByb3Bl
cnRpZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIHJlbW92ZWQgPSBmYWxz
ZTsKLSAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
c3R5bGUtPmVuZCgpOwotICAgIGZvciAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gc3R5bGUtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihp
dC0+aWQoKSk7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBkZWNsLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwotICAgICAgICBpZiAoIXZhbHVlIHx8IChpc1RhYlNw
YW5Ob2RlKGVsZW1lbnQpICYmIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXaGl0ZVNwYWNlKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJlbW92ZWQgPSB0cnVlOwotICAgICAg
ICBpZiAobW9kZSA9PSBSZW1vdmVOb25lKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkK
LSAgICAgICAgICAgIGV4dHJhY3RlZFN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1
ZS0+Y3NzVGV4dCgpLCBkZWNsLT5nZXRQcm9wZXJ0eVByaW9yaXR5KHByb3BlcnR5SUQpLCBlYyk7
Ci0gICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5SUQpOwotCi0gICAg
ICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5VW5pY29kZUJpZGkgJiYgIWRlY2wtPmdl
dFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgaWYgKGV4dHJhY3RlZFN0eWxlKQotICAgICAgICAgICAgICAgIGV4dHJhY3RlZFN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGVjbC0+Z2V0UHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eURpcmVjdGlvbiksIGRlY2wtPmdldFByb3BlcnR5UHJpb3JpdHkoQ1NTUHJv
cGVydHlEaXJlY3Rpb24pLCBlYyk7Ci0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShlbGVt
ZW50LCBDU1NQcm9wZXJ0eURpcmVjdGlvbik7CisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7CisgICAgQVNTRVJU
KGlubGluZVN0eWxlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnRpZXMuc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBpZCA9IHByb3BlcnRpZXNbaV07Cisg
ICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+c2V0UHJvcGVydHkoaWQsIGlubGlu
ZVN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKGlkKSwgaW5saW5lU3R5bGUtPmdldFByb3BlcnR5UHJp
b3JpdHkoaWQpLCBlYyk7CiAgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoZWxl
bWVudCwgaWQpOwogICAgIH0KIAotICAgIGlmIChtb2RlID09IFJlbW92ZU5vbmUpCi0gICAgICAg
IHJldHVybiByZW1vdmVkOwotCiAgICAgLy8gTm8gbmVlZCB0byBzZXJpYWxpemUgPGZvbyBzdHls
ZT0iIj4gaWYgd2UganVzdCByZW1vdmVkIHRoZSBsYXN0IGNzcyBwcm9wZXJ0eQotICAgIGlmIChk
ZWNsLT5pc0VtcHR5KCkpCisgICAgaWYgKGlubGluZVN0eWxlLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJlbW92ZU5vZGVBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVBdHRyKTsKIAogICAgIGlmIChpc1Nw
YW5XaXRob3V0QXR0cmlidXRlc09yVW5zdHlsZVN0eWxlU3BhbihlbGVtZW50KSkKICAgICAgICAg
cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihlbGVtZW50KTsKIAotICAgIHJldHVybiByZW1v
dmVkOworICAgIHJldHVybiB0cnVlOwogfQogCiBIVE1MRWxlbWVudCogQXBwbHlTdHlsZUNvbW1h
bmQ6OmhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGluZ0lubGluZVN0eWxlKEVkaXRpbmdTdHls
ZSogc3R5bGUsIE5vZGUqIG5vZGUpCkBAIC0xMzQ0LDcgKzEzMzEsNyBAQCBIVE1MRWxlbWVudCog
QXBwbHlTdHlsZUNvbW1hbmQ6OmhpZ2hlc3RBCiAgICAgTm9kZSogdW5zcGxpdHRhYmxlRWxlbWVu
dCA9IHVuc3BsaXR0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUobm9kZSkpOwogCiAgICAgZm9yIChOb2RlICpuID0gbm9kZTsgbjsgbiA9IG4tPnBhcmVu
dE5vZGUoKSkgewotICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVudCgpICYmIHNob3VsZFJlbW92
ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUtPnN0eWxlKCksIHRvSFRNTEVsZW1lbnQobikp
KQorICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVudCgpICYmIHNob3VsZFJlbW92ZUlubGluZVN0
eWxlRnJvbUVsZW1lbnQoc3R5bGUsIHRvSFRNTEVsZW1lbnQobikpKQogICAgICAgICAgICAgcmVz
dWx0ID0gdG9IVE1MRWxlbWVudChuKTsKICAgICAgICAgLy8gU2hvdWxkIHN0b3AgYXQgdGhlIGVk
aXRhYmxlIHJvb3QgKGNhbm5vdCBjcm9zcyBlZGl0aW5nIGJvdW5kYXJ5KSBhbmQKICAgICAgICAg
Ly8gYWxzbyBzdG9wIGF0IHRoZSB1bnNwbGl0dGFibGUgZWxlbWVudCB0byBiZSBjb25zaXN0ZW50
IHdpdGggb3RoZXIgVUFzCkBAIC0xNDM2LDcgKzE0MjMsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjpwdXNoRG93bklubGluZVN0CiAgICAgICAgICAgICBlbGVtZW50c1RvUHVzaERvd24uYXBw
ZW5kKHN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVUb1B1c2hEb3duID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZSgpOwotICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0
eWxlLT5zdHlsZSgpLCB0b0hUTUxFbGVtZW50KGN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5
bGVUb1B1c2hEb3duLmdldCgpKTsKKyAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVu
dChzdHlsZSwgdG9IVE1MRWxlbWVudChjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9Q
dXNoRG93bi5nZXQoKSk7CiAKICAgICAgICAgLy8gVGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJv
dWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBh
Z2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRzIHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qg
d3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBAIC0xNTEzLDcgKzE1MDAsNyBAQCB2b2lkIEFw
cGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsCiAgICAgICAgICAgICAgICAgY2hpbGRO
b2RlID0gZWxlbS0+Zmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBy
ZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLT5zdHlsZSgpLCBlbGVtLmdldCgpLCBS
ZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLmdldCgpKTsKKyAgICAgICAgICAgIHJlbW92
ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGVsZW0uZ2V0KCksIFJlbW92ZUlmTmVlZGVk
LCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFlbGVtLT5pbkRvY3Vt
ZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAocy5kZXByZWNhdGVkTm9kZSgpID09IGVsZW0p
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgZWxlbSBtdXN0IGhhdmUgYmVlbiBmdWxs
eSBzZWxlY3RlZCwgYW5kIGl0IGlzIGF0IHRoZSBzdGFydApAQCAtMTYyMiw3ICsxNjA5LDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudAogICAgIHVwZGF0ZVN0YXJ0
RW5kKG5ld1N0YXJ0LCBQb3NpdGlvbihwcmV2Tm9kZS0+cGFyZW50Tm9kZSgpLCBwcmV2Tm9kZS0+
bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSk7CiB9
CiAKLWJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZFNwbGl0VGV4dEVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQorYm9vbCBBcHBs
eVN0eWxlQ29tbWFuZDo6c2hvdWxkU3BsaXRUZXh0RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBF
ZGl0aW5nU3R5bGUqIHN0eWxlKQogewogICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNI
VE1MRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCShyZXZpc2lvbiA3OTI3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzgsMTEgKzc4LDExIEBAIHByaXZhdGU6CiAgICAgLy8gc3R5bGUtcmVtb3ZhbCBoZWxwZXJzCiAg
ICAgYm9vbCBpc1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CiAg
ICAgYm9vbCByZW1vdmVTdHlsZUZyb21SdW5CZWZvcmVBcHBseWluZ1N0eWxlKEVkaXRpbmdTdHls
ZSosIFJlZlB0cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0cjxOb2RlPiYgcnVuRW5kKTsKLSAgICBi
b29sIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9IFJl
bW92ZUlmTmVlZGVkLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUg
PSAwKTsKLSAgICBpbmxpbmUgYm9vbCBzaG91bGRSZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQp
IHtyZXR1cm4gcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZWxlbWVudCwgUmVt
b3ZlTm9uZSk7fQorICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChFZGl0aW5n
U3R5bGUqLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9
IFJlbW92ZUlmTmVlZGVkLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5
bGUgPSAwKTsKKyAgICBpbmxpbmUgYm9vbCBzaG91bGRSZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVt
ZW50KEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBlbGVtZW50KSB7cmV0dXJuIHJl
bW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGVsZW1lbnQsIFJlbW92ZU5vbmUpO30K
ICAgICBib29sIHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlLCBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpOwogICAgIHZvaWQgcmVwbGFjZVdp
dGhTcGFuT3JSZW1vdmVJZldpdGhvdXRBdHRyaWJ1dGVzKEhUTUxFbGVtZW50KiYpOwotICAgIGJv
b2wgcmVtb3ZlQ1NTU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBIVE1MRWxlbWVu
dCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVJZk5lZWRlZCwgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlID0gMCk7CisgICAgYm9vbCByZW1vdmVDU1NT
dHlsZShFZGl0aW5nU3R5bGUqLCBIVE1MRWxlbWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUg
PSBSZW1vdmVJZk5lZWRlZCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0
eWxlID0gMCk7CiAgICAgSFRNTEVsZW1lbnQqIGhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGlu
Z0lubGluZVN0eWxlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKICAgICB2b2lkIGFwcGx5SW5saW5l
U3R5bGVUb1B1c2hEb3duKE5vZGUqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopOwogICAg
IHZvaWQgcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlKiwgTm9kZSop
OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzcGxpdFRleHRBdEVuZChj
b25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQgc3Bs
aXRUZXh0RWxlbWVudEF0U3RhcnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlv
biYgZW5kKTsKICAgICB2b2lkIHNwbGl0VGV4dEVsZW1lbnRBdEVuZChjb25zdCBQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwotICAgIGJvb2wgc2hvdWxkU3BsaXRUZXh0RWxl
bWVudChFbGVtZW50KiBlbGVtLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopOworICAgIGJv
b2wgc2hvdWxkU3BsaXRUZXh0RWxlbWVudChFbGVtZW50KiwgRWRpdGluZ1N0eWxlKik7CiAgICAg
Ym9vbCBpc1ZhbGlkQ2FyZXRQb3NpdGlvbkluVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mIHBvc2l0
aW9uKTsKICAgICBib29sIG1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbChjb25zdCBQ
b3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIGJvb2wgbWVyZ2VFbmRX
aXRoTmV4dElmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZp
c2lvbiA3OTI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDEzIEBACiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAj
aW5jbHVkZSAiUG9zaXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisjaW5j
bHVkZSAiaHRtbGVkaXRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMjIsNiAr
MzI1LDQ3IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW8KICAgICBt
X211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCk7CiB9CiAKK2Jvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCwgVmVjdG9yPENTU1Byb3Bl
cnR5SUQ+KiBjb25mbGljdGluZ1Byb3BlcnRpZXMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1l
bnQpOworICAgIEFTU0VSVCghY29uZmxpY3RpbmdQcm9wZXJ0aWVzIHx8IGNvbmZsaWN0aW5nUHJv
cGVydGllcy0+aXNFbXB0eSgpKTsKKworICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBp
bmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpOworICAgIGlmICghbV9tdXRh
YmxlU3R5bGUgfHwgIWlubGluZVN0eWxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIWNvbmZsaWN0aW5nUHJvcGVydGllcykgeworICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9tdXRhYmxlU3R5bGUtPmVuZCgpOworICAg
ICAgICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fbXV0YWJsZVN0eWxlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAg
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGl0
LT5pZCgpKTsKKworICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgb3ZlcnJpZGUgd2hpdGVzcGFjZSBw
cm9wZXJ0eSBvZiBhIHRhYiBzcGFuIGJlY2F1c2UgdGhhdCB3b3VsZCBjb2xsYXBzZSB0aGUgdGFi
IGludG8gYSBzcGFjZS4KKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5
V2hpdGVTcGFjZSAmJiBpc1RhYlNwYW5Ob2RlKGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBpZiAoaW5saW5lU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFs
dWUocHJvcGVydHlJRCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbXV0YWJsZVN0eWxlLT5lbmQoKTsKKyAg
ICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
bXV0YWJsZVN0eWxlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaXQtPmlkKCkp
OworICAgICAgICBpZiAocHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eVdoaXRlU3BhY2UgJiYgaXNU
YWJTcGFuTm9kZShlbGVtZW50KQorICAgICAgICAgICAgfHwgIWlubGluZVN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlVbmljb2RlQmlkaSAmJiBpbmxpbmVTdHls
ZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbikpCisgICAgICAgICAg
ICBjb25mbGljdGluZ1Byb3BlcnRpZXMtPmFwcGVuZChDU1NQcm9wZXJ0eURpcmVjdGlvbik7CisK
KyAgICAgICAgY29uZmxpY3RpbmdQcm9wZXJ0aWVzLT5hcHBlbmQocHJvcGVydHlJRCk7CisgICAg
fQorCisgICAgcmV0dXJuICFjb25mbGljdGluZ1Byb3BlcnRpZXMtPmlzRW1wdHkoKTsKK30KKwog
dm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0
aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gc2hvdWxkUHJlc2VydmVXcml0aW5n
RGlyZWN0aW9uKQogewogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHJldmlzaW9uIDc5Mjc4KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTEg
QEAKICNpZm5kZWYgRWRpdGluZ1N0eWxlX2gKICNkZWZpbmUgRWRpdGluZ1N0eWxlX2gKIAorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJXcml0aW5nRGlyZWN0aW9uLmgi
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDYg
KzQ1LDcgQEAgY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBOb2RlOwog
Y2xhc3MgUG9zaXRpb247CiBjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFN0eWxlZEVsZW1lbnQ7
CiAKIGNsYXNzIEVkaXRpbmdTdHlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPEVkaXRpbmdTdHlsZT4g
ewogcHVibGljOgpAQCAtODcsNiArOTAsMTEgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlU3R5
bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShOb2RlKik7CiAgICAgdm9pZCByZW1vdmVOb25F
ZGl0aW5nUHJvcGVydGllcygpOwogICAgIHZvaWQgY29sbGFwc2VUZXh0RGVjb3JhdGlvblByb3Bl
cnRpZXMoKTsKKyAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHls
ZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdCB7IHJldHVybiBjb25mbGljdHNXaXRoSW5saW5lU3R5
bGVPZkVsZW1lbnQoZWxlbWVudCwgMCk7IH0KKyAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxpbmVT
dHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBWZWN0b3I8Q1NTUHJvcGVydHlJ
RD4mIGNvbmZsaWN0aW5nUHJvcGVydGllcykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBj
b25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoZWxlbWVudCwgJmNvbmZsaWN0aW5nUHJv
cGVydGllcyk7CisgICAgfQogICAgIHZvaWQgcHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlv
biYsIFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiA9IERvTm90UHJlc2VydmVXcml0aW5n
RGlyZWN0aW9uKTsKIAogICAgIGZsb2F0IGZvbnRTaXplRGVsdGEoKSBjb25zdCB7IHJldHVybiBt
X2ZvbnRTaXplRGVsdGE7IH0KQEAgLTEwMSw2ICsxMDksNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
cmVtb3ZlVGV4dEZpbGxBbmRTdHJva2VDb2xvcnNJZk5lZWRlZChSZW5kZXJTdHlsZSopOwogICAg
IHZvaWQgcmVwbGFjZUZvbnRTaXplQnlLZXl3b3JkSWZQb3NzaWJsZShSZW5kZXJTdHlsZSosIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiopOwogICAgIHZvaWQgZXh0cmFjdEZvbnRTaXplRGVs
dGEoKTsKKyAgICBib29sIGNvbmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRF
bGVtZW50KiwgVmVjdG9yPENTU1Byb3BlcnR5SUQ+KiBjb25mbGljdGluZ1Byb3BlcnRpZXMpIGNv
bnN0OwogCiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtX211dGFibGVT
dHlsZTsKICAgICBib29sIG1fc2hvdWxkVXNlRml4ZWREZWZhdWx0Rm9udFNpemU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83287</attachid>
            <date>2011-02-22 01:57:05 -0800</date>
            <delta_ts>2011-02-22 12:30:28 -0800</delta_ts>
            <desc>cleanup; fixed build</desc>
            <filename>bug-54944-20110222185703.patch</filename>
            <type>text/plain</type>
            <size>17594</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5MzAxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDItMjIgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRGVwbG95IEVkaXRpbmdTdHlsZSBpbiByZW1vdmVJbmxpbmVTdHls
ZUZyb21FbGVtZW50IGFuZCByZW1vdmVDU1NTdHlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQ5NDQKKworICAgICAgICBEZXBsb3llZCBFZGl0aW5n
U3R5bGUgaW4gcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCBhbmQgcmVtb3ZlQ1NTU3R5bGUu
CisKKyAgICAgICAgQWxzbyBleHRyYWN0ZWQgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQgZnJvbSBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5bGUs
CisgICAgICAgIHdoaWNoIHJldHVybnMgdHJ1ZSBpZmYgdGhlIHNwZWNpZmllZCBlbGVtZW50IGhh
cyBpbmxpbmUgc3R5bGUgdGhhdCBjb25mbGljdHMgb3IgbWF0Y2hlcyB0aGUgZWRpdGluZyBzdHls
ZS4KKyAgICAgICAgSXQgYWxzbyBhcHBlbmRzIGNvbmZsaWN0aW5nIHByb3BlcnR5IElEcyB0byB0
aGUgdmVjdG9yIG9mIHByb3BlcnR5IElEcyBpZiBvbmUgaXMgc3BlY2lmaWVkLgorCisgICAgICAg
ICogZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxlKTogQ2FsbHMgcmVtb3ZlQ1NTU3R5bGUuCisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZSk6IENh
bGxzIHNob3VsZFNwbGl0VGV4dEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxl
Q29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9tUnVuQmVmb3JlQXBwbHlpbmdTdHlsZSk6IENhbGxzIHJl
bW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxl
Q29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCk6IFRha2VzIEVkaXRpbmdTdHls
ZSogaW5zdGVhZCBvZiBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiouCisgICAgICAgIChXZWJD
b3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5bGUpOiBEaXR0bzsgZXh0cmFjdGVk
IHRoZSBsb2dpYyB0byBkZWNpZGUgcHJvcGVydGllcyB0byByZW1vdmUgYXMKKyAgICAgICAgY29u
ZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlT
dHlsZUNvbW1hbmQ6OmhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGluZ0lubGluZVN0eWxlKTog
Q2FsbHMgc2hvdWxkUmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5U3R5bGVDb21tYW5kOjpwdXNoRG93bklubGluZVN0eWxlQXJvdW5kTm9kZSk6IENh
bGxzIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5U3R5bGVDb21tYW5kOjpzaG91bGRTcGxpdFRleHRFbGVtZW50KTogVGFrZXMgRWRp
dGluZ1N0eWxlKiBpbnN0ZWFkIG9mIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKi4KKyAgICAg
ICAgKiBlZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
eVN0eWxlQ29tbWFuZDo6c2hvdWxkUmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudCk6IERpdHRv
LgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRpbmdTdHlsZTo6Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KTogRXh0cmFj
dGVkIGZyb20gQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUNTU1N0eWxlLgorICAgICAgICAqIGVk
aXRpbmcvRWRpdGluZ1N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OmNv
bmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudCk6IEFkZGVkLgorCiAyMDExLTAyLTIyICBT
dGV2ZSBMYWNleSAgPHNqbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gRmlzaGVyLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFu
ZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29t
bWFuZC5jcHAJKHJldmlzaW9uIDc5Mjc4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBs
eVN0eWxlQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lk
IEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoCiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBBU1NFUlQoYmxvY2stPmlzSFRNTEVsZW1lbnQoKSk7CiAgICAgICAgICAgICBpZiAo
YmxvY2stPmlzSFRNTEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAgIHJlbW92ZUNTU1N0eWxl
KHN0eWxlLT5zdHlsZSgpLCB0b0hUTUxFbGVtZW50KGJsb2NrLmdldCgpKSk7CisgICAgICAgICAg
ICAgICAgcmVtb3ZlQ1NTU3R5bGUoc3R5bGUsIHRvSFRNTEVsZW1lbnQoYmxvY2suZ2V0KCkpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIW1fcmVtb3ZlT25seSkKICAgICAgICAgICAgICAgICAgICAg
YWRkQmxvY2tTdHlsZShzdHlsZUNoYW5nZSwgdG9IVE1MRWxlbWVudChibG9jay5nZXQoKSkpOwog
ICAgICAgICAgICAgfQpAQCAtODc2LDcgKzg3Niw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6
OmFwcGx5SW5saW5lU3R5bGUKICAgICAvLyBzcGxpdCB0aGUgc3RhcnQgbm9kZSBhbmQgY29udGFp
bmluZyBlbGVtZW50IGlmIHRoZSBzZWxlY3Rpb24gc3RhcnRzIGluc2lkZSBvZiBpdAogICAgIGJv
b2wgc3BsaXRTdGFydCA9IGlzVmFsaWRDYXJldFBvc2l0aW9uSW5UZXh0Tm9kZShzdGFydCk7CiAg
ICAgaWYgKHNwbGl0U3RhcnQpIHsKLSAgICAgICAgaWYgKHNob3VsZFNwbGl0VGV4dEVsZW1lbnQo
c3RhcnQuZGVwcmVjYXRlZE5vZGUoKS0+cGFyZW50RWxlbWVudCgpLCBzdHlsZS0+c3R5bGUoKSkp
CisgICAgICAgIGlmIChzaG91bGRTcGxpdFRleHRFbGVtZW50KHN0YXJ0LmRlcHJlY2F0ZWROb2Rl
KCktPnBhcmVudEVsZW1lbnQoKSwgc3R5bGUpKQogICAgICAgICAgICAgc3BsaXRUZXh0RWxlbWVu
dEF0U3RhcnQoc3RhcnQsIGVuZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHNwbGl0VGV4
dEF0U3RhcnQoc3RhcnQsIGVuZCk7CkBAIC04ODgsNyArODg4LDcgQEAgdm9pZCBBcHBseVN0eWxl
Q29tbWFuZDo6YXBwbHlJbmxpbmVTdHlsZQogICAgIC8vIHNwbGl0IHRoZSBlbmQgbm9kZSBhbmQg
Y29udGFpbmluZyBlbGVtZW50IGlmIHRoZSBzZWxlY3Rpb24gZW5kcyBpbnNpZGUgb2YgaXQKICAg
ICBib29sIHNwbGl0RW5kID0gaXNWYWxpZENhcmV0UG9zaXRpb25JblRleHROb2RlKGVuZCk7CiAg
ICAgaWYgKHNwbGl0RW5kKSB7Ci0gICAgICAgIGlmIChzaG91bGRTcGxpdFRleHRFbGVtZW50KGVu
ZC5kZXByZWNhdGVkTm9kZSgpLT5wYXJlbnRFbGVtZW50KCksIHN0eWxlLT5zdHlsZSgpKSkKKyAg
ICAgICAgaWYgKHNob3VsZFNwbGl0VGV4dEVsZW1lbnQoZW5kLmRlcHJlY2F0ZWROb2RlKCktPnBh
cmVudEVsZW1lbnQoKSwgc3R5bGUpKQogICAgICAgICAgICAgc3BsaXRUZXh0RWxlbWVudEF0RW5k
KHN0YXJ0LCBlbmQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzcGxpdFRleHRBdEVuZChz
dGFydCwgZW5kKTsKQEAgLTExMTcsNyArMTExNyw3IEBAIGJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6
OnJlbW92ZVN0eWxlRnJvbVIKICAgICAgICAgUmVmUHRyPE5vZGU+IHByZXZpb3VzU2libGluZyA9
IG5vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgICAgICBSZWZQdHI8Tm9kZT4gbmV4dFNpYmxp
bmcgPSBub2RlLT5uZXh0U2libGluZygpOwogICAgICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4g
cGFyZW50ID0gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZy
b21FbGVtZW50KHN0eWxlLT5zdHlsZSgpLCB0b0hUTUxFbGVtZW50KG5vZGUuZ2V0KCkpLCBSZW1v
dmVBbHdheXMpOworICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCB0
b0hUTUxFbGVtZW50KG5vZGUuZ2V0KCkpLCBSZW1vdmVBbHdheXMpOwogICAgICAgICBpZiAoIW5v
ZGUtPmluRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFdlIG1pZ2h0IG5lZWQg
dG8gdXBkYXRlIHRoZSBzdGFydCBhbmQgdGhlIGVuZCBvZiBjdXJyZW50IHNlbGVjdGlvbiBoZXJl
IGJ1dCBuZWVkIGEgdGVzdC4KICAgICAgICAgICAgIGlmIChydW5TdGFydCA9PSBub2RlKQpAQCAt
MTEzMCw3ICsxMTMwLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9t
UgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJ
bmxpbmVTdHlsZUZyb21FbGVtZW50KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwg
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZWxlbWVudCwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSBt
b2RlLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpCitib29sIEFw
cGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KEVkaXRpbmdTdHls
ZSogc3R5bGUsIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQsIElubGluZVN0eWxlUmVt
b3ZhbE1vZGUgbW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxl
KQogewogICAgIEFTU0VSVChlbGVtZW50KTsKIApAQCAtMTE0NywxMSArMTE0NywxMSBAQCBib29s
IEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAotICAgIGlmICghc3R5bGUpCisgICAgaWYgKCFzdHlsZS0+c3R5bGUoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCByZW1vdmVkID0gZmFsc2U7Ci0gICAgaWYg
KHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KHN0eWxlLCBlbGVtZW50LmdldCgpLCBtb2Rl
LCBleHRyYWN0ZWRTdHlsZSkpCisgICAgaWYgKHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50
KHN0eWxlLT5zdHlsZSgpLCBlbGVtZW50LmdldCgpLCBtb2RlLCBleHRyYWN0ZWRTdHlsZSkpCiAg
ICAgICAgIHJlbW92ZWQgPSB0cnVlOwogCiAgICAgaWYgKCFlbGVtZW50LT5pbkRvY3VtZW50KCkp
CkBAIC0xMjg5LDUwICsxMjg5LDM3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlcGxhY2VX
aXRoU3Bhbk8KICAgICB9CiB9CiAKLWJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZUNTU1N0
eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgSFRNTEVsZW1lbnQqIGVsZW1l
bnQsIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgbW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIGV4dHJhY3RlZFN0eWxlKQorYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlQ1NTU3R5
bGUoRWRpdGluZ1N0eWxlKiBzdHlsZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQsIElubGluZVN0eWxl
UmVtb3ZhbE1vZGUgbW9kZSwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0
eWxlKQogewogICAgIEFTU0VSVChzdHlsZSk7CiAgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIAor
ICAgIGlmIChtb2RlID09IFJlbW92ZU5vbmUpCisgICAgICAgIHJldHVybiBzdHlsZS0+Y29uZmxp
Y3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQpOwogCi0gICAgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIGRlY2wgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKLSAgICBp
ZiAoIWRlY2wpCisgICAgVmVjdG9yPENTU1Byb3BlcnR5SUQ+IHByb3BlcnRpZXM7CisgICAgaWYg
KCFzdHlsZS0+Y29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQsIHByb3Bl
cnRpZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBib29sIHJlbW92ZWQgPSBmYWxz
ZTsKLSAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
c3R5bGUtPmVuZCgpOwotICAgIGZvciAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gc3R5bGUtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAg
ICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihp
dC0+aWQoKSk7Ci0gICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBkZWNsLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwotICAgICAgICBpZiAoIXZhbHVlIHx8IChpc1RhYlNw
YW5Ob2RlKGVsZW1lbnQpICYmIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXaGl0ZVNwYWNlKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHJlbW92ZWQgPSB0cnVlOwotICAgICAg
ICBpZiAobW9kZSA9PSBSZW1vdmVOb25lKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkK
LSAgICAgICAgICAgIGV4dHJhY3RlZFN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1
ZS0+Y3NzVGV4dCgpLCBkZWNsLT5nZXRQcm9wZXJ0eVByaW9yaXR5KHByb3BlcnR5SUQpLCBlYyk7
Ci0gICAgICAgIHJlbW92ZUNTU1Byb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5SUQpOwotCi0gICAg
ICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5VW5pY29kZUJpZGkgJiYgIWRlY2wtPmdl
dFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pLmlzRW1wdHkoKSkgewotICAgICAg
ICAgICAgaWYgKGV4dHJhY3RlZFN0eWxlKQotICAgICAgICAgICAgICAgIGV4dHJhY3RlZFN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpcmVjdGlvbiwgZGVjbC0+Z2V0UHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eURpcmVjdGlvbiksIGRlY2wtPmdldFByb3BlcnR5UHJpb3JpdHkoQ1NTUHJv
cGVydHlEaXJlY3Rpb24pLCBlYyk7Ci0gICAgICAgICAgICByZW1vdmVDU1NQcm9wZXJ0eShlbGVt
ZW50LCBDU1NQcm9wZXJ0eURpcmVjdGlvbik7CisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7CisgICAgQVNTRVJU
KGlubGluZVN0eWxlKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHByb3BlcnRpZXMuc2l6
ZSgpOyBpKyspIHsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBpZCA9IHByb3BlcnRpZXNbaV07Cisg
ICAgICAgIGlmIChleHRyYWN0ZWRTdHlsZSkgeworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgICAgICAgICBleHRyYWN0ZWRTdHlsZS0+c2V0UHJvcGVydHkoaWQsIGlubGlu
ZVN0eWxlLT5nZXRQcm9wZXJ0eVZhbHVlKGlkKSwgaW5saW5lU3R5bGUtPmdldFByb3BlcnR5UHJp
b3JpdHkoaWQpLCBlYyk7CiAgICAgICAgIH0KKyAgICAgICAgcmVtb3ZlQ1NTUHJvcGVydHkoZWxl
bWVudCwgaWQpOwogICAgIH0KIAotICAgIGlmIChtb2RlID09IFJlbW92ZU5vbmUpCi0gICAgICAg
IHJldHVybiByZW1vdmVkOwotCiAgICAgLy8gTm8gbmVlZCB0byBzZXJpYWxpemUgPGZvbyBzdHls
ZT0iIj4gaWYgd2UganVzdCByZW1vdmVkIHRoZSBsYXN0IGNzcyBwcm9wZXJ0eQotICAgIGlmIChk
ZWNsLT5pc0VtcHR5KCkpCisgICAgaWYgKGlubGluZVN0eWxlLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJlbW92ZU5vZGVBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVBdHRyKTsKIAogICAgIGlmIChpc1Nw
YW5XaXRob3V0QXR0cmlidXRlc09yVW5zdHlsZVN0eWxlU3BhbihlbGVtZW50KSkKICAgICAgICAg
cmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihlbGVtZW50KTsKIAotICAgIHJldHVybiByZW1v
dmVkOworICAgIHJldHVybiB0cnVlOwogfQogCiBIVE1MRWxlbWVudCogQXBwbHlTdHlsZUNvbW1h
bmQ6OmhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGluZ0lubGluZVN0eWxlKEVkaXRpbmdTdHls
ZSogc3R5bGUsIE5vZGUqIG5vZGUpCkBAIC0xMzQ0LDcgKzEzMzEsNyBAQCBIVE1MRWxlbWVudCog
QXBwbHlTdHlsZUNvbW1hbmQ6OmhpZ2hlc3RBCiAgICAgTm9kZSogdW5zcGxpdHRhYmxlRWxlbWVu
dCA9IHVuc3BsaXR0YWJsZUVsZW1lbnRGb3JQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5PckJlZm9y
ZU5vZGUobm9kZSkpOwogCiAgICAgZm9yIChOb2RlICpuID0gbm9kZTsgbjsgbiA9IG4tPnBhcmVu
dE5vZGUoKSkgewotICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVudCgpICYmIHNob3VsZFJlbW92
ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUtPnN0eWxlKCksIHRvSFRNTEVsZW1lbnQobikp
KQorICAgICAgICBpZiAobi0+aXNIVE1MRWxlbWVudCgpICYmIHNob3VsZFJlbW92ZUlubGluZVN0
eWxlRnJvbUVsZW1lbnQoc3R5bGUsIHRvSFRNTEVsZW1lbnQobikpKQogICAgICAgICAgICAgcmVz
dWx0ID0gdG9IVE1MRWxlbWVudChuKTsKICAgICAgICAgLy8gU2hvdWxkIHN0b3AgYXQgdGhlIGVk
aXRhYmxlIHJvb3QgKGNhbm5vdCBjcm9zcyBlZGl0aW5nIGJvdW5kYXJ5KSBhbmQKICAgICAgICAg
Ly8gYWxzbyBzdG9wIGF0IHRoZSB1bnNwbGl0dGFibGUgZWxlbWVudCB0byBiZSBjb25zaXN0ZW50
IHdpdGggb3RoZXIgVUFzCkBAIC0xNDM2LDcgKzE0MjMsNyBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjpwdXNoRG93bklubGluZVN0CiAgICAgICAgICAgICBlbGVtZW50c1RvUHVzaERvd24uYXBw
ZW5kKHN0eWxlZEVsZW1lbnQpOwogICAgICAgICB9CiAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVUb1B1c2hEb3duID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb246OmNyZWF0ZSgpOwotICAgICAgICByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0
eWxlLT5zdHlsZSgpLCB0b0hUTUxFbGVtZW50KGN1cnJlbnQpLCBSZW1vdmVJZk5lZWRlZCwgc3R5
bGVUb1B1c2hEb3duLmdldCgpKTsKKyAgICAgICAgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVu
dChzdHlsZSwgdG9IVE1MRWxlbWVudChjdXJyZW50KSwgUmVtb3ZlSWZOZWVkZWQsIHN0eWxlVG9Q
dXNoRG93bi5nZXQoKSk7CiAKICAgICAgICAgLy8gVGhlIGlubmVyIGxvb3Agd2lsbCBnbyB0aHJv
dWdoIGNoaWxkcmVuIG9uIGVhY2ggbGV2ZWwKICAgICAgICAgLy8gRklYTUU6IHdlIHNob3VsZCBh
Z2dyZWdhdGUgaW5saW5lIGNoaWxkIGVsZW1lbnRzIHRvZ2V0aGVyIHNvIHRoYXQgd2UgZG9uJ3Qg
d3JhcCBlYWNoIGNoaWxkIHNlcGFyYXRlbHkuCkBAIC0xNTEzLDcgKzE1MDAsNyBAQCB2b2lkIEFw
cGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsCiAgICAgICAgICAgICAgICAgY2hpbGRO
b2RlID0gZWxlbS0+Zmlyc3RDaGlsZCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBy
ZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLT5zdHlsZSgpLCBlbGVtLmdldCgpLCBS
ZW1vdmVJZk5lZWRlZCwgc3R5bGVUb1B1c2hEb3duLmdldCgpKTsKKyAgICAgICAgICAgIHJlbW92
ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGVsZW0uZ2V0KCksIFJlbW92ZUlmTmVlZGVk
LCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFlbGVtLT5pbkRvY3Vt
ZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAocy5kZXByZWNhdGVkTm9kZSgpID09IGVsZW0p
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgZWxlbSBtdXN0IGhhdmUgYmVlbiBmdWxs
eSBzZWxlY3RlZCwgYW5kIGl0IGlzIGF0IHRoZSBzdGFydApAQCAtMTYyMiw3ICsxNjA5LDcgQEAg
dm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6c3BsaXRUZXh0RWxlbWVudAogICAgIHVwZGF0ZVN0YXJ0
RW5kKG5ld1N0YXJ0LCBQb3NpdGlvbihwcmV2Tm9kZS0+cGFyZW50Tm9kZSgpLCBwcmV2Tm9kZS0+
bm9kZUluZGV4KCkgKyAxLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSk7CiB9
CiAKLWJvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OnNob3VsZFNwbGl0VGV4dEVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQorYm9vbCBBcHBs
eVN0eWxlQ29tbWFuZDo6c2hvdWxkU3BsaXRUZXh0RWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBF
ZGl0aW5nU3R5bGUqIHN0eWxlKQogewogICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC0+aXNI
VE1MRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCShyZXZpc2lvbiA3OTI3OCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzgsMTEgKzc4LDExIEBAIHByaXZhdGU6CiAgICAgLy8gc3R5bGUtcmVtb3ZhbCBoZWxwZXJzCiAg
ICAgYm9vbCBpc1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KikgY29uc3Q7CiAg
ICAgYm9vbCByZW1vdmVTdHlsZUZyb21SdW5CZWZvcmVBcHBseWluZ1N0eWxlKEVkaXRpbmdTdHls
ZSosIFJlZlB0cjxOb2RlPiYgcnVuU3RhcnQsIFJlZlB0cjxOb2RlPiYgcnVuRW5kKTsKLSAgICBi
b29sIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9IFJl
bW92ZUlmTmVlZGVkLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUg
PSAwKTsKLSAgICBpbmxpbmUgYm9vbCBzaG91bGRSZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgSFRNTEVsZW1lbnQqIGVsZW1lbnQp
IHtyZXR1cm4gcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChzdHlsZSwgZWxlbWVudCwgUmVt
b3ZlTm9uZSk7fQorICAgIGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVGcm9tRWxlbWVudChFZGl0aW5n
U3R5bGUqLCBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiwgSW5saW5lU3R5bGVSZW1vdmFsTW9kZSA9
IFJlbW92ZUlmTmVlZGVkLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5
bGUgPSAwKTsKKyAgICBpbmxpbmUgYm9vbCBzaG91bGRSZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVt
ZW50KEVkaXRpbmdTdHlsZSogc3R5bGUsIEhUTUxFbGVtZW50KiBlbGVtZW50KSB7cmV0dXJuIHJl
bW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIGVsZW1lbnQsIFJlbW92ZU5vbmUpO30K
ICAgICBib29sIHJlbW92ZUltcGxpY2l0bHlTdHlsZWRFbGVtZW50KENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2RlLCBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbiogZXh0cmFjdGVkU3R5bGUpOwogICAgIHZvaWQgcmVwbGFjZVdp
dGhTcGFuT3JSZW1vdmVJZldpdGhvdXRBdHRyaWJ1dGVzKEhUTUxFbGVtZW50KiYpOwotICAgIGJv
b2wgcmVtb3ZlQ1NTU3R5bGUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBIVE1MRWxlbWVu
dCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUgPSBSZW1vdmVJZk5lZWRlZCwgQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0eWxlID0gMCk7CisgICAgYm9vbCByZW1vdmVDU1NT
dHlsZShFZGl0aW5nU3R5bGUqLCBIVE1MRWxlbWVudCosIElubGluZVN0eWxlUmVtb3ZhbE1vZGUg
PSBSZW1vdmVJZk5lZWRlZCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGV4dHJhY3RlZFN0
eWxlID0gMCk7CiAgICAgSFRNTEVsZW1lbnQqIGhpZ2hlc3RBbmNlc3RvcldpdGhDb25mbGljdGlu
Z0lubGluZVN0eWxlKEVkaXRpbmdTdHlsZSosIE5vZGUqKTsKICAgICB2b2lkIGFwcGx5SW5saW5l
U3R5bGVUb1B1c2hEb3duKE5vZGUqLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopOwogICAg
IHZvaWQgcHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUoRWRpdGluZ1N0eWxlKiwgTm9kZSop
OwpAQCAtMTAyLDcgKzEwMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzcGxpdFRleHRBdEVuZChj
b25zdCBQb3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIHZvaWQgc3Bs
aXRUZXh0RWxlbWVudEF0U3RhcnQoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlv
biYgZW5kKTsKICAgICB2b2lkIHNwbGl0VGV4dEVsZW1lbnRBdEVuZChjb25zdCBQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwotICAgIGJvb2wgc2hvdWxkU3BsaXRUZXh0RWxl
bWVudChFbGVtZW50KiBlbGVtLCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiopOworICAgIGJv
b2wgc2hvdWxkU3BsaXRUZXh0RWxlbWVudChFbGVtZW50KiwgRWRpdGluZ1N0eWxlKik7CiAgICAg
Ym9vbCBpc1ZhbGlkQ2FyZXRQb3NpdGlvbkluVGV4dE5vZGUoY29uc3QgUG9zaXRpb24mIHBvc2l0
aW9uKTsKICAgICBib29sIG1lcmdlU3RhcnRXaXRoUHJldmlvdXNJZklkZW50aWNhbChjb25zdCBQ
b3NpdGlvbiYgc3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQpOwogICAgIGJvb2wgbWVyZ2VFbmRX
aXRoTmV4dElmSWRlbnRpY2FsKGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24m
IGVuZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZp
c2lvbiA3OTI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsMTAgKzMyLDEzIEBACiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAj
aW5jbHVkZSAiUG9zaXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTdHlsZWRFbGVtZW50LmgiCisjaW5j
bHVkZSAiaHRtbGVkaXRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zMjIsNiAr
MzI1LDQ2IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW8KICAgICBt
X211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCk7CiB9CiAKK2Jvb2wgRWRpdGluZ1N0eWxlOjpjb25mbGljdHNXaXRoSW5s
aW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCwgVmVjdG9yPENTU1Byb3Bl
cnR5SUQ+KiBjb25mbGljdGluZ1Byb3BlcnRpZXMpIGNvbnN0Cit7CisgICAgQVNTRVJUKGVsZW1l
bnQpOworICAgIEFTU0VSVCghY29uZmxpY3RpbmdQcm9wZXJ0aWVzIHx8IGNvbmZsaWN0aW5nUHJv
cGVydGllcy0+aXNFbXB0eSgpKTsKKworICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBp
bmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpOworICAgIGlmICghbV9tdXRh
YmxlU3R5bGUgfHwgIWlubGluZVN0eWxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBp
ZiAoIWNvbmZsaWN0aW5nUHJvcGVydGllcykgeworICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9tdXRhYmxlU3R5bGUtPmVuZCgpOworICAg
ICAgICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fbXV0YWJsZVN0eWxlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAg
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGl0
LT5pZCgpKTsKKworICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgb3ZlcnJpZGUgd2hpdGVzcGFjZSBw
cm9wZXJ0eSBvZiBhIHRhYiBzcGFuIGJlY2F1c2UgdGhhdCB3b3VsZCBjb2xsYXBzZSB0aGUgdGFi
IGludG8gYSBzcGFjZS4KKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eUlEID09IENTU1Byb3BlcnR5
V2hpdGVTcGFjZSAmJiBpc1RhYlNwYW5Ob2RlKGVsZW1lbnQpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgICAgICBpZiAoaW5saW5lU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFs
dWUocHJvcGVydHlJRCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fbXV0YWJsZVN0eWxlLT5lbmQoKTsKKyAg
ICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
bXV0YWJsZVN0eWxlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaXQtPmlkKCkp
OworICAgICAgICBpZiAoKHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlXaGl0ZVNwYWNlICYmIGlz
VGFiU3Bhbk5vZGUoZWxlbWVudCkpIHx8ICFpbmxpbmVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShwcm9wZXJ0eUlEKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5VW5pY29kZUJpZGkgJiYgaW5saW5lU3R5bGUtPmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pKQorICAgICAgICAgICAgY29uZmxpY3Rp
bmdQcm9wZXJ0aWVzLT5hcHBlbmQoQ1NTUHJvcGVydHlEaXJlY3Rpb24pOworCisgICAgICAgIGNv
bmZsaWN0aW5nUHJvcGVydGllcy0+YXBwZW5kKHByb3BlcnR5SUQpOworICAgIH0KKworICAgIHJl
dHVybiAhY29uZmxpY3RpbmdQcm9wZXJ0aWVzLT5pc0VtcHR5KCk7Cit9CisKIHZvaWQgRWRpdGlu
Z1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hvdWxk
UHJlc2VydmVXcml0aW5nRGlyZWN0aW9uIHNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbikK
IHsKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5oCShyZXZpc2lvbiA3OTI3OCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDExIEBACiAjaWZuZGVm
IEVkaXRpbmdTdHlsZV9oCiAjZGVmaW5lIEVkaXRpbmdTdHlsZV9oCiAKKyNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiV3JpdGluZ0RpcmVjdGlvbi5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Myw2ICs0NSw3IEBAIGNs
YXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgTm9kZTsKIGNsYXNzIFBvc2l0
aW9uOwogY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBTdHlsZWRFbGVtZW50OwogCiBjbGFzcyBF
ZGl0aW5nU3R5bGUgOiBwdWJsaWMgUmVmQ291bnRlZDxFZGl0aW5nU3R5bGU+IHsKIHB1YmxpYzoK
QEAgLTg3LDYgKzkwLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVN0eWxlQ29uZmxpY3Rp
bmdXaXRoU3R5bGVPZk5vZGUoTm9kZSopOwogICAgIHZvaWQgcmVtb3ZlTm9uRWRpdGluZ1Byb3Bl
cnRpZXMoKTsKICAgICB2b2lkIGNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCk7Cisg
ICAgYm9vbCBjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCog
ZWxlbWVudCkgY29uc3QgeyByZXR1cm4gY29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZFbGVtZW50
KGVsZW1lbnQsIDApOyB9CisgICAgYm9vbCBjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1l
bnQoU3R5bGVkRWxlbWVudCogZWxlbWVudCwgVmVjdG9yPENTU1Byb3BlcnR5SUQ+JiBjb25mbGlj
dGluZ1Byb3BlcnRpZXMpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gY29uZmxpY3RzV2l0
aElubGluZVN0eWxlT2ZFbGVtZW50KGVsZW1lbnQsICZjb25mbGljdGluZ1Byb3BlcnRpZXMpOwor
ICAgIH0KICAgICB2b2lkIHByZXBhcmVUb0FwcGx5QXQoY29uc3QgUG9zaXRpb24mLCBTaG91bGRQ
cmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24gPSBEb05vdFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbik7
CiAKICAgICBmbG9hdCBmb250U2l6ZURlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9mb250U2l6ZURl
bHRhOyB9CkBAIC0xMDEsNiArMTA5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVRleHRG
aWxsQW5kU3Ryb2tlQ29sb3JzSWZOZWVkZWQoUmVuZGVyU3R5bGUqKTsKICAgICB2b2lkIHJlcGxh
Y2VGb250U2l6ZUJ5S2V5d29yZElmUG9zc2libGUoUmVuZGVyU3R5bGUqLCBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24qKTsKICAgICB2b2lkIGV4dHJhY3RGb250U2l6ZURlbHRhKCk7CisgICAg
Ym9vbCBjb25mbGljdHNXaXRoSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCosIFZl
Y3RvcjxDU1NQcm9wZXJ0eUlEPiogY29uZmxpY3RpbmdQcm9wZXJ0aWVzKSBjb25zdDsKIAogICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9tdXRhYmxlU3R5bGU7CiAgICAg
Ym9vbCBtX3Nob3VsZFVzZUZpeGVkRGVmYXVsdEZvbnRTaXplOwo=
</data>
<flag name="review"
          id="75068"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>