<?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>80653</bug_id>
          
          <creation_ts>2012-03-08 16:13:22 -0800</creation_ts>
          <short_desc>CSSParser: Use Vector for intermediate property storage.</short_desc>
          <delta_ts>2012-03-10 05:03:31 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>574356</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-08 16:13:22 -0800</bug_when>
    <thetext>CSSParser is doing a bunch of strange things to manage its internal CSSProperty storage. We should switch to using a normal Vector and remove the custom allocation code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574360</commentid>
    <comment_count>1</comment_count>
      <attachid>130934</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-08 16:16:06 -0800</bug_when>
    <thetext>Created attachment 130934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574361</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-08 16:19:24 -0800</bug_when>
    <thetext>Attachment 130934 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/css/CSSParser.cpp:2738:  Declaration has space between type name and * in CSSValue *value  [whitespace/declaration] [3]
Source/WebCore/css/CSSParser.cpp:2748:  Declaration has space between type name and * in CSSValue *value  [whitespace/declaration] [3]
Source/WebCore/css/CSSParser.cpp:2758:  Declaration has space between type name and * in CSSValue *value  [whitespace/declaration] [3]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574396</commentid>
    <comment_count>3</comment_count>
      <attachid>130934</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-03-08 17:05:01 -0800</bug_when>
    <thetext>Comment on attachment 130934
Patch

Nice patch. LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>574555</commentid>
    <comment_count>4</comment_count>
      <attachid>130934</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-03-08 20:41:58 -0800</bug_when>
    <thetext>Comment on attachment 130934
Patch

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

&gt; Source/WebCore/css/CSSParser.cpp:8871
&gt; +        CSSProperty&amp; property = m_parsedProperties[i];

looks like an iterator would drop in here.

&gt; Source/WebCore/css/CSSParser.cpp:9017
&gt; +        ++i;

Could you use reverse iteration to get around having to retry removed indicies?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575018</commentid>
    <comment_count>5</comment_count>
      <attachid>130934</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-09 11:05:47 -0800</bug_when>
    <thetext>Comment on attachment 130934
Patch

Clearing flags on attachment: 130934

Committed r110305: &lt;http://trac.webkit.org/changeset/110305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575019</commentid>
    <comment_count>6</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-03-09 11:05:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>575502</commentid>
    <comment_count>7</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-03-10 05:03:31 -0800</bug_when>
    <thetext>*** Bug 19417 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130934</attachid>
            <date>2012-03-08 16:16:06 -0800</date>
            <delta_ts>2012-03-09 11:05:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80653.diff</filename>
            <type>text/plain</type>
            <size>24802</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhYjkxYzg5Li45ZDQwZjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAg
QEAKKzIwMTItMDMtMDggIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgor
CisgICAgICAgIENTU1BhcnNlcjogVXNlIFZlY3RvciBmb3IgaW50ZXJtZWRpYXRlIHByb3BlcnR5
IHN0b3JhZ2UuCisgICAgICAgIDxodHRwOi8vd2Via2l0Lm9yZy9iLzgwNjUzPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB0aGUgY3VzdG9t
IG1lbW9yeSBtYW5hZ2VtZW50IGZvciBpbnRlcm1lZGlhdGUgQ1NTUHJvcGVydGllcyBpbiBDU1NQ
YXJzZXIKKyAgICAgICAgYW5kIHJlcGxhY2UgaXQgYnkgYSBWZWN0b3I8Q1NTUHJvcGVydHksIDI1
Nj4uCisgICAgICAgIFRoaXMgYXZvaWRzIGhlYXAgYWxsb2NhdGlvbnMgYW5kIHJlbW92ZXMgYSBi
dW5jaCBvZiB1bm5lY2Vzc2FyeSBjb21wbGV4aXR5LgorCisgICAgICAgIFJlbW92ZSBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRCBmcm9tIENTU1Byb3BlcnR5IHNpbmNlIHRoZXkgYXJlIG9ubHkgY3Jl
YXRlZCBvbgorICAgICAgICB0aGUgc3RhY2sgbm93LgorCisgICAgICAgICogY3NzL0NTU0dyYW1t
YXIueToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6Q1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6fkNTU1Bh
cnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OmFkZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cm9sbGJhY2tMYXN0
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNsZWFyUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmNyZWF0ZUZvbnRGYWNlUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNy
ZWF0ZVBhZ2VSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlTWFyZ2lu
QXRSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c3RhcnREZWNsYXJhdGlvbnNG
b3JNYXJnaW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjplbmREZWNsYXJhdGlv
bnNGb3JNYXJnaW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpkZWxldGVGb250
RmFjZU9ubHlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVLZXlm
cmFtZVJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6aGFzUHJvcGVydGllcyk6CisgICAgICAgIChDU1NQYXJzZXIpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eS5oOgorICAgICAgICAqIGNzcy9TVkdDU1NQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKToKKyAgICAgICAgKiBj
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5
U2V0OjpTdHlsZVByb3BlcnR5U2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlT
ZXQ6OmFkZFBhcnNlZFByb3BlcnRpZXMpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2V0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUpOgorICAgICAg
ICAoU3R5bGVQcm9wZXJ0eVNldCk6CisKIDIwMTItMDMtMDggIENlbSBLb2NhZ2lsICA8Y2VtLmtv
Y2FnaWxAZ21haWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IENhbm5vdCBpbnNlcnQg
cmlnaHQgY3VybHkgYnJhY2tldCBvbiBzb21lIGtleWJvYXJkcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkKaW5kZXggYTU3ZWRmMy4uMWVlZjZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC0z
MjYsOSArMzI2LDkgQEAgd2Via2l0X3ZhbHVlOgogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICBpZiAoJDQpIHsKICAgICAgICAg
ICAgIHAtPm1fdmFsdWVMaXN0ID0gcC0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKLSAgICAg
ICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVz
OworICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRpZXMgPSBwLT5tX3BhcnNlZFByb3Bl
cnRpZXMuc2l6ZSgpOwogICAgICAgICAgICAgaWYgKCFwLT5wYXJzZVZhbHVlKHAtPm1faWQsIHAt
Pm1faW1wb3J0YW50KSkKLSAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KHAtPm1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOworICAgICAg
ICAgICAgICAgIHAtPnJvbGxiYWNrTGFzdFByb3BlcnRpZXMocC0+bV9wYXJzZWRQcm9wZXJ0aWVz
LnNpemUoKSAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICAgICAgcC0+bV92YWx1ZUxp
c3QgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAtMTMwMCwxMCArMTMwMCwxMCBAQCBk
ZWNsYXJhdGlvbjoKICAgICAgICAgYm9vbCBpc1Byb3BlcnR5UGFyc2VkID0gZmFsc2U7CiAgICAg
ICAgIGlmICgkMSAmJiAkNCkgewogICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5r
RmxvYXRpbmdWYWx1ZUxpc3QoJDQpOwotICAgICAgICAgICAgaW50IG9sZFBhcnNlZFByb3BlcnRp
ZXMgPSBwLT5tX251bVBhcnNlZFByb3BlcnRpZXM7CisgICAgICAgICAgICBpbnQgb2xkUGFyc2Vk
UHJvcGVydGllcyA9IHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7CiAgICAgICAgICAgICAk
JCA9IHAtPnBhcnNlVmFsdWUoJDEsICQ1KTsKICAgICAgICAgICAgIGlmICghJCQpCi0gICAgICAg
ICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX251bVBhcnNlZFByb3BlcnRp
ZXMgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xh
c3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSBvbGRQYXJzZWRQcm9w
ZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpc1Byb3BlcnR5UGFy
c2VkID0gdHJ1ZTsKICAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gbnVsbHB0cjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKaW5kZXggZWRmNzZiMy4uM2RjNGJjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1BhcnNlci5jcHAKQEAgLTE3OCwxNyArMTc4LDExIEBAIGlubGluZSB2b2lkIENTU1BhcnNlcjo6
ZW5zdXJlQ1NTVmFsdWVQb29sKCkKICAgICAgICAgbV9jc3NWYWx1ZVBvb2wgPSBDU1NWYWx1ZVBv
b2w6OmNyZWF0ZSgpOwogfQogCi0vLyBGSVhNRTogQ2FuIG1fcGFyc2VkUHJvcGVydGllcyBqdXN0
IGJlIGEgVmVjdG9yPwotICAgIAogQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJz
aW5nKQogICAgIDogbV9zdHJpY3Qoc3RyaWN0UGFyc2luZykKICAgICAsIG1faW1wb3J0YW50KGZh
bHNlKQogICAgICwgbV9pZCgwKQogICAgICwgbV9zdHlsZVNoZWV0KDApCi0gICAgLCBtX3BhcnNl
ZFByb3BlcnRpZXMoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdE1hbGxvYygzMiAqIHNp
emVvZihDU1NQcm9wZXJ0eSopKSkpCi0gICAgLCBtX251bVBhcnNlZFByb3BlcnRpZXMoMCkKLSAg
ICAsIG1fbWF4UGFyc2VkUHJvcGVydGllcygzMikKLSAgICAsIG1fbnVtUGFyc2VkUHJvcGVydGll
c0JlZm9yZU1hcmdpbkJveChJTlZBTElEX05VTV9QQVJTRURfUFJPUEVSVElFUykKICAgICAsIG1f
aW5QYXJzZVNob3J0aGFuZCgwKQogICAgICwgbV9jdXJyZW50U2hvcnRoYW5kKDApCiAgICAgLCBt
X2ltcGxpY2l0U2hvcnRoYW5kKGZhbHNlKQpAQCAtMjE4LDcgKzIxMiw2IEBAIENTU1BhcnNlcjo6
Q1NTUGFyc2VyKGJvb2wgc3RyaWN0UGFyc2luZykKIENTU1BhcnNlcjo6fkNTU1BhcnNlcigpCiB7
CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7Ci0gICAgZmFzdEZyZWUobV9wYXJzZWRQcm9wZXJ0aWVz
KTsKIAogICAgIGZhc3REZWxldGVBbGxWYWx1ZXMobV9mbG9hdGluZ1NlbGVjdG9ycyk7CiAgICAg
ZGVsZXRlQWxsVmFsdWVzKG1fZmxvYXRpbmdTZWxlY3RvclZlY3RvcnMpOwpAQCAtNTIwLDkgKzUx
Myw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xh
cmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QKICAgICBib29sIG9rID0gZmFsc2U7CiAgICAg
aWYgKG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKQogICAgICAgICBkZWxldGVGb250RmFjZU9ubHlW
YWx1ZXMoKTsKLSAgICBpZiAobV9udW1QYXJzZWRQcm9wZXJ0aWVzKSB7CisgICAgaWYgKCFtX3Bh
cnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAg
ZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRpZXMobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX251
bVBhcnNlZFByb3BlcnRpZXMpOworICAgICAgICBkZWNsYXJhdGlvbi0+YWRkUGFyc2VkUHJvcGVy
dGllcyhtX3BhcnNlZFByb3BlcnRpZXMuZGF0YSgpLCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgp
KTsKICAgICAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgfQogCkBAIC01NDMsNyArNTM2LDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGJvb2wgc3RyaWN0KQogICAgIGlmICghcGFyc2VyLnBhcnNlQ29sb3Ioc3RyaW5n
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQ1NTVmFsdWUqIHZhbHVlID0gcGFyc2Vy
Lm1fcGFyc2VkUHJvcGVydGllc1swXS0+dmFsdWUoKTsKKyAgICBDU1NWYWx1ZSogdmFsdWUgPSBw
YXJzZXIubV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkudmFsdWUoKTsKICAgICBpZiAoIXZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTY1LDcg
KzU1OCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQogICAgIGNzc3l5cGFyc2UodGhpcyk7CiAgICAgbV9ydWxlID0gMDsKIAotICAgIHJldHVybiAo
bV9udW1QYXJzZWRQcm9wZXJ0aWVzICYmIG1fcGFyc2VkUHJvcGVydGllc1swXS0+bV9pZCA9PSBD
U1NQcm9wZXJ0eUNvbG9yKTsKKyAgICByZXR1cm4gIW1fcGFyc2VkUHJvcGVydGllcy5pc0VtcHR5
KCkgJiYgbV9wYXJzZWRQcm9wZXJ0aWVzLmZpcnN0KCkuaWQoKSA9PSBDU1NQcm9wZXJ0eUNvbG9y
OwogfQogCiBib29sIENTU1BhcnNlcjo6cGFyc2VTeXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBj
b25zdCBTdHJpbmcmIHN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNjIxLDkgKzYxNCw5
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQqIGRl
Y2xhcmF0aW9uLCBjb25zdCBTdHJpbmcmIHN0CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIGlm
IChtX2hhc0ZvbnRGYWNlT25seVZhbHVlcykKICAgICAgICAgZGVsZXRlRm9udEZhY2VPbmx5VmFs
dWVzKCk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcykgeworICAgIGlmICghbV9wYXJz
ZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKSkgewogICAgICAgICBvayA9IHRydWU7Ci0gICAgICAgIGRl
Y2xhcmF0aW9uLT5hZGRQYXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzKTsKKyAgICAgICAgZGVjbGFyYXRpb24tPmFkZFBhcnNlZFByb3BlcnRp
ZXMobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSk7
CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIApAQCAtNjY3LDMxICs2NjAsMTkg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShNZWRpYUxpc3QqIHF1ZXJpZXMsIGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoaW50IHBy
b3BJZCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGlt
cGxpY2l0KQogewotICAgIE93blB0cjxDU1NQcm9wZXJ0eT4gcHJvcChhZG9wdFB0cihuZXcgQ1NT
UHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1wb3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1f
aW1wbGljaXRTaG9ydGhhbmQgfHwgaW1wbGljaXQpKSk7Ci0gICAgaWYgKG1fbnVtUGFyc2VkUHJv
cGVydGllcyA+PSBtX21heFBhcnNlZFByb3BlcnRpZXMpIHsKLSAgICAgICAgaWYgKG1fbnVtUGFy
c2VkUHJvcGVydGllcyA+IChVSU5UX01BWCAvIHNpemVvZihDU1NQcm9wZXJ0eSopKSAtIDMyKQot
ICAgICAgICAgICAgQ1JBU0goKTsgIC8vIEF2b2lkIGluY29uc2lzdGVuY2llcyB3aXRoIHJvbGxi
YWNrTGFzdFByb3BlcnRpZXMuCi0gICAgICAgIG1fbWF4UGFyc2VkUHJvcGVydGllcyArPSAzMjsK
LSAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHkqKj4o
ZmFzdFJlYWxsb2MobV9wYXJzZWRQcm9wZXJ0aWVzLAotICAgICAgICAgICAgbV9tYXhQYXJzZWRQ
cm9wZXJ0aWVzICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKTsKLSAgICB9Ci0gICAgbV9wYXJzZWRQ
cm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcysrXSA9IHByb3AubGVha1B0cigpOworICAg
IG1fcGFyc2VkUHJvcGVydGllcy5hcHBlbmQoQ1NTUHJvcGVydHkocHJvcElkLCB2YWx1ZSwgaW1w
b3J0YW50LCBtX2N1cnJlbnRTaG9ydGhhbmQsIG1faW1wbGljaXRTaG9ydGhhbmQgfHwgaW1wbGlj
aXQpKTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51
bSkKIHsKICAgICBBU1NFUlQobnVtID49IDApOwotICAgIEFTU0VSVChtX251bVBhcnNlZFByb3Bl
cnRpZXMgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOwotCi0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW07ICsraSkKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJvcGVydGllc1stLW1f
bnVtUGFyc2VkUHJvcGVydGllc107CisgICAgQVNTRVJUKG1fcGFyc2VkUHJvcGVydGllcy5zaXpl
KCkgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG51bSkpOworICAgIG1fcGFyc2VkUHJvcGVydGll
cy5zaHJpbmsobV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIG51bSk7CiB9CiAKIHZvaWQgQ1NT
UGFyc2VyOjpjbGVhclByb3BlcnRpZXMoKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX251bVBhcnNlZFByb3BlcnRpZXM7IGkrKykKLSAgICAgICAgZGVsZXRlIG1fcGFyc2VkUHJv
cGVydGllc1tpXTsKLSAgICBtX251bVBhcnNlZFByb3BlcnRpZXMgPSAwOworICAgIG1fcGFyc2Vk
UHJvcGVydGllcy5jbGVhcigpOwogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdp
bkJveCA9IElOVkFMSURfTlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogICAgIG1faGFzRm9udEZhY2VP
bmx5VmFsdWVzID0gZmFsc2U7CiB9CkBAIC0xMDcyLDcgKzEwNTMsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgU2hvcnRo
YW5kU2NvcGUgc2NvcGUodGhpcywgcHJvcElkKTsKICAgICAgICAgaWYgKG51bSAhPSAxIHx8ICFw
YXJzZVZhbHVlKENTU1Byb3BlcnR5T3ZlcmZsb3dYLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRp
ZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gMV0tPnZhbHVlKCk7CisgICAgICAgIENTU1ZhbHVl
KiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgYWRk
UHJvcGVydHkoQ1NTUHJvcGVydHlPdmVyZmxvd1ksIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0xMTY2LDcgKzExNDcsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgICAgIFNo
b3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZyk7CiAgICAg
ICAgICAgICBpZiAoIXBhcnNlVmFsdWUocHJvcGVydGllc1swXSwgaW1wb3J0YW50KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTFdLT52YWx1ZSgpOworICAg
ICAgICAgICAgQ1NTVmFsdWUqIHZhbHVlID0gbV9wYXJzZWRQcm9wZXJ0aWVzLmxhc3QoKS52YWx1
ZSgpOwogICAgICAgICAgICAgYWRkUHJvcGVydHkocHJvcGVydGllc1sxXSwgdmFsdWUsIGltcG9y
dGFudCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTkxMyw3ICsx
ODk0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCiAgICAgICAgICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkNvbGxhcHNlKTsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIENTU1ZhbHVlKiB2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNl
ZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0
eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CkBAIC0yNzU0LDcgKzI3MzUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0
YW50KQogICAgICAgICBjYXNlIDE6IHsKICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9w
ZXJ0aWVzWzBdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX251bVBhcnNl
ZFByb3BlcnRpZXMtMV0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSAqdmFsdWUgPSBt
X3BhcnNlZFByb3BlcnRpZXMubGFzdCgpLnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNj
b3BlIGltcGxpY2l0U2NvcGUodGhpcywgUHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBh
ZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzFdLCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BlcnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwpAQCAtMjc2NCwx
NyArMjc0NSwxNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNv
bnN0IGludCAqcHJvcGVydGllcywgIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBjYXNlIDI6IHsK
ICAgICAgICAgICAgIGlmICghcGFyc2VWYWx1ZShwcm9wZXJ0aWVzWzBdLCBpbXBvcnRhbnQpIHx8
ICFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMV0sIGltcG9ydGFudCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgQ1NTVmFsdWUgKnZhbHVlID0gbV9wYXJzZWRQcm9w
ZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcy0yXS0+dmFsdWUoKTsKKyAgICAgICAgICAgIENT
U1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1ttX3BhcnNlZFByb3BlcnRpZXMuc2l6
ZSgpIC0gMl0udmFsdWUoKTsKICAgICAgICAgICAgIEltcGxpY2l0U2NvcGUgaW1wbGljaXRTY29w
ZSh0aGlzLCBQcm9wZXJ0eUltcGxpY2l0KTsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHByb3Bl
cnRpZXNbMl0sIHZhbHVlLCBpbXBvcnRhbnQpOwotICAgICAgICAgICAgdmFsdWUgPSBtX3BhcnNl
ZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzLTJdLT52YWx1ZSgpOworICAgICAgICAg
ICAgdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAt
IDJdLnZhbHVlKCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNdLCB2YWx1
ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgMzogewogICAgICAgICAgICAgaWYgKCFwYXJzZVZhbHVlKHByb3BlcnRpZXNbMF0sIGltcG9y
dGFudCkgfHwgIXBhcnNlVmFsdWUocHJvcGVydGllc1sxXSwgaW1wb3J0YW50KSB8fCAhcGFyc2VW
YWx1ZShwcm9wZXJ0aWVzWzJdLCBpbXBvcnRhbnQpKQogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIENTU1ZhbHVlICp2YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllc1tt
X251bVBhcnNlZFByb3BlcnRpZXMtMl0tPnZhbHVlKCk7CisgICAgICAgICAgICBDU1NWYWx1ZSAq
dmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNbbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSAtIDJd
LnZhbHVlKCk7CiAgICAgICAgICAgICBJbXBsaWNpdFNjb3BlIGltcGxpY2l0U2NvcGUodGhpcywg
UHJvcGVydHlJbXBsaWNpdCk7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0aWVzWzNd
LCB2YWx1ZSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzExOSw3ICs3MTAw
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmxvd1RocmVhZChjb25zdCBTdHJpbmcmIGZsb3dO
YW1lLCBEb2N1bWVudCogZG9jKQogCiAgICAgbV9ydWxlID0gMDsKIAotICAgIHJldHVybiAoKG1f
bnVtUGFyc2VkUHJvcGVydGllcyA9PSAxKSAmJiAobV9wYXJzZWRQcm9wZXJ0aWVzWzBdLT5tX2lk
ID09IENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG8pKTsKKyAgICByZXR1cm4gKChtX3BhcnNlZFBy
b3BlcnRpZXMuc2l6ZSgpID09IDEpICYmIChtX3BhcnNlZFByb3BlcnRpZXMuZmlyc3QoKS5pZCgp
ID09IENTU1Byb3BlcnR5V2Via2l0Rmxvd0ludG8pKTsKIH0KIAogLy8gbm9uZSB8IDxpZGVudD4K
QEAgLTg4NjQsNyArODg0NSw3IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxl
KFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+ID4qIHNlbGVjdG9yCiAgICAgICAgIHJ1
bGUtPnN0eWxlUnVsZSgpLT5hZG9wdFNlbGVjdG9yVmVjdG9yKCpzZWxlY3RvcnMpOwogICAgICAg
ICBpZiAobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpCiAgICAgICAgICAgICBkZWxldGVGb250RmFj
ZU9ubHlWYWx1ZXMoKTsKLSAgICAgICAgcnVsZS0+c3R5bGVSdWxlKCktPnNldFByb3BlcnRpZXMo
U3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQ
cm9wZXJ0aWVzLCBtX3N0cmljdCkpOworICAgICAgICBydWxlLT5zdHlsZVJ1bGUoKS0+c2V0UHJv
cGVydGllcyhTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEo
KSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9zdHJpY3QpKTsKICAgICAgICAgcmVzdWx0
ID0gcnVsZS5nZXQoKTsKICAgICAgICAgbV9wYXJzZWRSdWxlcy5hcHBlbmQocnVsZS5yZWxlYXNl
KCkpOwogICAgICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKQEAgLTg4ODYsMTQgKzg4NjcsMTMg
QEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPE93blB0cjxDU1NQ
YXJzZXJTZWxlY3Rvcj4gPiogc2VsZWN0b3IKIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlRm9u
dEZhY2VSdWxlKCkKIHsKICAgICBtX2FsbG93SW1wb3J0UnVsZXMgPSBtX2FsbG93TmFtZXNwYWNl
RGVjbGFyYXRpb25zID0gZmFsc2U7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbnVt
UGFyc2VkUHJvcGVydGllczsgKytpKSB7Ci0gICAgICAgIENTU1Byb3BlcnR5KiBwcm9wZXJ0eSA9
IG1fcGFyc2VkUHJvcGVydGllc1tpXTsKLSAgICAgICAgaW50IGlkID0gcHJvcGVydHktPmlkKCk7
Ci0gICAgICAgIGlmIChpZCA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50ICYmIHByb3BlcnR5LT52
YWx1ZSgpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1
ZT4gdmFsdWUgPSBwcm9wZXJ0eS0+bV92YWx1ZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBwcm9w
ZXJ0eS0+bV92YWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAg
ICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHByb3BlcnR5LT52YWx1ZSgpKS0+
YXBwZW5kKHZhbHVlLnJlbGVhc2UoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaWQgPT0gQ1NTUHJv
cGVydHlGb250RmFtaWx5ICYmICghcHJvcGVydHktPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwg
c3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4ocHJvcGVydHktPnZhbHVlKCkpLT5sZW5ndGgoKSAh
PSAxKSkgeworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BhcnNlZFByb3BlcnRpZXMu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gbV9wYXJzZWRQ
cm9wZXJ0aWVzW2ldOworICAgICAgICBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eUZv
bnRWYXJpYW50ICYmIHByb3BlcnR5LnZhbHVlKCktPmlzUHJpbWl0aXZlVmFsdWUoKSkgeworICAg
ICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnR5Lm1fdmFsdWUucmVsZWFz
ZSgpOworICAgICAgICAgICAgcHJvcGVydHkubV92YWx1ZSA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRl
Q29tbWFTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHByb3BlcnR5LnZhbHVlKCkpLT5hcHBlbmQodmFsdWUucmVsZWFzZSgpKTsKKyAgICAgICAgfSBl
bHNlIGlmIChwcm9wZXJ0eS5pZCgpID09IENTU1Byb3BlcnR5Rm9udEZhbWlseSAmJiAoIXByb3Bl
cnR5LnZhbHVlKCktPmlzVmFsdWVMaXN0KCkgfHwgc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4o
cHJvcGVydHkudmFsdWUoKSktPmxlbmd0aCgpICE9IDEpKSB7CiAgICAgICAgICAgICAvLyBVbmxp
a2UgZm9udC1mYW1pbHkgcHJvcGVydHksIGZvbnQtZmFtaWx5IGRlc2NyaXB0b3IgaW4gQGZvbnQt
ZmFjZSBydWxlCiAgICAgICAgICAgICAvLyBoYXMgdG8gYmUgYSB2YWx1ZSBsaXN0IHdpdGggZXhh
Y3RseSBvbmUgZmFtaWx5IG5hbWUuIEl0IGNhbm5vdCBoYXZlIGEKICAgICAgICAgICAgIC8vIGhh
dmUgJ2luaXRpYWwnIHZhbHVlIGFuZCBjYW5ub3QgJ2luaGVyaXQnIGZyb20gcGFyZW50LgpAQCAt
ODkwMyw3ICs4ODgzLDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVGb250RmFjZVJ1bGUo
KQogICAgICAgICB9CiAgICAgfQogICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGUgPSBD
U1NGb250RmFjZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwotICAgIHJ1bGUtPnNldERlY2xh
cmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMsIG1fbnVt
UGFyc2VkUHJvcGVydGllcywgbV9zdHJpY3QpKTsKKyAgICBydWxlLT5zZXREZWNsYXJhdGlvbihT
dHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9wYXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJz
ZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9zdHJpY3QpKTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsK
ICAgICBDU1NGb250RmFjZVJ1bGUqIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7CiAgICAgbV9wYXJzZWRS
dWxlcy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwpAQCAtODk3NCw3ICs4OTU0LDcgQEAgQ1NTUnVs
ZSogQ1NTUGFyc2VyOjpjcmVhdGVQYWdlUnVsZShQYXNzT3duUHRyPENTU1BhcnNlclNlbGVjdG9y
PiBwYWdlU2VsZWN0b3IpCiAgICAgICAgIFZlY3RvcjxPd25QdHI8Q1NTUGFyc2VyU2VsZWN0b3I+
ID4gc2VsZWN0b3JWZWN0b3I7CiAgICAgICAgIHNlbGVjdG9yVmVjdG9yLmFwcGVuZChwYWdlU2Vs
ZWN0b3IpOwogICAgICAgICBydWxlLT5hZG9wdFNlbGVjdG9yVmVjdG9yKHNlbGVjdG9yVmVjdG9y
KTsKLSAgICAgICAgcnVsZS0+c2V0RGVjbGFyYXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRl
KG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVzLCBtX3N0cmljdCkpOwor
ICAgICAgICBydWxlLT5zZXREZWNsYXJhdGlvbihTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUobV9w
YXJzZWRQcm9wZXJ0aWVzLmRhdGEoKSwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKSwgbV9zdHJp
Y3QpKTsKICAgICAgICAgcGFnZVJ1bGUgPSBydWxlLmdldCgpOwogICAgICAgICBtX3BhcnNlZFJ1
bGVzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtOTAwNyw3ICs4OTg3LDcgQEAg
Q1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdp
bkJveFR5cGUgLyogbWFyZ2luQm94ICoKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1hcmdp
biBhdC1ydWxlIGhlcmUsIHVzaW5nOgogICAgIC8vICAgICAgICAtIG1hcmdpbkJveDogbWFyZ2lu
IGJveAotICAgIC8vICAgICAgICAtIG1fcGFyc2VkUHJvcGVydGllczogcHJvcGVydGllcyBhdCBb
bV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94LCBtX251bVBhcnNlZFByb3BlcnRp
ZXMpIGFyZSBmb3IgdGhpcyBhdC1ydWxlLgorICAgIC8vICAgICAgICAtIG1fcGFyc2VkUHJvcGVy
dGllczogcHJvcGVydGllcyBhdCBbbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94
LCBtX3BhcnNlZFByb3BlcnRpZXMuc2l6ZSgpXSBhcmUgZm9yIHRoaXMgYXQtcnVsZS4KICAgICAv
LyBEb24ndCBmb3JnZXQgdG8gYWxzbyB1cGRhdGUgdGhlIGFjdGlvbiBmb3IgcGFnZSBzeW1ib2wg
aW4gQ1NTR3JhbW1hci55IHN1Y2ggdGhhdCBtYXJnaW4gYXQtcnVsZSBkYXRhIGlzIGNsZWFyZWQg
aWYgcGFnZV9zZWxlY3RvciBpcyBpbnZhbGlkLgogCiAgICAgZW5kRGVjbGFyYXRpb25zRm9yTWFy
Z2luQm94KCk7CkBAIC05MDE2LDMyICs4OTk2LDI2IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3Jl
YXRlTWFyZ2luQXRSdWxlKENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBlIC8qIG1hcmdpbkJveCAq
CiAKIHZvaWQgQ1NTUGFyc2VyOjpzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpCiB7Ci0g
ICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94ID0gbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzOworICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IG1fcGFy
c2VkUHJvcGVydGllcy5zaXplKCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjplbmREZWNsYXJhdGlv
bnNGb3JNYXJnaW5Cb3goKQogewotICAgIEFTU0VSVChtX251bVBhcnNlZFByb3BlcnRpZXNCZWZv
cmVNYXJnaW5Cb3ggIT0gSU5WQUxJRF9OVU1fUEFSU0VEX1BST1BFUlRJRVMpOwotICAgIHJvbGxi
YWNrTGFzdFByb3BlcnRpZXMobV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gbV9udW1QYXJzZWRQcm9w
ZXJ0aWVzQmVmb3JlTWFyZ2luQm94KTsKKyAgICByb2xsYmFja0xhc3RQcm9wZXJ0aWVzKG1fcGFy
c2VkUHJvcGVydGllcy5zaXplKCkgLSBtX251bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5C
b3gpOwogICAgIG1fbnVtUGFyc2VkUHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCA9IElOVkFMSURf
TlVNX1BBUlNFRF9QUk9QRVJUSUVTOwogfQogCiB2b2lkIENTU1BhcnNlcjo6ZGVsZXRlRm9udEZh
Y2VPbmx5VmFsdWVzKCkKIHsKICAgICBBU1NFUlQobV9oYXNGb250RmFjZU9ubHlWYWx1ZXMpOwot
ICAgIGludCBkZWxldGVkUHJvcGVydGllcyA9IDA7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzOyArK2kpIHsKLSAgICAgICAgQ1NTUHJvcGVydHkq
IHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOwotICAgICAgICBpbnQgaWQgPSBwcm9w
ZXJ0eS0+aWQoKTsKLSAgICAgICAgaWYgKGlkID09IENTU1Byb3BlcnR5Rm9udFZhcmlhbnQgJiYg
cHJvcGVydHktPnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpIHsKLSAgICAgICAgICAgIGRlbGV0ZSBw
cm9wZXJ0eTsKLSAgICAgICAgICAgIGRlbGV0ZWRQcm9wZXJ0aWVzKys7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoZGVsZXRlZFByb3BlcnRpZXMpCi0gICAgICAgICAgICBtX3BhcnNlZFByb3BlcnRpZXNb
aSAtIGRlbGV0ZWRQcm9wZXJ0aWVzXSA9IG1fcGFyc2VkUHJvcGVydGllc1tpXTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTspIHsKKyAgICAg
ICAgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gbV9wYXJzZWRQcm9wZXJ0aWVzW2ldOworICAgICAg
ICBpZiAocHJvcGVydHkuaWQoKSA9PSBDU1NQcm9wZXJ0eUZvbnRWYXJpYW50ICYmIHByb3BlcnR5
LnZhbHVlKCktPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgICAgIG1fcGFyc2VkUHJvcGVydGll
cy5yZW1vdmUoaSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAr
K2k7CiAgICAgfQotCi0gICAgbV9udW1QYXJzZWRQcm9wZXJ0aWVzIC09IGRlbGV0ZWRQcm9wZXJ0
aWVzOwogfQogCiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIENTU1BhcnNlcjo6Y3JlYXRlS2V5ZnJh
bWVSdWxlKENTU1BhcnNlclZhbHVlTGlzdCoga2V5cykKQEAgLTkwNTgsNyArOTAzMiw3IEBAIFdl
YktpdENTU0tleWZyYW1lUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVLZXlmcmFtZVJ1bGUoQ1NTUGFy
c2VyVmFsdWVMaXN0KiBrZXlzKQogCiAgICAgUmVmUHRyPFdlYktpdENTU0tleWZyYW1lUnVsZT4g
a2V5ZnJhbWUgPSBXZWJLaXRDU1NLZXlmcmFtZVJ1bGU6OmNyZWF0ZShtX3N0eWxlU2hlZXQpOwog
ICAgIGtleWZyYW1lLT5zZXRLZXlUZXh0KGtleVN0cmluZyk7Ci0gICAga2V5ZnJhbWUtPnNldERl
Y2xhcmF0aW9uKFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZShtX3BhcnNlZFByb3BlcnRpZXMsIG1f
bnVtUGFyc2VkUHJvcGVydGllcywgbV9zdHJpY3QpKTsKKyAgICBrZXlmcmFtZS0+c2V0RGVjbGFy
YXRpb24oU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKG1fcGFyc2VkUHJvcGVydGllcy5kYXRhKCks
IG1fcGFyc2VkUHJvcGVydGllcy5zaXplKCksIG1fc3RyaWN0KSk7CiAKICAgICBjbGVhclByb3Bl
cnRpZXMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDExYzY2MDEuLjQ1YzVhNDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDU1NDYWxj
dWxhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5LmgiCiAjaW5jbHVkZSAi
Q1NTUHJvcGVydHlTb3VyY2VEYXRhLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNs
dWRlICJDb2xvci5oIgpAQCAtODMsNyArODQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFBy
b3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwg
Ym9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMo
aW50IG51bSk7Ci0gICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9udW1Q
YXJzZWRQcm9wZXJ0aWVzID4gMDsgfQorICAgIGJvb2wgaGFzUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuICFtX3BhcnNlZFByb3BlcnRpZXMuaXNFbXB0eSgpOyB9CiAKICAgICBib29sIHBhcnNl
VmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIGJvb2wgcGFyc2VTaG9ydGhh
bmQoaW50IHByb3BJZCwgY29uc3QgaW50KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywg
Ym9vbCBpbXBvcnRhbnQpOwpAQCAtMjg0LDEyICsyODUsMTAgQEAgcHVibGljOgogICAgIFJlZlB0
cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IG1fa2V5ZnJhbWU7CiAgICAgT3duUHRyPE1lZGlhUXVl
cnk+IG1fbWVkaWFRdWVyeTsKICAgICBPd25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBtX3ZhbHVl
TGlzdDsKLSAgICBDU1NQcm9wZXJ0eSoqIG1fcGFyc2VkUHJvcGVydGllczsKKyAgICBWZWN0b3I8
Q1NTUHJvcGVydHksIDI1Nj4gbV9wYXJzZWRQcm9wZXJ0aWVzOwogICAgIENTU1NlbGVjdG9yTGlz
dCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwogCiAgICAgUmVmUHRyPENTU1ZhbHVl
UG9vbD4gbV9jc3NWYWx1ZVBvb2w7Ci0gICAgdW5zaWduZWQgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
OwotICAgIHVuc2lnbmVkIG1fbWF4UGFyc2VkUHJvcGVydGllczsKICAgICB1bnNpZ25lZCBtX251
bVBhcnNlZFByb3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3g7CiAKICAgICBpbnQgbV9pblBhcnNlU2hv
cnRoYW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCAxMDFhNmZkLi5kOTBkMzFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzAsNyArMzAsNiBAQAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBDU1NQcm9wZXJ0eSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CiAgICAgQ1NTUHJvcGVydHkodW5zaWduZWQgcHJvcElELCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgaW50IHNob3J0aGFuZElE
ID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQogICAgICAgICA6IG1faWQocHJvcElEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCAyYzI5NTc2Li44YTY3ZmFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMjkyLDcgKzI5Miw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVNWR1ZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICAg
ICAgcm9sbGJhY2tMYXN0UHJvcGVydGllcygxKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQotICAgICAgICBDU1NWYWx1ZSogdmFsdWUgPSBtX3BhcnNlZFByb3BlcnRpZXNb
bV9udW1QYXJzZWRQcm9wZXJ0aWVzIC0gMV0tPnZhbHVlKCk7CisgICAgICAgIENTU1ZhbHVlKiB2
YWx1ZSA9IG1fcGFyc2VkUHJvcGVydGllcy5sYXN0KCkudmFsdWUoKTsKICAgICAgICAgYWRkUHJv
cGVydHkoQ1NTUHJvcGVydHlNYXJrZXJNaWQsIHZhbHVlLCBpbXBvcnRhbnQpOwogICAgICAgICBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmtlckVuZCwgdmFsdWUsIGltcG9ydGFudCk7CiAgICAg
ICAgIG1faW1wbGljaXRTaG9ydGhhbmQgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVBy
b3BlcnR5U2V0LmNwcAppbmRleCBlOGQ5N2NhLi42NTQ1MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuY3BwCkBAIC01NywyNiArNTcsMjcgQEAgU3R5bGVQcm9wZXJ0eVNl
dDo6U3R5bGVQcm9wZXJ0eVNldChjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+JiBwcm9wZXJ0aWVz
KQogICAgIG1fcHJvcGVydGllcy5zaHJpbmtUb0ZpdCgpOwogfQogCi1TdHlsZVByb3BlcnR5U2V0
OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBjb25zdCAqIHByb3BlcnRpZXMs
IGludCBudW1Qcm9wZXJ0aWVzLCBib29sIHVzZVN0cmljdFBhcnNpbmcpCitTdHlsZVByb3BlcnR5
U2V0OjpTdHlsZVByb3BlcnR5U2V0KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCBpbnQg
bnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQogICAgIDogbV9zdHJpY3RQYXJz
aW5nKHVzZVN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2hhc0NTU09NV3JhcHBlcihmYWxzZSkKIHsK
KyAgICAvLyBGSVhNRTogVGhpcyBsb2dpYyBiZWxvbmdzIGluIENTU1BhcnNlci4KKwogICAgIG1f
cHJvcGVydGllcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG51bVByb3BlcnRpZXMpOwogICAgIEhh
c2hNYXA8aW50LCBib29sPiBjYW5kaWRhdGVzOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
UHJvcGVydGllczsgKytpKSB7Ci0gICAgICAgIGNvbnN0IENTU1Byb3BlcnR5ICpwcm9wZXJ0eSA9
IHByb3BlcnRpZXNbaV07Ci0gICAgICAgIEFTU0VSVChwcm9wZXJ0eSk7Ci0gICAgICAgIGJvb2wg
aW1wb3J0YW50ID0gcHJvcGVydHktPmlzSW1wb3J0YW50KCk7CisgICAgICAgIGNvbnN0IENTU1By
b3BlcnR5JiBwcm9wZXJ0eSA9IHByb3BlcnRpZXNbaV07CisgICAgICAgIGJvb2wgaW1wb3J0YW50
ID0gcHJvcGVydHkuaXNJbXBvcnRhbnQoKTsKIAotICAgICAgICBIYXNoTWFwPGludCwgYm9vbD46
Oml0ZXJhdG9yIGl0ID0gY2FuZGlkYXRlcy5maW5kKHByb3BlcnR5LT5pZCgpKTsKKyAgICAgICAg
SGFzaE1hcDxpbnQsIGJvb2w+OjppdGVyYXRvciBpdCA9IGNhbmRpZGF0ZXMuZmluZChwcm9wZXJ0
eS5pZCgpKTsKICAgICAgICAgaWYgKGl0ICE9IGNhbmRpZGF0ZXMuZW5kKCkpIHsKICAgICAgICAg
ICAgIGlmICghaW1wb3J0YW50ICYmIGl0LT5zZWNvbmQpCiAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICByZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eS0+aWQoKSk7CisgICAgICAg
ICAgICByZW1vdmVQcm9wZXJ0eShwcm9wZXJ0eS5pZCgpKTsKICAgICAgICAgfQogCi0gICAgICAg
IG1fcHJvcGVydGllcy5hcHBlbmQoKnByb3BlcnR5KTsKLSAgICAgICAgY2FuZGlkYXRlcy5zZXQo
cHJvcGVydHktPmlkKCksIGltcG9ydGFudCk7CisgICAgICAgIG1fcHJvcGVydGllcy5hcHBlbmQo
cHJvcGVydHkpOworICAgICAgICBjYW5kaWRhdGVzLnNldChwcm9wZXJ0eS5pZCgpLCBpbXBvcnRh
bnQpOwogICAgIH0KIH0KIApAQCAtNjI4LDExICs2MjksMTEgQEAgdm9pZCBTdHlsZVByb3BlcnR5
U2V0OjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbiwgQ1NT
U3R5bGUKICAgICBwYXJzZXIucGFyc2VEZWNsYXJhdGlvbih0aGlzLCBzdHlsZURlY2xhcmF0aW9u
LCAwLCBjb250ZXh0U3R5bGVTaGVldCk7CiB9CiAKLXZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6YWRk
UGFyc2VkUHJvcGVydGllcyhjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QqIHByb3BlcnRpZXMsIGlu
dCBudW1Qcm9wZXJ0aWVzKQordm9pZCBTdHlsZVByb3BlcnR5U2V0OjphZGRQYXJzZWRQcm9wZXJ0
aWVzKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcykKIHsK
ICAgICBtX3Byb3BlcnRpZXMucmVzZXJ2ZUNhcGFjaXR5KG51bVByb3BlcnRpZXMpOwogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtUHJvcGVydGllczsgKytpKQotICAgICAgICBhZGRQYXJzZWRQ
cm9wZXJ0eSgqcHJvcGVydGllc1tpXSk7CisgICAgICAgIGFkZFBhcnNlZFByb3BlcnR5KHByb3Bl
cnRpZXNbaV0pOwogfQogCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OmFkZFBhcnNlZFByb3BlcnR5
KGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0
eVNldC5oCmluZGV4IGQ1YzVlNmYuLjkwNDUyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydHlTZXQuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFN0eWxlUHJvcGVydHlTZXQpOwogICAgIH0KLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBjcmVhdGUoY29uc3QgQ1NTUHJvcGVydHkqIGNvbnN0
KiBwcm9wZXJ0aWVzLCBpbnQgbnVtUHJvcGVydGllcywgYm9vbCB1c2VTdHJpY3RQYXJzaW5nKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNyZWF0ZShjb25zdCBDU1NQ
cm9wZXJ0eSogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgdXNlU3RyaWN0UGFy
c2luZykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVQcm9wZXJ0eVNl
dChwcm9wZXJ0aWVzLCBudW1Qcm9wZXJ0aWVzLCB1c2VTdHJpY3RQYXJzaW5nKSk7CiAgICAgfQpA
QCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHBhcnNlRGVjbGFyYXRpb24oY29u
c3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVT
aGVldCk7CiAKLSAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRpZXMoY29uc3QgQ1NTUHJvcGVydHkq
IGNvbnN0ICosIGludCBudW1Qcm9wZXJ0aWVzKTsKKyAgICB2b2lkIGFkZFBhcnNlZFByb3BlcnRp
ZXMoY29uc3QgQ1NTUHJvcGVydHkqLCBpbnQgbnVtUHJvcGVydGllcyk7CiAgICAgdm9pZCBhZGRQ
YXJzZWRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYpOwogCiAgICAgUGFzc1JlZlB0cjxTdHls
ZVByb3BlcnR5U2V0PiBjb3B5QmxvY2tQcm9wZXJ0aWVzKCkgY29uc3Q7CkBAIC0xMTMsNyArMTEz
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHlsZVByb3BlcnR5U2V0KCk7CiAgICAgU3R5
bGVQcm9wZXJ0eVNldChjb25zdCBWZWN0b3I8Q1NTUHJvcGVydHk+Jik7Ci0gICAgU3R5bGVQcm9w
ZXJ0eVNldChjb25zdCBDU1NQcm9wZXJ0eSogY29uc3QgKiwgaW50IG51bVByb3BlcnRpZXMsIGJv
b2wgdXNlU3RyaWN0UGFyc2luZyk7CisgICAgU3R5bGVQcm9wZXJ0eVNldChjb25zdCBDU1NQcm9w
ZXJ0eSosIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIHVzZVN0cmljdFBhcnNpbmcpOwogCiAgICAg
dm9pZCBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5jcHAKaW5kZXggOTg1MThkZS4uOTM1MzRlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKQEAgLTI5OCw4ICsyOTgsNyBAQCB2b2lkIFNWR0Zv
bnRGYWNlRWxlbWVudDo6cmVidWlsZEZvbnRGYWNlKCkKIAogICAgIC8vIFBhcnNlIGluLW1lbW9y
eSBDU1MgcnVsZXMKICAgICBDU1NQcm9wZXJ0eSBzcmNQcm9wZXJ0eShDU1NQcm9wZXJ0eVNyYywg
bGlzdCk7Ci0gICAgY29uc3QgQ1NTUHJvcGVydHkqIHNyY1Byb3BlcnR5UmVmID0gJnNyY1Byb3Bl
cnR5OwotICAgIG1fZm9udEZhY2VSdWxlLT5kZWNsYXJhdGlvbigpLT5hZGRQYXJzZWRQcm9wZXJ0
aWVzKCZzcmNQcm9wZXJ0eVJlZiwgMSk7CisgICAgbV9mb250RmFjZVJ1bGUtPmRlY2xhcmF0aW9u
KCktPmFkZFBhcnNlZFByb3BlcnRpZXMoJnNyY1Byb3BlcnR5LCAxKTsKIAogICAgIGlmIChkZXNj
cmliZXNQYXJlbnRGb250KSB7ICAgIAogICAgICAgICAvLyBUcmF2ZXJzZSBwYXJzZWQgQ1NTIHZh
bHVlcyBhbmQgYXNzb2NpYXRlIENTU0ZvbnRGYWNlU3JjVmFsdWUgZWxlbWVudHMgd2l0aCBvdXJz
ZWx2ZXMuCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>