<?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>32389</bug_id>
          
          <creation_ts>2009-12-10 12:25:25 -0800</creation_ts>
          <short_desc>[v8] refactor WeakReferenceMap</short_desc>
          <delta_ts>2009-12-11 09:21:28 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="anton muhin">antonm</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>christian.plesner.hansen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>170485</commentid>
    <comment_count>0</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-12-10 12:25:25 -0800</bug_when>
    <thetext>As spotted by Christian, there are some pieces of repeated code.  Bring those refactorings plus some more cleanups.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170487</commentid>
    <comment_count>1</comment_count>
      <attachid>44633</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-12-10 12:30:20 -0800</bug_when>
    <thetext>Created attachment 44633
first take</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170489</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-10 12:34:30 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44633 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170492</commentid>
    <comment_count>3</comment_count>
      <attachid>44633</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-12-10 12:46:30 -0800</bug_when>
    <thetext>Comment on attachment 44633
first take

Wow, this looks great.  I didn&apos;t consider using the visitor interface internally, but it makes for some prettier code.

+ virtual bool removeIfPresent
+ virtual void clear

Do these need to be virtual?  It doesn&apos;t look like they need to be overridden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170727</commentid>
    <comment_count>4</comment_count>
      <attachid>44681</attachid>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-12-11 06:16:55 -0800</bug_when>
    <thetext>Created attachment 44681
just say no to virtuals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170728</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-11 06:17:58 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44681 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170730</commentid>
    <comment_count>6</comment_count>
    <who name="anton muhin">antonm</who>
    <bug_when>2009-12-11 06:20:26 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 44633 [details])
&gt; Wow, this looks great.  I didn&apos;t consider using the visitor interface
&gt; internally, but it makes for some prettier code.
&gt; 
&gt; + virtual bool removeIfPresent
&gt; + virtual void clear
&gt; 
&gt; Do these need to be virtual?  It doesn&apos;t look like they need to be overridden.

If we&apos;re lucky, they would be overridden. But conditionals are not for SVN, removing.

Thanks a lot for review.If we&apos;re lucky, they would be overridden. But conditionals are not for SVN, removing.

Thanks a lot for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170783</commentid>
    <comment_count>7</comment_count>
      <attachid>44681</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-11 09:21:23 -0800</bug_when>
    <thetext>Comment on attachment 44681
just say no to virtuals

Clearing flags on attachment: 44681

Committed r51998: &lt;http://trac.webkit.org/changeset/51998&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>170784</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-11 09:21:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44633</attachid>
            <date>2009-12-10 12:30:20 -0800</date>
            <delta_ts>2009-12-11 06:16:55 -0800</delta_ts>
            <desc>first take</desc>
            <filename>WC.patch</filename>
            <type>text/plain</type>
            <size>13281</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Njk5NmQwOS4uNmNhYTFiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMi0xMCAgYW50b24gbXVoaW4g
IDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFt2OF0gcmVmYWN0b3IgV2Vha1JlZmVyZW5jZU1hcC4KKyAgICAgICAg
TW92ZSBjb21tb24gYml0cyBvZiBmdW5jdGlvbmFsaXR5IHRvIHJlZHVjZSBkdXBsaWNhdGlvbi4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzODkK
KworICAgICAgICBTaG91bGQgYmUgY292ZXJlZCBieSBidWlsZGJvdHMuCisKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9ET01EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpXcmFwcGVy
TWFwT2JqZWN0UmVtb3Zlcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TURhdGE6OmhhbmRsZVdlYWtPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YTo6cmVt
b3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRh
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrRE9NT2JqZWN0
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrQWN0aXZlRE9N
T2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrTm9k
ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vha1NWR0VsZW1l
bnRJbnN0YW5jZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vh
a1NWR09iamVjdFdpdGhDb250ZXh0Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OnZpc2l0QWN0aXZlRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpdERPTVNWR0VsZW1lbnRJbnN0YW5jZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6dmlzaXRTVkdPYmplY3RzSW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTU1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6V2Vha1JlZmVyZW5jZU1hcDo6
cmVtb3ZlSWZQcmVzZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYWtSZWZlcmVuY2VNYXA6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYWtSZWZlcmVuY2VNYXA6OnZpc2l0KToKKwogMjAw
OS0xMi0wOSAgQnJpYW4gV2VpbnN0ZWluICA8YndlaW5zdGVpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NRGF0YS5oIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKaW5kZXggNjVm
ZThmYy4uYjU4ZjEzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUo
KSA9IDA7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZv
aWQgaGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6OkRPTVdyYXBwZXJNYXBUeXBlLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCBUKiBkb21PYmplY3QpOworICAgICAgICBzdGF0aWMgdm9pZCBo
YW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+LCBUKiBkb21PYmplY3QpOwogCiAgICAgICAgIHZvaWQgZm9yZ2V0
RGVsYXllZE9iamVjdCh2b2lkKiBvYmplY3QpIHsgbV9kZWxheWVkT2JqZWN0TWFwLnRha2Uob2Jq
ZWN0KTsgfQogCkBAIC03MSw2ICs3MSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgZW5zdXJlRGVyZWYoVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIHR5cGUsIHZvaWQq
IGRvbU9iamVjdCk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KFY4Q2xhc3NJbmRl
eDo6VjhXcmFwcGVyVHlwZSB0eXBlLCB2b2lkKiBkb21PYmplY3QpOwogCisgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgICAgIGNsYXNzIFdyYXBwZXJNYXBPYmplY3RSZW1vdmVyIDog
cHVibGljIFdlYWtSZWZlcmVuY2VNYXA8VCwgdjg6Ok9iamVjdD46OlZpc2l0b3IgeworICAgICAg
ICBwdWJsaWM6CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRET01XcmFwcGVyKFQqIGRv
bU9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gdjhPYmplY3QpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIHR5cGUgPSBW
OERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHY4T2JqZWN0KTsKKyAgICAgICAgICAgICAgICBk
ZXJlZk9iamVjdCh0eXBlLCBkb21PYmplY3QpOworICAgICAgICAgICAgICAgIHY4T2JqZWN0LkRp
c3Bvc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKwogICAgICAgICAvLyBTdG9yZXMg
YWxsIHRoZSBET00gb2JqZWN0cyB0aGF0IGFyZSBkZWxheWVkIHRvIGJlIHByb2Nlc3NlZCB3aGVu
IHRoZQogICAgICAgICAvLyBvd25pbmcgdGhyZWFkIGdhaW5zIGNvbnRyb2wuCiAgICAgICAgIERl
bGF5ZWRPYmplY3RNYXAgbV9kZWxheWVkT2JqZWN0TWFwOwpAQCAtODQsNyArOTUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAg
dm9pZCBET01EYXRhOjpoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1h
cFR5cGUgbWFwVHlwZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OE9iamVjdCwgVCogZG9tT2Jq
ZWN0KQorICAgIHZvaWQgRE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6OkRP
TVdyYXBwZXJNYXBUeXBlIG1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHY4T2Jq
ZWN0LCBUKiBkb21PYmplY3QpCiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJl
YWQoKSk7CiAgICAgICAgIERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9y
ZXMoKTsKQEAgLTkzLDEwICsxMDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
ICAgIERPTURhdGFTdG9yZTo6SW50ZXJuYWxET01XcmFwcGVyTWFwPFQ+KiBkb21NYXAgPSBzdGF0
aWNfY2FzdDxET01EYXRhU3RvcmU6OkludGVybmFsRE9NV3JhcHBlck1hcDxUPio+KHN0b3JlLT5n
ZXRET01XcmFwcGVyTWFwKG1hcFR5cGUpKTsKIAotICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gZG9tTWFwLT5nZXQoZG9tT2JqZWN0KTsKLSAgICAgICAgICAgIGlm
ICgqd3JhcHBlciA9PSAqdjhPYmplY3QpIHsKLSAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUg
SlMgcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgIGRvbU1hcC0+Zm9yZ2V0T25seShkb21PYmpl
Y3QpOworICAgICAgICAgICAgaWYgKGRvbU1hcC0+cmVtb3ZlSWZQcmVzZW50KGRvbU9iamVjdCwg
djhPYmplY3QpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHN0b3JlLT5kb21EYXRhKCktPm93
bmluZ1RocmVhZCgpID09IFdURjo6Y3VycmVudFRocmVhZCgpKTsKICAgICAgICAgICAgICAgICBz
dG9yZS0+ZG9tRGF0YSgpLT5kZXJlZk9iamVjdChWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBl
KHY4T2JqZWN0KSwgZG9tT2JqZWN0KTsKICAgICAgICAgICAgIH0KQEAgLTEwNiwxOSArMTE0LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9p
ZCBET01EYXRhOjpyZW1vdmVPYmplY3RzRnJvbVdyYXBwZXJNYXAoRE9NV3JhcHBlck1hcDxUPiYg
ZG9tTWFwKQogICAgIHsKLSAgICAgICAgZm9yICh0eXBlbmFtZSBXVEY6Okhhc2hNYXA8VCosIHY4
OjpPYmplY3QqPjo6aXRlcmF0b3IgaXRlcihkb21NYXAuaW1wbCgpLmJlZ2luKCkpOyBpdGVyICE9
IGRvbU1hcC5pbXBsKCkuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgVCogZG9tT2JqZWN0
ID0gc3RhdGljX2Nhc3Q8VCo+KGl0ZXItPmZpcnN0KTsKLSAgICAgICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHY4T2JqZWN0KGl0ZXItPnNlY29uZCk7Ci0KLSAgICAgICAgICAgIFY4
Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlwZSB0eXBlID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVy
VHlwZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4T2JqZWN0KSk7Ci0KLSAgICAgICAg
ICAgIC8vIERlcmVmIHRoZSBET00gb2JqZWN0LgotICAgICAgICAgICAgZGVyZWZPYmplY3QodHlw
ZSwgZG9tT2JqZWN0KTsKLQotICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIEpTIHdyYXBwZXIuCi0g
ICAgICAgICAgICB2OE9iamVjdC5EaXNwb3NlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZG9tTWFw
LmltcGwoKS5jbGVhcigpOworICAgICAgICBXcmFwcGVyTWFwT2JqZWN0UmVtb3ZlcjxUPiByZW1v
dmVyOworICAgICAgICBkb21NYXAudmlzaXQoJnJlbW92ZXIpOworICAgICAgICBkb21NYXAuY2xl
YXIoKTsKICAgICB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
RGF0YVN0b3JlLmNwcAppbmRleCBhNzZjYTUzLi4zMzZmNjYyIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01EYXRhU3RvcmUuY3BwCkBAIC0xNDYsMTQgKzE0NiwxNCBAQCB2b2lkIERPTURhdGFTdG9yZTo6
d2Vha0RPTU9iamVjdENhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdjhPYmplY3Qs
IHZvaQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICBBU1NFUlQodjhPYmplY3Qt
PklzT2JqZWN0KCkpOwotICAgIERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3Jl
OjpET01PYmplY3RNYXAsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhPYmplY3QpLCBk
b21PYmplY3QpOworICAgIERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3JlOjpE
T01PYmplY3RNYXAsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHY4T2JqZWN0KSwg
ZG9tT2JqZWN0KTsKIH0KIAogdm9pZCBET01EYXRhU3RvcmU6OndlYWtBY3RpdmVET01PYmplY3RD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHY4T2JqZWN0LCB2b2lkKiBkb21PYmpl
Y3QpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIEFTU0VSVCh2OE9iamVjdC0+
SXNPYmplY3QoKSk7Ci0gICAgRE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6
OkFjdGl2ZURPTU9iamVjdE1hcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OE9iamVj
dCksIGRvbU9iamVjdCk7CisgICAgRE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3Rv
cmU6OkFjdGl2ZURPTU9iamVjdE1hcCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3Qo
djhPYmplY3QpLCBkb21PYmplY3QpOwogfQogCiB2b2lkIERPTURhdGFTdG9yZTo6d2Vha05vZGVD
YWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHY4T2JqZWN0LCB2b2lkKiBkb21PYmpl
Y3QpCkBAIC0xNjYsMTUgKzE2NiwxMSBAQCB2b2lkIERPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxs
YmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHY4T2JqZWN0LCB2b2lkKiBkbwogICAgIERP
TURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3Jl
KiBzdG9yZSA9IGxpc3RbaV07Ci0gICAgICAgIEhhc2hNYXA8Tm9kZSosIHY4OjpPYmplY3QqPiYg
ZG9tTWFwSW1wbCA9IHN0b3JlLT5kb21Ob2RlTWFwKCkuaW1wbCgpOwotICAgICAgICBIYXNoTWFw
PE5vZGUqLCB2ODo6T2JqZWN0Kj46Oml0ZXJhdG9yIGl0ID0gZG9tTWFwSW1wbC5maW5kKG5vZGUp
OwotICAgICAgICBpZiAoaXQgPT0gZG9tTWFwSW1wbC5lbmQoKSB8fCBpdC0+c2Vjb25kICE9ICp2
OE9iamVjdCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBU1NFUlQoc3RvcmUtPmRv
bURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwotICAgICAg
ICB2OE9iamVjdC5EaXNwb3NlKCk7Ci0gICAgICAgIGRvbU1hcEltcGwucmVtb3ZlKGl0KTsKLSAg
ICAgICAgbm9kZS0+ZGVyZWYoKTsgIC8vIE5vYm9keSBvdmVycmlkZXMgTm9kZTo6ZGVyZWYgc28g
aXQncyBzYWZlCi0gICAgICAgIGJyZWFrOyAgLy8gVGhlcmUgbWlnaHQgYmUgYXQgbW9zdCBvbmUg
d3JhcHBlciBmb3IgdGhlIG5vZGUgaW4gd29ybGQncyBtYXBzCisgICAgICAgIGlmIChzdG9yZS0+
ZG9tTm9kZU1hcCgpLnJlbW92ZUlmUHJlc2VudChub2RlLCB2OE9iamVjdCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJl
bnRUaHJlYWQoKSk7CisgICAgICAgICAgICBub2RlLT5kZXJlZigpOyAgLy8gTm9ib2R5IG92ZXJy
aWRlcyBOb2RlOjpkZXJlZiBzbyBpdCdzIHNhZmUKKyAgICAgICAgICAgIGJyZWFrOyAgLy8gVGhl
cmUgbWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4gd29ybGQncyBt
YXBzCisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTE4NCwxNCArMTgwLDE0IEBAIHZvaWQgRE9N
RGF0YVN0b3JlOjp3ZWFrU1ZHRWxlbWVudEluc3RhbmNlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiB2OE9iCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIEFTU0VS
VCh2OE9iamVjdC0+SXNPYmplY3QoKSk7Ci0gICAgRE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChE
T01EYXRhU3RvcmU6OkRPTVNWR0VsZW1lbnRJbnN0YW5jZU1hcCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdCh2OE9iamVjdCksIHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbnN0YW5jZSo+KGRv
bU9iamVjdCkpOworICAgIERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3JlOjpE
T01TVkdFbGVtZW50SW5zdGFuY2VNYXAsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0
KHY4T2JqZWN0KSwgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudEluc3RhbmNlKj4oZG9tT2JqZWN0KSk7
CiB9CiAKIHZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFrU1ZHT2JqZWN0V2l0aENvbnRleHRDYWxsYmFj
ayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHY4T2JqZWN0LCB2b2lkKiBkb21PYmplY3QpCiB7
CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIEFTU0VSVCh2OE9iamVjdC0+SXNPYmpl
Y3QoKSk7Ci0gICAgRE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6OkRPTVNW
R09iamVjdFdpdGhDb250ZXh0TWFwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4T2Jq
ZWN0KSwgZG9tT2JqZWN0KTsKKyAgICBET01EYXRhOjpoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFT
dG9yZTo6RE9NU1ZHT2JqZWN0V2l0aENvbnRleHRNYXAsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpDYXN0KHY4T2JqZWN0KSwgZG9tT2JqZWN0KTsKIH0KIAogI2VuZGlmICAvLyBFTkFCTEUo
U1ZHKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggYjEyNzA4OS4uZTAyNzA1OCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBAIC04Miw4ICs4Miw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICBmb3JnZXREZWxheWVkT2JqZWN0KG1fZG9tRGF0
YSwgb2JqZWN0KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdm9pZCBmb3JnZXRPbmx5
KEtleVR5cGUqIG9iamVjdCkgeyBET01XcmFwcGVyTWFwPEtleVR5cGU+Ojpmb3JnZXQob2JqZWN0
KTsgfQotCiAgICAgICAgIHByaXZhdGU6CiAgICAgICAgICAgICBET01EYXRhKiBtX2RvbURhdGE7
CiAgICAgICAgIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCmluZGV4IGFjZDg4ZWMuLjgzZTI2
ODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCisrKyBiL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCkBAIC0xNDUsOSArMTQ1LDcgQEAgdm9pZCB2
aXNpdERPTU5vZGVzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3Iq
IHZpc2l0b3IpCiAgICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkg
PT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBIYXNoTWFwPE5vZGUqLCB2ODo6T2JqZWN0Kj4mIG1hcCA9IHN0b3JlLT5kb21Ob2RlTWFwKCku
aW1wbCgpOwotICAgICAgICBmb3IgKEhhc2hNYXA8Tm9kZSosIHY4OjpPYmplY3QqPjo6aXRlcmF0
b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0gbWFwLmVuZCgpOyArK2l0KQotICAgICAgICAgICAg
dmlzaXRvci0+dmlzaXRET01XcmFwcGVyKGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4oaXQtPnNlY29uZCkpOworICAgICAgICBzdG9yZS0+ZG9tTm9kZU1hcCgpLnZpc2l0KHZp
c2l0b3IpOwogICAgIH0KIH0KIApAQCAtMTYyLDkgKzE2MCw3IEBAIHZvaWQgdmlzaXRET01PYmpl
Y3RzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3Ip
CiAgICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpj
dXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBIYXNoTWFw
PHZvaWQqLCB2ODo6T2JqZWN0Kj4gJiBtYXAgPSBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkuaW1wbCgp
OwotICAgICAgICBmb3IgKEhhc2hNYXA8dm9pZCosIHY4OjpPYmplY3QqPjo6aXRlcmF0b3IgaXQg
PSBtYXAuYmVnaW4oKTsgaXQgIT0gbWFwLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgdmlzaXRv
ci0+dmlzaXRET01XcmFwcGVyKGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4o
aXQtPnNlY29uZCkpOworICAgICAgICBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkudmlzaXQodmlzaXRv
cik7CiAgICAgfQogfQogCkBAIC0xNzksOSArMTc1LDcgQEAgdm9pZCB2aXNpdEFjdGl2ZURPTU9i
amVjdHNJbkN1cnJlbnRUaHJlYWQoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRv
cikKICAgICAgICAgaWYgKCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6
OmN1cnJlbnRUaHJlYWQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEhhc2hN
YXA8dm9pZCosIHY4OjpPYmplY3QqPiYgbWFwID0gc3RvcmUtPmFjdGl2ZURvbU9iamVjdE1hcCgp
LmltcGwoKTsKLSAgICAgICAgZm9yIChIYXNoTWFwPHZvaWQqLCB2ODo6T2JqZWN0Kj46Oml0ZXJh
dG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgICAg
IHZpc2l0b3ItPnZpc2l0RE9NV3JhcHBlcihpdC0+Zmlyc3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+KGl0LT5zZWNvbmQpKTsKKyAgICAgICAgc3RvcmUtPmFjdGl2ZURvbU9iamVjdE1hcCgp
LnZpc2l0KHZpc2l0b3IpOwogICAgIH0KIH0KIApAQCAtMTk4LDkgKzE5Miw3IEBAIHZvaWQgdmlz
aXRET01TVkdFbGVtZW50SW5zdGFuY2VzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8U1ZH
RWxlbWVudEluc3RhbmNlCiAgICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhy
ZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBIYXNoTWFwPFNWR0VsZW1lbnRJbnN0YW5jZSosIHY4OjpPYmplY3QqPiAmIG1hcCA9
IHN0b3JlLT5kb21TdmdFbGVtZW50SW5zdGFuY2VNYXAoKS5pbXBsKCk7Ci0gICAgICAgIGZvciAo
SGFzaE1hcDxTVkdFbGVtZW50SW5zdGFuY2UqLCB2ODo6T2JqZWN0Kj46Oml0ZXJhdG9yIGl0ID0g
bWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgIHZpc2l0b3It
PnZpc2l0RE9NV3JhcHBlcihpdC0+Zmlyc3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KGl0
LT5zZWNvbmQpKTsKKyAgICAgICAgc3RvcmUtPmRvbVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgpLnZp
c2l0KHZpc2l0b3IpOwogICAgIH0KIH0KIApAQCAtMjE1LDkgKzIwNyw3IEBAIHZvaWQgdmlzaXRT
VkdPYmplY3RzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZp
c2l0b3IpCiAgICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0g
V1RGOjpjdXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBI
YXNoTWFwPHZvaWQqLCB2ODo6T2JqZWN0Kj4mIG1hcCA9IHN0b3JlLT5kb21TdmdPYmplY3RXaXRo
Q29udGV4dE1hcCgpLmltcGwoKTsKLSAgICAgICAgZm9yIChIYXNoTWFwPHZvaWQqLCB2ODo6T2Jq
ZWN0Kj46Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkK
LSAgICAgICAgICAgIHZpc2l0b3ItPnZpc2l0RE9NV3JhcHBlcihpdC0+Zmlyc3QsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+KGl0LT5zZWNvbmQpKTsKKyAgICAgICAgc3RvcmUtPmRvbVN2Z09i
amVjdFdpdGhDb250ZXh0TWFwKCkudmlzaXQodmlzaXRvcik7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NTWFwLmgKaW5kZXggMTI2MDVhNi4uMjFmZGI3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTU1hcC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAu
aApAQCAtODEsOSArODEsMzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaGFu
ZGxlLkNsZWFyKCk7CiAgICAgICAgIH0KIAorICAgICAgICB2aXJ0dWFsIGJvb2wgcmVtb3ZlSWZQ
cmVzZW50KEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8djg6OkRhdGE+IHZhbHVlKQorICAg
ICAgICB7CisgICAgICAgICAgICB0eXBlbmFtZSBIYXNoTWFwPEtleVR5cGUqLCBWYWx1ZVR5cGUq
Pjo6aXRlcmF0b3IgaXQgPSBtX21hcC5maW5kKGtleSk7CisgICAgICAgICAgICBpZiAoaXQgPT0g
bV9tYXAuZW5kKCkgfHwgaXQtPnNlY29uZCAhPSAqdmFsdWUpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICBtX21hcC5yZW1vdmUoaXQpOworICAgICAgICAgICAg
dmFsdWUuRGlzcG9zZSgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKQorICAgICAgICB7CisgICAgICAgICAgICBtX21h
cC5jbGVhcigpOworICAgICAgICB9CisKICAgICAgICAgYm9vbCBjb250YWlucyhLZXlUeXBlKiBv
YmopIHsgcmV0dXJuIG1fbWFwLmNvbnRhaW5zKG9iaik7IH0KIAotICAgICAgICBIYXNoTWFwPEtl
eVR5cGUqLCBWYWx1ZVR5cGUqPiYgaW1wbCgpIHsgcmV0dXJuIG1fbWFwOyB9CisgICAgICAgIGNs
YXNzIFZpc2l0b3IgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQg
dmlzaXRET01XcmFwcGVyKEtleVR5cGUqLCB2ODo6UGVyc2lzdGVudDxWYWx1ZVR5cGU+KSA9IDA7
CisgICAgICAgIH07CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0KFZpc2l0b3IqIHZpc2l0
b3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIHR5cGVuYW1lIEhhc2hNYXA8S2V5VHlwZSosIFZh
bHVlVHlwZSo+OjppdGVyYXRvciBpdCA9IG1fbWFwLmJlZ2luKCk7CisgICAgICAgICAgICBmb3Ig
KDsgaXQgIT0gbV9tYXAuZW5kKCk7ICsraXQpCisgICAgICAgICAgICAgICAgdmlzaXRvci0+dmlz
aXRET01XcmFwcGVyKGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8VmFsdWVUeXBlPihpdC0+c2Vj
b25kKSk7CisgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgSGFzaE1hcDxLZXlU
eXBlKiwgVmFsdWVUeXBlKj4gbV9tYXA7CkBAIC05MywxMSArMTE5LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHRlbXBsYXRlIDxjbGFzcyBLZXlUeXBlPiBjbGFzcyBET01XcmFwcGVyTWFw
IDogcHVibGljIFdlYWtSZWZlcmVuY2VNYXA8S2V5VHlwZSwgdjg6Ok9iamVjdD4gewogICAgIHB1
YmxpYzoKICAgICAgICAgRE9NV3JhcHBlck1hcCh2ODo6V2Vha1JlZmVyZW5jZUNhbGxiYWNrIGNh
bGxiYWNrKSA6IFdlYWtSZWZlcmVuY2VNYXA8S2V5VHlwZSwgdjg6Ok9iamVjdD4oY2FsbGJhY2sp
IHsgfQotCi0gICAgICAgIGNsYXNzIFZpc2l0b3IgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAg
ICAgdmlydHVhbCB2b2lkIHZpc2l0RE9NV3JhcHBlcihLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IG9iamVjdCkgPSAwOwotICAgICAgICB9OwogICAgIH07CiAKICAgICAv
LyBBbiBvcGFxdWUgY2xhc3MgdGhhdCByZXByZXNlbnRzIGEgc2V0IG9mIERPTSB3cmFwcGVycy4K
</data>
<flag name="review"
          id="26528"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44681</attachid>
            <date>2009-12-11 06:16:55 -0800</date>
            <delta_ts>2009-12-11 09:21:23 -0800</delta_ts>
            <desc>just say no to virtuals</desc>
            <filename>WC.patch</filename>
            <type>text/plain</type>
            <size>13307</size>
            <attacher name="anton muhin">antonm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzNhMGJkYS4uZWQ0N2MyMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAwOS0xMi0xMCAgYW50b24gbXVoaW4g
IDxhbnRvbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFt2OF0gcmVmYWN0b3IgV2Vha1JlZmVyZW5jZU1hcC4KKyAgICAgICAg
TW92ZSBjb21tb24gYml0cyBvZiBmdW5jdGlvbmFsaXR5IHRvIHJlZHVjZSBkdXBsaWNhdGlvbi4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIzODkK
KworICAgICAgICBTaG91bGQgYmUgY292ZXJlZCBieSBidWlsZGJvdHMuCisKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9ET01EYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhOjpXcmFwcGVy
TWFwT2JqZWN0UmVtb3Zlcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRP
TURhdGE6OmhhbmRsZVdlYWtPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YTo6cmVt
b3ZlT2JqZWN0c0Zyb21XcmFwcGVyTWFwKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRh
U3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrRE9NT2JqZWN0
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrQWN0aXZlRE9N
T2JqZWN0Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrTm9k
ZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vha1NWR0VsZW1l
bnRJbnN0YW5jZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vh
a1NWR09iamVjdFdpdGhDb250ZXh0Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnZpc2l0RE9NTm9kZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAoV2Vi
Q29yZTo6dmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OnZpc2l0QWN0aXZlRE9NT2JqZWN0c0luQ3VycmVudFRocmVhZCk6CisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpdERPTVNWR0VsZW1lbnRJbnN0YW5jZXNJbkN1cnJlbnRUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6dmlzaXRTVkdPYmplY3RzSW5DdXJyZW50VGhyZWFkKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9WOERPTU1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6V2Vha1JlZmVyZW5jZU1hcDo6
cmVtb3ZlSWZQcmVzZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYWtSZWZlcmVuY2VNYXA6OmNs
ZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYWtSZWZlcmVuY2VNYXA6OnZpc2l0KToKKwogMjAw
OS0xMi0xMSAgU2ltb24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPiwgS2ltIEdyw7Zu
aG9sbSAgPGtpbS5ncm9uaG9sbUBub21vdm9rLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBB
bnR0aSBLb2l2aXN0by4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YS5o
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKaW5kZXggNjVmZThmYy4uYjU4ZjEzOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhLmgKKysrIGIvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01EYXRhLmgKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB2aXJ0dWFsIERPTURhdGFTdG9yZSYgZ2V0U3RvcmUoKSA9IDA7CiAKICAgICAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgaGFuZGxlV2Vha09i
amVjdChET01EYXRhU3RvcmU6OkRPTVdyYXBwZXJNYXBUeXBlLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCBUKiBkb21PYmplY3QpOworICAgICAgICBzdGF0aWMgdm9pZCBoYW5kbGVXZWFrT2JqZWN0
KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+LCBUKiBkb21PYmplY3QpOwogCiAgICAgICAgIHZvaWQgZm9yZ2V0RGVsYXllZE9iamVjdCh2
b2lkKiBvYmplY3QpIHsgbV9kZWxheWVkT2JqZWN0TWFwLnRha2Uob2JqZWN0KTsgfQogCkBAIC03
MSw2ICs3MSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZW5zdXJlRGVy
ZWYoVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIHR5cGUsIHZvaWQqIGRvbU9iamVjdCk7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIGRlcmVmT2JqZWN0KFY4Q2xhc3NJbmRleDo6VjhXcmFwcGVyVHlw
ZSB0eXBlLCB2b2lkKiBkb21PYmplY3QpOwogCisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CisgICAgICAgIGNsYXNzIFdyYXBwZXJNYXBPYmplY3RSZW1vdmVyIDogcHVibGljIFdlYWtSZWZl
cmVuY2VNYXA8VCwgdjg6Ok9iamVjdD46OlZpc2l0b3IgeworICAgICAgICBwdWJsaWM6CisgICAg
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRET01XcmFwcGVyKFQqIGRvbU9iamVjdCwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gdjhPYmplY3QpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgVjhDbGFzc0luZGV4OjpWOFdyYXBwZXJUeXBlIHR5cGUgPSBWOERPTVdyYXBwZXI6OmRv
bVdyYXBwZXJUeXBlKHY4T2JqZWN0KTsKKyAgICAgICAgICAgICAgICBkZXJlZk9iamVjdCh0eXBl
LCBkb21PYmplY3QpOworICAgICAgICAgICAgICAgIHY4T2JqZWN0LkRpc3Bvc2UoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfTsKKwogICAgICAgICAvLyBTdG9yZXMgYWxsIHRoZSBET00gb2Jq
ZWN0cyB0aGF0IGFyZSBkZWxheWVkIHRvIGJlIHByb2Nlc3NlZCB3aGVuIHRoZQogICAgICAgICAv
LyBvd25pbmcgdGhyZWFkIGdhaW5zIGNvbnRyb2wuCiAgICAgICAgIERlbGF5ZWRPYmplY3RNYXAg
bV9kZWxheWVkT2JqZWN0TWFwOwpAQCAtODQsNyArOTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgfTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBET01EYXRhOjpo
YW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NV3JhcHBlck1hcFR5cGUgbWFwVHlwZSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OE9iamVjdCwgVCogZG9tT2JqZWN0KQorICAgIHZvaWQg
RE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6OkRPTVdyYXBwZXJNYXBUeXBl
IG1hcFR5cGUsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHY4T2JqZWN0LCBUKiBkb21PYmpl
Y3QpCiAgICAgewogICAgICAgICBBU1NFUlQoV1RGOjppc01haW5UaHJlYWQoKSk7CiAgICAgICAg
IERPTURhdGFMaXN0JiBsaXN0ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKQEAgLTkzLDEw
ICsxMDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgICAgIERPTURhdGFTdG9y
ZTo6SW50ZXJuYWxET01XcmFwcGVyTWFwPFQ+KiBkb21NYXAgPSBzdGF0aWNfY2FzdDxET01EYXRh
U3RvcmU6OkludGVybmFsRE9NV3JhcHBlck1hcDxUPio+KHN0b3JlLT5nZXRET01XcmFwcGVyTWFw
KG1hcFR5cGUpKTsKIAotICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gZG9tTWFwLT5nZXQoZG9tT2JqZWN0KTsKLSAgICAgICAgICAgIGlmICgqd3JhcHBlciA9PSAq
djhPYmplY3QpIHsKLSAgICAgICAgICAgICAgICAvLyBDbGVhciB0aGUgSlMgcmVmZXJlbmNlLgot
ICAgICAgICAgICAgICAgIGRvbU1hcC0+Zm9yZ2V0T25seShkb21PYmplY3QpOworICAgICAgICAg
ICAgaWYgKGRvbU1hcC0+cmVtb3ZlSWZQcmVzZW50KGRvbU9iamVjdCwgdjhPYmplY3QpKSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHN0b3JlLT5kb21EYXRhKCktPm93bmluZ1RocmVhZCgpID09
IFdURjo6Y3VycmVudFRocmVhZCgpKTsKICAgICAgICAgICAgICAgICBzdG9yZS0+ZG9tRGF0YSgp
LT5kZXJlZk9iamVjdChWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHY4T2JqZWN0KSwgZG9t
T2JqZWN0KTsKICAgICAgICAgICAgIH0KQEAgLTEwNiwxOSArMTE0LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgdm9pZCBET01EYXRhOjpyZW1v
dmVPYmplY3RzRnJvbVdyYXBwZXJNYXAoRE9NV3JhcHBlck1hcDxUPiYgZG9tTWFwKQogICAgIHsK
LSAgICAgICAgZm9yICh0eXBlbmFtZSBXVEY6Okhhc2hNYXA8VCosIHY4OjpPYmplY3QqPjo6aXRl
cmF0b3IgaXRlcihkb21NYXAuaW1wbCgpLmJlZ2luKCkpOyBpdGVyICE9IGRvbU1hcC5pbXBsKCku
ZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgVCogZG9tT2JqZWN0ID0gc3RhdGljX2Nhc3Q8
VCo+KGl0ZXItPmZpcnN0KTsKLSAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IHY4T2JqZWN0KGl0ZXItPnNlY29uZCk7Ci0KLSAgICAgICAgICAgIFY4Q2xhc3NJbmRleDo6VjhX
cmFwcGVyVHlwZSB0eXBlID0gVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHY4T2JqZWN0KSk7Ci0KLSAgICAgICAgICAgIC8vIERlcmVmIHRo
ZSBET00gb2JqZWN0LgotICAgICAgICAgICAgZGVyZWZPYmplY3QodHlwZSwgZG9tT2JqZWN0KTsK
LQotICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIEpTIHdyYXBwZXIuCi0gICAgICAgICAgICB2OE9i
amVjdC5EaXNwb3NlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZG9tTWFwLmltcGwoKS5jbGVhcigp
OworICAgICAgICBXcmFwcGVyTWFwT2JqZWN0UmVtb3ZlcjxUPiByZW1vdmVyOworICAgICAgICBk
b21NYXAudmlzaXQoJnJlbW92ZXIpOworICAgICAgICBkb21NYXAuY2xlYXIoKTsKICAgICB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcApp
bmRleCBhNzZjYTUzLi4zMzZmNjYyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3Bw
CkBAIC0xNDYsMTQgKzE0NiwxNCBAQCB2b2lkIERPTURhdGFTdG9yZTo6d2Vha0RPTU9iamVjdENh
bGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdjhPYmplY3QsIHZvaQogewogICAgIHY4
OjpIYW5kbGVTY29wZSBzY29wZTsKICAgICBBU1NFUlQodjhPYmplY3QtPklzT2JqZWN0KCkpOwot
ICAgIERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3JlOjpET01PYmplY3RNYXAs
IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhPYmplY3QpLCBkb21PYmplY3QpOworICAg
IERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3JlOjpET01PYmplY3RNYXAsIHY4
OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHY4T2JqZWN0KSwgZG9tT2JqZWN0KTsKIH0K
IAogdm9pZCBET01EYXRhU3RvcmU6OndlYWtBY3RpdmVET01PYmplY3RDYWxsYmFjayh2ODo6UGVy
c2lzdGVudDx2ODo6VmFsdWU+IHY4T2JqZWN0LCB2b2lkKiBkb21PYmplY3QpCiB7CiAgICAgdjg6
OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIEFTU0VSVCh2OE9iamVjdC0+SXNPYmplY3QoKSk7Ci0g
ICAgRE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6OkFjdGl2ZURPTU9iamVj
dE1hcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OE9iamVjdCksIGRvbU9iamVjdCk7
CisgICAgRE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6OkFjdGl2ZURPTU9i
amVjdE1hcCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodjhPYmplY3QpLCBkb21P
YmplY3QpOwogfQogCiB2b2lkIERPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFjayh2ODo6UGVy
c2lzdGVudDx2ODo6VmFsdWU+IHY4T2JqZWN0LCB2b2lkKiBkb21PYmplY3QpCkBAIC0xNjYsMTUg
KzE2NiwxMSBAQCB2b2lkIERPTURhdGFTdG9yZTo6d2Vha05vZGVDYWxsYmFjayh2ODo6UGVyc2lz
dGVudDx2ODo6VmFsdWU+IHY4T2JqZWN0LCB2b2lkKiBkbwogICAgIERPTURhdGFMaXN0JiBsaXN0
ID0gRE9NRGF0YVN0b3JlOjphbGxTdG9yZXMoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGxpc3Quc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRE9NRGF0YVN0b3JlKiBzdG9yZSA9IGxpc3Rb
aV07Ci0gICAgICAgIEhhc2hNYXA8Tm9kZSosIHY4OjpPYmplY3QqPiYgZG9tTWFwSW1wbCA9IHN0
b3JlLT5kb21Ob2RlTWFwKCkuaW1wbCgpOwotICAgICAgICBIYXNoTWFwPE5vZGUqLCB2ODo6T2Jq
ZWN0Kj46Oml0ZXJhdG9yIGl0ID0gZG9tTWFwSW1wbC5maW5kKG5vZGUpOwotICAgICAgICBpZiAo
aXQgPT0gZG9tTWFwSW1wbC5lbmQoKSB8fCBpdC0+c2Vjb25kICE9ICp2OE9iamVjdCkKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICBBU1NFUlQoc3RvcmUtPmRvbURhdGEoKS0+b3duaW5n
VGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwotICAgICAgICB2OE9iamVjdC5EaXNw
b3NlKCk7Ci0gICAgICAgIGRvbU1hcEltcGwucmVtb3ZlKGl0KTsKLSAgICAgICAgbm9kZS0+ZGVy
ZWYoKTsgIC8vIE5vYm9keSBvdmVycmlkZXMgTm9kZTo6ZGVyZWYgc28gaXQncyBzYWZlCi0gICAg
ICAgIGJyZWFrOyAgLy8gVGhlcmUgbWlnaHQgYmUgYXQgbW9zdCBvbmUgd3JhcHBlciBmb3IgdGhl
IG5vZGUgaW4gd29ybGQncyBtYXBzCisgICAgICAgIGlmIChzdG9yZS0+ZG9tTm9kZU1hcCgpLnJl
bW92ZUlmUHJlc2VudChub2RlLCB2OE9iamVjdCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChzdG9y
ZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQoKSk7Cisg
ICAgICAgICAgICBub2RlLT5kZXJlZigpOyAgLy8gTm9ib2R5IG92ZXJyaWRlcyBOb2RlOjpkZXJl
ZiBzbyBpdCdzIHNhZmUKKyAgICAgICAgICAgIGJyZWFrOyAgLy8gVGhlcmUgbWlnaHQgYmUgYXQg
bW9zdCBvbmUgd3JhcHBlciBmb3IgdGhlIG5vZGUgaW4gd29ybGQncyBtYXBzCisgICAgICAgIH0K
ICAgICB9CiB9CiAKQEAgLTE4NCwxNCArMTgwLDE0IEBAIHZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFr
U1ZHRWxlbWVudEluc3RhbmNlQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2OE9i
CiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogICAgIEFTU0VSVCh2OE9iamVjdC0+SXNP
YmplY3QoKSk7Ci0gICAgRE9NRGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6OkRP
TVNWR0VsZW1lbnRJbnN0YW5jZU1hcCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2OE9i
amVjdCksIHN0YXRpY19jYXN0PFNWR0VsZW1lbnRJbnN0YW5jZSo+KGRvbU9iamVjdCkpOworICAg
IERPTURhdGE6OmhhbmRsZVdlYWtPYmplY3QoRE9NRGF0YVN0b3JlOjpET01TVkdFbGVtZW50SW5z
dGFuY2VNYXAsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHY4T2JqZWN0KSwgc3Rh
dGljX2Nhc3Q8U1ZHRWxlbWVudEluc3RhbmNlKj4oZG9tT2JqZWN0KSk7CiB9CiAKIHZvaWQgRE9N
RGF0YVN0b3JlOjp3ZWFrU1ZHT2JqZWN0V2l0aENvbnRleHRDYWxsYmFjayh2ODo6UGVyc2lzdGVu
dDx2ODo6VmFsdWU+IHY4T2JqZWN0LCB2b2lkKiBkb21PYmplY3QpCiB7CiAgICAgdjg6OkhhbmRs
ZVNjb3BlIHNjb3BlOwogICAgIEFTU0VSVCh2OE9iamVjdC0+SXNPYmplY3QoKSk7Ci0gICAgRE9N
RGF0YTo6aGFuZGxlV2Vha09iamVjdChET01EYXRhU3RvcmU6OkRPTVNWR09iamVjdFdpdGhDb250
ZXh0TWFwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4T2JqZWN0KSwgZG9tT2JqZWN0
KTsKKyAgICBET01EYXRhOjpoYW5kbGVXZWFrT2JqZWN0KERPTURhdGFTdG9yZTo6RE9NU1ZHT2Jq
ZWN0V2l0aENvbnRleHRNYXAsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHY4T2Jq
ZWN0KSwgZG9tT2JqZWN0KTsKIH0KIAogI2VuZGlmICAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmgKaW5kZXggYjEyNzA4OS4uZTAyNzA1OCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RPTURhdGFTdG9yZS5oCkBAIC04Miw4ICs4Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgICAgICBmb3JnZXREZWxheWVkT2JqZWN0KG1fZG9tRGF0YSwgb2JqZWN0KTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgdm9pZCBmb3JnZXRPbmx5KEtleVR5cGUqIG9iamVj
dCkgeyBET01XcmFwcGVyTWFwPEtleVR5cGU+Ojpmb3JnZXQob2JqZWN0KTsgfQotCiAgICAgICAg
IHByaXZhdGU6CiAgICAgICAgICAgICBET01EYXRhKiBtX2RvbURhdGE7CiAgICAgICAgIH07CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCBiL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01NYXAuY3BwCmluZGV4IGFjZDg4ZWMuLjgzZTI2ODQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01NYXAuY3BwCkBAIC0xNDUsOSArMTQ1LDcgQEAgdm9pZCB2aXNpdERPTU5vZGVzSW5D
dXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8Tm9kZT46OlZpc2l0b3IqIHZpc2l0b3IpCiAgICAg
ICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50
VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBIYXNoTWFwPE5vZGUq
LCB2ODo6T2JqZWN0Kj4mIG1hcCA9IHN0b3JlLT5kb21Ob2RlTWFwKCkuaW1wbCgpOwotICAgICAg
ICBmb3IgKEhhc2hNYXA8Tm9kZSosIHY4OjpPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtYXAuYmVn
aW4oKTsgaXQgIT0gbWFwLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgdmlzaXRvci0+dmlzaXRE
T01XcmFwcGVyKGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4oaXQtPnNlY29u
ZCkpOworICAgICAgICBzdG9yZS0+ZG9tTm9kZU1hcCgpLnZpc2l0KHZpc2l0b3IpOwogICAgIH0K
IH0KIApAQCAtMTYyLDkgKzE2MCw3IEBAIHZvaWQgdmlzaXRET01PYmplY3RzSW5DdXJyZW50VGhy
ZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3IpCiAgICAgICAgIGlmICgh
c3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBIYXNoTWFwPHZvaWQqLCB2ODo6T2Jq
ZWN0Kj4gJiBtYXAgPSBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkuaW1wbCgpOwotICAgICAgICBmb3Ig
KEhhc2hNYXA8dm9pZCosIHY4OjpPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsg
aXQgIT0gbWFwLmVuZCgpOyArK2l0KQotICAgICAgICAgICAgdmlzaXRvci0+dmlzaXRET01XcmFw
cGVyKGl0LT5maXJzdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4oaXQtPnNlY29uZCkpOwor
ICAgICAgICBzdG9yZS0+ZG9tT2JqZWN0TWFwKCkudmlzaXQodmlzaXRvcik7CiAgICAgfQogfQog
CkBAIC0xNzksOSArMTc1LDcgQEAgdm9pZCB2aXNpdEFjdGl2ZURPTU9iamVjdHNJbkN1cnJlbnRU
aHJlYWQoRE9NV3JhcHBlck1hcDx2b2lkPjo6VmlzaXRvciogdmlzaXRvcikKICAgICAgICAgaWYg
KCFzdG9yZS0+ZG9tRGF0YSgpLT5vd25pbmdUaHJlYWQoKSA9PSBXVEY6OmN1cnJlbnRUaHJlYWQo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEhhc2hNYXA8dm9pZCosIHY4OjpP
YmplY3QqPiYgbWFwID0gc3RvcmUtPmFjdGl2ZURvbU9iamVjdE1hcCgpLmltcGwoKTsKLSAgICAg
ICAgZm9yIChIYXNoTWFwPHZvaWQqLCB2ODo6T2JqZWN0Kj46Oml0ZXJhdG9yIGl0ID0gbWFwLmJl
Z2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgIHZpc2l0b3ItPnZpc2l0
RE9NV3JhcHBlcihpdC0+Zmlyc3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KGl0LT5zZWNv
bmQpKTsKKyAgICAgICAgc3RvcmUtPmFjdGl2ZURvbU9iamVjdE1hcCgpLnZpc2l0KHZpc2l0b3Ip
OwogICAgIH0KIH0KIApAQCAtMTk4LDkgKzE5Miw3IEBAIHZvaWQgdmlzaXRET01TVkdFbGVtZW50
SW5zdGFuY2VzSW5DdXJyZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8U1ZHRWxlbWVudEluc3RhbmNl
CiAgICAgICAgIGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpj
dXJyZW50VGhyZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBIYXNoTWFw
PFNWR0VsZW1lbnRJbnN0YW5jZSosIHY4OjpPYmplY3QqPiAmIG1hcCA9IHN0b3JlLT5kb21TdmdF
bGVtZW50SW5zdGFuY2VNYXAoKS5pbXBsKCk7Ci0gICAgICAgIGZvciAoSGFzaE1hcDxTVkdFbGVt
ZW50SW5zdGFuY2UqLCB2ODo6T2JqZWN0Kj46Oml0ZXJhdG9yIGl0ID0gbWFwLmJlZ2luKCk7IGl0
ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgIHZpc2l0b3ItPnZpc2l0RE9NV3JhcHBl
cihpdC0+Zmlyc3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KGl0LT5zZWNvbmQpKTsKKyAg
ICAgICAgc3RvcmUtPmRvbVN2Z0VsZW1lbnRJbnN0YW5jZU1hcCgpLnZpc2l0KHZpc2l0b3IpOwog
ICAgIH0KIH0KIApAQCAtMjE1LDkgKzIwNyw3IEBAIHZvaWQgdmlzaXRTVkdPYmplY3RzSW5DdXJy
ZW50VGhyZWFkKERPTVdyYXBwZXJNYXA8dm9pZD46OlZpc2l0b3IqIHZpc2l0b3IpCiAgICAgICAg
IGlmICghc3RvcmUtPmRvbURhdGEoKS0+b3duaW5nVGhyZWFkKCkgPT0gV1RGOjpjdXJyZW50VGhy
ZWFkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBIYXNoTWFwPHZvaWQqLCB2
ODo6T2JqZWN0Kj4mIG1hcCA9IHN0b3JlLT5kb21TdmdPYmplY3RXaXRoQ29udGV4dE1hcCgpLmlt
cGwoKTsKLSAgICAgICAgZm9yIChIYXNoTWFwPHZvaWQqLCB2ODo6T2JqZWN0Kj46Oml0ZXJhdG9y
IGl0ID0gbWFwLmJlZ2luKCk7IGl0ICE9IG1hcC5lbmQoKTsgKytpdCkKLSAgICAgICAgICAgIHZp
c2l0b3ItPnZpc2l0RE9NV3JhcHBlcihpdC0+Zmlyc3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+KGl0LT5zZWNvbmQpKTsKKyAgICAgICAgc3RvcmUtPmRvbVN2Z09iamVjdFdpdGhDb250ZXh0
TWFwKCkudmlzaXQodmlzaXRvcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NTWFwLmggYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKaW5k
ZXggMTI2MDVhNi4uM2ExOTdmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TU1hcC5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaApAQCAtODEsOSArODEs
MzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaGFuZGxlLkNsZWFyKCk7CiAg
ICAgICAgIH0KIAorICAgICAgICBib29sIHJlbW92ZUlmUHJlc2VudChLZXlUeXBlKiBrZXksIHY4
OjpQZXJzaXN0ZW50PHY4OjpEYXRhPiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgdHlw
ZW5hbWUgSGFzaE1hcDxLZXlUeXBlKiwgVmFsdWVUeXBlKj46Oml0ZXJhdG9yIGl0ID0gbV9tYXAu
ZmluZChrZXkpOworICAgICAgICAgICAgaWYgKGl0ID09IG1fbWFwLmVuZCgpIHx8IGl0LT5zZWNv
bmQgIT0gKnZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAg
ICAgbV9tYXAucmVtb3ZlKGl0KTsKKyAgICAgICAgICAgIHZhbHVlLkRpc3Bvc2UoKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBjbGVhcigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fbWFwLmNsZWFyKCk7CisgICAgICAgIH0KKwogICAgICAg
ICBib29sIGNvbnRhaW5zKEtleVR5cGUqIG9iaikgeyByZXR1cm4gbV9tYXAuY29udGFpbnMob2Jq
KTsgfQogCi0gICAgICAgIEhhc2hNYXA8S2V5VHlwZSosIFZhbHVlVHlwZSo+JiBpbXBsKCkgeyBy
ZXR1cm4gbV9tYXA7IH0KKyAgICAgICAgY2xhc3MgVmlzaXRvciB7CisgICAgICAgIHB1YmxpYzoK
KyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdERPTVdyYXBwZXIoS2V5VHlwZSosIHY4OjpQ
ZXJzaXN0ZW50PFZhbHVlVHlwZT4pID0gMDsKKyAgICAgICAgfTsKKworICAgICAgICB2aXJ0dWFs
IHZvaWQgdmlzaXQoVmlzaXRvciogdmlzaXRvcikKKyAgICAgICAgeworICAgICAgICAgICAgdHlw
ZW5hbWUgSGFzaE1hcDxLZXlUeXBlKiwgVmFsdWVUeXBlKj46Oml0ZXJhdG9yIGl0ID0gbV9tYXAu
YmVnaW4oKTsKKyAgICAgICAgICAgIGZvciAoOyBpdCAhPSBtX21hcC5lbmQoKTsgKytpdCkKKyAg
ICAgICAgICAgICAgICB2aXNpdG9yLT52aXNpdERPTVdyYXBwZXIoaXQtPmZpcnN0LCB2ODo6UGVy
c2lzdGVudDxWYWx1ZVR5cGU+KGl0LT5zZWNvbmQpKTsKKyAgICAgICAgfQogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBIYXNoTWFwPEtleVR5cGUqLCBWYWx1ZVR5cGUqPiBtX21hcDsKQEAgLTkz
LDExICsxMTksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIEtl
eVR5cGU+IGNsYXNzIERPTVdyYXBwZXJNYXAgOiBwdWJsaWMgV2Vha1JlZmVyZW5jZU1hcDxLZXlU
eXBlLCB2ODo6T2JqZWN0PiB7CiAgICAgcHVibGljOgogICAgICAgICBET01XcmFwcGVyTWFwKHY4
OjpXZWFrUmVmZXJlbmNlQ2FsbGJhY2sgY2FsbGJhY2spIDogV2Vha1JlZmVyZW5jZU1hcDxLZXlU
eXBlLCB2ODo6T2JqZWN0PihjYWxsYmFjaykgeyB9Ci0KLSAgICAgICAgY2xhc3MgVmlzaXRvciB7
Ci0gICAgICAgIHB1YmxpYzoKLSAgICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRET01XcmFwcGVy
KEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gb2JqZWN0KSA9IDA7Ci0g
ICAgICAgIH07CiAgICAgfTsKIAogICAgIC8vIEFuIG9wYXF1ZSBjbGFzcyB0aGF0IHJlcHJlc2Vu
dHMgYSBzZXQgb2YgRE9NIHdyYXBwZXJzLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>