<?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>141110</bug_id>
          
          <creation_ts>2015-01-30 22:45:51 -0800</creation_ts>
          <short_desc>Use simpler CachedResourceMap structure in MemoryCache with CACHE_PARTITIONING enabled</short_desc>
          <delta_ts>2021-10-02 01:17:29 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=231117</see_also>
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065783</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 22:45:51 -0800</bug_when>
    <thetext>Use simpler CachedResourceMap structure in Memory with CACHE_PARTITIONING enabled. Previously, we would be using a HashMap of HashMap to store CachedResources. The outer HashMap would use the URL as key and the inner HashMap using the partition name as key. This would make traversing the structure overly complicated, especially considering that the code needs to traverse a simple HashMap if CACHE_PARTITIONING is disabled.

This patch updates the CachedResourceMap structure to be a simple HashMap, whose key is an std::pair&lt;URL, String /* partitionName */&gt;. Having a flat structure simplifies the traversal code a lot and enables more code sharing between CACHE_PARTITIONING and !CACHE_PARTITIONING. This shouldn&apos;t regress performance because we already have both a URL and a partition name when we need to look up a resource. We never need to retrieve all resources with a particular URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065784</commentid>
    <comment_count>1</comment_count>
      <attachid>245773</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-30 22:52:11 -0800</bug_when>
    <thetext>Created attachment 245773
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065860</commentid>
    <comment_count>2</comment_count>
      <attachid>245796</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-31 13:17:05 -0800</bug_when>
    <thetext>Created attachment 245796
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065861</commentid>
    <comment_count>3</comment_count>
      <attachid>245797</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-31 13:18:53 -0800</bug_when>
    <thetext>Created attachment 245797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065906</commentid>
    <comment_count>4</comment_count>
      <attachid>245797</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-31 18:33:53 -0800</bug_when>
    <thetext>Comment on attachment 245797
Patch

nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065912</commentid>
    <comment_count>5</comment_count>
      <attachid>245797</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-31 19:11:12 -0800</bug_when>
    <thetext>Comment on attachment 245797
Patch

Clearing flags on attachment: 245797

Committed r179456: &lt;http://trac.webkit.org/changeset/179456&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065913</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-31 19:11:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245773</attachid>
            <date>2015-01-30 22:52:11 -0800</date>
            <delta_ts>2015-01-31 13:17:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141110-20150130225218.patch</filename>
            <type>text/plain</type>
            <size>14914</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZjOTg0NDBmNjg2NWFh
MDlhOTQ0MzEyNzNjNDc2MjlhZmRlNTM3Yy4uNDM3MGExODhhMjlmZjVlYzIyZmE3ZmZjMzJjYjQw
MTYwMzM0ZjQ5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE1LTAxLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIHNpbXBsZXIgQ2FjaGVk
UmVzb3VyY2VNYXAgc3RydWN0dXJlIGluIE1lbW9yeUNhY2hlIHdpdGggQ0FDSEVfUEFSVElUSU9O
SU5HIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MTExMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBzaW1wbGVyIENhY2hlZFJlc291cmNlTWFwIHN0cnVjdHVyZSBpbiBNZW1vcnlDYWNo
ZSB3aXRoIENBQ0hFX1BBUlRJVElPTklORworICAgICAgICBlbmFibGVkLiBQcmV2aW91c2x5LCB3
ZSB3b3VsZCBiZSB1c2luZyBhIEhhc2hNYXAgb2YgSGFzaE1hcCB0byBzdG9yZQorICAgICAgICBD
YWNoZWRSZXNvdXJjZXMuIFRoZSBvdXRlciBIYXNoTWFwIHdvdWxkIHVzZSB0aGUgVVJMIGFzIGtl
eSBhbmQgdGhlIGlubmVyCisgICAgICAgIEhhc2hNYXAgd291bGQgdXNlIHRoZSBwYXJ0aXRpb24g
bmFtZSBhcyBrZXkuIFRoaXMgd291bGQgbWFrZSB0cmF2ZXJzaW5nIHRoZQorICAgICAgICBzdHJ1
Y3R1cmUgb3Zlcmx5IGNvbXBsaWNhdGVkLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoYXQgdGhl
IGNvZGUgbmVlZHMgdG8KKyAgICAgICAgdHJhdmVyc2UgYSBzaW1wbGUgSGFzaE1hcCBpZiBDQUNI
RV9QQVJUSVRJT05JTkcgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVz
IHRoZSBDYWNoZWRSZXNvdXJjZU1hcCBzdHJ1Y3R1cmUgdG8gYmUgYSBzaW1wbGUgSGFzaE1hcCwK
KyAgICAgICAgd2hvc2Uga2V5IGlzIGFuIHN0ZDo6cGFpcjxVUkwsIFN0cmluZyAvKiBwYXJ0aXRp
b25OYW1lICovPi4gSGF2aW5nIGEgZmxhdAorICAgICAgICBzdHJ1Y3R1cmUgc2ltcGxpZmllcyB0
aGUgdHJhdmVyc2FsIGNvZGUgYSBsb3QgYW5kIGVuYWJsZXMgbW9yZSBjb2RlIHNoYXJpbmcKKyAg
ICAgICAgYmV0d2VlbiBDQUNIRV9QQVJUSVRJT05JTkcgYW5kICFDQUNIRV9QQVJUSVRJT05JTkcu
IFRoaXMgc2hvdWxkbid0IHJlZ3Jlc3MKKyAgICAgICAgcGVyZm9ybWFuY2UgYmVjYXVzZSB3ZSBh
bHdheXMgaGF2ZSBib3RoIGEgVVJMIGFuZCBhIHBhcnRpdGlvbiBuYW1lIHdoZW4gd2UKKyAgICAg
ICAgbmVlZCB0byBsb29rIHVwIGEgcmVzb3VyY2UuIFdlIG5ldmVyIG5lZWQgdG8gcmV0cmlldmUg
YWxsIHJlc291cmNlcyB3aXRoCisgICAgICAgIGEgcGFydGljdWxhciBVUkwuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhbHNvIHN3aXRjaGVzIHRvIHVzaW5nIGEgVVJMIGFzIGtleSBpbnN0ZWFkIG9m
IGEgU3RyaW5nIGFzIHdlCisgICAgICAgIGFsd2F5cyBoYXZlIGEgVVJMIGhhcyBpbnB1dC4KKwor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXZh
bGlkYXRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlc291
cmNlRm9yUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlbW92
ZUltYWdlRnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmdldE9yaWdpbnNXaXRoQ2FjaGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OmdldFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnNldERpc2FibGVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuaDoKKworMjAxNS0wMS0zMCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCiAgICAgICAgIERyb3AgSGlzdG9yeUl0ZW0ncyBtX3ByZXYgLyBtX25leHQK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTEwNQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAppbmRleCAyMDI5
NTA0NmI4ZTJlYTFkMmI5YWY5MzVkNDVhMWU4M2YwMGMyZTAyLi5mNTZjZWFjMDdjZjI1ODVlZmEz
M2FjNzc4ZWI3NWNmODU2ZWYwNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAKQEAgLTExMCwxNyArMTEwLDEyIEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFk
ZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJl
YWQoKSk7CiAKLSAgICBhdXRvJiByZXNvdXJjZXMgPSBlbnN1cmVTZXNzaW9uUmVzb3VyY2VNYXAo
cmVzb3VyY2Uuc2Vzc2lvbklEKCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0g
ICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAgPSByZXNvdXJjZXMuZ2V0KHJlc291cmNl
LnVybCgpKTsKLSAgICBpZiAoIW9yaWdpbk1hcCkgewotICAgICAgICBvcmlnaW5NYXAgPSBuZXcg
Q2FjaGVkUmVzb3VyY2VJdGVtOwotICAgICAgICByZXNvdXJjZXMuc2V0KHJlc291cmNlLnVybCgp
LCBhZG9wdFB0cihvcmlnaW5NYXApKTsKLSAgICB9Ci0gICAgb3JpZ2luTWFwLT5zZXQocmVzb3Vy
Y2UuY2FjaGVQYXJ0aXRpb24oKSwgJnJlc291cmNlKTsKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFr
ZV9wYWlyKHJlc291cmNlLnVybCgpLCByZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKTsKICNlbHNl
Ci0gICAgcmVzb3VyY2VzLnNldChyZXNvdXJjZS51cmwoKSwgJnJlc291cmNlKTsKKyAgICBhdXRv
JiBrZXkgPSByZXNvdXJjZS51cmwoKTsKICNlbmRpZgorICAgIGVuc3VyZVNlc3Npb25SZXNvdXJj
ZU1hcChyZXNvdXJjZS5zZXNzaW9uSUQoKSkuc2V0KGtleSwgJnJlc291cmNlKTsKICAgICByZXNv
dXJjZS5zZXRJbkNhY2hlKHRydWUpOwogICAgIAogICAgIHJlc291cmNlQWNjZXNzZWQocmVzb3Vy
Y2UpOwpAQCAtMTQ2LDE3ICsxNDEsMTIgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9u
U3VjY2VlZGVkKENhY2hlZFJlc291cmNlJiByZXZhbGlkYXRpbmdSZXNvdXJjZSwgY28KIAogICAg
IGF1dG8mIHJlc291cmNlcyA9IGVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChyZXNvdXJjZS5zZXNz
aW9uSUQoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBBU1NFUlQoIXJl
c291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpIHx8ICFyZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVy
bCgpKS0+Z2V0KHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCkpKTsKLSAgICBDYWNoZWRSZXNvdXJj
ZUl0ZW0qIG9yaWdpbk1hcCA9IHJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpOwotICAgIGlm
ICghb3JpZ2luTWFwKSB7Ci0gICAgICAgIG9yaWdpbk1hcCA9IG5ldyBDYWNoZWRSZXNvdXJjZUl0
ZW07Ci0gICAgICAgIHJlc291cmNlcy5zZXQocmVzb3VyY2UudXJsKCksIGFkb3B0UHRyKG9yaWdp
bk1hcCkpOwotICAgIH0KLSAgICBvcmlnaW5NYXAtPnNldChyZXNvdXJjZS5jYWNoZVBhcnRpdGlv
bigpLCAmcmVzb3VyY2UpOworICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIocmVzb3VyY2Uu
dXJsKCksIHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCkpOwogI2Vsc2UKLSAgICBBU1NFUlQoIXJl
c291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpKTsKLSAgICByZXNvdXJjZXMuc2V0KHJlc291cmNl
LnVybCgpLCAmcmVzb3VyY2UpOworICAgIGF1dG8mIGtleSA9IHJlc291cmNlLnVybCgpOwogI2Vu
ZGlmCisgICAgQVNTRVJUKCFyZXNvdXJjZXMuZ2V0KGtleSkpOworICAgIHJlc291cmNlcy5zZXQo
a2V5LCAmcmVzb3VyY2UpOwogICAgIHJlc291cmNlLnNldEluQ2FjaGUodHJ1ZSk7CiAgICAgcmVz
b3VyY2UudXBkYXRlUmVzcG9uc2VBZnRlclJldmFsaWRhdGlvbihyZXNwb25zZSk7CiAgICAgaW5z
ZXJ0SW5MUlVMaXN0KHJlc291cmNlKTsKQEAgLTE5OSwxNCArMTg5LDExIEBAIENhY2hlZFJlc291
cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1ZXN0SW1wbChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlCiAgICAgVVJMIHVybCA9IHJlbW92ZUZyYWdtZW50SWRlbnRpZmllcklmTmVl
ZGVkKHJlcXVlc3QudXJsKCkpOwogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAg
ICBDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0ZW0gPSByZXNvdXJjZXMuZ2V0KHVybCk7Ci0gICAgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlID0gbnVsbHB0cjsKLSAgICBpZiAoaXRlbSkKLSAgICAgICAg
cmVzb3VyY2UgPSBpdGVtLT5nZXQocmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpKTsKKyAgICBhdXRv
IGtleSA9IHN0ZDo6bWFrZV9wYWlyKHVybCwgcmVxdWVzdC5jYWNoZVBhcnRpdGlvbigpKTsKICNl
bHNlCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVzb3VyY2VzLmdldCh1cmwpOwor
ICAgIGF1dG8mIGtleSA9IHVybDsKICNlbmRpZgotICAgIHJldHVybiByZXNvdXJjZTsKKyAgICBy
ZXR1cm4gcmVzb3VyY2VzLmdldChrZXkpOwogfQogCiB1bnNpZ25lZCBNZW1vcnlDYWNoZTo6ZGVh
ZENhcGFjaXR5KCkgY29uc3QgCkBAIC0yNjIsMTUgKzI0OSwxMiBAQCB2b2lkIE1lbW9yeUNhY2hl
OjpyZW1vdmVJbWFnZUZyb21DYWNoZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBkb21h
aW5Gb3JDYQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5H
KQotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZTsKLSAgICBpZiAoQ2FjaGVkUmVzb3VyY2VJ
dGVtKiBpdGVtID0gcmVzb3VyY2VzLT5nZXQodXJsKSkKLSAgICAgICAgcmVzb3VyY2UgPSBpdGVt
LT5nZXQoUmVzb3VyY2VSZXF1ZXN0OjpwYXJ0aXRpb25OYW1lKGRvbWFpbkZvckNhY2hlUGFydGl0
aW9uKSk7Ci0gICAgZWxzZQotICAgICAgICByZXNvdXJjZSA9IG51bGxwdHI7CisgICAgYXV0byBr
ZXkgPSBzdGQ6Om1ha2VfcGFpcih1cmwsIFJlc291cmNlUmVxdWVzdDo6cGFydGl0aW9uTmFtZShk
b21haW5Gb3JDYWNoZVBhcnRpdGlvbikpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZG9tYWlu
Rm9yQ2FjaGVQYXJ0aXRpb24pOwotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IHJlc291
cmNlcy0+Z2V0KHVybCk7CisgICAgYXV0byYga2V5ID0gdXJsOwogI2VuZGlmCisgICAgQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlID0gcmVzb3VyY2VzLT5nZXQoa2V5KTsKICAgICBpZiAoIXJlc291
cmNlKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyOCwzMSArNDEyLDIyIEBAIHZvaWQgTWVtb3J5
Q2FjaGU6OnJlbW92ZShDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAgICAgLy8gVGhlIHJlc291
cmNlIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVkIGJ5IHNvbWVvbmUgb3RoZXIgdGhhbiBv
dXIgY2FsbGVyLAogICAgIC8vIHdobyBuZWVkZWQgYSBmcmVzaCBjb3B5IGZvciBhIHJlbG9hZC4g
U2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjQ3OSNjNj4uCiAg
ICAgaWYgKGF1dG8qIHJlc291cmNlcyA9IHNlc3Npb25SZXNvdXJjZU1hcChyZXNvdXJjZS5zZXNz
aW9uSUQoKSkpIHsKLSAgICAgICAgaWYgKHJlc291cmNlLmluQ2FjaGUoKSkgewotICAgICAgICAg
ICAgLy8gUmVtb3ZlIGZyb20gdGhlIHJlc291cmNlIG1hcC4KICNpZiBFTkFCTEUoQ0FDSEVfUEFS
VElUSU9OSU5HKQotICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBpdGVtID0gcmVzb3Vy
Y2VzLT5nZXQocmVzb3VyY2UudXJsKCkpOwotICAgICAgICAgICAgaWYgKGl0ZW0pIHsKLSAgICAg
ICAgICAgICAgICBpdGVtLT5yZW1vdmUocmVzb3VyY2UuY2FjaGVQYXJ0aXRpb24oKSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFpdGVtLT5zaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIHJlc291
cmNlcy0+cmVtb3ZlKHJlc291cmNlLnVybCgpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgYXV0
byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihyZXNvdXJjZS51cmwoKSwgcmVzb3VyY2UuY2FjaGVQYXJ0
aXRpb24oKSk7CiAjZWxzZQotICAgICAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmUocmVzb3VyY2Uu
dXJsKCkpOworICAgICAgICBhdXRvJiBrZXkgPSByZXNvdXJjZS51cmwoKTsKICNlbmRpZgorICAg
ICAgICBpZiAocmVzb3VyY2UuaW5DYWNoZSgpKSB7CisgICAgICAgICAgICAvLyBSZW1vdmUgZnJv
bSB0aGUgcmVzb3VyY2UgbWFwLgorICAgICAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmUoa2V5KTsK
ICAgICAgICAgICAgIHJlc291cmNlLnNldEluQ2FjaGUoZmFsc2UpOwogCiAgICAgICAgICAgICAv
LyBSZW1vdmUgZnJvbSB0aGUgYXBwcm9wcmlhdGUgTFJVIGxpc3QuCiAgICAgICAgICAgICByZW1v
dmVGcm9tTFJVTGlzdChyZXNvdXJjZSk7CiAgICAgICAgICAgICByZW1vdmVGcm9tTGl2ZURlY29k
ZWRSZXNvdXJjZXNMaXN0KHJlc291cmNlKTsKICAgICAgICAgICAgIGFkanVzdFNpemUocmVzb3Vy
Y2UuaGFzQ2xpZW50cygpLCAtc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZS5zaXplKCkpKTsKLSAg
ICAgICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICAg
ICAgQVNTRVJUKCFyZXNvdXJjZXMtPmdldChyZXNvdXJjZS51cmwoKSkgfHwgcmVzb3VyY2VzLT5n
ZXQocmVzb3VyY2UudXJsKCkpLT5nZXQocmVzb3VyY2UuY2FjaGVQYXJ0aXRpb24oKSkgIT0gJnJl
c291cmNlKTsKLSNlbHNlCi0gICAgICAgICAgICBBU1NFUlQocmVzb3VyY2VzLT5nZXQocmVzb3Vy
Y2UudXJsKCkpICE9ICZyZXNvdXJjZSk7Ci0jZW5kaWYKLSAgICAgICAgfQorICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZXMtPmdldChrZXkpICE9ICZyZXNvdXJjZSk7
CiAgICAgfQogCiAgICAgcmVzb3VyY2UuZGVsZXRlSWZQb3NzaWJsZSgpOwpAQCAtNTcwLDM0ICs1
NDUsMjQgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVzb3VyY2VBY2Nlc3NlZChDYWNoZWRSZXNvdXJj
ZSYgcmVzb3VyY2UpCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmln
aW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2Uq
PiByZXNvdXJjZXNXaXRoT3JpZ2luOwotCi0gICAgZm9yIChhdXRvJiByZXNvdXJjZXMgOiBtX3Nl
c3Npb25SZXNvdXJjZXMpIHsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGUg
PSByZXNvdXJjZXMudmFsdWUtPmVuZCgpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcp
Ci0gICAgICAgIFN0cmluZyBvcmlnaW5QYXJ0aXRpb24gPSBSZXNvdXJjZVJlcXVlc3Q6OnBhcnRp
dGlvbk5hbWUob3JpZ2luLmhvc3QoKSk7CisgICAgU3RyaW5nIG9yaWdpblBhcnRpdGlvbiA9IFJl
c291cmNlUmVxdWVzdDo6cGFydGl0aW9uTmFtZShvcmlnaW4uaG9zdCgpKTsKICNlbmRpZgogCi0g
ICAgICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gcmVzb3VyY2VzLnZh
bHVlLT5iZWdpbigpOyBpdCAhPSBlOyArK2l0KSB7Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElP
TklORykKLSAgICAgICAgICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VJdGVtOjppdGVyYXRvciBpdGVt
SXRlcmF0b3IgPSBpdC0+dmFsdWUtPmJlZ2luKCk7IGl0ZW1JdGVyYXRvciAhPSBpdC0+dmFsdWUt
PmVuZCgpOyArK2l0ZW1JdGVyYXRvcikgewotICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSA9IGl0ZW1JdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICAgICAgU3RyaW5n
IHBhcnRpdGlvbiA9IGl0ZW1JdGVyYXRvci0+a2V5OwotICAgICAgICAgICAgICAgIGlmIChwYXJ0
aXRpb24gPT0gb3JpZ2luUGFydGl0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc291cmNl
c1dpdGhPcmlnaW4uYXBwZW5kKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UgPSBpdC0+dmFsdWU7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcocmVzb3VyY2UtPnVybCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc291
cmNlT3JpZ2luKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQotICAgICAgICAgICAgICAgICAg
ICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZChyZXNvdXJjZSk7CisgICAgVmVjdG9yPENhY2hl
ZFJlc291cmNlKj4gcmVzb3VyY2VzV2l0aE9yaWdpbjsKKyAgICBmb3IgKGF1dG8mIHJlc291cmNl
cyA6IG1fc2Vzc2lvblJlc291cmNlcy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGtl
eVZhbHVlIDogKnJlc291cmNlcykgeworICAgICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSAqa2V5
VmFsdWUudmFsdWU7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKKyAgICAgICAgICAg
IGF1dG8mIHBhcnRpdGlvbk5hbWUgPSBrZXlWYWx1ZS5rZXkuc2Vjb25kOworICAgICAgICAgICAg
aWYgKHBhcnRpdGlvbk5hbWUgPT0gb3JpZ2luUGFydGl0aW9uKSB7CisgICAgICAgICAgICAgICAg
cmVzb3VyY2VzV2l0aE9yaWdpbi5hcHBlbmQoJnJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KICNlbmRpZgorICAgICAgICAgICAgUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3Vy
Y2UudXJsKCkpOworICAgICAgICAgICAgaWYgKHJlc291cmNlT3JpZ2luLT5lcXVhbCgmb3JpZ2lu
KSkKKyAgICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2Up
OwogICAgICAgICB9CiAgICAgfQogCkBAIC02MDgsMTkgKzU3MywxOCBAQCB2b2lkIE1lbW9yeUNh
Y2hlOjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB2
b2lkIE1lbW9yeUNhY2hlOjpnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBv
cmlnaW5zKQogewogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgREVQUkVDQVRF
RF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaHR0cFN0cmluZywgKCJodHRwIikpOworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGh0dHBTdHJpbmcoImh0dHAiKTsKICNlbmRp
ZgotICAgIGZvciAoYXV0byYgcmVzb3VyY2VzIDogbV9zZXNzaW9uUmVzb3VyY2VzKSB7Ci0gICAg
ICAgIENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBlID0gcmVzb3VyY2VzLnZhbHVlLT5lbmQo
KTsKLSAgICAgICAgZm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSByZXNvdXJj
ZXMudmFsdWUtPmJlZ2luKCk7IGl0ICE9IGU7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8mIHJlc291
cmNlcyA6IG1fc2Vzc2lvblJlc291cmNlcy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8m
IGtleVZhbHVlIDogKnJlc291cmNlcykgeworICAgICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSAq
a2V5VmFsdWUudmFsdWU7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAg
ICAgIGlmIChpdC0+dmFsdWUtPmJlZ2luKCktPmtleSA9PSBlbXB0eVN0cmluZygpKQotICAgICAg
ICAgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0
LT52YWx1ZS0+YmVnaW4oKS0+dmFsdWUtPnVybCgpKSk7CisgICAgICAgICAgICBhdXRvJiBwYXJ0
aXRpb25OYW1lID0ga2V5VmFsdWUua2V5LnNlY29uZDsKKyAgICAgICAgICAgIGlmICghcGFydGl0
aW9uTmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShodHRwU3RyaW5nLCBwYXJ0aXRpb25OYW1lLCAwKSk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShodHRwU3RyaW5nLCBpdC0+dmFsdWUtPmJlZ2luKCktPmtleSwgMCkpOwotI2Vsc2UKLSAgICAg
ICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0LT52
YWx1ZS0+dXJsKCkpKTsKICNlbmRpZgorICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAt
Njg5LDQyICs2NTMsMzIgQEAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6Omdl
dFN0YXRpc3RpY3MoKQogewogICAgIFN0YXRpc3RpY3Mgc3RhdHM7CiAKLSAgICBmb3IgKGF1dG8m
IHJlc291cmNlcyA6IG1fc2Vzc2lvblJlc291cmNlcykgewotICAgICAgICBDYWNoZWRSZXNvdXJj
ZU1hcDo6aXRlcmF0b3IgZSA9IHJlc291cmNlcy52YWx1ZS0+ZW5kKCk7Ci0gICAgICAgIGZvciAo
Q2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGkgPSByZXNvdXJjZXMudmFsdWUtPmJlZ2luKCk7
IGkgIT0gZTsgKytpKSB7Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAg
ICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VJdGVtOjppdGVyYXRvciBpdGVtSXRlcmF0b3IgPSBpLT52
YWx1ZS0+YmVnaW4oKTsgaXRlbUl0ZXJhdG9yICE9IGktPnZhbHVlLT5lbmQoKTsgKytpdGVtSXRl
cmF0b3IpIHsKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UgPSAqaXRl
bUl0ZXJhdG9yLT52YWx1ZTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2Um
IHJlc291cmNlID0gKmktPnZhbHVlOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgc3dpdGNoIChy
ZXNvdXJjZS50eXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlOgotICAgICAgICAgICAgICAgICAgICBzdGF0cy5pbWFnZXMuYWRkUmVzb3Vy
Y2UocmVzb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgotICAgICAgICAgICAgICAgICAg
ICBzdGF0cy5jc3NTdHlsZVNoZWV0cy5hZGRSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNj
cmlwdDoKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMuc2NyaXB0cy5hZGRSZXNvdXJjZShyZXNv
dXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgIGZvciAoYXV0byYgcmVzb3Vy
Y2VzIDogbV9zZXNzaW9uUmVzb3VyY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byog
cmVzb3VyY2UgOiByZXNvdXJjZXMtPnZhbHVlcygpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHJl
c291cmNlLT50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6CisgICAgICAgICAgICAgICAgc3RhdHMuaW1hZ2VzLmFkZFJlc291cmNlKCpyZXNv
dXJjZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENhY2hlZFJl
c291cmNlOjpDU1NTdHlsZVNoZWV0OgorICAgICAgICAgICAgICAgIHN0YXRzLmNzc1N0eWxlU2hl
ZXRzLmFkZFJlc291cmNlKCpyZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6CisgICAgICAgICAgICAgICAgc3Rh
dHMuc2NyaXB0cy5hZGRSZXNvdXJjZSgqcmVzb3VyY2UpOworICAgICAgICAgICAgICAgIGJyZWFr
OwogI2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6
OlhTTFN0eWxlU2hlZXQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzLnhzbFN0eWxlU2hlZXRz
LmFkZFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgorICAgICAgICAgICAg
ICAgIHN0YXRzLnhzbFN0eWxlU2hlZXRzLmFkZFJlc291cmNlKCpyZXNvdXJjZSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQotICAgICAgICAg
ICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0ZvbnRSZXNvdXJjZToKKyAgICAgICAgICAg
IGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0ZvbnRSZXNvdXJjZToKICNlbmRpZgotICAgICAgICAg
ICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdHMuZm9udHMuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKKyAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAg
ICAgICAgICAgICBzdGF0cy5mb250cy5hZGRSZXNvdXJjZSgqcmVzb3VyY2UpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBz
dGF0czsKQEAgLTczNiwxOSArNjkwLDEwIEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnNldERpc2FibGVk
KGJvb2wgZGlzYWJsZWQpCiAgICAgaWYgKCFtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGF1dG8gc2Vzc2lvbkl0ZXJhdG9yID0gbV9zZXNzaW9u
UmVzb3VyY2VzLmJlZ2luKCk7Ci0gICAgICAgIGlmIChzZXNzaW9uSXRlcmF0b3IgPT0gbV9zZXNz
aW9uUmVzb3VyY2VzLmVuZCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGF1dG8gb3V0
ZXJJdGVyYXRvciA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmJlZ2luKCk7Ci0gICAgICAgIGlm
IChvdXRlckl0ZXJhdG9yID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmVuZCgpKQotICAgICAg
ICAgICAgYnJlYWs7Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAgYXV0
byBpbm5lckl0ZXJhdG9yID0gb3V0ZXJJdGVyYXRvci0+dmFsdWUtPmJlZ2luKCk7Ci0gICAgICAg
IHJlbW92ZSgqaW5uZXJJdGVyYXRvci0+dmFsdWUpOwotI2Vsc2UKLSAgICAgICAgcmVtb3ZlKCpv
dXRlckl0ZXJhdG9yLT52YWx1ZSk7Ci0jZW5kaWYKKyAgICB3aGlsZSAoIW1fc2Vzc2lvblJlc291
cmNlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgcmVzb3VyY2VzID0gKm1fc2Vzc2lvblJl
c291cmNlcy5iZWdpbigpLT52YWx1ZTsKKyAgICAgICAgQVNTRVJUKCFyZXNvdXJjZXMuaXNFbXB0
eSgpKTsKKyAgICAgICAgcmVtb3ZlKCpyZXNvdXJjZXMuYmVnaW4oKS0+dmFsdWUpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBjZTEy
MjNjMjFkNWEwYzlkNjZkZDczN2U4MGQwYTk3NTVjNzQyMWFhLi5mY2RmNmY0ZTViMzZkNWNiM2Ji
ODQ4YTZhMmNkNjczM2ZkNjBhM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVt
b3J5Q2FjaGUuaApAQCAtMTU5LDEwICsxNTksOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYg
RU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBD
YWNoZWRSZXNvdXJjZSo+IENhY2hlZFJlc291cmNlSXRlbTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCBPd25QdHI8Q2FjaGVkUmVzb3VyY2VJdGVtPj4gQ2FjaGVkUmVzb3VyY2VNYXA7Cisg
ICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxVUkwsIFN0cmluZyAvKiBwYXJ0aXRpb25OYW1l
ICovPiwgQ2FjaGVkUmVzb3VyY2UqPiBDYWNoZWRSZXNvdXJjZU1hcDsKICNlbHNlCi0gICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgQ2FjaGVkUmVzb3VyY2UqPiBDYWNoZWRSZXNvdXJjZU1hcDsK
KyAgICB0eXBlZGVmIEhhc2hNYXA8VVJMLCBDYWNoZWRSZXNvdXJjZSo+IENhY2hlZFJlc291cmNl
TWFwOwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgTFJVTGlzdCB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245796</attachid>
            <date>2015-01-31 13:17:05 -0800</date>
            <delta_ts>2015-01-31 13:18:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141110-20150131131712.patch</filename>
            <type>text/plain</type>
            <size>15309</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlMmE2NzQ5NjgwOGEy
NTJhNDQ4ZTE2ZjE3ODkyMDZlODlmZmY3My4uMjAxMWE1NDcyYWQzOTkzZWM3ZDg5ZDNjOTkyNjVh
MDkzZjQ5YTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE1LTAxLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHNpbXBsZXIgQ2FjaGVk
UmVzb3VyY2VNYXAgc3RydWN0dXJlIGluIE1lbW9yeUNhY2hlIHdpdGggQ0FDSEVfUEFSVElUSU9O
SU5HIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MTExMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBzaW1wbGVyIENhY2hlZFJlc291cmNlTWFwIHN0cnVjdHVyZSBpbiBNZW1vcnlDYWNo
ZSB3aXRoIENBQ0hFX1BBUlRJVElPTklORworICAgICAgICBlbmFibGVkLiBQcmV2aW91c2x5LCB3
ZSB3b3VsZCBiZSB1c2luZyBhIEhhc2hNYXAgb2YgSGFzaE1hcCB0byBzdG9yZQorICAgICAgICBD
YWNoZWRSZXNvdXJjZXMuIFRoZSBvdXRlciBIYXNoTWFwIHdvdWxkIHVzZSB0aGUgVVJMIGFzIGtl
eSBhbmQgdGhlIGlubmVyCisgICAgICAgIEhhc2hNYXAgd291bGQgdXNlIHRoZSBwYXJ0aXRpb24g
bmFtZSBhcyBrZXkuIFRoaXMgd291bGQgbWFrZSB0cmF2ZXJzaW5nIHRoZQorICAgICAgICBzdHJ1
Y3R1cmUgb3Zlcmx5IGNvbXBsaWNhdGVkLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoYXQgdGhl
IGNvZGUgbmVlZHMgdG8KKyAgICAgICAgdHJhdmVyc2UgYSBzaW1wbGUgSGFzaE1hcCBpZiBDQUNI
RV9QQVJUSVRJT05JTkcgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVz
IHRoZSBDYWNoZWRSZXNvdXJjZU1hcCBzdHJ1Y3R1cmUgdG8gYmUgYSBzaW1wbGUgSGFzaE1hcCwK
KyAgICAgICAgd2hvc2Uga2V5IGlzIGFuIHN0ZDo6cGFpcjxVUkwsIFN0cmluZyAvKiBwYXJ0aXRp
b25OYW1lICovPi4gSGF2aW5nIGEgZmxhdAorICAgICAgICBzdHJ1Y3R1cmUgc2ltcGxpZmllcyB0
aGUgdHJhdmVyc2FsIGNvZGUgYSBsb3QgYW5kIGVuYWJsZXMgbW9yZSBjb2RlIHNoYXJpbmcKKyAg
ICAgICAgYmV0d2VlbiBDQUNIRV9QQVJUSVRJT05JTkcgYW5kICFDQUNIRV9QQVJUSVRJT05JTkcu
IFRoaXMgc2hvdWxkbid0IHJlZ3Jlc3MKKyAgICAgICAgcGVyZm9ybWFuY2UgYmVjYXVzZSB3ZSBh
bHdheXMgaGF2ZSBib3RoIGEgVVJMIGFuZCBhIHBhcnRpdGlvbiBuYW1lIHdoZW4gd2UKKyAgICAg
ICAgbmVlZCB0byBsb29rIHVwIGEgcmVzb3VyY2UuIFdlIG5ldmVyIG5lZWQgdG8gcmV0cmlldmUg
YWxsIHJlc291cmNlcyB3aXRoCisgICAgICAgIGEgcGFydGljdWxhciBVUkwuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhbHNvIHN3aXRjaGVzIHRvIHVzaW5nIGEgVVJMIGFzIGtleSBpbnN0ZWFkIG9m
IGEgU3RyaW5nIGFzIHdlCisgICAgICAgIGFsd2F5cyBoYXZlIGEgVVJMIGhhcyBpbnB1dC4KKwor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXZh
bGlkYXRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlc291
cmNlRm9yUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlbW92
ZUltYWdlRnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmUp
OgorICAgICAgICBBZnRlciByZW1vdmluZyB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgQ2FjaGVkUmVz
b3VyY2VNYXAsIHJlbW92ZSB0aGUKKyAgICAgICAgc2Vzc2lvbklEIGZyb20gbV9zZXNzaW9uUmVz
b3VyY2VzIGlmIHRoZSBDYWNoZWRSZXNvdXJjZU1hcCBpcyBub3cKKyAgICAgICAgZW1wdHkuIFBy
ZXZpb3VzbHksIG5vIGNvZGUgd2FzIHJlbW92aW5nIHNlc3Npb25JRHMgZnJvbQorICAgICAgICBt
X3Nlc3Npb25SZXNvdXJjZXMuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1v
dmVSZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpn
ZXRPcmlnaW5zV2l0aENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpnZXRT
dGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisKIDIwMTUtMDEtMzEgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxNzk0MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAppbmRleCAyMDI5NTA0NmI4ZTJlYTFkMmI5YWY5MzVkNDVhMWU4M2YwMGMy
ZTAyLi44Y2Y2M2E5YTcyYzI3NDJkODM4MWJlYmYzZjJmODI4MzJhNDI3NjE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTExMCwxNyArMTEwLDEy
IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKICAg
ICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvJiByZXNvdXJjZXMgPSBl
bnN1cmVTZXNzaW9uUmVzb3VyY2VNYXAocmVzb3VyY2Uuc2Vzc2lvbklEKCkpOwogI2lmIEVOQUJM
RShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAg
PSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVybCgpKTsKLSAgICBpZiAoIW9yaWdpbk1hcCkgewot
ICAgICAgICBvcmlnaW5NYXAgPSBuZXcgQ2FjaGVkUmVzb3VyY2VJdGVtOwotICAgICAgICByZXNv
dXJjZXMuc2V0KHJlc291cmNlLnVybCgpLCBhZG9wdFB0cihvcmlnaW5NYXApKTsKLSAgICB9Ci0g
ICAgb3JpZ2luTWFwLT5zZXQocmVzb3VyY2UuY2FjaGVQYXJ0aXRpb24oKSwgJnJlc291cmNlKTsK
KyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHJlc291cmNlLnVybCgpLCByZXNvdXJjZS5j
YWNoZVBhcnRpdGlvbigpKTsKICNlbHNlCi0gICAgcmVzb3VyY2VzLnNldChyZXNvdXJjZS51cmwo
KSwgJnJlc291cmNlKTsKKyAgICBhdXRvJiBrZXkgPSByZXNvdXJjZS51cmwoKTsKICNlbmRpZgor
ICAgIGVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChyZXNvdXJjZS5zZXNzaW9uSUQoKSkuc2V0KGtl
eSwgJnJlc291cmNlKTsKICAgICByZXNvdXJjZS5zZXRJbkNhY2hlKHRydWUpOwogICAgIAogICAg
IHJlc291cmNlQWNjZXNzZWQocmVzb3VyY2UpOwpAQCAtMTQ2LDE3ICsxNDEsMTIgQEAgdm9pZCBN
ZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlJiByZXZhbGlk
YXRpbmdSZXNvdXJjZSwgY28KIAogICAgIGF1dG8mIHJlc291cmNlcyA9IGVuc3VyZVNlc3Npb25S
ZXNvdXJjZU1hcChyZXNvdXJjZS5zZXNzaW9uSUQoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKLSAgICBBU1NFUlQoIXJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpIHx8ICFy
ZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVybCgpKS0+Z2V0KHJlc291cmNlLmNhY2hlUGFydGl0aW9u
KCkpKTsKLSAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIG9yaWdpbk1hcCA9IHJlc291cmNlcy5nZXQo
cmVzb3VyY2UudXJsKCkpOwotICAgIGlmICghb3JpZ2luTWFwKSB7Ci0gICAgICAgIG9yaWdpbk1h
cCA9IG5ldyBDYWNoZWRSZXNvdXJjZUl0ZW07Ci0gICAgICAgIHJlc291cmNlcy5zZXQocmVzb3Vy
Y2UudXJsKCksIGFkb3B0UHRyKG9yaWdpbk1hcCkpOwotICAgIH0KLSAgICBvcmlnaW5NYXAtPnNl
dChyZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpLCAmcmVzb3VyY2UpOworICAgIGF1dG8ga2V5ID0g
c3RkOjptYWtlX3BhaXIocmVzb3VyY2UudXJsKCksIHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCkp
OwogI2Vsc2UKLSAgICBBU1NFUlQoIXJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpKTsKLSAg
ICByZXNvdXJjZXMuc2V0KHJlc291cmNlLnVybCgpLCAmcmVzb3VyY2UpOworICAgIGF1dG8mIGtl
eSA9IHJlc291cmNlLnVybCgpOwogI2VuZGlmCisgICAgQVNTRVJUKCFyZXNvdXJjZXMuZ2V0KGtl
eSkpOworICAgIHJlc291cmNlcy5zZXQoa2V5LCAmcmVzb3VyY2UpOwogICAgIHJlc291cmNlLnNl
dEluQ2FjaGUodHJ1ZSk7CiAgICAgcmVzb3VyY2UudXBkYXRlUmVzcG9uc2VBZnRlclJldmFsaWRh
dGlvbihyZXNwb25zZSk7CiAgICAgaW5zZXJ0SW5MUlVMaXN0KHJlc291cmNlKTsKQEAgLTE5OSwx
NCArMTg5LDExIEBAIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1
ZXN0SW1wbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgVVJMIHVybCA9IHJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3QudXJsKCkpOwogCiAjaWYgRU5BQkxF
KENBQ0hFX1BBUlRJVElPTklORykKLSAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0ZW0gPSByZXNv
dXJjZXMuZ2V0KHVybCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbnVsbHB0cjsK
LSAgICBpZiAoaXRlbSkKLSAgICAgICAgcmVzb3VyY2UgPSBpdGVtLT5nZXQocmVxdWVzdC5jYWNo
ZVBhcnRpdGlvbigpKTsKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHVybCwgcmVxdWVz
dC5jYWNoZVBhcnRpdGlvbigpKTsKICNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
ID0gcmVzb3VyY2VzLmdldCh1cmwpOworICAgIGF1dG8mIGtleSA9IHVybDsKICNlbmRpZgotICAg
IHJldHVybiByZXNvdXJjZTsKKyAgICByZXR1cm4gcmVzb3VyY2VzLmdldChrZXkpOwogfQogCiB1
bnNpZ25lZCBNZW1vcnlDYWNoZTo6ZGVhZENhcGFjaXR5KCkgY29uc3QgCkBAIC0yNjIsMTUgKzI0
OSwxMiBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVJbWFnZUZyb21DYWNoZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYQogICAgICAgICByZXR1cm47CiAKICNpZiBF
TkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZTsK
LSAgICBpZiAoQ2FjaGVkUmVzb3VyY2VJdGVtKiBpdGVtID0gcmVzb3VyY2VzLT5nZXQodXJsKSkK
LSAgICAgICAgcmVzb3VyY2UgPSBpdGVtLT5nZXQoUmVzb3VyY2VSZXF1ZXN0OjpwYXJ0aXRpb25O
YW1lKGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKSk7Ci0gICAgZWxzZQotICAgICAgICByZXNvdXJj
ZSA9IG51bGxwdHI7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcih1cmwsIFJlc291cmNl
UmVxdWVzdDo6cGFydGl0aW9uTmFtZShkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwotICAgIENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSA9IHJlc291cmNlcy0+Z2V0KHVybCk7CisgICAgYXV0byYga2V5ID0g
dXJsOwogI2VuZGlmCisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVzb3VyY2VzLT5n
ZXQoa2V5KTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyOCwz
MSArNDEyLDI2IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZShDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiAgICAgLy8gVGhlIHJlc291cmNlIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVk
IGJ5IHNvbWVvbmUgb3RoZXIgdGhhbiBvdXIgY2FsbGVyLAogICAgIC8vIHdobyBuZWVkZWQgYSBm
cmVzaCBjb3B5IGZvciBhIHJlbG9hZC4gU2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjQ3OSNjNj4uCiAgICAgaWYgKGF1dG8qIHJlc291cmNlcyA9IHNlc3Npb25S
ZXNvdXJjZU1hcChyZXNvdXJjZS5zZXNzaW9uSUQoKSkpIHsKLSAgICAgICAgaWYgKHJlc291cmNl
LmluQ2FjaGUoKSkgewotICAgICAgICAgICAgLy8gUmVtb3ZlIGZyb20gdGhlIHJlc291cmNlIG1h
cC4KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICAgICAgQ2FjaGVkUmVz
b3VyY2VJdGVtKiBpdGVtID0gcmVzb3VyY2VzLT5nZXQocmVzb3VyY2UudXJsKCkpOwotICAgICAg
ICAgICAgaWYgKGl0ZW0pIHsKLSAgICAgICAgICAgICAgICBpdGVtLT5yZW1vdmUocmVzb3VyY2Uu
Y2FjaGVQYXJ0aXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVtLT5zaXplKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlKHJlc291cmNlLnVybCgpKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihyZXNvdXJjZS51
cmwoKSwgcmVzb3VyY2UuY2FjaGVQYXJ0aXRpb24oKSk7CiAjZWxzZQotICAgICAgICAgICAgcmVz
b3VyY2VzLT5yZW1vdmUocmVzb3VyY2UudXJsKCkpOworICAgICAgICBhdXRvJiBrZXkgPSByZXNv
dXJjZS51cmwoKTsKICNlbmRpZgorICAgICAgICBpZiAocmVzb3VyY2UuaW5DYWNoZSgpKSB7Cisg
ICAgICAgICAgICAvLyBSZW1vdmUgcmVzb3VyY2UgZnJvbSB0aGUgcmVzb3VyY2UgbWFwLgorICAg
ICAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmUoa2V5KTsKICAgICAgICAgICAgIHJlc291cmNlLnNl
dEluQ2FjaGUoZmFsc2UpOwogCisgICAgICAgICAgICAvLyBJZiB0aGlzIHdhcyB0aGUgbGFzdCBy
ZXNvdXJjZSBmb3IgdGhpcyBzZXNzaW9uSUQsIHJlbW92ZSBzZXNzaW9uSUQuCisgICAgICAgICAg
ICBpZiAocmVzb3VyY2VzLT5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgbV9zZXNzaW9uUmVz
b3VyY2VzLnJlbW92ZShyZXNvdXJjZS5zZXNzaW9uSUQoKSk7CisKICAgICAgICAgICAgIC8vIFJl
bW92ZSBmcm9tIHRoZSBhcHByb3ByaWF0ZSBMUlUgbGlzdC4KICAgICAgICAgICAgIHJlbW92ZUZy
b21MUlVMaXN0KHJlc291cmNlKTsKICAgICAgICAgICAgIHJlbW92ZUZyb21MaXZlRGVjb2RlZFJl
c291cmNlc0xpc3QocmVzb3VyY2UpOwogICAgICAgICAgICAgYWRqdXN0U2l6ZShyZXNvdXJjZS5o
YXNDbGllbnRzKCksIC1zdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlLnNpemUoKSkpOwotICAgICAg
ICB9IGVsc2UgewotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgICAgICAgICBB
U1NFUlQoIXJlc291cmNlcy0+Z2V0KHJlc291cmNlLnVybCgpKSB8fCByZXNvdXJjZXMtPmdldChy
ZXNvdXJjZS51cmwoKSktPmdldChyZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpKSAhPSAmcmVzb3Vy
Y2UpOwotI2Vsc2UKLSAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZXMtPmdldChyZXNvdXJjZS51
cmwoKSkgIT0gJnJlc291cmNlKTsKLSNlbmRpZgotICAgICAgICB9CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgQVNTRVJUKHJlc291cmNlcy0+Z2V0KGtleSkgIT0gJnJlc291cmNlKTsKICAg
ICB9CiAKICAgICByZXNvdXJjZS5kZWxldGVJZlBvc3NpYmxlKCk7CkBAIC01NzAsMzQgKzU0OSwy
NCBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZXNvdXJjZUFjY2Vzc2VkKENhY2hlZFJlc291cmNlJiBy
ZXNvdXJjZSkKIAogdm9pZCBNZW1vcnlDYWNoZTo6cmVtb3ZlUmVzb3VyY2VzV2l0aE9yaWdpbihT
ZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogewotICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IHJl
c291cmNlc1dpdGhPcmlnaW47Ci0KLSAgICBmb3IgKGF1dG8mIHJlc291cmNlcyA6IG1fc2Vzc2lv
blJlc291cmNlcykgewotICAgICAgICBDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgZSA9IHJl
c291cmNlcy52YWx1ZS0+ZW5kKCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAg
ICAgICAgU3RyaW5nIG9yaWdpblBhcnRpdGlvbiA9IFJlc291cmNlUmVxdWVzdDo6cGFydGl0aW9u
TmFtZShvcmlnaW4uaG9zdCgpKTsKKyAgICBTdHJpbmcgb3JpZ2luUGFydGl0aW9uID0gUmVzb3Vy
Y2VSZXF1ZXN0OjpwYXJ0aXRpb25OYW1lKG9yaWdpbi5ob3N0KCkpOwogI2VuZGlmCiAKLSAgICAg
ICAgZm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSByZXNvdXJjZXMudmFsdWUt
PmJlZ2luKCk7IGl0ICE9IGU7ICsraXQpIHsKLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5H
KQotICAgICAgICAgICAgZm9yIChDYWNoZWRSZXNvdXJjZUl0ZW06Oml0ZXJhdG9yIGl0ZW1JdGVy
YXRvciA9IGl0LT52YWx1ZS0+YmVnaW4oKTsgaXRlbUl0ZXJhdG9yICE9IGl0LT52YWx1ZS0+ZW5k
KCk7ICsraXRlbUl0ZXJhdG9yKSB7Ci0gICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJl
c291cmNlID0gaXRlbUl0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcGFy
dGl0aW9uID0gaXRlbUl0ZXJhdG9yLT5rZXk7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcnRpdGlv
biA9PSBvcmlnaW5QYXJ0aXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzV2l0
aE9yaWdpbi5hcHBlbmQocmVzb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSA9IGl0LT52YWx1ZTsKLSNlbmRpZgotICAgICAgICAgICAgICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gcmVzb3VyY2VPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhyZXNvdXJjZS0+dXJsKCkpOwotICAgICAgICAgICAgICAgIGlmICghcmVzb3VyY2VP
cmlnaW4pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlm
IChyZXNvdXJjZU9yaWdpbi0+ZXF1YWwoJm9yaWdpbikpCi0gICAgICAgICAgICAgICAgICAgIHJl
c291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKHJlc291cmNlKTsKKyAgICBWZWN0b3I8Q2FjaGVkUmVz
b3VyY2UqPiByZXNvdXJjZXNXaXRoT3JpZ2luOworICAgIGZvciAoYXV0byYgcmVzb3VyY2VzIDog
bV9zZXNzaW9uUmVzb3VyY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYga2V5VmFs
dWUgOiAqcmVzb3VyY2VzKSB7CisgICAgICAgICAgICBhdXRvJiByZXNvdXJjZSA9ICprZXlWYWx1
ZS52YWx1ZTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQorICAgICAgICAgICAgYXV0
byYgcGFydGl0aW9uTmFtZSA9IGtleVZhbHVlLmtleS5zZWNvbmQ7CisgICAgICAgICAgICBpZiAo
cGFydGl0aW9uTmFtZSA9PSBvcmlnaW5QYXJ0aXRpb24pIHsKKyAgICAgICAgICAgICAgICByZXNv
dXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2UpOworICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQogI2VuZGlmCisgICAgICAgICAgICBSZWZQdHI8U2VjdXJpdHlP
cmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXNvdXJjZS51
cmwoKSk7CisgICAgICAgICAgICBpZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQor
ICAgICAgICAgICAgICAgIHJlc291cmNlc1dpdGhPcmlnaW4uYXBwZW5kKCZyZXNvdXJjZSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTYwOCwxOSArNTc3LDE4IEBAIHZvaWQgTWVtb3J5Q2FjaGU6
OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4oU2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHZvaWQg
TWVtb3J5Q2FjaGU6OmdldE9yaWdpbnNXaXRoQ2FjaGUoU2VjdXJpdHlPcmlnaW5TZXQmIG9yaWdp
bnMpCiB7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBERVBSRUNBVEVEX0RF
RklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBodHRwU3RyaW5nLCAoImh0dHAiKSk7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gaHR0cFN0cmluZygiaHR0cCIpOwogI2VuZGlmCi0g
ICAgZm9yIChhdXRvJiByZXNvdXJjZXMgOiBtX3Nlc3Npb25SZXNvdXJjZXMpIHsKLSAgICAgICAg
Q2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGUgPSByZXNvdXJjZXMudmFsdWUtPmVuZCgpOwot
ICAgICAgICBmb3IgKENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IHJlc291cmNlcy52
YWx1ZS0+YmVnaW4oKTsgaXQgIT0gZTsgKytpdCkgeworICAgIGZvciAoYXV0byYgcmVzb3VyY2Vz
IDogbV9zZXNzaW9uUmVzb3VyY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYga2V5
VmFsdWUgOiAqcmVzb3VyY2VzKSB7CisgICAgICAgICAgICBhdXRvJiByZXNvdXJjZSA9ICprZXlW
YWx1ZS52YWx1ZTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICAgICAg
aWYgKGl0LT52YWx1ZS0+YmVnaW4oKS0+a2V5ID09IGVtcHR5U3RyaW5nKCkpCi0gICAgICAgICAg
ICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXQtPnZh
bHVlLT5iZWdpbigpLT52YWx1ZS0+dXJsKCkpKTsKKyAgICAgICAgICAgIGF1dG8mIHBhcnRpdGlv
bk5hbWUgPSBrZXlWYWx1ZS5rZXkuc2Vjb25kOworICAgICAgICAgICAgaWYgKCFwYXJ0aXRpb25O
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKGh0dHBTdHJpbmcsIHBhcnRpdGlvbk5hbWUsIDApKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGh0
dHBTdHJpbmcsIGl0LT52YWx1ZS0+YmVnaW4oKS0+a2V5LCAwKSk7Ci0jZWxzZQotICAgICAgICAg
ICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoaXQtPnZhbHVl
LT51cmwoKSkpOwogI2VuZGlmCisgICAgICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKHJlc291cmNlLnVybCgpKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC02ODks
NDIgKzY1NywzMiBAQCBNZW1vcnlDYWNoZTo6U3RhdGlzdGljcyBNZW1vcnlDYWNoZTo6Z2V0U3Rh
dGlzdGljcygpCiB7CiAgICAgU3RhdGlzdGljcyBzdGF0czsKIAotICAgIGZvciAoYXV0byYgcmVz
b3VyY2VzIDogbV9zZXNzaW9uUmVzb3VyY2VzKSB7Ci0gICAgICAgIENhY2hlZFJlc291cmNlTWFw
OjppdGVyYXRvciBlID0gcmVzb3VyY2VzLnZhbHVlLT5lbmQoKTsKLSAgICAgICAgZm9yIChDYWNo
ZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaSA9IHJlc291cmNlcy52YWx1ZS0+YmVnaW4oKTsgaSAh
PSBlOyArK2kpIHsKLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICAgICAg
Zm9yIChDYWNoZWRSZXNvdXJjZUl0ZW06Oml0ZXJhdG9yIGl0ZW1JdGVyYXRvciA9IGktPnZhbHVl
LT5iZWdpbigpOyBpdGVtSXRlcmF0b3IgIT0gaS0+dmFsdWUtPmVuZCgpOyArK2l0ZW1JdGVyYXRv
cikgewotICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlJiByZXNvdXJjZSA9ICppdGVtSXRl
cmF0b3ItPnZhbHVlOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UgPSAqaS0+dmFsdWU7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc291
cmNlLnR5cGUoKSkgewotICAgICAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdl
UmVzb3VyY2U6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzLmltYWdlcy5hZGRSZXNvdXJjZShy
ZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkNTU1N0eWxlU2hlZXQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0
YXRzLmNzc1N0eWxlU2hlZXRzLmFkZFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U2NyaXB0
OgotICAgICAgICAgICAgICAgICAgICBzdGF0cy5zY3JpcHRzLmFkZFJlc291cmNlKHJlc291cmNl
KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgZm9yIChhdXRvJiByZXNvdXJjZXMg
OiBtX3Nlc3Npb25SZXNvdXJjZXMudmFsdWVzKCkpIHsKKyAgICAgICAgZm9yIChhdXRvKiByZXNv
dXJjZSA6IHJlc291cmNlcy0+dmFsdWVzKCkpIHsKKyAgICAgICAgICAgIHN3aXRjaCAocmVzb3Vy
Y2UtPnR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNv
dXJjZToKKyAgICAgICAgICAgICAgICBzdGF0cy5pbWFnZXMuYWRkUmVzb3VyY2UoKnJlc291cmNl
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkNTU1N0eWxlU2hlZXQ6CisgICAgICAgICAgICAgICAgc3RhdHMuY3NzU3R5bGVTaGVldHMu
YWRkUmVzb3VyY2UoKnJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlwdDoKKyAgICAgICAgICAgICAgICBzdGF0cy5z
Y3JpcHRzLmFkZFJlc291cmNlKCpyZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAj
aWYgRU5BQkxFKFhTTFQpCi0gICAgICAgICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6WFNM
U3R5bGVTaGVldDoKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMueHNsU3R5bGVTaGVldHMuYWRk
UmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6CisgICAgICAgICAgICAgICAg
c3RhdHMueHNsU3R5bGVTaGVldHMuYWRkUmVzb3VyY2UoKnJlc291cmNlKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShTVkdfRk9OVFMpCi0gICAgICAgICAgICAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRm9udFJlc291cmNlOgorICAgICAgICAgICAgY2Fz
ZSBDYWNoZWRSZXNvdXJjZTo6U1ZHRm9udFJlc291cmNlOgogI2VuZGlmCi0gICAgICAgICAgICAg
ICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgotICAgICAgICAgICAgICAgICAg
ICBzdGF0cy5mb250cy5hZGRSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQor
ICAgICAgICAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOgorICAgICAgICAg
ICAgICAgIHN0YXRzLmZvbnRzLmFkZFJlc291cmNlKCpyZXNvdXJjZSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHN0YXRz
OwpAQCAtNzM2LDE5ICs2OTQsMTAgQEAgdm9pZCBNZW1vcnlDYWNoZTo6c2V0RGlzYWJsZWQoYm9v
bCBkaXNhYmxlZCkKICAgICBpZiAoIW1fZGlzYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGZvciAoOzspIHsKLSAgICAgICAgYXV0byBzZXNzaW9uSXRlcmF0b3IgPSBtX3Nlc3Npb25SZXNv
dXJjZXMuYmVnaW4oKTsKLSAgICAgICAgaWYgKHNlc3Npb25JdGVyYXRvciA9PSBtX3Nlc3Npb25S
ZXNvdXJjZXMuZW5kKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgYXV0byBvdXRlckl0
ZXJhdG9yID0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKTsKLSAgICAgICAgaWYgKG91
dGVySXRlcmF0b3IgPT0gc2Vzc2lvbkl0ZXJhdG9yLT52YWx1ZS0+ZW5kKCkpCi0gICAgICAgICAg
ICBicmVhazsKLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICBhdXRvIGlu
bmVySXRlcmF0b3IgPSBvdXRlckl0ZXJhdG9yLT52YWx1ZS0+YmVnaW4oKTsKLSAgICAgICAgcmVt
b3ZlKCppbm5lckl0ZXJhdG9yLT52YWx1ZSk7Ci0jZWxzZQotICAgICAgICByZW1vdmUoKm91dGVy
SXRlcmF0b3ItPnZhbHVlKTsKLSNlbmRpZgorICAgIHdoaWxlICghbV9zZXNzaW9uUmVzb3VyY2Vz
LmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvJiByZXNvdXJjZXMgPSAqbV9zZXNzaW9uUmVzb3Vy
Y2VzLmJlZ2luKCktPnZhbHVlOworICAgICAgICBBU1NFUlQoIXJlc291cmNlcy5pc0VtcHR5KCkp
OworICAgICAgICByZW1vdmUoKnJlc291cmNlcy5iZWdpbigpLT52YWx1ZSk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5oCmluZGV4IGNlMTIyM2My
MWQ1YTBjOWQ2NmRkNzM3ZTgwZDBhOTc1NWM3NDIxYWEuLmZjZGY2ZjRlNWIzNmQ1Y2IzYmI4NDhh
NmEyY2Q2NzMzZmQ2MGEzZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9NZW1vcnlDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlD
YWNoZS5oCkBAIC0xNTksMTAgKzE1OSw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICNpZiBFTkFC
TEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIENhY2hl
ZFJlc291cmNlKj4gQ2FjaGVkUmVzb3VyY2VJdGVtOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJp
bmcsIE93blB0cjxDYWNoZWRSZXNvdXJjZUl0ZW0+PiBDYWNoZWRSZXNvdXJjZU1hcDsKKyAgICB0
eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPFVSTCwgU3RyaW5nIC8qIHBhcnRpdGlvbk5hbWUgKi8+
LCBDYWNoZWRSZXNvdXJjZSo+IENhY2hlZFJlc291cmNlTWFwOwogI2Vsc2UKLSAgICB0eXBlZGVm
IEhhc2hNYXA8U3RyaW5nLCBDYWNoZWRSZXNvdXJjZSo+IENhY2hlZFJlc291cmNlTWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxVUkwsIENhY2hlZFJlc291cmNlKj4gQ2FjaGVkUmVzb3VyY2VNYXA7
CiAjZW5kaWYKIAogICAgIHN0cnVjdCBMUlVMaXN0IHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245797</attachid>
            <date>2015-01-31 13:18:53 -0800</date>
            <delta_ts>2015-01-31 19:11:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141110-20150131131901.patch</filename>
            <type>text/plain</type>
            <size>15310</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWRlMmE2NzQ5NjgwOGEy
NTJhNDQ4ZTE2ZjE3ODkyMDZlODlmZmY3My4uMjAxMWE1NDcyYWQzOTkzZWM3ZDg5ZDNjOTkyNjVh
MDkzZjQ5YTM1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE1LTAxLTMwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIHNpbXBsZXIgQ2FjaGVk
UmVzb3VyY2VNYXAgc3RydWN0dXJlIGluIE1lbW9yeUNhY2hlIHdpdGggQ0FDSEVfUEFSVElUSU9O
SU5HIGVuYWJsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE0MTExMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVzZSBzaW1wbGVyIENhY2hlZFJlc291cmNlTWFwIHN0cnVjdHVyZSBpbiBNZW1vcnlDYWNo
ZSB3aXRoIENBQ0hFX1BBUlRJVElPTklORworICAgICAgICBlbmFibGVkLiBQcmV2aW91c2x5LCB3
ZSB3b3VsZCBiZSB1c2luZyBhIEhhc2hNYXAgb2YgSGFzaE1hcCB0byBzdG9yZQorICAgICAgICBD
YWNoZWRSZXNvdXJjZXMuIFRoZSBvdXRlciBIYXNoTWFwIHdvdWxkIHVzZSB0aGUgVVJMIGFzIGtl
eSBhbmQgdGhlIGlubmVyCisgICAgICAgIEhhc2hNYXAgd291bGQgdXNlIHRoZSBwYXJ0aXRpb24g
bmFtZSBhcyBrZXkuIFRoaXMgd291bGQgbWFrZSB0cmF2ZXJzaW5nIHRoZQorICAgICAgICBzdHJ1
Y3R1cmUgb3Zlcmx5IGNvbXBsaWNhdGVkLCBlc3BlY2lhbGx5IGNvbnNpZGVyaW5nIHRoYXQgdGhl
IGNvZGUgbmVlZHMgdG8KKyAgICAgICAgdHJhdmVyc2UgYSBzaW1wbGUgSGFzaE1hcCBpZiBDQUNI
RV9QQVJUSVRJT05JTkcgaXMgZGlzYWJsZWQuCisKKyAgICAgICAgVGhpcyBwYXRjaCB1cGRhdGVz
IHRoZSBDYWNoZWRSZXNvdXJjZU1hcCBzdHJ1Y3R1cmUgdG8gYmUgYSBzaW1wbGUgSGFzaE1hcCwK
KyAgICAgICAgd2hvc2Uga2V5IGlzIGFuIHN0ZDo6cGFpcjxVUkwsIFN0cmluZyAvKiBwYXJ0aXRp
b25OYW1lICovPi4gSGF2aW5nIGEgZmxhdAorICAgICAgICBzdHJ1Y3R1cmUgc2ltcGxpZmllcyB0
aGUgdHJhdmVyc2FsIGNvZGUgYSBsb3QgYW5kIGVuYWJsZXMgbW9yZSBjb2RlIHNoYXJpbmcKKyAg
ICAgICAgYmV0d2VlbiBDQUNIRV9QQVJUSVRJT05JTkcgYW5kICFDQUNIRV9QQVJUSVRJT05JTkcu
IFRoaXMgc2hvdWxkbid0IHJlZ3Jlc3MKKyAgICAgICAgcGVyZm9ybWFuY2UgYmVjYXVzZSB3ZSBh
bHdheXMgaGF2ZSBib3RoIGEgVVJMIGFuZCBhIHBhcnRpdGlvbiBuYW1lIHdoZW4gd2UKKyAgICAg
ICAgbmVlZCB0byBsb29rIHVwIGEgcmVzb3VyY2UuIFdlIG5ldmVyIG5lZWQgdG8gcmV0cmlldmUg
YWxsIHJlc291cmNlcyB3aXRoCisgICAgICAgIGEgcGFydGljdWxhciBVUkwuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBhbHNvIHN3aXRjaGVzIHRvIHVzaW5nIGEgVVJMIGFzIGtleSBpbnN0ZWFkIG9m
IGEgU3RyaW5nIGFzIHdlCisgICAgICAgIGFsd2F5cyBoYXZlIGEgVVJMIGhhcyBpbnB1dC4KKwor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDYWNoZTo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZXZh
bGlkYXRpb25TdWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlc291
cmNlRm9yUmVxdWVzdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5Q2FjaGU6OnJlbW92
ZUltYWdlRnJvbUNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1vdmUp
OgorICAgICAgICBBZnRlciByZW1vdmluZyB0aGUgcmVzb3VyY2UgZnJvbSB0aGUgQ2FjaGVkUmVz
b3VyY2VNYXAsIHJlbW92ZSB0aGUKKyAgICAgICAgc2Vzc2lvbklEIGZyb20gbV9zZXNzaW9uUmVz
b3VyY2VzIGlmIHRoZSBDYWNoZWRSZXNvdXJjZU1hcCBpcyBub3cKKyAgICAgICAgZW1wdHkuIFBy
ZXZpb3VzbHksIG5vIGNvZGUgd2FzIHJlbW92aW5nIHNlc3Npb25JRHMgZnJvbQorICAgICAgICBt
X3Nlc3Npb25SZXNvdXJjZXMuCisKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpyZW1v
dmVSZXNvdXJjZXNXaXRoT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpn
ZXRPcmlnaW5zV2l0aENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpnZXRT
dGF0aXN0aWNzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeUNhY2hlOjpzZXREaXNhYmxlZCk6
CisgICAgICAgICogbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmg6CisKIDIwMTUtMDEtMzEgIENv
bW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxNzk0MjYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01l
bW9yeUNhY2hlLmNwcAppbmRleCAyMDI5NTA0NmI4ZTJlYTFkMmI5YWY5MzVkNDVhMWU4M2YwMGMy
ZTAyLi4wMmY4YTBmNDNiMDc4OWJjMjQyNDYyNjJkZTNmYjcxYjQxZDVkODEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKQEAgLTExMCwxNyArMTEwLDEy
IEBAIGJvb2wgTWVtb3J5Q2FjaGU6OmFkZChDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UpCiAKICAg
ICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvJiByZXNvdXJjZXMgPSBl
bnN1cmVTZXNzaW9uUmVzb3VyY2VNYXAocmVzb3VyY2Uuc2Vzc2lvbklEKCkpOwogI2lmIEVOQUJM
RShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgQ2FjaGVkUmVzb3VyY2VJdGVtKiBvcmlnaW5NYXAg
PSByZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVybCgpKTsKLSAgICBpZiAoIW9yaWdpbk1hcCkgewot
ICAgICAgICBvcmlnaW5NYXAgPSBuZXcgQ2FjaGVkUmVzb3VyY2VJdGVtOwotICAgICAgICByZXNv
dXJjZXMuc2V0KHJlc291cmNlLnVybCgpLCBhZG9wdFB0cihvcmlnaW5NYXApKTsKLSAgICB9Ci0g
ICAgb3JpZ2luTWFwLT5zZXQocmVzb3VyY2UuY2FjaGVQYXJ0aXRpb24oKSwgJnJlc291cmNlKTsK
KyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHJlc291cmNlLnVybCgpLCByZXNvdXJjZS5j
YWNoZVBhcnRpdGlvbigpKTsKICNlbHNlCi0gICAgcmVzb3VyY2VzLnNldChyZXNvdXJjZS51cmwo
KSwgJnJlc291cmNlKTsKKyAgICBhdXRvJiBrZXkgPSByZXNvdXJjZS51cmwoKTsKICNlbmRpZgor
ICAgIGVuc3VyZVNlc3Npb25SZXNvdXJjZU1hcChyZXNvdXJjZS5zZXNzaW9uSUQoKSkuc2V0KGtl
eSwgJnJlc291cmNlKTsKICAgICByZXNvdXJjZS5zZXRJbkNhY2hlKHRydWUpOwogICAgIAogICAg
IHJlc291cmNlQWNjZXNzZWQocmVzb3VyY2UpOwpAQCAtMTQ2LDE3ICsxNDEsMTIgQEAgdm9pZCBN
ZW1vcnlDYWNoZTo6cmV2YWxpZGF0aW9uU3VjY2VlZGVkKENhY2hlZFJlc291cmNlJiByZXZhbGlk
YXRpbmdSZXNvdXJjZSwgY28KIAogICAgIGF1dG8mIHJlc291cmNlcyA9IGVuc3VyZVNlc3Npb25S
ZXNvdXJjZU1hcChyZXNvdXJjZS5zZXNzaW9uSUQoKSk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKLSAgICBBU1NFUlQoIXJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpIHx8ICFy
ZXNvdXJjZXMuZ2V0KHJlc291cmNlLnVybCgpKS0+Z2V0KHJlc291cmNlLmNhY2hlUGFydGl0aW9u
KCkpKTsKLSAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIG9yaWdpbk1hcCA9IHJlc291cmNlcy5nZXQo
cmVzb3VyY2UudXJsKCkpOwotICAgIGlmICghb3JpZ2luTWFwKSB7Ci0gICAgICAgIG9yaWdpbk1h
cCA9IG5ldyBDYWNoZWRSZXNvdXJjZUl0ZW07Ci0gICAgICAgIHJlc291cmNlcy5zZXQocmVzb3Vy
Y2UudXJsKCksIGFkb3B0UHRyKG9yaWdpbk1hcCkpOwotICAgIH0KLSAgICBvcmlnaW5NYXAtPnNl
dChyZXNvdXJjZS5jYWNoZVBhcnRpdGlvbigpLCAmcmVzb3VyY2UpOworICAgIGF1dG8ga2V5ID0g
c3RkOjptYWtlX3BhaXIocmVzb3VyY2UudXJsKCksIHJlc291cmNlLmNhY2hlUGFydGl0aW9uKCkp
OwogI2Vsc2UKLSAgICBBU1NFUlQoIXJlc291cmNlcy5nZXQocmVzb3VyY2UudXJsKCkpKTsKLSAg
ICByZXNvdXJjZXMuc2V0KHJlc291cmNlLnVybCgpLCAmcmVzb3VyY2UpOworICAgIGF1dG8mIGtl
eSA9IHJlc291cmNlLnVybCgpOwogI2VuZGlmCisgICAgQVNTRVJUKCFyZXNvdXJjZXMuZ2V0KGtl
eSkpOworICAgIHJlc291cmNlcy5zZXQoa2V5LCAmcmVzb3VyY2UpOwogICAgIHJlc291cmNlLnNl
dEluQ2FjaGUodHJ1ZSk7CiAgICAgcmVzb3VyY2UudXBkYXRlUmVzcG9uc2VBZnRlclJldmFsaWRh
dGlvbihyZXNwb25zZSk7CiAgICAgaW5zZXJ0SW5MUlVMaXN0KHJlc291cmNlKTsKQEAgLTE5OSwx
NCArMTg5LDExIEBAIENhY2hlZFJlc291cmNlKiBNZW1vcnlDYWNoZTo6cmVzb3VyY2VGb3JSZXF1
ZXN0SW1wbChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlCiAgICAgVVJMIHVybCA9IHJlbW92
ZUZyYWdtZW50SWRlbnRpZmllcklmTmVlZGVkKHJlcXVlc3QudXJsKCkpOwogCiAjaWYgRU5BQkxF
KENBQ0hFX1BBUlRJVElPTklORykKLSAgICBDYWNoZWRSZXNvdXJjZUl0ZW0qIGl0ZW0gPSByZXNv
dXJjZXMuZ2V0KHVybCk7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbnVsbHB0cjsK
LSAgICBpZiAoaXRlbSkKLSAgICAgICAgcmVzb3VyY2UgPSBpdGVtLT5nZXQocmVxdWVzdC5jYWNo
ZVBhcnRpdGlvbigpKTsKKyAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKHVybCwgcmVxdWVz
dC5jYWNoZVBhcnRpdGlvbigpKTsKICNlbHNlCi0gICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
ID0gcmVzb3VyY2VzLmdldCh1cmwpOworICAgIGF1dG8mIGtleSA9IHVybDsKICNlbmRpZgotICAg
IHJldHVybiByZXNvdXJjZTsKKyAgICByZXR1cm4gcmVzb3VyY2VzLmdldChrZXkpOwogfQogCiB1
bnNpZ25lZCBNZW1vcnlDYWNoZTo6ZGVhZENhcGFjaXR5KCkgY29uc3QgCkBAIC0yNjIsMTUgKzI0
OSwxMiBAQCB2b2lkIE1lbW9yeUNhY2hlOjpyZW1vdmVJbWFnZUZyb21DYWNoZShjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBkb21haW5Gb3JDYQogICAgICAgICByZXR1cm47CiAKICNpZiBF
TkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZTsK
LSAgICBpZiAoQ2FjaGVkUmVzb3VyY2VJdGVtKiBpdGVtID0gcmVzb3VyY2VzLT5nZXQodXJsKSkK
LSAgICAgICAgcmVzb3VyY2UgPSBpdGVtLT5nZXQoUmVzb3VyY2VSZXF1ZXN0OjpwYXJ0aXRpb25O
YW1lKGRvbWFpbkZvckNhY2hlUGFydGl0aW9uKSk7Ci0gICAgZWxzZQotICAgICAgICByZXNvdXJj
ZSA9IG51bGxwdHI7CisgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcih1cmwsIFJlc291cmNl
UmVxdWVzdDo6cGFydGl0aW9uTmFtZShkb21haW5Gb3JDYWNoZVBhcnRpdGlvbikpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0oZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24pOwotICAgIENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSA9IHJlc291cmNlcy0+Z2V0KHVybCk7CisgICAgYXV0byYga2V5ID0g
dXJsOwogI2VuZGlmCisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gcmVzb3VyY2VzLT5n
ZXQoa2V5KTsKICAgICBpZiAoIXJlc291cmNlKQogICAgICAgICByZXR1cm47CiAKQEAgLTQyOCwz
MSArNDEyLDI2IEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZShDYWNoZWRSZXNvdXJjZSYgcmVz
b3VyY2UpCiAgICAgLy8gVGhlIHJlc291cmNlIG1heSBoYXZlIGFscmVhZHkgYmVlbiByZW1vdmVk
IGJ5IHNvbWVvbmUgb3RoZXIgdGhhbiBvdXIgY2FsbGVyLAogICAgIC8vIHdobyBuZWVkZWQgYSBm
cmVzaCBjb3B5IGZvciBhIHJlbG9hZC4gU2VlIDxodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjQ3OSNjNj4uCiAgICAgaWYgKGF1dG8qIHJlc291cmNlcyA9IHNlc3Npb25S
ZXNvdXJjZU1hcChyZXNvdXJjZS5zZXNzaW9uSUQoKSkpIHsKLSAgICAgICAgaWYgKHJlc291cmNl
LmluQ2FjaGUoKSkgewotICAgICAgICAgICAgLy8gUmVtb3ZlIGZyb20gdGhlIHJlc291cmNlIG1h
cC4KICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICAgICAgQ2FjaGVkUmVz
b3VyY2VJdGVtKiBpdGVtID0gcmVzb3VyY2VzLT5nZXQocmVzb3VyY2UudXJsKCkpOwotICAgICAg
ICAgICAgaWYgKGl0ZW0pIHsKLSAgICAgICAgICAgICAgICBpdGVtLT5yZW1vdmUocmVzb3VyY2Uu
Y2FjaGVQYXJ0aXRpb24oKSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVtLT5zaXplKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlKHJlc291cmNlLnVybCgpKTsKLSAg
ICAgICAgICAgIH0KKyAgICAgICAgYXV0byBrZXkgPSBzdGQ6Om1ha2VfcGFpcihyZXNvdXJjZS51
cmwoKSwgcmVzb3VyY2UuY2FjaGVQYXJ0aXRpb24oKSk7CiAjZWxzZQotICAgICAgICAgICAgcmVz
b3VyY2VzLT5yZW1vdmUocmVzb3VyY2UudXJsKCkpOworICAgICAgICBhdXRvJiBrZXkgPSByZXNv
dXJjZS51cmwoKTsKICNlbmRpZgorICAgICAgICBpZiAocmVzb3VyY2UuaW5DYWNoZSgpKSB7Cisg
ICAgICAgICAgICAvLyBSZW1vdmUgcmVzb3VyY2UgZnJvbSB0aGUgcmVzb3VyY2UgbWFwLgorICAg
ICAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmUoa2V5KTsKICAgICAgICAgICAgIHJlc291cmNlLnNl
dEluQ2FjaGUoZmFsc2UpOwogCisgICAgICAgICAgICAvLyBJZiB0aGUgcmVzb3VyY2UgbWFwIGlz
IG5vdyBlbXB0eSwgcmVtb3ZlIGl0IGZyb20gbV9zZXNzaW9uUmVzb3VyY2VzLgorICAgICAgICAg
ICAgaWYgKHJlc291cmNlcy0+aXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIG1fc2Vzc2lvblJl
c291cmNlcy5yZW1vdmUocmVzb3VyY2Uuc2Vzc2lvbklEKCkpOworCiAgICAgICAgICAgICAvLyBS
ZW1vdmUgZnJvbSB0aGUgYXBwcm9wcmlhdGUgTFJVIGxpc3QuCiAgICAgICAgICAgICByZW1vdmVG
cm9tTFJVTGlzdChyZXNvdXJjZSk7CiAgICAgICAgICAgICByZW1vdmVGcm9tTGl2ZURlY29kZWRS
ZXNvdXJjZXNMaXN0KHJlc291cmNlKTsKICAgICAgICAgICAgIGFkanVzdFNpemUocmVzb3VyY2Uu
aGFzQ2xpZW50cygpLCAtc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZS5zaXplKCkpKTsKLSAgICAg
ICAgfSBlbHNlIHsKLSNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAgICAgICAgICAg
QVNTRVJUKCFyZXNvdXJjZXMtPmdldChyZXNvdXJjZS51cmwoKSkgfHwgcmVzb3VyY2VzLT5nZXQo
cmVzb3VyY2UudXJsKCkpLT5nZXQocmVzb3VyY2UuY2FjaGVQYXJ0aXRpb24oKSkgIT0gJnJlc291
cmNlKTsKLSNlbHNlCi0gICAgICAgICAgICBBU1NFUlQocmVzb3VyY2VzLT5nZXQocmVzb3VyY2Uu
dXJsKCkpICE9ICZyZXNvdXJjZSk7Ci0jZW5kaWYKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIEFTU0VSVChyZXNvdXJjZXMtPmdldChrZXkpICE9ICZyZXNvdXJjZSk7CiAg
ICAgfQogCiAgICAgcmVzb3VyY2UuZGVsZXRlSWZQb3NzaWJsZSgpOwpAQCAtNTcwLDM0ICs1NDks
MjQgQEAgdm9pZCBNZW1vcnlDYWNoZTo6cmVzb3VyY2VBY2Nlc3NlZChDYWNoZWRSZXNvdXJjZSYg
cmVzb3VyY2UpCiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJlbW92ZVJlc291cmNlc1dpdGhPcmlnaW4o
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbikKIHsKLSAgICBWZWN0b3I8Q2FjaGVkUmVzb3VyY2UqPiBy
ZXNvdXJjZXNXaXRoT3JpZ2luOwotCi0gICAgZm9yIChhdXRvJiByZXNvdXJjZXMgOiBtX3Nlc3Np
b25SZXNvdXJjZXMpIHsKLSAgICAgICAgQ2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGUgPSBy
ZXNvdXJjZXMudmFsdWUtPmVuZCgpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0g
ICAgICAgIFN0cmluZyBvcmlnaW5QYXJ0aXRpb24gPSBSZXNvdXJjZVJlcXVlc3Q6OnBhcnRpdGlv
bk5hbWUob3JpZ2luLmhvc3QoKSk7CisgICAgU3RyaW5nIG9yaWdpblBhcnRpdGlvbiA9IFJlc291
cmNlUmVxdWVzdDo6cGFydGl0aW9uTmFtZShvcmlnaW4uaG9zdCgpKTsKICNlbmRpZgogCi0gICAg
ICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gcmVzb3VyY2VzLnZhbHVl
LT5iZWdpbigpOyBpdCAhPSBlOyArK2l0KSB7Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKLSAgICAgICAgICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VJdGVtOjppdGVyYXRvciBpdGVtSXRl
cmF0b3IgPSBpdC0+dmFsdWUtPmJlZ2luKCk7IGl0ZW1JdGVyYXRvciAhPSBpdC0+dmFsdWUtPmVu
ZCgpOyArK2l0ZW1JdGVyYXRvcikgewotICAgICAgICAgICAgICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSA9IGl0ZW1JdGVyYXRvci0+dmFsdWU7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHBh
cnRpdGlvbiA9IGl0ZW1JdGVyYXRvci0+a2V5OwotICAgICAgICAgICAgICAgIGlmIChwYXJ0aXRp
b24gPT0gb3JpZ2luUGFydGl0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc291cmNlc1dp
dGhPcmlnaW4uYXBwZW5kKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UgPSBpdC0+dmFsdWU7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHJlc291cmNlT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcocmVzb3VyY2UtPnVybCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc291cmNl
T3JpZ2luKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBp
ZiAocmVzb3VyY2VPcmlnaW4tPmVxdWFsKCZvcmlnaW4pKQotICAgICAgICAgICAgICAgICAgICBy
ZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZChyZXNvdXJjZSk7CisgICAgVmVjdG9yPENhY2hlZFJl
c291cmNlKj4gcmVzb3VyY2VzV2l0aE9yaWdpbjsKKyAgICBmb3IgKGF1dG8mIHJlc291cmNlcyA6
IG1fc2Vzc2lvblJlc291cmNlcy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGtleVZh
bHVlIDogKnJlc291cmNlcykgeworICAgICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSAqa2V5VmFs
dWUudmFsdWU7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKKyAgICAgICAgICAgIGF1
dG8mIHBhcnRpdGlvbk5hbWUgPSBrZXlWYWx1ZS5rZXkuc2Vjb25kOworICAgICAgICAgICAgaWYg
KHBhcnRpdGlvbk5hbWUgPT0gb3JpZ2luUGFydGl0aW9uKSB7CisgICAgICAgICAgICAgICAgcmVz
b3VyY2VzV2l0aE9yaWdpbi5hcHBlbmQoJnJlc291cmNlKTsKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KICNlbmRpZgorICAgICAgICAgICAgUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiByZXNvdXJjZU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocmVzb3VyY2Uu
dXJsKCkpOworICAgICAgICAgICAgaWYgKHJlc291cmNlT3JpZ2luLT5lcXVhbCgmb3JpZ2luKSkK
KyAgICAgICAgICAgICAgICByZXNvdXJjZXNXaXRoT3JpZ2luLmFwcGVuZCgmcmVzb3VyY2UpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC02MDgsMTkgKzU3NywxOCBAQCB2b2lkIE1lbW9yeUNhY2hl
OjpyZW1vdmVSZXNvdXJjZXNXaXRoT3JpZ2luKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB2b2lk
IE1lbW9yeUNhY2hlOjpnZXRPcmlnaW5zV2l0aENhY2hlKFNlY3VyaXR5T3JpZ2luU2V0JiBvcmln
aW5zKQogewogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaHR0cFN0cmluZywgKCJodHRwIikpOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGh0dHBTdHJpbmcoImh0dHAiKTsKICNlbmRpZgot
ICAgIGZvciAoYXV0byYgcmVzb3VyY2VzIDogbV9zZXNzaW9uUmVzb3VyY2VzKSB7Ci0gICAgICAg
IENhY2hlZFJlc291cmNlTWFwOjppdGVyYXRvciBlID0gcmVzb3VyY2VzLnZhbHVlLT5lbmQoKTsK
LSAgICAgICAgZm9yIChDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSByZXNvdXJjZXMu
dmFsdWUtPmJlZ2luKCk7IGl0ICE9IGU7ICsraXQpIHsKKyAgICBmb3IgKGF1dG8mIHJlc291cmNl
cyA6IG1fc2Vzc2lvblJlc291cmNlcy52YWx1ZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8mIGtl
eVZhbHVlIDogKnJlc291cmNlcykgeworICAgICAgICAgICAgYXV0byYgcmVzb3VyY2UgPSAqa2V5
VmFsdWUudmFsdWU7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAgICAg
IGlmIChpdC0+dmFsdWUtPmJlZ2luKCktPmtleSA9PSBlbXB0eVN0cmluZygpKQotICAgICAgICAg
ICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0LT52
YWx1ZS0+YmVnaW4oKS0+dmFsdWUtPnVybCgpKSk7CisgICAgICAgICAgICBhdXRvJiBwYXJ0aXRp
b25OYW1lID0ga2V5VmFsdWUua2V5LnNlY29uZDsKKyAgICAgICAgICAgIGlmICghcGFydGl0aW9u
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShodHRwU3RyaW5nLCBwYXJ0aXRpb25OYW1lLCAwKSk7CiAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSho
dHRwU3RyaW5nLCBpdC0+dmFsdWUtPmJlZ2luKCktPmtleSwgMCkpOwotI2Vsc2UKLSAgICAgICAg
ICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKGl0LT52YWx1
ZS0+dXJsKCkpKTsKICNlbmRpZgorICAgICAgICAgICAgb3JpZ2lucy5hZGQoU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShyZXNvdXJjZS51cmwoKSkpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNjg5
LDQyICs2NTcsMzIgQEAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgTWVtb3J5Q2FjaGU6OmdldFN0
YXRpc3RpY3MoKQogewogICAgIFN0YXRpc3RpY3Mgc3RhdHM7CiAKLSAgICBmb3IgKGF1dG8mIHJl
c291cmNlcyA6IG1fc2Vzc2lvblJlc291cmNlcykgewotICAgICAgICBDYWNoZWRSZXNvdXJjZU1h
cDo6aXRlcmF0b3IgZSA9IHJlc291cmNlcy52YWx1ZS0+ZW5kKCk7Ci0gICAgICAgIGZvciAoQ2Fj
aGVkUmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGkgPSByZXNvdXJjZXMudmFsdWUtPmJlZ2luKCk7IGkg
IT0gZTsgKytpKSB7Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAgICAg
IGZvciAoQ2FjaGVkUmVzb3VyY2VJdGVtOjppdGVyYXRvciBpdGVtSXRlcmF0b3IgPSBpLT52YWx1
ZS0+YmVnaW4oKTsgaXRlbUl0ZXJhdG9yICE9IGktPnZhbHVlLT5lbmQoKTsgKytpdGVtSXRlcmF0
b3IpIHsKLSAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSYgcmVzb3VyY2UgPSAqaXRlbUl0
ZXJhdG9yLT52YWx1ZTsKLSNlbHNlCi0gICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3VyY2UmIHJl
c291cmNlID0gKmktPnZhbHVlOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgc3dpdGNoIChyZXNv
dXJjZS50eXBlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpJbWFn
ZVJlc291cmNlOgotICAgICAgICAgICAgICAgICAgICBzdGF0cy5pbWFnZXMuYWRkUmVzb3VyY2Uo
cmVzb3VyY2UpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgotICAgICAgICAgICAgICAgICAgICBz
dGF0cy5jc3NTdHlsZVNoZWV0cy5hZGRSZXNvdXJjZShyZXNvdXJjZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNjcmlw
dDoKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMuc2NyaXB0cy5hZGRSZXNvdXJjZShyZXNvdXJj
ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgIGZvciAoYXV0byYgcmVzb3VyY2Vz
IDogbV9zZXNzaW9uUmVzb3VyY2VzLnZhbHVlcygpKSB7CisgICAgICAgIGZvciAoYXV0byogcmVz
b3VyY2UgOiByZXNvdXJjZXMtPnZhbHVlcygpKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHJlc291
cmNlLT50eXBlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVz
b3VyY2U6CisgICAgICAgICAgICAgICAgc3RhdHMuaW1hZ2VzLmFkZFJlc291cmNlKCpyZXNvdXJj
ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENhY2hlZFJlc291
cmNlOjpDU1NTdHlsZVNoZWV0OgorICAgICAgICAgICAgICAgIHN0YXRzLmNzc1N0eWxlU2hlZXRz
LmFkZFJlc291cmNlKCpyZXNvdXJjZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpTY3JpcHQ6CisgICAgICAgICAgICAgICAgc3RhdHMu
c2NyaXB0cy5hZGRSZXNvdXJjZSgqcmVzb3VyY2UpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
I2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlhT
TFN0eWxlU2hlZXQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzLnhzbFN0eWxlU2hlZXRzLmFk
ZFJlc291cmNlKHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpYU0xTdHlsZVNoZWV0OgorICAgICAgICAgICAgICAg
IHN0YXRzLnhzbFN0eWxlU2hlZXRzLmFkZFJlc291cmNlKCpyZXNvdXJjZSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQotICAgICAgICAgICAg
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0ZvbnRSZXNvdXJjZToKKyAgICAgICAgICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OlNWR0ZvbnRSZXNvdXJjZToKICNlbmRpZgotICAgICAgICAgICAg
ICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKLSAgICAgICAgICAgICAgICAg
ICAgc3RhdHMuZm9udHMuYWRkUmVzb3VyY2UocmVzb3VyY2UpOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICB9Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykK
KyAgICAgICAgICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZToKKyAgICAgICAg
ICAgICAgICBzdGF0cy5mb250cy5hZGRSZXNvdXJjZSgqcmVzb3VyY2UpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBzdGF0
czsKQEAgLTczNiwxOSArNjk0LDEwIEBAIHZvaWQgTWVtb3J5Q2FjaGU6OnNldERpc2FibGVkKGJv
b2wgZGlzYWJsZWQpCiAgICAgaWYgKCFtX2Rpc2FibGVkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBmb3IgKDs7KSB7Ci0gICAgICAgIGF1dG8gc2Vzc2lvbkl0ZXJhdG9yID0gbV9zZXNzaW9uUmVz
b3VyY2VzLmJlZ2luKCk7Ci0gICAgICAgIGlmIChzZXNzaW9uSXRlcmF0b3IgPT0gbV9zZXNzaW9u
UmVzb3VyY2VzLmVuZCgpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGF1dG8gb3V0ZXJJ
dGVyYXRvciA9IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmJlZ2luKCk7Ci0gICAgICAgIGlmIChv
dXRlckl0ZXJhdG9yID09IHNlc3Npb25JdGVyYXRvci0+dmFsdWUtPmVuZCgpKQotICAgICAgICAg
ICAgYnJlYWs7Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAgYXV0byBp
bm5lckl0ZXJhdG9yID0gb3V0ZXJJdGVyYXRvci0+dmFsdWUtPmJlZ2luKCk7Ci0gICAgICAgIHJl
bW92ZSgqaW5uZXJJdGVyYXRvci0+dmFsdWUpOwotI2Vsc2UKLSAgICAgICAgcmVtb3ZlKCpvdXRl
ckl0ZXJhdG9yLT52YWx1ZSk7Ci0jZW5kaWYKKyAgICB3aGlsZSAoIW1fc2Vzc2lvblJlc291cmNl
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byYgcmVzb3VyY2VzID0gKm1fc2Vzc2lvblJlc291
cmNlcy5iZWdpbigpLT52YWx1ZTsKKyAgICAgICAgQVNTRVJUKCFyZXNvdXJjZXMuaXNFbXB0eSgp
KTsKKyAgICAgICAgcmVtb3ZlKCpyZXNvdXJjZXMuYmVnaW4oKS0+dmFsdWUpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUuaAppbmRleCBjZTEyMjNj
MjFkNWEwYzlkNjZkZDczN2U4MGQwYTk3NTVjNzQyMWFhLi5mY2RmNmY0ZTViMzZkNWNiM2JiODQ4
YTZhMmNkNjczM2ZkNjBhM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvTWVtb3J5Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5
Q2FjaGUuaApAQCAtMTU5LDEwICsxNTksOSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAjaWYgRU5B
QkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBDYWNo
ZWRSZXNvdXJjZSo+IENhY2hlZFJlc291cmNlSXRlbTsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBPd25QdHI8Q2FjaGVkUmVzb3VyY2VJdGVtPj4gQ2FjaGVkUmVzb3VyY2VNYXA7CisgICAg
dHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFpcjxVUkwsIFN0cmluZyAvKiBwYXJ0aXRpb25OYW1lICov
PiwgQ2FjaGVkUmVzb3VyY2UqPiBDYWNoZWRSZXNvdXJjZU1hcDsKICNlbHNlCi0gICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgQ2FjaGVkUmVzb3VyY2UqPiBDYWNoZWRSZXNvdXJjZU1hcDsKKyAg
ICB0eXBlZGVmIEhhc2hNYXA8VVJMLCBDYWNoZWRSZXNvdXJjZSo+IENhY2hlZFJlc291cmNlTWFw
OwogI2VuZGlmCiAKICAgICBzdHJ1Y3QgTFJVTGlzdCB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>