<?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>57639</bug_id>
          
          <creation_ts>2011-04-01 09:54:00 -0700</creation_ts>
          <short_desc>Move MouseEvent-dispatching logic into MouseEventDispatchMediator.</short_desc>
          <delta_ts>2012-06-28 08:31:11 -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>
          <dependson>57562</dependson>
          <blocked>55515</blocked>
    
    <blocked>57642</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>377868</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-01 09:54:00 -0700</bug_when>
    <thetext>Move MouseEvent-dispatching logic into MouseEventDispatchMediator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377874</commentid>
    <comment_count>1</comment_count>
      <attachid>87874</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-01 09:57:23 -0700</bug_when>
    <thetext>Created attachment 87874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379208</commentid>
    <comment_count>2</comment_count>
      <attachid>88158</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-04 16:44:29 -0700</bug_when>
    <thetext>Created attachment 88158
Rebased to ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379213</commentid>
    <comment_count>3</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-04 16:46:58 -0700</bug_when>
    <thetext>This patch doesn&apos;t build on Mac because of r82833 (http://trac.webkit.org/changeset/82733/trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp). Turns out Jer liked my newly added constructor so much, he used it right away -- and now I can&apos;t remove it! :)

Jer, is there a way you could use one of the old constructors instead? Or should I keep it? WDYT, Darin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379223</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-04-04 16:55:22 -0700</bug_when>
    <thetext>Attachment 88158 did not build on qt:
Build output: http://queues.webkit.org/results/8334111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379225</commentid>
    <comment_count>5</comment_count>
      <attachid>88158</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-04 16:55:42 -0700</bug_when>
    <thetext>Comment on attachment 88158
Rebased to ToT.

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

&gt; Source/WebCore/dom/Event.h:207
&gt; +    EventDispatchMediator();
&gt; +
&gt; +    void setEvent(PassRefPtr&lt;Event&gt;);
&gt;      Event* event() const;

I’m surprised none of these are inlined in the header

&gt; Source/WebCore/dom/EventDispatcher.cpp:67
&gt; +Node* EventDispatcher::node() const
&gt; +{
&gt; +    return m_node.get();
&gt; +}

Seems like an inlining candidate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379226</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-04 16:56:20 -0700</bug_when>
    <thetext>I’m getting a little paranoid about slicing and dicing the event code into pieces that are too small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379292</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-04 19:03:29 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I’m getting a little paranoid about slicing and dicing the event code into pieces that are too small.

I think it&apos;ll look good in the end. No worries, cap&apos;n! Everything&apos;s peachy! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379296</commentid>
    <comment_count>8</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-04 19:16:18 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 88158 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88158&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Event.h:207
&gt; &gt; +    EventDispatchMediator();
&gt; &gt; +
&gt; &gt; +    void setEvent(PassRefPtr&lt;Event&gt;);
&gt; &gt;      Event* event() const;
&gt; 
&gt; I’m surprised none of these are inlined in the header
&gt; 
&gt; &gt; Source/WebCore/dom/EventDispatcher.cpp:67
&gt; &gt; +Node* EventDispatcher::node() const
&gt; &gt; +{
&gt; &gt; +    return m_node.get();
&gt; &gt; +}
&gt; 
&gt; Seems like an inlining candidate.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379298</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-04 19:20:00 -0700</bug_when>
    <thetext>Attachment 88158 did not build on win:
Build output: http://queues.webkit.org/results/8330194</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379302</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-04 20:29:41 -0700</bug_when>
    <thetext>Attachment 88158 did not build on win:
Build output: http://queues.webkit.org/results/8338007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379459</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-05 05:21:19 -0700</bug_when>
    <thetext>Attachment 88158 did not build on mac:
Build output: http://queues.webkit.org/results/8331332</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379633</commentid>
    <comment_count>12</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-05 09:26:26 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; This patch doesn&apos;t build on Mac because of r82833 (http://trac.webkit.org/changeset/82733/trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp). Turns out Jer liked my newly added constructor so much, he used it right away -- and now I can&apos;t remove it! :)
&gt; 
&gt; Jer, is there a way you could use one of the old constructors instead? Or should I keep it? WDYT, Darin?

Jer and I discussed this just now and I am going to leave his shiny constructor alone. This will also make the patch simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379691</commentid>
    <comment_count>13</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-05 10:02:07 -0700</bug_when>
    <thetext>Committed r82948: &lt;http://trac.webkit.org/changeset/82948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659518</commentid>
    <comment_count>14</comment_count>
      <attachid>88158</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-06-28 08:31:11 -0700</bug_when>
    <thetext>Comment on attachment 88158
Rebased to ToT.

removing flags on a landed patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87874</attachid>
            <date>2011-04-01 09:57:23 -0700</date>
            <delta_ts>2011-04-04 16:44:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57639-20110401095722.patch</filename>
            <type>text/plain</type>
            <size>14393</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMGExMGE4NWZjNDQ2Njk4
ZGYwOTY2ZTU0NGJkZDViMGIzNzE1MjgyLi42ZjAwNzk2NWMzYjgyM2E1YzNmMDVmYmY4MWQ2YzBh
ZTllNmYxYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDQtMDEgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1vdXNlRXZlbnQtZGlzcGF0Y2hpbmcg
bG9naWMgaW50byBNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjM5CisKKyAgICAgICAgUmVmYWN0b3Jp
bmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpFdmVudERpc3BhdGNo
TWVkaWF0b3IpOiBBZGRlZCBkZWZhdWx0CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6c2V0RXZlbnQpOiBBZGRlZC4KKyAg
ICAgICAgKiBkb20vRXZlbnQuaDogVHdlYWtlZCBkZWNscy4KKyAgICAgICAgKiBkb20vRXZlbnRE
aXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hFdmVudCk6IE1vdmVkIHVzZWZ1bCBhc3NlcnRpb24gaGVyZQorICAgICAgICAgICAgZnJvbSBk
aXNwYXRjaE1vdXNlRXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6Om5v
ZGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6YWRqdXN0UmVs
YXRlZFRhcmdldCk6IENvbnZlcnRlZCBpbnRvIGEgbWV0aG9kLgorICAgICAgICAqIGRvbS9FdmVu
dERpc3BhdGNoZXIuaDogQWRqdXN0ZWQgZGVjbHMuCisgICAgICAgICogZG9tL01vdXNlRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3I6Ok1vdXNl
RXZlbnREaXNwYXRjaE1lZGlhdG9yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2
ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KTogTW92ZWQgaGVyZSB0aGUg
Y29kZSBmcm9tIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50LgorICAgICAgICAq
IGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpjcmVhdGUp
OiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6c2V0UmVsYXRlZFRhcmdl
dCk6IEFkZGVkLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmRpc3BhdGNoTW91c2VFdmVudCk6IENoYW5nZWQgdG8gdXNlIE1vdXNlRXZlbnREaXNwYXRj
aE1lZGlhdG9yLgorCiAyMDExLTAzLTMxICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50LmNwcAppbmRleCAyNmNkZjEyM2U5NjQ0NzU3NTU2N2Y3NjdmMTg4MjhiM2FlNTQxYTMzLi42
OGIzMTA4ZWU4MTBhYTU5OGJlM2M4YzZiZTA5Zjk4ZGE5ZjhiZGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5j
cHAKQEAgLTMwOCw2ICszMDgsMTUgQEAgYm9vbCBFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3Bh
dGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKSBjb25zdAogICAgIHJldHVybiBk
aXNwYXRjaGVyLT5kaXNwYXRjaEV2ZW50KG1fZXZlbnQuZ2V0KCkpOwogfQogCitFdmVudERpc3Bh
dGNoTWVkaWF0b3I6OkV2ZW50RGlzcGF0Y2hNZWRpYXRvcigpCit7Cit9CisKK3ZvaWQgRXZlbnRE
aXNwYXRjaE1lZGlhdG9yOjpzZXRFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKK3sKKyAg
ICBtX2V2ZW50ID0gZXZlbnQ7Cit9CisKIEV2ZW50KiBFdmVudERpc3BhdGNoTWVkaWF0b3I6OmV2
ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ldmVudC5nZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKaW5k
ZXggYmY5N2I5MTVjMjM0YmIxMGZkNDU4ZWY1ZDU5YjJhYjI4NmFiMDQwYi4uYTJjZGZkOGE1NjQ4
MDBkNjk5OTc0OGE0MzllZTE0Nzc4OTljYWY2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmgKQEAgLTE5OSw3ICsx
OTksMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkV2ZW50RGlzcGF0Y2hNZWRpYXRvcigpOwog
CiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKikgY29uc3Q7
CisKK3Byb3RlY3RlZDoKKyAgICBFdmVudERpc3BhdGNoTWVkaWF0b3IoKTsKKworICAgIHZvaWQg
c2V0RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwogICAgIEV2ZW50KiBldmVudCgpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDU2ODY4OTA3YTU0YWNlYmRjMzQ1OGI2ODE1ODFi
Nzc4N2VjMTU2ODAuLmQxZTRkNzJlNzU0MDlmNTQwM2M3MGJjZTlmNDRiNGY3ZmQ5NDQxYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC01NSwxMCArNTUsMTcgQEAg
c3RhdGljIEhhc2hTZXQ8Tm9kZSo+KiBnTm9kZXNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcyA9
IDA7CiAKIGJvb2wgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUqIG5vZGUsIGNv
bnN0IEV2ZW50RGlzcGF0Y2hNZWRpYXRvciYgbWVkaWF0b3IpCiB7CisgICAgQVNTRVJUKCFldmVu
dERpc3BhdGNoRm9yYmlkZGVuKCkpOworCiAgICAgRXZlbnREaXNwYXRjaGVyIGRpc3BhdGNoZXIo
bm9kZSk7CiAgICAgcmV0dXJuIG1lZGlhdG9yLmRpc3BhdGNoRXZlbnQoJmRpc3BhdGNoZXIpOwog
fQogCitOb2RlKiBFdmVudERpc3BhdGNoZXI6Om5vZGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X25vZGUuZ2V0KCk7Cit9CisKIHN0YXRpYyBFdmVudFRhcmdldCogZmluZEVsZW1lbnRJbnN0YW5j
ZShOb2RlKiByZWZlcmVuY2VOb2RlKQogewogI2lmIEVOQUJMRShTVkcpCkBAIC0xNDYsOCArMTUz
LDE1IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQoTm9kZSogbm9k
ZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKIAogLy8gRklYTUU6IE9uY2UgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyOTYzIGxhbmRzLCB0aGlzIHNob3VsZAog
Ly8gYmUgZ3JlYXRseSBpbXByb3ZlZC4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NDAyNS4KLXN0YXRpYyBOb2RlKiBwdWxsT3V0T2ZTaGFkb3coTm9kZSogbm9k
ZSkKK1Bhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IEV2ZW50RGlzcGF0Y2hlcjo6YWRqdXN0UmVsYXRl
ZFRhcmdldChQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0KQogeworICAgIGlm
ICghcmVsYXRlZFRhcmdldCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOb2RlKiBub2RlID0g
cmVsYXRlZFRhcmdldC0+dG9Ob2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm4g
cmVsYXRlZFRhcmdldDsKKwogICAgIE5vZGUqIG91dGVybW9zdFNoYWRvd0JvdW5kYXJ5ID0gbm9k
ZTsKICAgICBmb3IgKE5vZGUqIG4gPSBub2RlOyBuOyBuID0gbi0+cGFyZW50T3JIb3N0Tm9kZSgp
KSB7CiAgICAgICAgIGlmIChuLT5pc1NoYWRvd1Jvb3QoKSkKQEAgLTI5MCw0NyArMzA0LDcgQEAg
ZG9uZVdpdGhEZWZhdWx0OgogCiAgICAgcmV0dXJuICFldmVudC0+ZGVmYXVsdFByZXZlbnRlZCgp
OwogfQotYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTW91c2VFdmVudChOb2RlKiBub2Rl
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwKLSAgICBpbnQgZGV0YWlsLCBOb2RlKiByZWxhdGVkVGFyZ2V0QXJnKQotewotICAg
IEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKLSAgICBBU1NFUlQoZXZlbnQuZXZl
bnRUeXBlKCkgPT0gTW91c2VFdmVudE1vdmVkIHx8IGV2ZW50LmJ1dHRvbigpICE9IE5vQnV0dG9u
KTsKLQotICAgIGlmIChub2RlLT5kaXNhYmxlZCgpKSAvLyBEb24ndCBldmVuIHNlbmQgRE9NIGV2
ZW50cyBmb3IgZGlzYWJsZWQgY29udHJvbHMuLgotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGlmIChldmVudFR5cGUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFNob3Vs
ZG4ndCBoYXBwZW4uCi0KLSAgICBFdmVudERpc3BhdGNoZXIgZGlzcGF0Y2hlcihub2RlKTsKLQot
ICAgIC8vIEF0dGVtcHRpbmcgdG8gZGlzcGF0Y2ggd2l0aCBhIG5vbi1FdmVudFRhcmdldCByZWxh
dGVkVGFyZ2V0IGNhdXNlcyB0aGUgcmVsYXRlZFRhcmdldCB0byBiZSBzaWxlbnRseSBpZ25vcmVk
LgotICAgIFJlZlB0cjxOb2RlPiByZWxhdGVkVGFyZ2V0ID0gcHVsbE91dE9mU2hhZG93KHJlbGF0
ZWRUYXJnZXRBcmcpOwotCi0gICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBNb3Vz
ZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBub2RlLT5kb2N1bWVudCgpLT5kZWZhdWx0Vmlldygp
LCBldmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0KTsKLQotICAgIGJvb2wgc3dhbGxvd0V2ZW50
ID0gZmFsc2U7Ci0KLSAgICBkaXNwYXRjaGVyLmRpc3BhdGNoRXZlbnQobW91c2VFdmVudCk7Ci0g
ICAgYm9vbCBkZWZhdWx0SGFuZGxlZCA9IG1vdXNlRXZlbnQtPmRlZmF1bHRIYW5kbGVkKCk7Ci0g
ICAgYm9vbCBkZWZhdWx0UHJldmVudGVkID0gbW91c2VFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgp
OwotICAgIGlmIChkZWZhdWx0SGFuZGxlZCB8fCBkZWZhdWx0UHJldmVudGVkKQotICAgICAgICBz
d2FsbG93RXZlbnQgPSB0cnVlOwotCi0gICAgLy8gU3BlY2lhbCBjYXNlOiBJZiBpdCdzIGEgZG91
YmxlIGNsaWNrIGV2ZW50LCB3ZSBhbHNvIHNlbmQgdGhlIGRibGNsaWNrIGV2ZW50LiBUaGlzIGlz
IG5vdCBwYXJ0Ci0gICAgLy8gb2YgdGhlIERPTSBzcGVjcywgYnV0IGlzIHVzZWQgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCB0aGUgb25kYmxjbGljaz0iIiBhdHRyaWJ1dGUuIFRoaXMgaXMgdHJlYXRl
ZAotICAgIC8vIGFzIGEgc2VwYXJhdGUgZXZlbnQgaW4gb3RoZXIgRE9NLWNvbXBsaWFudCBicm93
c2VycyBsaWtlIEZpcmVmb3gsIGFuZCBzbyB3ZSBkbyB0aGUgc2FtZS4KLSAgICBpZiAoZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmIGRldGFpbCA9PSAyKSB7Ci0gICAgICAg
IFJlZlB0cjxFdmVudD4gZG91YmxlQ2xpY2tFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkuZGJsY2xpY2tFdmVudCwgbm9kZS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwg
ZXZlbnQsIGRldGFpbCwgcmVsYXRlZFRhcmdldCk7Ci0gICAgICAgIGlmIChkZWZhdWx0SGFuZGxl
ZCkKLSAgICAgICAgICAgIGRvdWJsZUNsaWNrRXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7Ci0g
ICAgICAgIGRpc3BhdGNoZXIuZGlzcGF0Y2hFdmVudChkb3VibGVDbGlja0V2ZW50KTsKLSAgICAg
ICAgaWYgKGRvdWJsZUNsaWNrRXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkgfHwgZG91YmxlQ2xpY2tF
dmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpKQotICAgICAgICAgICAgc3dhbGxvd0V2ZW50ID0gdHJ1
ZTsKLSAgICB9CiAKLSAgICByZXR1cm4gc3dhbGxvd0V2ZW50OwotfQogCiBjb25zdCBFdmVudENv
bnRleHQqIEV2ZW50RGlzcGF0Y2hlcjo6dG9wRXZlbnRDb250ZXh0KCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudERpc3BhdGNoZXIuaAppbmRleCAxNGI0NDc3OWVhNGQ1MGFmZmIxZGY1OGEwODdlNGQy
YzRjZDY4ZDA4Li4wNzM0NDFkMjljNGRjNmQ1MDViZmFiNDliYjExNmNhYmE0MTZkZWZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC01MSwxMSArNTEsMTMgQEAgcHVibGlj
OgogICAgIHN0YXRpYyBib29sIGRpc3BhdGNoRXZlbnQoTm9kZSosIGNvbnN0IEV2ZW50RGlzcGF0
Y2hNZWRpYXRvciYpOwogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2NvcGVkRXZlbnQoTm9kZSos
IFBhc3NSZWZQdHI8RXZlbnQ+KTsKIAotICAgIHN0YXRpYyBib29sIGRpc3BhdGNoTW91c2VFdmVu
dChOb2RlKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIGludCBjbGlja0NvdW50ID0gMCwgTm9kZSogcmVsYXRlZFRhcmdldCA9IDApOwog
ICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soTm9kZSosIFBhc3NSZWZQdHI8
RXZlbnQ+IHVuZGVybHlpbmdFdmVudCwgYm9vbCBzZW5kTW91c2VFdmVudHMsIGJvb2wgc2hvd1By
ZXNzZWRMb29rKTsKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQoTm9kZSosIFBs
YXRmb3JtV2hlZWxFdmVudCYpOwogCiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8
RXZlbnQ+KTsKKyAgICBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBhZGp1c3RSZWxhdGVkVGFyZ2V0
KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+KTsKKyAgICBOb2RlKiBub2RlKCkgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgRXZlbnREaXNwYXRjaGVyKE5vZGUqKTsKIApAQCAtNjQsMTAgKzY2LDYgQEAg
cHJpdmF0ZToKICAgICBjb25zdCBFdmVudENvbnRleHQqIHRvcEV2ZW50Q29udGV4dCgpOwogICAg
IGJvb2wgYW5jZXN0b3JzSW5pdGlhbGl6ZWQoKSBjb25zdDsKIAotICAgIGJvb2wgZGlzcGF0Y2hN
b3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQgYnV0dG9uLCBpbnQg
ZGV0YWlsLAotICAgICAgICBpbnQgcGFnZVgsIGludCBwYWdlWSwgaW50IHNjcmVlblgsIGludCBz
Y3JlZW5ZLCBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1l
dGFLZXksCi0gICAgICAgIGJvb2wgaXNTaW11bGF0ZWQsIE5vZGUqIHJlbGF0ZWRUYXJnZXRBcmcs
IFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7Ci0KICAgICBWZWN0b3I8RXZlbnRD
b250ZXh0PiBtX2FuY2VzdG9yczsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlOwogICAgIFJlZlB0
cjxFdmVudFRhcmdldD4gbV9vcmlnaW5hbFRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Nb3VzZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNw
cAppbmRleCBmZDIxNmFiNmNlNjNkZTBkZTA3ODE2OTBkOGU3YTU2ZTkxZjQwY2I2Li4zMGE1Yjlm
OTYwYzAxZTZmNDA4MDlkMDJiZjk0MDhlNjlmNzhiMTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZl
bnQuY3BwCkBAIC0yMywyMyArMjMsMTQgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJNb3VzZUV2ZW50LmgiCiAKKyNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNb3VzZUV2ZW50PiBNb3Vz
ZUV2ZW50OjpjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8
QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50LCBpbnQg
ZGV0YWlsLCBQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWRUYXJnZXQpCi17Ci0gICAgYm9vbCBpc0Nh
bmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50OwotCi0g
ICAgcmV0dXJuIE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGlzQ2FuY2VsYWJs
ZSwgdmlldywKLSAgICAgICAgZGV0YWlsLCBldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFko
KSwgZXZlbnQueCgpLCBldmVudC55KCksCi0gICAgICAgIGV2ZW50LmN0cmxLZXkoKSwgZXZlbnQu
YWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5KCksIGV2ZW50Lm1ldGFLZXkoKSwgZXZlbnQuYnV0dG9u
KCksCi0gICAgICAgIHJlbGF0ZWRUYXJnZXQsIDAsIGZhbHNlKTsKLX0KLQogTW91c2VFdmVudDo6
TW91c2VFdmVudCgpCiAgICAgOiBtX2J1dHRvbigwKQogICAgICwgbV9idXR0b25Eb3duKGZhbHNl
KQpAQCAtMTQ5LDQgKzE0MCw1NSBAQCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3Vz
ZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUAogICAgIHNldFVu
ZGVybHlpbmdFdmVudCh1bmRlcmx5aW5nRXZlbnQpOwogfQogCitNb3VzZUV2ZW50RGlzcGF0Y2hN
ZWRpYXRvcjo6TW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50LCBpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWRUYXJn
ZXQpCisgICAgOiBFdmVudERpc3BhdGNoTWVkaWF0b3IoKQoreworICAgIEFTU0VSVChldmVudC5l
dmVudFR5cGUoKSA9PSBNb3VzZUV2ZW50TW92ZWQgfHwgZXZlbnQuYnV0dG9uKCkgIT0gTm9CdXR0
b24pOworCisgICAgYm9vbCBpc0NhbmNlbGFibGUgPSBldmVudFR5cGUgIT0gZXZlbnROYW1lcygp
Lm1vdXNlbW92ZUV2ZW50OworCisgICAgc2V0RXZlbnQoTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50
VHlwZSwgdHJ1ZSwgaXNDYW5jZWxhYmxlLCB2aWV3LAorICAgICAgICBkZXRhaWwsIGV2ZW50Lmds
b2JhbFgoKSwgZXZlbnQuZ2xvYmFsWSgpLCBldmVudC54KCksIGV2ZW50LnkoKSwKKyAgICAgICAg
ZXZlbnQuY3RybEtleSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQu
bWV0YUtleSgpLCBldmVudC5idXR0b24oKSwKKyAgICAgICAgcmVsYXRlZFRhcmdldCwgMCwgZmFs
c2UpKTsKK30KKworTW91c2VFdmVudCogTW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3I6OmV2ZW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KEV2ZW50RGlz
cGF0Y2hNZWRpYXRvcjo6ZXZlbnQoKSk7Cit9CisKK2Jvb2wgTW91c2VFdmVudERpc3BhdGNoTWVk
aWF0b3I6OmRpc3BhdGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKiBkaXNwYXRjaGVyKSBjb25zdAor
eworICAgIGlmIChkaXNwYXRjaGVyLT5ub2RlKCktPmRpc2FibGVkKCkpIC8vIERvbid0IGV2ZW4g
c2VuZCBET00gZXZlbnRzIGZvciBkaXNhYmxlZCBjb250cm9scy4uCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKGV2ZW50KCktPnR5cGUoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KKworICAgIFJlZlB0cjxFdmVudFRhcmdldD4g
cmVsYXRlZFRhcmdldCA9IGRpc3BhdGNoZXItPmFkanVzdFJlbGF0ZWRUYXJnZXQoZXZlbnQoKS0+
cmVsYXRlZFRhcmdldCgpKTsKKyAgICBldmVudCgpLT5zZXRSZWxhdGVkVGFyZ2V0KHJlbGF0ZWRU
YXJnZXQpOworCisgICAgZGlzcGF0Y2hlci0+ZGlzcGF0Y2hFdmVudChldmVudCgpKTsKKyAgICBi
b29sIHN3YWxsb3dFdmVudCA9IGV2ZW50KCktPmRlZmF1bHRIYW5kbGVkKCkgfHwgZXZlbnQoKS0+
ZGVmYXVsdFByZXZlbnRlZCgpOworCisgICAgLy8gU3BlY2lhbCBjYXNlOiBJZiBpdCdzIGEgZG91
YmxlIGNsaWNrIGV2ZW50LCB3ZSBhbHNvIHNlbmQgdGhlIGRibGNsaWNrIGV2ZW50LiBUaGlzIGlz
IG5vdCBwYXJ0CisgICAgLy8gb2YgdGhlIERPTSBzcGVjcywgYnV0IGlzIHVzZWQgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCB0aGUgb25kYmxjbGljaz0iIiBhdHRyaWJ1dGUuIFRoaXMgaXMgdHJlYXRl
ZAorICAgIC8vIGFzIGEgc2VwYXJhdGUgZXZlbnQgaW4gb3RoZXIgRE9NLWNvbXBsaWFudCBicm93
c2VycyBsaWtlIEZpcmVmb3gsIGFuZCBzbyB3ZSBkbyB0aGUgc2FtZS4KKyAgICBpZiAoZXZlbnQo
KS0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50ICYmIGV2ZW50KCktPmRldGFpbCgp
ID09IDIpIHsKKyAgICAgICAgUmVmUHRyPE1vdXNlRXZlbnQ+IGRvdWJsZUNsaWNrRXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoKTsKKyAgICAgICAgZG91YmxlQ2xpY2tFdmVudC0+aW5pdE1vdXNl
RXZlbnQoZXZlbnROYW1lcygpLmRibGNsaWNrRXZlbnQsIGV2ZW50KCktPmJ1YmJsZXMoKSwgZXZl
bnQoKS0+Y2FuY2VsYWJsZSgpLCBldmVudCgpLT52aWV3KCksCisgICAgICAgICAgICAgICAgZXZl
bnQoKS0+ZGV0YWlsKCksIGV2ZW50KCktPnNjcmVlblgoKSwgZXZlbnQoKS0+c2NyZWVuWSgpLCBl
dmVudCgpLT5jbGllbnRYKCksIGV2ZW50KCktPmNsaWVudFkoKSwKKyAgICAgICAgICAgICAgICBl
dmVudCgpLT5jdHJsS2V5KCksIGV2ZW50KCktPmFsdEtleSgpLCBldmVudCgpLT5zaGlmdEtleSgp
LCBldmVudCgpLT5tZXRhS2V5KCksCisgICAgICAgICAgICAgICAgZXZlbnQoKS0+YnV0dG9uKCks
IHJlbGF0ZWRUYXJnZXQpOworICAgICAgICBpZiAoZXZlbnQoKS0+ZGVmYXVsdEhhbmRsZWQoKSkK
KyAgICAgICAgICAgIGRvdWJsZUNsaWNrRXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CisgICAg
ICAgIGRpc3BhdGNoZXItPmRpc3BhdGNoRXZlbnQoZG91YmxlQ2xpY2tFdmVudCk7CisgICAgICAg
IGlmIChkb3VibGVDbGlja0V2ZW50LT5kZWZhdWx0SGFuZGxlZCgpIHx8IGRvdWJsZUNsaWNrRXZl
bnQtPmRlZmF1bHRQcmV2ZW50ZWQoKSkKKyAgICAgICAgICAgIHN3YWxsb3dFdmVudCA9IHRydWU7
CisgICAgfQorCisgICAgcmV0dXJuIHN3YWxsb3dFdmVudDsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKaW5kZXggOGUyYmNhMzdmNmIzOWY0MDA4Nzcw
ZmY4YWQwNzY5M2I0OWM5YTI3Yy4uMGY0NjNkZjA3YjBlY2E0OTk4ZjlmNWJlYTllZTQyZDA0ZTc5
NmUyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCkBAIC0yOSw2ICsyOSw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRXZlbnREaXNwYXRjaGVyOwogY2xhc3MgUGxhdGZvcm1N
b3VzZUV2ZW50OwogCiAgICAgLy8gSW50cm9kdWNlZCBpbiBET00gTGV2ZWwgMgpAQCAtNDYsOCAr
NDcsNiBAQCBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAgICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IE1vdXNlRXZlbnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBk
ZXRhaWwsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKICAgICAgICAgICAgICAgICBj
dHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBidXR0b24sIHJlbGF0ZWRUYXJnZXQs
IGNsaXBib2FyZCwgaXNTaW11bGF0ZWQpKTsKICAgICAgICAgfQotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNb3VzZUV2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgaW50
IGRldGFpbCwgUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkVGFyZ2V0KTsKLQogICAgICAgICB2aXJ0
dWFsIH5Nb3VzZUV2ZW50KCk7CiAKICAgICAgICAgdm9pZCBpbml0TW91c2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBhc3NS
ZWZQdHI8QWJzdHJhY3RWaWV3PiwKQEAgLTYwLDYgKzU5LDcgQEAgY2xhc3MgUGxhdGZvcm1Nb3Vz
ZUV2ZW50OwogICAgICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b24oKSBjb25zdCB7IHJldHVybiBt
X2J1dHRvbjsgfQogICAgICAgICBib29sIGJ1dHRvbkRvd24oKSBjb25zdCB7IHJldHVybiBtX2J1
dHRvbkRvd247IH0KICAgICAgICAgRXZlbnRUYXJnZXQqIHJlbGF0ZWRUYXJnZXQoKSBjb25zdCB7
IHJldHVybiBtX3JlbGF0ZWRUYXJnZXQuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRSZWxhdGVk
VGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQpIHsgbV9yZWxhdGVk
VGFyZ2V0ID0gcmVsYXRlZFRhcmdldDsgfQogCiAgICAgICAgIENsaXBib2FyZCogY2xpcGJvYXJk
KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwYm9hcmQuZ2V0KCk7IH0KIApAQCAtOTYsNiArOTYsMTYg
QEAgcHJpdmF0ZToKICAgICBTaW11bGF0ZWRNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sIFBhc3NSZWZQdHI8RXZlbnQ+IHVu
ZGVybHlpbmdFdmVudCk7CiB9OwogCitjbGFzcyBNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvciA6
IHB1YmxpYyBFdmVudERpc3BhdGNoTWVkaWF0b3IgeworcHVibGljOgorICAgIE1vdXNlRXZlbnRE
aXNwYXRjaE1lZGlhdG9yKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRy
PEFic3RyYWN0Vmlldz4sIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYsIGludCBkZXRhaWwsIFBh
c3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCk7CisKK3ByaXZhdGU6CisgICAgTW91c2VFdmVu
dCogZXZlbnQoKSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50
RGlzcGF0Y2hlciopIGNvbnN0OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gTW91c2VFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggNDE1ZjEyNTBmN2M0NDhiYmM0
NDhiMmQ3MDQ1MGU0NThkMTJiYmQwNC4uMDExMmI1NzYzZGJhNjFkZTc1NzAxOThiY2E2NTQ0MTlj
Y2M2ZGYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjY0NSw3ICsyNjQ1LDcgQEAgYm9vbCBOb2Rl
OjpkaXNwYXRjaEtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiBi
b29sIE5vZGU6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwKICAgICBpbnQgZGV0YWlsLCBOb2Rl
KiByZWxhdGVkVGFyZ2V0KQogewotICAgIHJldHVybiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
TW91c2VFdmVudCh0aGlzLCBldmVudCwgZXZlbnRUeXBlLCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXQp
OworICAgIHJldHVybiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgTW91c2VF
dmVudERpc3BhdGNoTWVkaWF0b3IoZXZlbnRUeXBlLCBkb2N1bWVudCgpLT5kZWZhdWx0Vmlldygp
LCBldmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0KSk7CiB9CiAKIHZvaWQgTm9kZTo6ZGlzcGF0
Y2hTaW11bGF0ZWRDbGljayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgYm9vbCBzZW5kTW91c2VF
dmVudHMsIGJvb2wgc2hvd1ByZXNzZWRMb29rKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88158</attachid>
            <date>2011-04-04 16:44:29 -0700</date>
            <delta_ts>2012-06-28 08:31:11 -0700</delta_ts>
            <desc>Rebased to ToT.</desc>
            <filename>bug-57639-20110404164428.patch</filename>
            <type>text/plain</type>
            <size>14467</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MDRkMjY0MTk1MGNiMzgx
ZjE1YWY2Y2IyMmEwZmM1ZjIxY2U2M2FlLi5jZWExZThlYWE0NDU4NTBlNjA3NWQ3NjJkMDU3Nzg0
YzljNmI2ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUgQEAKIDIwMTEtMDQtMDQgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIE1vdXNlRXZlbnQtZGlzcGF0Y2hpbmcg
bG9naWMgaW50byBNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjM5CisKKyAgICAgICAgUmVmYWN0b3Jp
bmcsIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpFdmVudERpc3BhdGNo
TWVkaWF0b3IpOiBBZGRlZCBkZWZhdWx0CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci4KKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6c2V0RXZlbnQpOiBBZGRlZC4KKyAg
ICAgICAgKiBkb20vRXZlbnQuaDogVHdlYWtlZCBkZWNscy4KKyAgICAgICAgKiBkb20vRXZlbnRE
aXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hFdmVudCk6IE1vdmVkIHVzZWZ1bCBhc3NlcnRpb24gaGVyZQorICAgICAgICAgICAgZnJvbSBk
aXNwYXRjaE1vdXNlRXZlbnQuCisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6Om5v
ZGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6YWRqdXN0UmVs
YXRlZFRhcmdldCk6IENvbnZlcnRlZCBpbnRvIGEgbWV0aG9kLgorICAgICAgICAqIGRvbS9FdmVu
dERpc3BhdGNoZXIuaDogQWRqdXN0ZWQgZGVjbHMuCisgICAgICAgICogZG9tL01vdXNlRXZlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3I6Ok1vdXNl
RXZlbnREaXNwYXRjaE1lZGlhdG9yKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2
ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KTogTW92ZWQgaGVyZSB0aGUg
Y29kZSBmcm9tIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50LgorICAgICAgICAq
IGRvbS9Nb3VzZUV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZUV2ZW50OjpjcmVhdGUp
OiBSZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6c2V0UmVsYXRlZFRhcmdl
dCk6IEFkZGVkLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmRpc3BhdGNoTW91c2VFdmVudCk6IENoYW5nZWQgdG8gdXNlIE1vdXNlRXZlbnREaXNwYXRj
aE1lZGlhdG9yLgorCisyMDExLTA0LTA0ICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJv
bWl1bS5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KIAogICAgICAgICBJ
bnRyb2R1Y2UgRXZlbnREaXNwYXRjaE1lZGlhdG9yIGFic3RyYWN0aW9uLCB3aGljaCBlbmNhcHN1
bGF0ZSBhbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCmluZGV4IDI2Y2RmMTIzZTk2NDQ3NTc1NTY3Zjc2N2Yx
ODgyOGIzYWU1NDFhMzMuLjY4YjMxMDhlZTgxMGFhNTk4YmUzYzhjNmJlMDlmOThkYTlmOGJkY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50LmNwcApAQCAtMzA4LDYgKzMwOCwxNSBAQCBib29sIEV2ZW50RGlzcGF0
Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRpc3BhdGNoZXIpIGNv
bnN0CiAgICAgcmV0dXJuIGRpc3BhdGNoZXItPmRpc3BhdGNoRXZlbnQobV9ldmVudC5nZXQoKSk7
CiB9CiAKK0V2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6RXZlbnREaXNwYXRjaE1lZGlhdG9yKCkKK3sK
K30KKwordm9pZCBFdmVudERpc3BhdGNoTWVkaWF0b3I6OnNldEV2ZW50KFBhc3NSZWZQdHI8RXZl
bnQ+IGV2ZW50KQoreworICAgIG1fZXZlbnQgPSBldmVudDsKK30KKwogRXZlbnQqIEV2ZW50RGlz
cGF0Y2hNZWRpYXRvcjo6ZXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2V2ZW50LmdldCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnQuaAppbmRleCAyYWFmNThmZTg4M2VlN2ViMTJhN2VjNjBiMWVmMzI1ZTkzN2Ni
MTkzLi5kN2VmMjg2M2UxOTY3ZWYyMGU5YjFkMjU1NDM3ZDY2OGU3MTQ4ODdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuaApAQCAtMTk5LDcgKzE5OSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXZlbnREaXNw
YXRjaE1lZGlhdG9yKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChFdmVudERp
c3BhdGNoZXIqKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIEV2ZW50RGlzcGF0Y2hNZWRpYXRv
cigpOworCisgICAgdm9pZCBzZXRFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7CiAgICAgRXZlbnQq
IGV2ZW50KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2ZW50Owog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNTY4Njg5MDdhNTRh
Y2ViZGMzNDU4YjY4MTU4MWI3Nzg3ZWMxNTY4MC4uZDFlNGQ3MmU3NTQwOWY1NDAzYzcwYmNlOWY0
NGI0ZjdmZDk0NDFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0
Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAg
LTU1LDEwICs1NSwxNyBAQCBzdGF0aWMgSGFzaFNldDxOb2RlKj4qIGdOb2Rlc0Rpc3BhdGNoaW5n
U2ltdWxhdGVkQ2xpY2tzID0gMDsKIAogYm9vbCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZl
bnQoTm9kZSogbm9kZSwgY29uc3QgRXZlbnREaXNwYXRjaE1lZGlhdG9yJiBtZWRpYXRvcikKIHsK
KyAgICBBU1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7CisKICAgICBFdmVudERpc3Bh
dGNoZXIgZGlzcGF0Y2hlcihub2RlKTsKICAgICByZXR1cm4gbWVkaWF0b3IuZGlzcGF0Y2hFdmVu
dCgmZGlzcGF0Y2hlcik7CiB9CiAKK05vZGUqIEV2ZW50RGlzcGF0Y2hlcjo6bm9kZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fbm9kZS5nZXQoKTsKK30KKwogc3RhdGljIEV2ZW50VGFyZ2V0KiBm
aW5kRWxlbWVudEluc3RhbmNlKE5vZGUqIHJlZmVyZW5jZU5vZGUpCiB7CiAjaWYgRU5BQkxFKFNW
RykKQEAgLTE0Niw4ICsxNTMsMTUgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hl
ZWxFdmVudChOb2RlKiBub2RlLCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQogCiAvLyBGSVhN
RTogT25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI5NjMgbGFu
ZHMsIHRoaXMgc2hvdWxkCiAvLyBiZSBncmVhdGx5IGltcHJvdmVkLiBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MDI1Lgotc3RhdGljIE5vZGUqIHB1bGxPdXRP
ZlNoYWRvdyhOb2RlKiBub2RlKQorUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZlbnREaXNwYXRj
aGVyOjphZGp1c3RSZWxhdGVkVGFyZ2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRU
YXJnZXQpCiB7CisgICAgaWYgKCFyZWxhdGVkVGFyZ2V0KQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIE5vZGUqIG5vZGUgPSByZWxhdGVkVGFyZ2V0LT50b05vZGUoKTsKKyAgICBpZiAoIW5vZGUp
CisgICAgICAgIHJldHVybiByZWxhdGVkVGFyZ2V0OworCiAgICAgTm9kZSogb3V0ZXJtb3N0U2hh
ZG93Qm91bmRhcnkgPSBub2RlOwogICAgIGZvciAoTm9kZSogbiA9IG5vZGU7IG47IG4gPSBuLT5w
YXJlbnRPckhvc3ROb2RlKCkpIHsKICAgICAgICAgaWYgKG4tPmlzU2hhZG93Um9vdCgpKQpAQCAt
MjkwLDQ3ICszMDQsNyBAQCBkb25lV2l0aERlZmF1bHQ6CiAKICAgICByZXR1cm4gIWV2ZW50LT5k
ZWZhdWx0UHJldmVudGVkKCk7CiB9Ci1ib29sIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hNb3Vz
ZUV2ZW50KE5vZGUqIG5vZGUsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLAotICAgIGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRU
YXJnZXRBcmcpCi17Ci0gICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwotICAg
IEFTU0VSVChldmVudC5ldmVudFR5cGUoKSA9PSBNb3VzZUV2ZW50TW92ZWQgfHwgZXZlbnQuYnV0
dG9uKCkgIT0gTm9CdXR0b24pOwotCi0gICAgaWYgKG5vZGUtPmRpc2FibGVkKCkpIC8vIERvbid0
IGV2ZW4gc2VuZCBET00gZXZlbnRzIGZvciBkaXNhYmxlZCBjb250cm9scy4uCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgaWYgKGV2ZW50VHlwZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsgLy8gU2hvdWxkbid0IGhhcHBlbi4KLQotICAgIEV2ZW50RGlzcGF0Y2hlciBkaXNw
YXRjaGVyKG5vZGUpOwotCi0gICAgLy8gQXR0ZW1wdGluZyB0byBkaXNwYXRjaCB3aXRoIGEgbm9u
LUV2ZW50VGFyZ2V0IHJlbGF0ZWRUYXJnZXQgY2F1c2VzIHRoZSByZWxhdGVkVGFyZ2V0IHRvIGJl
IHNpbGVudGx5IGlnbm9yZWQuCi0gICAgUmVmUHRyPE5vZGU+IHJlbGF0ZWRUYXJnZXQgPSBwdWxs
T3V0T2ZTaGFkb3cocmVsYXRlZFRhcmdldEFyZyk7Ci0KLSAgICBSZWZQdHI8TW91c2VFdmVudD4g
bW91c2VFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIG5vZGUtPmRvY3VtZW50
KCktPmRlZmF1bHRWaWV3KCksIGV2ZW50LCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXQpOwotCi0gICAg
Ym9vbCBzd2FsbG93RXZlbnQgPSBmYWxzZTsKLQotICAgIGRpc3BhdGNoZXIuZGlzcGF0Y2hFdmVu
dChtb3VzZUV2ZW50KTsKLSAgICBib29sIGRlZmF1bHRIYW5kbGVkID0gbW91c2VFdmVudC0+ZGVm
YXVsdEhhbmRsZWQoKTsKLSAgICBib29sIGRlZmF1bHRQcmV2ZW50ZWQgPSBtb3VzZUV2ZW50LT5k
ZWZhdWx0UHJldmVudGVkKCk7Ci0gICAgaWYgKGRlZmF1bHRIYW5kbGVkIHx8IGRlZmF1bHRQcmV2
ZW50ZWQpCi0gICAgICAgIHN3YWxsb3dFdmVudCA9IHRydWU7Ci0KLSAgICAvLyBTcGVjaWFsIGNh
c2U6IElmIGl0J3MgYSBkb3VibGUgY2xpY2sgZXZlbnQsIHdlIGFsc28gc2VuZCB0aGUgZGJsY2xp
Y2sgZXZlbnQuIFRoaXMgaXMgbm90IHBhcnQKLSAgICAvLyBvZiB0aGUgRE9NIHNwZWNzLCBidXQg
aXMgdXNlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbmRibGNsaWNrPSIiIGF0dHJpYnV0
ZS4gVGhpcyBpcyB0cmVhdGVkCi0gICAgLy8gYXMgYSBzZXBhcmF0ZSBldmVudCBpbiBvdGhlciBE
T00tY29tcGxpYW50IGJyb3dzZXJzIGxpa2UgRmlyZWZveCwgYW5kIHNvIHdlIGRvIHRoZSBzYW1l
LgotICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgJiYgZGV0YWls
ID09IDIpIHsKLSAgICAgICAgUmVmUHRyPEV2ZW50PiBkb3VibGVDbGlja0V2ZW50ID0gTW91c2VF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5kYmxjbGlja0V2ZW50LCBub2RlLT5kb2N1bWVudCgp
LT5kZWZhdWx0VmlldygpLCBldmVudCwgZGV0YWlsLCByZWxhdGVkVGFyZ2V0KTsKLSAgICAgICAg
aWYgKGRlZmF1bHRIYW5kbGVkKQotICAgICAgICAgICAgZG91YmxlQ2xpY2tFdmVudC0+c2V0RGVm
YXVsdEhhbmRsZWQoKTsKLSAgICAgICAgZGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KGRvdWJsZUNs
aWNrRXZlbnQpOwotICAgICAgICBpZiAoZG91YmxlQ2xpY2tFdmVudC0+ZGVmYXVsdEhhbmRsZWQo
KSB8fCBkb3VibGVDbGlja0V2ZW50LT5kZWZhdWx0UHJldmVudGVkKCkpCi0gICAgICAgICAgICBz
d2FsbG93RXZlbnQgPSB0cnVlOwotICAgIH0KIAotICAgIHJldHVybiBzd2FsbG93RXZlbnQ7Ci19
CiAKIGNvbnN0IEV2ZW50Q29udGV4dCogRXZlbnREaXNwYXRjaGVyOjp0b3BFdmVudENvbnRleHQo
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDE0YjQ0Nzc5ZWE0ZDUw
YWZmYjFkZjU4YTA4N2U0ZDJjNGNkNjhkMDguLjA3MzQ0MWQyOWM0ZGM2ZDUwNWJmYWI0OWJiMTE2
Y2FiYTQxNmRlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKQEAgLTUxLDEx
ICs1MSwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgZGlzcGF0Y2hFdmVudChOb2RlKiwg
Y29uc3QgRXZlbnREaXNwYXRjaE1lZGlhdG9yJik7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hT
Y29wZWRFdmVudChOb2RlKiwgUGFzc1JlZlB0cjxFdmVudD4pOwogCi0gICAgc3RhdGljIGJvb2wg
ZGlzcGF0Y2hNb3VzZUV2ZW50KE5vZGUqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgaW50IGNsaWNrQ291bnQgPSAwLCBOb2RlKiByZWxh
dGVkVGFyZ2V0ID0gMCk7CiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhO
b2RlKiwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50LCBib29sIHNlbmRNb3VzZUV2
ZW50cywgYm9vbCBzaG93UHJlc3NlZExvb2spOwogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoV2hl
ZWxFdmVudChOb2RlKiwgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKICAgICBib29sIGRpc3BhdGNo
RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGFk
anVzdFJlbGF0ZWRUYXJnZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4pOworICAgIE5vZGUqIG5v
ZGUoKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBFdmVudERpc3BhdGNoZXIoTm9kZSopOwogCkBA
IC02NCwxMCArNjYsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IEV2ZW50Q29udGV4dCogdG9wRXZl
bnRDb250ZXh0KCk7CiAgICAgYm9vbCBhbmNlc3RvcnNJbml0aWFsaXplZCgpIGNvbnN0OwogCi0g
ICAgYm9vbCBkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IGludCBidXR0b24sIGludCBkZXRhaWwsCi0gICAgICAgIGludCBwYWdlWCwgaW50IHBhZ2VZLCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwKLSAgICAgICAgYm9vbCBpc1NpbXVsYXRlZCwgTm9kZSog
cmVsYXRlZFRhcmdldEFyZywgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50KTsKLQog
ICAgIFZlY3RvcjxFdmVudENvbnRleHQ+IG1fYW5jZXN0b3JzOwogICAgIFJlZlB0cjxOb2RlPiBt
X25vZGU7CiAgICAgUmVmUHRyPEV2ZW50VGFyZ2V0PiBtX29yaWdpbmFsVGFyZ2V0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCmluZGV4IGZkMjE2YWI2Y2U2M2RlMGRlMDc4MTY5MGQ4ZTdhNTZl
OTFmNDBjYjYuLjMwYTViOWY5NjBjMDFlNmY0MDgwOWQwMmJmOTQwOGU2OWY3OGIxMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VFdmVudC5jcHAKQEAgLTIzLDIzICsyMywxNCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKIAorI2luY2x1ZGUgIkV2ZW50RGlzcGF0
Y2hlci5oIgorI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybU1vdXNlRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRy
PE1vdXNlRXZlbnQ+IE1vdXNlRXZlbnQ6OmNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQsIGludCBkZXRhaWwsIFBhc3NSZWZQdHI8Tm9kZT4gcmVsYXRlZFRhcmdldCkK
LXsKLSAgICBib29sIGlzQ2FuY2VsYWJsZSA9IGV2ZW50VHlwZSAhPSBldmVudE5hbWVzKCkubW91
c2Vtb3ZlRXZlbnQ7Ci0KLSAgICByZXR1cm4gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwg
dHJ1ZSwgaXNDYW5jZWxhYmxlLCB2aWV3LAotICAgICAgICBkZXRhaWwsIGV2ZW50Lmdsb2JhbFgo
KSwgZXZlbnQuZ2xvYmFsWSgpLCBldmVudC54KCksIGV2ZW50LnkoKSwKLSAgICAgICAgZXZlbnQu
Y3RybEtleSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQubWV0YUtl
eSgpLCBldmVudC5idXR0b24oKSwKLSAgICAgICAgcmVsYXRlZFRhcmdldCwgMCwgZmFsc2UpOwot
fQotCiBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KCkKICAgICA6IG1fYnV0dG9uKDApCiAgICAgLCBt
X2J1dHRvbkRvd24oZmFsc2UpCkBAIC0xNDksNCArMTQwLDU1IEBAIFNpbXVsYXRlZE1vdXNlRXZl
bnQ6OlNpbXVsYXRlZE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBh
c3NSZWZQCiAgICAgc2V0VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudCk7CiB9CiAKK01v
dXNlRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcihjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQsIGludCBkZXRhaWwsIFBhc3NSZWZQdHI8
Tm9kZT4gcmVsYXRlZFRhcmdldCkKKyAgICA6IEV2ZW50RGlzcGF0Y2hNZWRpYXRvcigpCit7Cisg
ICAgQVNTRVJUKGV2ZW50LmV2ZW50VHlwZSgpID09IE1vdXNlRXZlbnRNb3ZlZCB8fCBldmVudC5i
dXR0b24oKSAhPSBOb0J1dHRvbik7CisKKyAgICBib29sIGlzQ2FuY2VsYWJsZSA9IGV2ZW50VHlw
ZSAhPSBldmVudE5hbWVzKCkubW91c2Vtb3ZlRXZlbnQ7CisKKyAgICBzZXRFdmVudChNb3VzZUV2
ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBpc0NhbmNlbGFibGUsIHZpZXcsCisgICAgICAg
IGRldGFpbCwgZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCksIGV2ZW50LngoKSwgZXZl
bnQueSgpLAorICAgICAgICBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5z
aGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCksIGV2ZW50LmJ1dHRvbigpLAorICAgICAgICByZWxh
dGVkVGFyZ2V0LCAwLCBmYWxzZSkpOworfQorCitNb3VzZUV2ZW50KiBNb3VzZUV2ZW50RGlzcGF0
Y2hNZWRpYXRvcjo6ZXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxNb3Vz
ZUV2ZW50Kj4oRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVudCgpKTsKK30KKworYm9vbCBNb3Vz
ZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRp
c3BhdGNoZXIpIGNvbnN0Cit7CisgICAgaWYgKGRpc3BhdGNoZXItPm5vZGUoKS0+ZGlzYWJsZWQo
KSkgLy8gRG9uJ3QgZXZlbiBzZW5kIERPTSBldmVudHMgZm9yIGRpc2FibGVkIGNvbnRyb2xzLi4K
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoZXZlbnQoKS0+dHlwZSgpLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBTaG91bGRuJ3QgaGFwcGVuLgorCisgICAgUmVm
UHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0ID0gZGlzcGF0Y2hlci0+YWRqdXN0UmVsYXRl
ZFRhcmdldChldmVudCgpLT5yZWxhdGVkVGFyZ2V0KCkpOworICAgIGV2ZW50KCktPnNldFJlbGF0
ZWRUYXJnZXQocmVsYXRlZFRhcmdldCk7CisKKyAgICBkaXNwYXRjaGVyLT5kaXNwYXRjaEV2ZW50
KGV2ZW50KCkpOworICAgIGJvb2wgc3dhbGxvd0V2ZW50ID0gZXZlbnQoKS0+ZGVmYXVsdEhhbmRs
ZWQoKSB8fCBldmVudCgpLT5kZWZhdWx0UHJldmVudGVkKCk7CisKKyAgICAvLyBTcGVjaWFsIGNh
c2U6IElmIGl0J3MgYSBkb3VibGUgY2xpY2sgZXZlbnQsIHdlIGFsc28gc2VuZCB0aGUgZGJsY2xp
Y2sgZXZlbnQuIFRoaXMgaXMgbm90IHBhcnQKKyAgICAvLyBvZiB0aGUgRE9NIHNwZWNzLCBidXQg
aXMgdXNlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbmRibGNsaWNrPSIiIGF0dHJpYnV0
ZS4gVGhpcyBpcyB0cmVhdGVkCisgICAgLy8gYXMgYSBzZXBhcmF0ZSBldmVudCBpbiBvdGhlciBE
T00tY29tcGxpYW50IGJyb3dzZXJzIGxpa2UgRmlyZWZveCwgYW5kIHNvIHdlIGRvIHRoZSBzYW1l
LgorICAgIGlmIChldmVudCgpLT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQgJiYg
ZXZlbnQoKS0+ZGV0YWlsKCkgPT0gMikgeworICAgICAgICBSZWZQdHI8TW91c2VFdmVudD4gZG91
YmxlQ2xpY2tFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZSgpOworICAgICAgICBkb3VibGVDbGlj
a0V2ZW50LT5pbml0TW91c2VFdmVudChldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCwgZXZlbnQo
KS0+YnViYmxlcygpLCBldmVudCgpLT5jYW5jZWxhYmxlKCksIGV2ZW50KCktPnZpZXcoKSwKKyAg
ICAgICAgICAgICAgICBldmVudCgpLT5kZXRhaWwoKSwgZXZlbnQoKS0+c2NyZWVuWCgpLCBldmVu
dCgpLT5zY3JlZW5ZKCksIGV2ZW50KCktPmNsaWVudFgoKSwgZXZlbnQoKS0+Y2xpZW50WSgpLAor
ICAgICAgICAgICAgICAgIGV2ZW50KCktPmN0cmxLZXkoKSwgZXZlbnQoKS0+YWx0S2V5KCksIGV2
ZW50KCktPnNoaWZ0S2V5KCksIGV2ZW50KCktPm1ldGFLZXkoKSwKKyAgICAgICAgICAgICAgICBl
dmVudCgpLT5idXR0b24oKSwgcmVsYXRlZFRhcmdldCk7CisgICAgICAgIGlmIChldmVudCgpLT5k
ZWZhdWx0SGFuZGxlZCgpKQorICAgICAgICAgICAgZG91YmxlQ2xpY2tFdmVudC0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKKyAgICAgICAgZGlzcGF0Y2hlci0+ZGlzcGF0Y2hFdmVudChkb3VibGVDbGlj
a0V2ZW50KTsKKyAgICAgICAgaWYgKGRvdWJsZUNsaWNrRXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkg
fHwgZG91YmxlQ2xpY2tFdmVudC0+ZGVmYXVsdFByZXZlbnRlZCgpKQorICAgICAgICAgICAgc3dh
bGxvd0V2ZW50ID0gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gc3dhbGxvd0V2ZW50OworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TW91c2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAppbmRleCA4ZTJi
Y2EzN2Y2YjM5ZjQwMDg3NzBmZjhhZDA3NjkzYjQ5YzlhMjdjLi4wZjQ2M2RmMDdiMGVjYTQ5OThm
OWY1YmVhOWVlNDJkMDRlNzk2ZTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmgKQEAgLTI5LDYg
KzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFdmVudERpc3BhdGNoZXI7
CiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAKICAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBM
ZXZlbCAyCkBAIC00Niw4ICs0Nyw2IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKICAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTW91c2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIHZpZXcsIGRldGFpbCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAog
ICAgICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGJ1dHRv
biwgcmVsYXRlZFRhcmdldCwgY2xpcGJvYXJkLCBpc1NpbXVsYXRlZCkpOwogICAgICAgICB9Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1vdXNlRXZlbnQ+IGNyZWF0ZShjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmLCBpbnQgZGV0YWlsLCBQYXNzUmVmUHRyPE5vZGU+IHJlbGF0ZWRUYXJnZXQp
OwotCiAgICAgICAgIHZpcnR1YWwgfk1vdXNlRXZlbnQoKTsKIAogICAgICAgICB2b2lkIGluaXRN
b3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wg
Y2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LApAQCAtNjAsNiArNTksNyBAQCBj
bGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRvbigp
IGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uOyB9CiAgICAgICAgIGJvb2wgYnV0dG9uRG93bigpIGNv
bnN0IHsgcmV0dXJuIG1fYnV0dG9uRG93bjsgfQogICAgICAgICBFdmVudFRhcmdldCogcmVsYXRl
ZFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVsYXRlZFRhcmdldC5nZXQoKTsgfQorICAgICAg
ICB2b2lkIHNldFJlbGF0ZWRUYXJnZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRh
cmdldCkgeyBtX3JlbGF0ZWRUYXJnZXQgPSByZWxhdGVkVGFyZ2V0OyB9CiAKICAgICAgICAgQ2xp
cGJvYXJkKiBjbGlwYm9hcmQoKSBjb25zdCB7IHJldHVybiBtX2NsaXBib2FyZC5nZXQoKTsgfQog
CkBAIC05Niw2ICs5NiwxNiBAQCBwcml2YXRlOgogICAgIFNpbXVsYXRlZE1vdXNlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwgUGFz
c1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50KTsKIH07CiAKK2NsYXNzIE1vdXNlRXZlbnRE
aXNwYXRjaE1lZGlhdG9yIDogcHVibGljIEV2ZW50RGlzcGF0Y2hNZWRpYXRvciB7CitwdWJsaWM6
CisgICAgTW91c2VFdmVudERpc3BhdGNoTWVkaWF0b3IoY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiwgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxOb2RlPiByZWxhdGVkVGFyZ2V0KTsKKworcHJpdmF0
ZToKKyAgICBNb3VzZUV2ZW50KiBldmVudCgpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGRp
c3BhdGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKikgY29uc3Q7Cit9OworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBNb3VzZUV2ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAx
MTg3ZDcyZTI5MjZhNjBjZGZhN2VlYTRhYTM0YWEyYzFhMjU4MjJjLi5lM2NiMWI5ZDNkZjdhZGZk
NzhiYzlkMzBlN2RmYjUzYWI0ODhmMWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yNjUxLDcgKzI2
NTEsNyBAQCBib29sIE5vZGU6OmRpc3BhdGNoS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50JiBldmVudCkKIGJvb2wgTm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLAogICAg
IGludCBkZXRhaWwsIE5vZGUqIHJlbGF0ZWRUYXJnZXQpCiB7Ci0gICAgcmV0dXJuIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hNb3VzZUV2ZW50KHRoaXMsIGV2ZW50LCBldmVudFR5cGUsIGRldGFp
bCwgcmVsYXRlZFRhcmdldCk7CisgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hF
dmVudCh0aGlzLCBNb3VzZUV2ZW50RGlzcGF0Y2hNZWRpYXRvcihldmVudFR5cGUsIGRvY3VtZW50
KCktPmRlZmF1bHRWaWV3KCksIGV2ZW50LCBkZXRhaWwsIHJlbGF0ZWRUYXJnZXQpKTsKIH0KIAog
dm9pZCBOb2RlOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
LCBib29sIHNlbmRNb3VzZUV2ZW50cywgYm9vbCBzaG93UHJlc3NlZExvb2spCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>