<?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>58482</bug_id>
          
          <creation_ts>2011-04-13 14:39:14 -0700</creation_ts>
          <short_desc>Switched DOM wrappers to use HashMap of Weak&lt;T&gt; instead of WeakGCMap&lt;T&gt;</short_desc>
          <delta_ts>2011-04-13 17:48:13 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>aroben</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>385254</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-13 14:39:14 -0700</bug_when>
    <thetext>Switched DOM wrappers to use HashMap of Weak&lt;T&gt; instead of WeakGCMap&lt;T&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385260</commentid>
    <comment_count>1</comment_count>
      <attachid>89465</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-13 14:47:04 -0700</bug_when>
    <thetext>Created attachment 89465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385289</commentid>
    <comment_count>2</comment_count>
      <attachid>89465</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 15:12:23 -0700</bug_when>
    <thetext>Comment on attachment 89465
Patch

r=me assuming perf doesn&apos;t get impacted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385292</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-04-13 15:15:33 -0700</bug_when>
    <thetext>Committed r83773: &lt;http://trac.webkit.org/changeset/83773&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385401</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-13 17:48:00 -0700</bug_when>
    <thetext>I think this change broke Windows test bots:
http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/11594
http://build.webkit.org/builders/Windows%207%20Release%20%28Tests%29/builds/11595

http://build.webkit.org/builders/Windows%20XP%20Debug%20%28Tests%29/builds/27558
http://build.webkit.org/builders/Windows%20XP%20Debug%20%28Tests%29/builds/27559</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89465</attachid>
            <date>2011-04-13 14:47:04 -0700</date>
            <delta_ts>2011-04-13 15:12:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58482-20110413144702.patch</filename>
            <type>text/plain</type>
            <size>21432</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODM3NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAK
KzIwMTEtMDQtMTMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2hlZCBET00gd3Jh
cHBlcnMgdG8gdXNlIEhhc2hNYXAgb2YgV2VhazxUPiBpbnN0ZWFkIG9mIFdlYWtHQ01hcDxUPgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODIKKyAg
ICAgICAgCisgICAgICAgIFRoaXMgd2lsbCBhbGxvdyB3cmFwcGVycyB0byBtYWtlIGluZGl2aWR1
YWwgZGVjaXNpb25zIGFib3V0IHRoZWlyIGxpZmV0aW1lcy4KKworICAgICAgICAqIGhlYXAvSGFu
ZGxlSGVhcC5oOgorICAgICAgICAoSlNDOjpIYW5kbGVIZWFwOjpjb3B5V2Vhayk6IE5ldyBmdW5j
dGlvbiBmb3IgY29weWluZyBhIHdlYWsgaGFuZGxlLgorICAgICAgICBJdCdzIHdhc24ndCBwcmV2
aW91c2x5IHBvc3NpYmxlIHRvIHBlcmZvcm0gdGhpcyBvcGVyYXRpb24gdXNpbmcgSGFuZGxlSGVh
cAorICAgICAgICBBUEkgYmVjYXVzZSB0aGUgSGFuZGxlSGVhcCBkb2Vzbid0IGV4cG9zZSBpdHMg
dW5kZXJseWluZyBOb2RlIHN0cnVjdHVyZS4KKworICAgICAgICAqIGhlYXAvTG9jYWwuaDoKKyAg
ICAgICAgKEpTQzo6OjpzZXQpOgorICAgICAgICAqIGhlYXAvU3Ryb25nLmg6CisgICAgICAgIChK
U0M6OlN0cm9uZzo6c2V0KTogQWRkZWQgQVNTRVJUcyB0byB2ZXJpZnkgdGhhdCBkZWFkIG9iamVj
dHMgYXJlIG5vdAorICAgICAgICByZXN1cnJlY3RlZCBieSBwbGFjZW1lbnQgaW50byBoYW5kbGVz
LgorCisgICAgICAgIChKU0M6OnN3YXApOiBBZGRlZCBhIHN3YXAgaGVscGVyLCBzbyB1c2Ugb2Yg
U3Ryb25nPFQ+IGluc2lkZSBhIGhhc2ggdGFibGUKKyAgICAgICAgaXMgZWZmaWNpZW50LgorCisg
ICAgICAgICogaGVhcC9XZWFrLmg6CisgICAgICAgIChKU0M6OldlYWs6OldlYWspOiBGaXhlZCBh
IGJ1ZyB3aGVyZSBjb3B5aW5nIGEgd2VhayBwb2ludGVyIHdvdWxkIG5vdAorICAgICAgICBjb3B5
IGl0cyB3ZWFrIGNhbGxiYWNrIGFuZCBjb250ZXh0LgorCisgICAgICAgIChKU0M6OldlYWs6Om9w
ZXJhdG9yPSk6IEFkZGVkIGFuIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHNpbmNlIHRoZSBkZWZhdWx0
CisgICAgICAgIEMrKyBhc3NpZ25tZW50IG9wZXJhdG9yIGRpZCB0aGUgd3JvbmcgdGhpbmcuCisK
KyAgICAgICAgKEpTQzo6V2Vhazo6c2V0KTogQWRkZWQgQVNTRVJUcyB0byB2ZXJpZnkgdGhhdCBk
ZWFkIG9iamVjdHMgYXJlIG5vdAorICAgICAgICByZXN1cnJlY3RlZCBieSBwbGFjZW1lbnQgaW50
byBoYW5kbGVzLgorCisgICAgICAgIChKU0M6OnN3YXApOiBBZGRlZCBhIHN3YXAgaGVscGVyLCBz
byB1c2Ugb2YgU3Ryb25nPFQ+IGluc2lkZSBhIGhhc2ggdGFibGUKKyAgICAgICAgaXMgZWZmaWNp
ZW50LCBhbmQgY2FuIGJlIGRvbmUgd2l0aG91dCBjb3B5aW5nLCB3aGljaCBpcyBpbGxlZ2FsIGR1
cmluZworICAgICAgICB0aGUgaGFuZGxlIGZpbmFsaXphdGlvbiBwaGFzZS4KKwogMjAxMS0wNC0x
MyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEdhdmluIEJhcnJhY2xvdWdoLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFu
ZGxlSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZUhlYXAuaAkocmV2aXNpb24gODM2NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
YW5kbGVIZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGVhbGxvY2F0ZShIYW5kbGVTbG90KTsKIAogICAgIHZvaWQgbWFrZVdlYWsoSGFuZGxl
U2xvdCwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAgICBIYW5k
bGVTbG90IGNvcHlXZWFrKEhhbmRsZVNsb3QpOwogCiAgICAgdm9pZCBtYXJrU3Ryb25nSGFuZGxl
cyhIZWFwUm9vdE1hcmtlciYpOwogICAgIHZvaWQgbWFya1dlYWtIYW5kbGVzKEhlYXBSb290TWFy
a2VyJik7CkBAIC0xNjUsNiArMTY2LDE1IEBAIGlubGluZSB2b2lkIEhhbmRsZUhlYXA6OmRlYWxs
b2NhdGUoSGFuZGwKICAgICBtX2ZyZWVMaXN0LnB1c2gobm9kZSk7CiB9CiAKK2lubGluZSBIYW5k
bGVTbG90IEhhbmRsZUhlYXA6OmNvcHlXZWFrKEhhbmRsZVNsb3Qgb3RoZXIpCit7CisgICAgTm9k
ZSogbm9kZSA9IHRvTm9kZShhbGxvY2F0ZSgpKTsKKyAgICBub2RlLT5tYWtlV2Vhayh0b05vZGUo
b3RoZXIpLT53ZWFrT3duZXIoKSwgdG9Ob2RlKG90aGVyKS0+d2Vha093bmVyQ29udGV4dCgpKTsK
KyAgICB3cml0ZUJhcnJpZXIobm9kZS0+c2xvdCgpLCAqb3RoZXIpOworICAgICpub2RlLT5zbG90
KCkgPSAqb3RoZXI7CisgICAgcmV0dXJuIHRvSGFuZGxlKG5vZGUpOworfQorCiBpbmxpbmUgdm9p
ZCBIYW5kbGVIZWFwOjptYWtlV2VhayhIYW5kbGVTbG90IGhhbmRsZSwgV2Vha0hhbmRsZU93bmVy
KiB3ZWFrT3duZXIsIHZvaWQqIGNvbnRleHQpCiB7CiAgICAgTm9kZSogbm9kZSA9IHRvTm9kZSho
YW5kbGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTG9jYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Mb2NhbC5oCShyZXZpc2lvbiA4MzY2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0xvY2FsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkxLDEwICs5MSwxMSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIExvY2FsPFQ+
JiBMCiAgICAgcmV0dXJuICp0aGlzOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5l
IHZvaWQgTG9jYWw8VD46OnNldChFeHRlcm5hbFR5cGUgdmFsdWUpCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gaW5saW5lIHZvaWQgTG9jYWw8VD46OnNldChFeHRlcm5hbFR5cGUgZXh0ZXJuYWxUeXBl
KQogewogICAgIEFTU0VSVChzbG90KCkpOwotICAgICpzbG90KCkgPSB2YWx1ZTsKKyAgICBBU1NF
UlQoIUhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFsdWUoZXh0ZXJuYWxUeXBlKSB8fCAhSGFuZGxlVHlw
ZXM8VD46OnRvSlNWYWx1ZShleHRlcm5hbFR5cGUpLmlzQ2VsbCgpIHx8IEhlYXA6OmlzTWFya2Vk
KEhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFsdWUoZXh0ZXJuYWxUeXBlKS5hc0NlbGwoKSkpOworICAg
ICpzbG90KCkgPSBleHRlcm5hbFR5cGU7CiB9CiAKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvU3Ryb25nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU3Ryb25nLmgJKHJldmlzaW9uIDgzNjY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvU3Ryb25nLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNywxMSArMTM3LDE3IEBAIHByaXZhdGU6
CiAgICAgewogICAgICAgICBBU1NFUlQoc2xvdCgpKTsKICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEhhbmRsZVR5cGVzPFQ+Ojp0b0pTVmFsdWUoZXh0ZXJuYWxUeXBlKTsKKyAgICAgICAgQVNTRVJU
KCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkgfHwgSGVhcDo6aXNNYXJrZWQodmFsdWUuYXNDZWxs
KCkpKTsKICAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KCkpLT53cml0ZUJhcnJpZXIo
c2xvdCgpLCB2YWx1ZSk7CiAgICAgICAgICpzbG90KCkgPSB2YWx1ZTsKICAgICB9CiB9OwogCit0
ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKFN0cm9uZzxUPiYgYSwgU3Ryb25nPFQ+
JiBiKQoreworICAgIGEuc3dhcChiKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKIG5hbWVz
cGFjZSBXVEYgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vhay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWsuaAkocmV2aXNpb24gODM2
NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU4LDggKzU4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKCFvdGhlci5zbG90
KCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNldFNsb3QoSGFuZGxlSGVhcDo6aGVh
cEZvcihvdGhlci5zbG90KCkpLT5hbGxvY2F0ZSgpKTsKLSAgICAgICAgc2V0KG90aGVyLmdldCgp
KTsKKyAgICAgICAgc2V0U2xvdChIYW5kbGVIZWFwOjpoZWFwRm9yKG90aGVyLnNsb3QoKSktPmNv
cHlXZWFrKG90aGVyLnNsb3QoKSkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBV
PiBXZWFrKGNvbnN0IFdlYWs8VT4mIG90aGVyKQpAQCAtNjcsOCArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgewogICAgICAgICBpZiAoIW90aGVyLnNsb3QoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgc2V0U2xvdChIYW5kbGVIZWFwOjpoZWFwRm9yKG90aGVyLnNsb3QoKSktPmFsbG9jYXRl
KCkpOwotICAgICAgICBzZXQob3RoZXIuZ2V0KCkpOworICAgICAgICBzZXRTbG90KEhhbmRsZUhl
YXA6OmhlYXBGb3Iob3RoZXIuc2xvdCgpKS0+Y29weVdlYWsob3RoZXIuc2xvdCgpKSk7CiAgICAg
fQogICAgIAogICAgIGVudW0gSGFzaFRhYmxlRGVsZXRlZFZhbHVlVGFnIHsgSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlIH07CkBAIC0xMDgsNiArMTA2LDIyIEBAIHB1YmxpYzoKICAgICAgICAgc2V0KHZh
bHVlKTsKICAgICB9CiAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gV2VhayYgb3BlcmF0b3I9
KGNvbnN0IFdlYWs8VT4mIG90aGVyKQorICAgIHsKKyAgICAgICAgY2xlYXIoKTsKKyAgICAgICAg
aWYgKG90aGVyLnNsb3QoKSkKKyAgICAgICAgICAgIHNldFNsb3QoSGFuZGxlSGVhcDo6aGVhcEZv
cihvdGhlci5zbG90KCkpLT5jb3B5V2VhayhvdGhlci5zbG90KCkpKTsKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIFdlYWsmIG9wZXJhdG9yPShjb25zdCBXZWFrJiBvdGhlcikK
KyAgICB7CisgICAgICAgIGNsZWFyKCk7CisgICAgICAgIGlmIChvdGhlci5zbG90KCkpCisgICAg
ICAgICAgICBzZXRTbG90KEhhbmRsZUhlYXA6OmhlYXBGb3Iob3RoZXIuc2xvdCgpKS0+Y29weVdl
YWsob3RoZXIuc2xvdCgpKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKIHByaXZh
dGU6CiAgICAgc3RhdGljIEhhbmRsZVNsb3QgaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgeyByZXR1
cm4gcmVpbnRlcnByZXRfY2FzdDxIYW5kbGVTbG90PigtMSk7IH0KIApAQCAtMTE1LDExICsxMjks
MTcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIEFTU0VSVChzbG90KCkpOwogICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gSGFuZGxlVHlwZXM8VD46OnRvSlNWYWx1ZShleHRlcm5hbFR5cGUpOwor
ICAgICAgICBBU1NFUlQoIXZhbHVlIHx8ICF2YWx1ZS5pc0NlbGwoKSB8fCBIZWFwOjppc01hcmtl
ZCh2YWx1ZS5hc0NlbGwoKSkpOwogICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QoKSkt
PndyaXRlQmFycmllcihzbG90KCksIHZhbHVlKTsKICAgICAgICAgKnNsb3QoKSA9IHZhbHVlOwog
ICAgIH0KIH07CiAKK3RlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIHN3YXAoV2VhazxUPiYg
YSwgV2VhazxUPiYgYikKK3sKKyAgICBhLnN3YXAoYik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpT
QwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNzcwKQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAK
KzIwMTEtMDQtMTMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2hlZCBET00gd3Jh
cHBlcnMgdG8gdXNlIEhhc2hNYXAgb2YgV2VhazxUPiBpbnN0ZWFkIG9mIFdlYWtHQ01hcDxUPgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0ODIKKwor
ICAgICAgICBUaGlzIHdpbGwgYWxsb3cgd3JhcHBlcnMgdG8gbWFrZSBpbmRpdmlkdWFsIGRlY2lz
aW9ucyBhYm91dCB0aGVpciBsaWZldGltZXMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01X
cmFwcGVyV29ybGQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpET01X
cmFwcGVyV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6SlNOb2RlSGFuZGxlT3duZXI6OmlzUmVh
Y2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUhhbmRsZU93
bmVyOjpmaW5hbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01PYmplY3RIYW5kbGVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NT2JqZWN0
SGFuZGxlT3duZXI6OmZpbmFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZUhhbmRsZU93bmVyOjpKU05vZGVIYW5k
bGVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpET01PYmplY3RIYW5kbGVPd25lcjo6RE9NT2Jq
ZWN0SGFuZGxlT3duZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlcldvcmxkOjpqc05v
ZGVIYW5kbGVPd25lcik6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVyV29ybGQ6OmRvbU9i
amVjdEhhbmRsZU93bmVyKTogQWRkZWQgaGFuZGxlIG93bmVycworICAgICAgICBmb3IgSlNOb2Rl
IGFuZCBET01PYmplY3QsIG91ciB0d28gaGFzaCB0YWJsZSB2YWx1ZXMuIEZvciBub3csIHRoZSBv
d25lcnMKKyAgICAgICAganVzdCB0YWtlIGNhcmUgdG8gcmVtb3ZlIHRoZWlyIGhhbmRsZXMgZnJv
bSB0aGVpciByZXNwZWN0aXZlIGhhc2ggdGFibGVzLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdl
ZCB0aGUgaGFzaCB0YWJsZSB0eXBlIHRvIGJlIGEgc3RhbmRhcmQgSGFzaE1hcCBvZiB3ZWFrIHBv
aW50ZXJzLAorICAgICAgICBpbnN0ZWFkIG9mIGEgV2Vha0dDTWFwLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZERP
TU9iamVjdFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01PYmplY3RXcmFwcGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OmNhY2hlRE9NTm9kZVdyYXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6aXNPYnNlcnZhYmxlVGhyb3VnaERPTSk6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9N
Tm9kZXNGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjp0YWtlV3JhcHBlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6dXBkYXRlRE9NTm9kZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Om1hcmtET01PYmplY3RXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om1hcmtET01Ob2RlV3Jh
cHBlcik6IFVwZGF0ZWQgd3JhcHBlciBoYXNoIHRhYmxlIGFjY2VzcyB0bworICAgICAgICBhY2Nv
bW9kYXRlIGl0cyBuZXcgZGF0YSB0eXBlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNOb2Rl
Q3VzdG9tLmg6CisgICAgICAgIChXZWJDb3JlOjpnZXRDYWNoZWRET01Ob2RlV3JhcHBlcik6IERp
dHRvLgorCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6IFVwZGF0ZWQgZGVjbGFyYXRpb24gdG8g
bWF0Y2ggdGhlIGFib3ZlLgorCiAyMDExLTA0LTEzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAJKHJldmlzaW9u
IDgzNjY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsMTAgQEAKICNpbmNsdWRlICJET01XcmFwcGVy
V29ybGQuaCIKIAogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNOb2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVu
dERhdGEuaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtMzIsNiArMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBET01XcmFwcGVyV29ybGQ6
OkRPTVdyYXBwZXJXb3JsZChKU0M6OkpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgYm9vbCBpc05v
cm1hbCkKICAgICA6IG1fZ2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAgICwgbV9pc05vcm1hbChp
c05vcm1hbCkKKyAgICAsIG1fanNOb2RlSGFuZGxlT3duZXIodGhpcykKKyAgICAsIG1fZG9tT2Jq
ZWN0SGFuZGxlT3duZXIodGhpcykKIHsKICAgICBKU0dsb2JhbERhdGE6OkNsaWVudERhdGEqIGNs
aWVudERhdGEgPSBtX2dsb2JhbERhdGEtPmNsaWVudERhdGE7CiAgICAgQVNTRVJUKGNsaWVudERh
dGEpOwpAQCAtNzksNCArODMsMjkgQEAgRE9NV3JhcHBlcldvcmxkKiBtYWluVGhyZWFkTm9ybWFs
V29ybGQoKQogICAgIHJldHVybiBjYWNoZWROb3JtYWxXb3JsZDsKIH0KIAorYm9vbCBKU05vZGVI
YW5kbGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiwgdm9pZCosIEpTQzo6TWFya1N0YWNrJikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgSlNOb2RlSGFuZGxlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKikKK3sKKyAgICBKU05vZGUqIGpzTm9kZSA9IHN0YXRpY19jYXN0
PEpTTm9kZSo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgTm9kZSogbm9kZSA9IGpzTm9k
ZS0+aW1wbCgpOworICAgIEFTU0VSVChub2RlLT5kb2N1bWVudCgpKTsKKyAgICBBU1NFUlQobm9k
ZS0+ZG9jdW1lbnQoKS0+Z2V0V3JhcHBlckNhY2hlKG1fd29ybGQpLT5maW5kKG5vZGUpLT5zZWNv
bmQgPT0ganNOb2RlKTsKKyAgICBub2RlLT5kb2N1bWVudCgpLT5nZXRXcmFwcGVyQ2FjaGUobV93
b3JsZCktPnJlbW92ZShub2RlKTsKK30KKworYm9vbCBET01PYmplY3RIYW5kbGVPd25lcjo6aXNS
ZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiwgdm9pZCos
IEpTQzo6TWFya1N0YWNrJikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgRE9NT2Jq
ZWN0SGFuZGxlT3duZXI6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKikKK3sKKyAgICBET01PYmplY3QqIGRvbU9iamVjdCA9IHN0YXRpY19jYXN0PERPTU9i
amVjdCo+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgbV93b3JsZC0+bV93cmFwcGVycy5y
ZW1vdmUoZG9tT2JqZWN0KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHJldmlzaW9uIDgz
NjY5KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDggKzMyLDM4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgU2NyaXB0Q29udHJvbGxlcjsKIAotdHlwZWRlZiBKU0M6OldlYWtHQ01hcDx2b2lkKiwgRE9N
T2JqZWN0PiBET01PYmplY3RXcmFwcGVyTWFwOwotdHlwZWRlZiBKU0M6OldlYWtHQ01hcDxTdHJp
bmdJbXBsKiwgSlNDOjpKU1N0cmluZz4gSlNTdHJpbmdDYWNoZTsgCit0eXBlZGVmIEhhc2hNYXA8
dm9pZCosIEpTQzo6V2VhazxET01PYmplY3Q+ID4gRE9NT2JqZWN0V3JhcHBlck1hcDsKK3R5cGVk
ZWYgSlNDOjpXZWFrR0NNYXA8U3RyaW5nSW1wbCosIEpTQzo6SlNTdHJpbmc+IEpTU3RyaW5nQ2Fj
aGU7CisKK2NsYXNzIEpTTm9kZUhhbmRsZU93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93
bmVyIHsKK3B1YmxpYzoKKyAgICBKU05vZGVIYW5kbGVPd25lcihET01XcmFwcGVyV29ybGQqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiwgdm9pZCosIEpTQzo6TWFya1N0YWNrJik7CisgICAgdmlydHVhbCB2b2lk
IGZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqKTsKKworcHJpdmF0ZToK
KyAgICBET01XcmFwcGVyV29ybGQqIG1fd29ybGQ7Cit9OworCitpbmxpbmUgSlNOb2RlSGFuZGxl
T3duZXI6OkpTTm9kZUhhbmRsZU93bmVyKERPTVdyYXBwZXJXb3JsZCogd29ybGQpCisgICAgOiBt
X3dvcmxkKHdvcmxkKQoreworfQorCitjbGFzcyBET01PYmplY3RIYW5kbGVPd25lciA6IHB1Ymxp
YyBKU0M6OldlYWtIYW5kbGVPd25lciB7CitwdWJsaWM6CisgICAgRE9NT2JqZWN0SGFuZGxlT3du
ZXIoRE9NV3JhcHBlcldvcmxkKik7CisgICAgdmlydHVhbCBib29sIGlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4sIHZvaWQqLCBKU0M6Ok1hcmtTdGFj
ayYpOworICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
LCB2b2lkKik7CisKK3ByaXZhdGU6CisgICAgRE9NV3JhcHBlcldvcmxkKiBtX3dvcmxkOworfTsK
KworaW5saW5lIERPTU9iamVjdEhhbmRsZU93bmVyOjpET01PYmplY3RIYW5kbGVPd25lcihET01X
cmFwcGVyV29ybGQqIHdvcmxkKQorICAgIDogbV93b3JsZCh3b3JsZCkKK3sKK30KIAogY2xhc3Mg
RE9NV3JhcHBlcldvcmxkIDogcHVibGljIFJlZkNvdW50ZWQ8RE9NV3JhcHBlcldvcmxkPiB7CiBw
dWJsaWM6CkBAIC01OSw2ICs4OSw4IEBAIHB1YmxpYzoKICAgICBib29sIGlzTm9ybWFsKCkgY29u
c3QgeyByZXR1cm4gbV9pc05vcm1hbDsgfQogCiAgICAgSlNDOjpKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbERhdGE7IH0KKyAgICBKU05vZGVIYW5kbGVP
d25lcioganNOb2RlSGFuZGxlT3duZXIoKSB7IHJldHVybiAmbV9qc05vZGVIYW5kbGVPd25lcjsg
fQorICAgIERPTU9iamVjdEhhbmRsZU93bmVyKiBkb21PYmplY3RIYW5kbGVPd25lcigpIHsgcmV0
dXJuICZtX2RvbU9iamVjdEhhbmRsZU93bmVyOyB9CiAKIHByb3RlY3RlZDoKICAgICBET01XcmFw
cGVyV29ybGQoSlNDOjpKU0dsb2JhbERhdGEqLCBib29sIGlzTm9ybWFsKTsKQEAgLTY4LDYgKzEw
MCw4IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxEb2N1bWVudCo+IG1fZG9jdW1lbnRzV2l0aFdy
YXBwZXJDYWNoZXM7CiAgICAgSGFzaFNldDxTY3JpcHRDb250cm9sbGVyKj4gbV9zY3JpcHRDb250
cm9sbGVyc1dpdGhXaW5kb3dTaGVsbHM7CiAgICAgYm9vbCBtX2lzTm9ybWFsOworICAgIEpTTm9k
ZUhhbmRsZU93bmVyIG1fanNOb2RlSGFuZGxlT3duZXI7CisgICAgRE9NT2JqZWN0SGFuZGxlT3du
ZXIgbV9kb21PYmplY3RIYW5kbGVPd25lcjsKIH07CiAKIERPTVdyYXBwZXJXb3JsZCogbm9ybWFs
V29ybGQoSlNDOjpKU0dsb2JhbERhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gODM2NjkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTIg
KzE1OCwxMyBAQCBib29sIGhhc0NhY2hlZERPTU9iamVjdFdyYXBwZXIoSlNHbG9iYWxECiAKIERP
TU9iamVjdCogZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywg
dm9pZCogb2JqZWN0SGFuZGxlKSAKIHsKLSAgICByZXR1cm4gZG9tT2JqZWN0V3JhcHBlck1hcEZv
cihleGVjKS5nZXQob2JqZWN0SGFuZGxlKTsKKyAgICByZXR1cm4gZG9tT2JqZWN0V3JhcHBlck1h
cEZvcihleGVjKS5nZXQob2JqZWN0SGFuZGxlKS5nZXQoKTsKIH0KIAogdm9pZCBjYWNoZURPTU9i
amVjdFdyYXBwZXIoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIG9iamVjdEhhbmRsZSwgRE9N
T2JqZWN0KiB3cmFwcGVyKSAKIHsKLSAgICBkb21PYmplY3RXcmFwcGVyTWFwRm9yKGV4ZWMpLnNl
dChleGVjLT5nbG9iYWxEYXRhKCksIG9iamVjdEhhbmRsZSwgd3JhcHBlcik7CisgICAgRE9NV3Jh
cHBlcldvcmxkKiB3b3JsZCA9IGN1cnJlbnRXb3JsZChleGVjKTsKKyAgICB3b3JsZC0+bV93cmFw
cGVycy5zZXQob2JqZWN0SGFuZGxlLCBXZWFrPERPTU9iamVjdD4oKndvcmxkLT5nbG9iYWxEYXRh
KCksIHdyYXBwZXIsIHdvcmxkLT5kb21PYmplY3RIYW5kbGVPd25lcigpKSk7CiB9CiAKIGJvb2wg
aGFzQ2FjaGVkRE9NTm9kZVdyYXBwZXJVbmNoZWNrZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2Rl
KiBub2RlKQpAQCAtMTgxLDEzICsxODIsMTYgQEAgYm9vbCBoYXNDYWNoZWRET01Ob2RlV3JhcHBl
clVuY2hlY2tlZChEbwogCiB2b2lkIGNhY2hlRE9NTm9kZVdyYXBwZXIoSlNDOjpFeGVjU3RhdGUq
IGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSwgSlNOb2RlKiB3cmFwcGVyKQog
eworICAgIEFTU0VSVCh3cmFwcGVyKTsKICAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICBkb21P
YmplY3RXcmFwcGVyTWFwRm9yKGV4ZWMpLnNldChleGVjLT5nbG9iYWxEYXRhKCksIG5vZGUsIHdy
YXBwZXIpOworICAgICAgICBjYWNoZURPTU9iamVjdFdyYXBwZXIoZXhlYywgbm9kZSwgd3JhcHBl
cik7CiAgICAgZWxzZQotICAgICAgICBkb2N1bWVudC0+Z2V0V3JhcHBlckNhY2hlKGN1cnJlbnRX
b3JsZChleGVjKSktPnNldChleGVjLT5nbG9iYWxEYXRhKCksIG5vZGUsIHdyYXBwZXIpOworICAg
ICAgICBkb2N1bWVudC0+Z2V0V3JhcHBlckNhY2hlKGN1cnJlbnRXb3JsZChleGVjKSktPnNldChu
b2RlLCBXZWFrPEpTTm9kZT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBjdXJyZW50V29y
bGQoZXhlYyktPmpzTm9kZUhhbmRsZU93bmVyKCkpKTsKIAotICAgIGlmIChjdXJyZW50V29ybGQo
ZXhlYyktPmlzTm9ybWFsKCkpCisgICAgaWYgKGN1cnJlbnRXb3JsZChleGVjKS0+aXNOb3JtYWwo
KSkgewogICAgICAgICBub2RlLT5zZXRXcmFwcGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgd3JhcHBl
cik7CisgICAgICAgIEFTU0VSVChub2RlLT53cmFwcGVyKCkgPT0gKGRvY3VtZW50ID8gZG9jdW1l
bnQtPmdldFdyYXBwZXJDYWNoZShjdXJyZW50V29ybGQoZXhlYykpLT5nZXQobm9kZSkuZ2V0KCkg
OiBkb21PYmplY3RXcmFwcGVyTWFwRm9yKGV4ZWMpLmdldChub2RlKS5nZXQoKSkpOworICAgIH0K
IH0KIAogc3RhdGljIGlubGluZSBib29sIGlzT2JzZXJ2YWJsZVRocm91Z2hET00oSlNOb2RlKiBq
c05vZGUsIERPTVdyYXBwZXJXb3JsZCogd29ybGQpCkBAIC0yMTksNyArMjIzLDcgQEAgc3RhdGlj
IGlubGluZSBib29sIGlzT2JzZXJ2YWJsZVRocm91Z2hETwogICAgICAgICAvLyBrZWVwIHRoZSBu
b2RlIHdyYXBwZXJzIHByb3RlY3RpbmcgdGhlbSBhbGl2ZS4KICAgICAgICAgaWYgKG5vZGUtPmlz
RWxlbWVudE5vZGUoKSkgewogICAgICAgICAgICAgaWYgKE5hbWVkTm9kZU1hcCogYXR0cmlidXRl
cyA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+YXR0cmlidXRlTWFwKCkpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gd29ybGQtPm1fd3JhcHBlcnMuZ2V0
KGF0dHJpYnV0ZXMpKSB7CisgICAgICAgICAgICAgICAgaWYgKERPTU9iamVjdCogd3JhcHBlciA9
IHdvcmxkLT5tX3dyYXBwZXJzLmdldChhdHRyaWJ1dGVzKS5nZXQoKSkgewogICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzZWVtcyBpbnN1ZmZpY2llbnQsIGJlY2F1c2Ug
TmFtZWROb2RlTWFwIGl0ZW1zIGNhbiBoYXZlIGN1c3RvbSBwcm9wZXJ0aWVzIHRoZW1zZWx2ZXMu
CiAgICAgICAgICAgICAgICAgICAgIC8vIE1heWJlIGl0IHdvdWxkIGJlIE9LIHRvIGp1c3Qga2Vl
cCB0aGUgd3JhcHBlciBhbGl2ZSwgYXMgaXQgaXMgZG9uZSBmb3IgQ1NTT00gb2JqZWN0cyBiZWxv
dy4KICAgICAgICAgICAgICAgICAgICAgaWYgKHdyYXBwZXItPmhhc0N1c3RvbVByb3BlcnRpZXMo
KSkKQEAgLTIzNCw3ICsyMzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNPYnNlcnZhYmxlVGhy
b3VnaERPCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUpLT5oYXNUYWdOYW1lKGNhbnZhc1RhZykpIHsKICAgICAgICAgICAgICAgICBpZiAo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNF
bGVtZW50Kj4obm9kZSktPnJlbmRlcmluZ0NvbnRleHQoKSkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoRE9NT2JqZWN0KiB3cmFwcGVyID0gd29ybGQtPm1fd3JhcHBlcnMuZ2V0KGNvbnRleHQp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChET01PYmplY3QqIHdyYXBwZXIgPSB3b3JsZC0+
bV93cmFwcGVycy5nZXQoY29udGV4dCkuZ2V0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh3cmFwcGVyLT5oYXNDdXN0b21Qcm9wZXJ0aWVzKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI4OSw4ICsy
OTMsMTAgQEAgdm9pZCBtYXJrRE9NTm9kZXNGb3JEb2N1bWVudChNYXJrU3RhY2smIAogCiAgICAg
ICAgIEpTV3JhcHBlckNhY2hlOjppdGVyYXRvciBub2RlRW5kID0gbm9kZURpY3QtPmVuZCgpOwog
ICAgICAgICBmb3IgKEpTV3JhcHBlckNhY2hlOjppdGVyYXRvciBub2RlSXQgPSBub2RlRGljdC0+
YmVnaW4oKTsgbm9kZUl0ICE9IG5vZGVFbmQ7ICsrbm9kZUl0KSB7Ci0gICAgICAgICAgICBpZiAo
aXNPYnNlcnZhYmxlVGhyb3VnaERPTShub2RlSXQuZ2V0KCkuc2Vjb25kLCB3b3JsZCkpCi0gICAg
ICAgICAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0ZWRBcHBlbmQobm9kZUl0LmdldFNsb3QoKS5z
ZWNvbmQpOworICAgICAgICAgICAgSlNOb2RlKiBub2RlID0gbm9kZUl0LT5zZWNvbmQuZ2V0KCk7
CisgICAgICAgICAgICBpZiAoIWlzT2JzZXJ2YWJsZVRocm91Z2hET00obm9kZSwgd29ybGQpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgbWFya1N0YWNrLmRlcHJlY2F0
ZWRBcHBlbmQocmVpbnRlcnByZXRfY2FzdDxKU0NlbGwqKj4oJm5vZGUpKTsKICAgICAgICAgfQog
ICAgIH0KIH0KQEAgLTMyNywxMyArMzMzLDE1IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0YWtlV3Jh
cHBlcnMoTm9kZSogbm8KICAgICBpZiAoZG9jdW1lbnQpIHsKICAgICAgICAgSlNXcmFwcGVyQ2Fj
aGVNYXAmIHdyYXBwZXJDYWNoZU1hcCA9IGRvY3VtZW50LT53cmFwcGVyQ2FjaGVNYXAoKTsKICAg
ICAgICAgZm9yIChKU1dyYXBwZXJDYWNoZU1hcDo6aXRlcmF0b3IgaXRlciA9IHdyYXBwZXJDYWNo
ZU1hcC5iZWdpbigpOyBpdGVyICE9IHdyYXBwZXJDYWNoZU1hcC5lbmQoKTsgKytpdGVyKSB7Ci0g
ICAgICAgICAgICBpZiAoSlNOb2RlKiB3cmFwcGVyID0gaXRlci0+c2Vjb25kLT50YWtlKG5vZGUp
KQotICAgICAgICAgICAgICAgIHdyYXBwZXJTZXQuYXBwZW5kKFdyYXBwZXJBbmRXb3JsZCh3cmFw
cGVyLCBpdGVyLT5maXJzdCkpOworICAgICAgICAgICAgSlNOb2RlKiB3cmFwcGVyID0gaXRlci0+
c2Vjb25kLT50YWtlKG5vZGUpLmdldCgpOworICAgICAgICAgICAgaWYgKCF3cmFwcGVyKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgd3JhcHBlclNldC5hcHBlbmQoV3Jh
cHBlckFuZFdvcmxkKHdyYXBwZXIsIGl0ZXItPmZpcnN0KSk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBmb3IgKEpTR2xvYmFsRGF0YVdvcmxkSXRlcmF0b3Igd29ybGRJdGVyKEpT
RE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKSk7IHdvcmxkSXRlcjsgKyt3b3JsZEl0ZXIp
IHsKICAgICAgICAgICAgIERPTVdyYXBwZXJXb3JsZCogd29ybGQgPSAqd29ybGRJdGVyOwotICAg
ICAgICAgICAgaWYgKEpTTm9kZSogd3JhcHBlciA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KHdvcmxk
LT5tX3dyYXBwZXJzLnRha2Uobm9kZSkpKQorICAgICAgICAgICAgaWYgKEpTTm9kZSogd3JhcHBl
ciA9IHN0YXRpY19jYXN0PEpTTm9kZSo+KHdvcmxkLT5tX3dyYXBwZXJzLnRha2Uobm9kZSkuZ2V0
KCkpKQogICAgICAgICAgICAgICAgIHdyYXBwZXJTZXQuYXBwZW5kKFdyYXBwZXJBbmRXb3JsZCh3
cmFwcGVyLCB3b3JsZCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzQ5LDkgKzM1Nyw5IEBAIHZv
aWQgdXBkYXRlRE9NTm9kZURvY3VtZW50KE5vZGUqIG5vZGUsIEQKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgd3JhcHBlclNldC5zaXplKCk7ICsraSkgewogICAgICAgICBKU05vZGUqIHdy
YXBwZXIgPSB3cmFwcGVyU2V0W2ldLmZpcnN0OwogICAgICAgICBpZiAobmV3RG9jdW1lbnQpCi0g
ICAgICAgICAgICBuZXdEb2N1bWVudC0+Z2V0V3JhcHBlckNhY2hlKHdyYXBwZXJTZXRbaV0uc2Vj
b25kKS0+c2V0KCp3cmFwcGVyU2V0W2ldLnNlY29uZC0+Z2xvYmFsRGF0YSgpLCBub2RlLCB3cmFw
cGVyKTsKKyAgICAgICAgICAgIG5ld0RvY3VtZW50LT5nZXRXcmFwcGVyQ2FjaGUod3JhcHBlclNl
dFtpXS5zZWNvbmQpLT5zZXQobm9kZSwgV2VhazxKU05vZGU+KCp3cmFwcGVyU2V0W2ldLnNlY29u
ZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCB3cmFwcGVyU2V0W2ldLnNlY29uZC0+anNOb2RlSGFu
ZGxlT3duZXIoKSkpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB3cmFwcGVyU2V0W2ldLnNl
Y29uZC0+bV93cmFwcGVycy5zZXQoKndyYXBwZXJTZXRbaV0uc2Vjb25kLT5nbG9iYWxEYXRhKCks
IG5vZGUsIHdyYXBwZXIpOworICAgICAgICAgICAgd3JhcHBlclNldFtpXS5zZWNvbmQtPm1fd3Jh
cHBlcnMuc2V0KG5vZGUsIFdlYWs8RE9NT2JqZWN0Pigqd3JhcHBlclNldFtpXS5zZWNvbmQtPmds
b2JhbERhdGEoKSwgd3JhcHBlciwgd3JhcHBlclNldFtpXS5zZWNvbmQtPmRvbU9iamVjdEhhbmRs
ZU93bmVyKCkpKTsKICAgICB9CiB9CiAKQEAgLTM2NCw4ICszNzIsOCBAQCB2b2lkIG1hcmtET01P
YmplY3RXcmFwcGVyKE1hcmtTdGFjayYgbWFyCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAo
SlNHbG9iYWxEYXRhV29ybGRJdGVyYXRvciB3b3JsZEl0ZXIoJmdsb2JhbERhdGEpOyB3b3JsZEl0
ZXI7ICsrd29ybGRJdGVyKSB7Ci0gICAgICAgIGlmIChIYW5kbGVTbG90IHdyYXBwZXJTbG90ID0g
d29ybGRJdGVyLT5tX3dyYXBwZXJzLmdldFNsb3Qob2JqZWN0KSkKLSAgICAgICAgICAgIG1hcmtT
dGFjay5kZXByZWNhdGVkQXBwZW5kKHdyYXBwZXJTbG90KTsKKyAgICAgICAgaWYgKERPTU9iamVj
dCogd3JhcHBlciA9IHdvcmxkSXRlci0+bV93cmFwcGVycy5nZXQob2JqZWN0KS5nZXQoKSkKKyAg
ICAgICAgICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kKHJlaW50ZXJwcmV0X2Nhc3Q8SlND
ZWxsKio+KCZ3cmFwcGVyKSk7CiAgICAgfQogfQogCkBAIC0zNzQsMTUgKzM4MiwxNyBAQCB2b2lk
IG1hcmtET01Ob2RlV3JhcHBlcihNYXJrU3RhY2smIG1hcmtTCiAgICAgaWYgKGRvY3VtZW50KSB7
CiAgICAgICAgIEpTV3JhcHBlckNhY2hlTWFwJiB3cmFwcGVyQ2FjaGVNYXAgPSBkb2N1bWVudC0+
d3JhcHBlckNhY2hlTWFwKCk7CiAgICAgICAgIGZvciAoSlNXcmFwcGVyQ2FjaGVNYXA6Oml0ZXJh
dG9yIGl0ZXIgPSB3cmFwcGVyQ2FjaGVNYXAuYmVnaW4oKTsgaXRlciAhPSB3cmFwcGVyQ2FjaGVN
YXAuZW5kKCk7ICsraXRlcikgewotICAgICAgICAgICAgaWYgKEhhbmRsZVNsb3Qgd3JhcHBlclNs
b3QgPSBpdGVyLT5zZWNvbmQtPmdldFNsb3Qobm9kZSkpCi0gICAgICAgICAgICAgICAgbWFya1N0
YWNrLmRlcHJlY2F0ZWRBcHBlbmQod3JhcHBlclNsb3QpOworICAgICAgICAgICAgSlNOb2RlKiB3
cmFwcGVyID0gaXRlci0+c2Vjb25kLT5nZXQobm9kZSkuZ2V0KCk7CisgICAgICAgICAgICBpZiAo
IXdyYXBwZXIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBtYXJrU3Rh
Y2suZGVwcmVjYXRlZEFwcGVuZChyZWludGVycHJldF9jYXN0PEpTQ2VsbCoqPigmd3JhcHBlcikp
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKEpTR2xvYmFs
RGF0YVdvcmxkSXRlcmF0b3Igd29ybGRJdGVyKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERh
dGEoKSk7IHdvcmxkSXRlcjsgKyt3b3JsZEl0ZXIpIHsKLSAgICAgICAgaWYgKEhhbmRsZVNsb3Qg
d3JhcHBlclNsb3QgPSB3b3JsZEl0ZXItPm1fd3JhcHBlcnMuZ2V0U2xvdChub2RlKSkKLSAgICAg
ICAgICAgIG1hcmtTdGFjay5kZXByZWNhdGVkQXBwZW5kKHdyYXBwZXJTbG90KTsKKyAgICAgICAg
aWYgKERPTU9iamVjdCogd3JhcHBlciA9IHdvcmxkSXRlci0+bV93cmFwcGVycy5nZXQobm9kZSku
Z2V0KCkpCisgICAgICAgICAgICBtYXJrU3RhY2suZGVwcmVjYXRlZEFwcGVuZChyZWludGVycHJl
dF9jYXN0PEpTQ2VsbCoqPigmd3JhcHBlcikpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgJKHJldmlzaW9uIDgzNjY5KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDEzICszNCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBpbmxpbmUgSlNOb2RlKiBnZXRD
YWNoZWRET01Ob2RlV3JhcHBlcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBOb2RlKiBub2RlKQogewogICAgIGlmIChjdXJyZW50V29ybGQoZXhlYyktPmlzTm9ybWFs
KCkpIHsKLSAgICAgICAgQVNTRVJUKG5vZGUtPndyYXBwZXIoKSA9PSAoZG9jdW1lbnQgPyBkb2N1
bWVudC0+Z2V0V3JhcHBlckNhY2hlKGN1cnJlbnRXb3JsZChleGVjKSktPmdldChub2RlKSA6IGRv
bU9iamVjdFdyYXBwZXJNYXBGb3IoZXhlYykuZ2V0KG5vZGUpKSk7CisgICAgICAgIEFTU0VSVChu
b2RlLT53cmFwcGVyKCkgPT0gKGRvY3VtZW50ID8gZG9jdW1lbnQtPmdldFdyYXBwZXJDYWNoZShj
dXJyZW50V29ybGQoZXhlYykpLT5nZXQobm9kZSkuZ2V0KCkgOiBkb21PYmplY3RXcmFwcGVyTWFw
Rm9yKGV4ZWMpLmdldChub2RlKS5nZXQoKSkpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
SlNOb2RlKj4obm9kZS0+d3JhcHBlcigpKTsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQpCi0g
ICAgICAgIHJldHVybiBkb2N1bWVudC0+Z2V0V3JhcHBlckNhY2hlKGN1cnJlbnRXb3JsZChleGVj
KSktPmdldChub2RlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNOb2RlKj4oZG9tT2JqZWN0
V3JhcHBlck1hcEZvcihleGVjKS5nZXQobm9kZSkpOworICAgICAgICByZXR1cm4gZG9jdW1lbnQt
PmdldFdyYXBwZXJDYWNoZShjdXJyZW50V29ybGQoZXhlYykpLT5nZXQobm9kZSkuZ2V0KCk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTTm9kZSo+KGRvbU9iamVjdFdyYXBwZXJNYXBGb3IoZXhl
YykuZ2V0KG5vZGUpLmdldCgpKTsKIH0KIAogSlNDOjpKU1ZhbHVlIGNyZWF0ZVdyYXBwZXIoSlND
OjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCosIE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiA4MzY2OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KIAogI2lmIFVTRShKU0MpCi0jaW5jbHVkZSA8cnVudGltZS9XZWFrR0NNYXAuaD4K
KyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC05NDgsNyArOTQ4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKIAogI2lmIFVTRShKU0MpCi0gICAgdHlw
ZWRlZiBKU0M6OldlYWtHQ01hcDxXZWJDb3JlOjpOb2RlKiwgSlNOb2RlPiBKU1dyYXBwZXJDYWNo
ZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6Tm9kZSosIEpTQzo6V2VhazxKU05vZGU+
ID4gSlNXcmFwcGVyQ2FjaGU7CiAgICAgdHlwZWRlZiBIYXNoTWFwPERPTVdyYXBwZXJXb3JsZCos
IEpTV3JhcHBlckNhY2hlKj4gSlNXcmFwcGVyQ2FjaGVNYXA7CiAgICAgSlNXcmFwcGVyQ2FjaGVN
YXAmIHdyYXBwZXJDYWNoZU1hcCgpIHsgcmV0dXJuIG1fd3JhcHBlckNhY2hlTWFwOyB9CiAgICAg
SlNXcmFwcGVyQ2FjaGUqIGdldFdyYXBwZXJDYWNoZShET01XcmFwcGVyV29ybGQqIHdvcmxkKTsK
</data>
<flag name="review"
          id="82141"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>