<?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>57642</bug_id>
          
          <creation_ts>2011-04-01 10:00:52 -0700</creation_ts>
          <short_desc>Move WheelEvent-dispatching logic into WheelEventDispatchMediator.</short_desc>
          <delta_ts>2011-04-08 08:48:32 -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>57639</dependson>
          <blocked>55515</blocked>
    
    <blocked>57655</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dimitri Glazkov (Google)">dglazkov</reporter>
          <assigned_to name="Dimitri Glazkov (Google)">dglazkov</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>377880</commentid>
    <comment_count>0</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-01 10:00:52 -0700</bug_when>
    <thetext>Move WheelEvent-dispatching logic into WheelEventDispatchMediator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377995</commentid>
    <comment_count>1</comment_count>
      <attachid>87901</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-01 12:53:13 -0700</bug_when>
    <thetext>Created attachment 87901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379724</commentid>
    <comment_count>2</comment_count>
      <attachid>88274</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-05 10:38:21 -0700</bug_when>
    <thetext>Created attachment 88274
Ready to bake on EWSs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380493</commentid>
    <comment_count>3</comment_count>
      <attachid>88274</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 09:40:44 -0700</bug_when>
    <thetext>Comment on attachment 88274
Ready to bake on EWSs.

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

I guess you&apos;ve not written the ChangelOg yet?

&gt; Source/WebCore/dom/Event.h:204
&gt; +    EventDispatchMediator();

What does this class mediate between?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380659</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-06 11:34:28 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 88274 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88274&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; I guess you&apos;ve not written the ChangelOg yet?

No, I just forgot to replace this line :)

&gt; 
&gt; &gt; Source/WebCore/dom/Event.h:204
&gt; &gt; +    EventDispatchMediator();
&gt; 
&gt; What does this class mediate between?

It mediates event dispatch. This class knows specifics of firing events, helping EventDispatcher do the right thing without having to know how.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380669</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-06 11:41:30 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 88274 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=88274&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; &gt; +        No new tests. (OOPS!)
&gt; &gt; 
&gt; &gt; I guess you&apos;ve not written the ChangelOg yet?
&gt; 
&gt; No, I just forgot to replace this line :)
&gt; 
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/Event.h:204
&gt; &gt; &gt; +    EventDispatchMediator();
&gt; &gt; 
&gt; &gt; What does this class mediate between?
&gt; 
&gt; It mediates event dispatch. This class knows specifics of firing events, helping EventDispatcher do the right thing without having to know how.

Believe it or not, the whole EventDispatchMediator was born out of your comment: you said the EventDispatcher knows too much :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380983</commentid>
    <comment_count>6</comment_count>
      <attachid>88274</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-06 17:15:30 -0700</bug_when>
    <thetext>Comment on attachment 88274
Ready to bake on EWSs.

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

&gt; Source/WebCore/dom/Node.cpp:2665
&gt; -void Node::dispatchWheelEvent(PlatformWheelEvent&amp; e)
&gt; +bool Node::dispatchWheelEvent(PlatformWheelEvent&amp; e)
&gt;  {
&gt; -    EventDispatcher::dispatchWheelEvent(this, e);
&gt; +    return EventDispatcher::dispatchEvent(this, WheelEventDispatchMediator(e, document()-&gt;defaultView()));
&gt;  }

As long as you are touching this, I would prefer the name “event” to “e”.

&gt; Source/WebCore/dom/Node.h:536
&gt; -    void dispatchWheelEvent(PlatformWheelEvent&amp;);
&gt; +    bool dispatchWheelEvent(PlatformWheelEvent&amp;);

Is this really a good change?

The DOM establishes a pattern where events themselves know if they have been handled. I think this is clearer than a boolean return value. It’s hard to name a function so you can understand what its boolean return value means.

Worse, we have functions that tell whether an event is handled both with a return value and with state in the event too! Although this is not one of them.

If you really ant to change this then I think it should take a const&amp;. The reason this took a non-const before was so it could record that the event was handled.

&gt; Source/WebCore/dom/WheelEvent.cpp:104
&gt; +    : EventDispatchMediator()

Do you need to say this explicitly? I am surprised if so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381086</commentid>
    <comment_count>7</comment_count>
      <attachid>88274</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-06 20:22:31 -0700</bug_when>
    <thetext>Comment on attachment 88274
Ready to bake on EWSs.

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

Darin, thank you for review. Will upload new patch shortly.

&gt;&gt; Source/WebCore/dom/Node.cpp:2665
&gt;&gt;  }
&gt; 
&gt; As long as you are touching this, I would prefer the name “event” to “e”.

Will change.

&gt;&gt; Source/WebCore/dom/Node.h:536
&gt;&gt; +    bool dispatchWheelEvent(PlatformWheelEvent&amp;);
&gt; 
&gt; Is this really a good change?
&gt; 
&gt; The DOM establishes a pattern where events themselves know if they have been handled. I think this is clearer than a boolean return value. It’s hard to name a function so you can understand what its boolean return value means.
&gt; 
&gt; Worse, we have functions that tell whether an event is handled both with a return value and with state in the event too! Although this is not one of them.
&gt; 
&gt; If you really ant to change this then I think it should take a const&amp;. The reason this took a non-const before was so it could record that the event was handled.

This just brings it in line with other similar events. Both dispatchEvent and dispatchKeyEvent return false when they weren&apos;t handled. I definitely overlooked the non-const ref. Will change that.

&gt;&gt; Source/WebCore/dom/WheelEvent.cpp:104
&gt;&gt; +    : EventDispatchMediator()
&gt; 
&gt; Do you need to say this explicitly? I am surprised if so.

No. I just got too mechanical in writing the code. I&apos;ll remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381114</commentid>
    <comment_count>8</comment_count>
      <attachid>88566</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-06 21:10:51 -0700</bug_when>
    <thetext>Created attachment 88566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381762</commentid>
    <comment_count>9</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-07 15:06:06 -0700</bug_when>
    <thetext>&lt;3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>382259</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-04-08 08:48:32 -0700</bug_when>
    <thetext>Committed r83298: &lt;http://trac.webkit.org/changeset/83298&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87901</attachid>
            <date>2011-04-01 12:53:13 -0700</date>
            <delta_ts>2011-04-05 10:38:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57642-20110401125311.patch</filename>
            <type>text/plain</type>
            <size>8463</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI2ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMGExMGE4NWZjNDQ2Njk4
ZGYwOTY2ZTU0NGJkZDViMGIzNzE1MjgyLi4yNjA3NjMxMDg4ZTNmN2FjY2Y4MjJkYTRhYTY1YzE3
OGFiYWQ1N2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMDQtMDEgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFdoZWVsRXZlbnQtZGlzcGF0Y2hpbmcg
bG9naWMgaW50byBXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjQyCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDogUmVtb3Zl
ZCBkaXNwYXRjaFdoZWVsRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOiBV
cGRhdGVkIGRlY2xzLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmRpc3BhdGNoV2hlZWxFdmVudCk6IENoYW5nZWQgdG8gdXNlIHRoZSBtZWRpYXRvciBh
bmQKKyAgICAgICAgICAgIHJldHVybiBhIGJvb2wsIGxpa2Ugb3RoZXIgZGlzcGF0Y2ggZXZlbnQg
ZnVuY3Rpb25zLgorICAgICAgICAqIGRvbS9Ob2RlLmg6IENoYW5nZWQgZGVjbC4KKyAgICAgICAg
KiBkb20vV2hlZWxFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpncmFudWxhcml0eSk6IE1v
dmVkIGZyb20gRXZlbnREaXNwYXRjaGVyLgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERp
c3BhdGNoTWVkaWF0b3I6OldoZWVsRXZlbnREaXNhdGNoTWVkaWF0b3IpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVudCk6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZl
bnQpOiBBZGRlZC4KKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5oOiBVcGRhdGVkIGRlY2xzLgor
ICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6IENoYW5nZWQgdG8gcmVjZWl2ZSBhbmQgcmVhY3QK
KyAgICAgICAgICAgIHRvIHRoZSByZXR1cm4gdmFsdWUuCisKIDIwMTEtMDMtMzEgIERpbWl0cmkg
R2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3Bh
dGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXgg
ZDFlNGQ3MmU3NTQwOWY1NDAzYzcwYmNlOWY0NGI0ZjdmZDk0NDFhOC4uNThjNjU2OWRmNmM3NWZi
ZTgzN2Y0Y2MxN2JmNWQyNzRkYThlNWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0
Y2hlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgotI2lu
Y2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUu
aCIKIAogI2lmIEVOQUJMRShTVkcpCkBAIC00NCw3ICs0Myw2IEBACiAKICNpbmNsdWRlICJVSUV2
ZW50LmgiCiAjaW5jbHVkZSAiVUlFdmVudFdpdGhLZXlTdGF0ZS5oIgotI2luY2x1ZGUgIldoZWVs
RXZlbnQuaCIKICNpbmNsdWRlICJXaW5kb3dFdmVudENvbnRleHQuaCIKIAogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KQEAgLTEyOSwyOCArMTI3LDYgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoU2ltdWxhdGVkQ2xpY2soTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXIK
ICAgICBnTm9kZXNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcy0+cmVtb3ZlKG5vZGUpOwogfQog
Ci1pbmxpbmUgc3RhdGljIFdoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCi17Ci0gICAgcmV0dXJuIGV2ZW50LmdyYW51bGFy
aXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCA/IFdoZWVsRXZlbnQ6OlBhZ2UgOiBXaGVl
bEV2ZW50OjpQaXhlbDsKLX0KLQotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxF
dmVudChOb2RlKiBub2RlLCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQotewotICAgIEFTU0VS
VCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKLSAgICBpZiAoIShldmVudC5kZWx0YVgoKSB8
fCBldmVudC5kZWx0YVkoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEV2ZW50RGlzcGF0Y2hl
ciBkaXNwYXRjaGVyKG5vZGUpOwotCi0gICAgUmVmUHRyPFdoZWVsRXZlbnQ+IHdoZWVsRXZlbnQg
PSBXaGVlbEV2ZW50OjpjcmVhdGUoZXZlbnQud2hlZWxUaWNrc1goKSwgZXZlbnQud2hlZWxUaWNr
c1koKSwgZXZlbnQuZGVsdGFYKCksIGV2ZW50LmRlbHRhWSgpLCBncmFudWxhcml0eShldmVudCks
Ci0gICAgICAgIG5vZGUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIGV2ZW50Lmdsb2JhbFgo
KSwgZXZlbnQuZ2xvYmFsWSgpLCBldmVudC54KCksIGV2ZW50LnkoKSwKLSAgICAgICAgZXZlbnQu
Y3RybEtleSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQubWV0YUtl
eSgpKTsKLQotICAgIGlmICghZGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KHdoZWVsRXZlbnQpIHx8
IHdoZWVsRXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCi0gICAgICAgIGV2ZW50LmFjY2VwdCgpOwot
Ci19Ci0KIC8vIEZJWE1FOiBPbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01Mjk2MyBsYW5kcywgdGhpcyBzaG91bGQKIC8vIGJlIGdyZWF0bHkgaW1wcm92ZWQuIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQwMjUuCiBQYXNzUmVm
UHRyPEV2ZW50VGFyZ2V0PiBFdmVudERpc3BhdGNoZXI6OmFkanVzdFJlbGF0ZWRUYXJnZXQoUGFz
c1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERp
c3BhdGNoZXIuaAppbmRleCAwNzM0NDFkMjljNGRjNmQ1MDViZmFiNDliYjExNmNhYmE0MTZkZWZk
Li40MDIxZmFhNTFjYTUzNmZmMjQwOGQxNjg4MmIyNWY3MjkwZjZhZTk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC01Miw3ICs1Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBkaXNwYXRjaFNjb3BlZEV2ZW50KE5vZGUqLCBQYXNzUmVmUHRyPEV2ZW50Pik7CiAK
ICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKE5vZGUqLCBQYXNzUmVmUHRy
PEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQsIGJvb2wgc2VuZE1vdXNlRXZlbnRzLCBib29sIHNob3dQ
cmVzc2VkTG9vayk7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KE5vZGUqLCBQ
bGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRy
PEV2ZW50Pik7CiAgICAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gYWRqdXN0UmVsYXRlZFRhcmdl
dChQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMDExMmI1NzYz
ZGJhNjFkZTc1NzAxOThiY2E2NTQ0MTljY2M2ZGYyYi4uZWU2OWI5YzU3ZGM4NDU3ZWRmNGZiY2Iw
MjY1NDRiNDU5NTFkNThhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjY1Myw5ICsyNjUzLDkgQEAg
dm9pZCBOb2RlOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
LCBib29sIHNlbmRNb3VzZUV2ZW50cywKICAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2lt
dWxhdGVkQ2xpY2sodGhpcywgZXZlbnQsIHNlbmRNb3VzZUV2ZW50cywgc2hvd1ByZXNzZWRMb29r
KTsKIH0KIAotdm9pZCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50
JiBlKQorYm9vbCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiBl
KQogewotICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KHRoaXMsIGUpOwor
ICAgIHJldHVybiBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQodGhpcywgV2hlZWxFdmVu
dERpc3BhdGNoTWVkaWF0b3IoZSwgZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSkpOwogfQogCiB2
b2lkIE5vZGU6OmRpc3BhdGNoRm9jdXNFdmVudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAxMjlhNDkzZTg1
NTljNTA1YmFiZjdhZWJlZDQwMDk0OTI2ZWEwODdjLi5kYjkzOWFkYzJhMTQ2MTIxMjNkZmIxZTE0
YzUwNjE5MmFiMzdhYjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUzNSw3ICs1MzUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KCk7CiAgICAgdm9pZCBkaXNw
YXRjaFVJRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGludCBkZXRhaWwsIFBh
c3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVudCk7CiAgICAgYm9vbCBkaXNwYXRjaEtleUV2
ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYpOwotICAgIHZvaWQgZGlzcGF0Y2hXaGVl
bEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYpOworICAgIGJvb2wgZGlzcGF0Y2hXaGVlbEV2ZW50
KFBsYXRmb3JtV2hlZWxFdmVudCYpOwogICAgIGJvb2wgZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQg
Y2xpY2tDb3VudCA9IDAsIE5vZGUqIHJlbGF0ZWRUYXJnZXQgPSAwKTsKICAgICB2b2lkIGRpc3Bh
dGNoU2ltdWxhdGVkQ2xpY2soUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50LCBib29s
IHNlbmRNb3VzZUV2ZW50cyA9IGZhbHNlLCBib29sIHNob3dQcmVzc2VkTG9vayA9IHRydWUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKaW5kZXggMDk4MWE1NzE3NmI2ODcwMmRiMDcyMGJj
YmI0NWM4NjJlZGJhMWNmZC4uMTk5OWI0ZjllZmVkNmZmYmYyZDA4ZTU0NDI2N2UyNzEzYTkxMjc5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcApAQCAtMjMsNyArMjMsMTAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXaGVlbEV2ZW50LmgiCiAKKyNpbmNsdWRlICJFdmVu
dERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1XaGVlbEV2ZW50LmgiCisKICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC05Miw0ICs5NSwzMyBAQCBib29sIFdoZWVsRXZlbnQ6OmlzV2hlZWxF
dmVudCgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2lubGluZSBzdGF0aWMgV2hlZWxF
dmVudDo6R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBl
dmVudCkKK3sKKyAgICByZXR1cm4gZXZlbnQuZ3JhbnVsYXJpdHkoKSA9PSBTY3JvbGxCeVBhZ2VX
aGVlbEV2ZW50ID8gV2hlZWxFdmVudDo6UGFnZSA6IFdoZWVsRXZlbnQ6OlBpeGVsOworfQorCitX
aGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3IoUGxh
dGZvcm1XaGVlbEV2ZW50JiBldmVudCwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IHZpZXcpCisg
ICAgOiBFdmVudERpc3BhdGNoTWVkaWF0b3IoKQoreworICAgIGlmICghKGV2ZW50LmRlbHRhWCgp
IHx8IGV2ZW50LmRlbHRhWSgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2V0RXZlbnQoV2hl
ZWxFdmVudDo6Y3JlYXRlKGV2ZW50LndoZWVsVGlja3NYKCksIGV2ZW50LndoZWVsVGlja3NZKCks
IGV2ZW50LmRlbHRhWCgpLCBldmVudC5kZWx0YVkoKSwgZ3JhbnVsYXJpdHkoZXZlbnQpLAorICAg
ICAgICB2aWV3LCBldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSwgZXZlbnQueCgpLCBl
dmVudC55KCksIGV2ZW50LmN0cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5
KCksIGV2ZW50Lm1ldGFLZXkoKSkpOworCit9CisKK1doZWVsRXZlbnQqIFdoZWVsRXZlbnREaXNw
YXRjaE1lZGlhdG9yOjpldmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdo
ZWVsRXZlbnQqPihFdmVudERpc3BhdGNoTWVkaWF0b3I6OmV2ZW50KCkpOworfQorCitib29sIFdo
ZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciog
ZGlzcGF0Y2hlcikgY29uc3QKK3sKKyAgICBpZiAoIWV2ZW50KCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChk
aXNwYXRjaGVyKSAmJiAhZXZlbnQoKS0+ZGVmYXVsdEhhbmRsZWQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKaW5kZXggYjA4NWU4NmVlYmRkZDky
OWVkNTg4YzVhNDI2MTEwMzdjZjdmMDMxMC4uNDZiMmU5MjQzMDE0MDA1MDE3OTUzODVmNGE0OGNi
ODFmOGYxOTdiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCkBAIC04Miw2ICs4MiwxNSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7CiAg
ICAgfTsKIAorY2xhc3MgV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3IgOiBwdWJsaWMgRXZlbnRE
aXNwYXRjaE1lZGlhdG9yIHsKK3B1YmxpYzoKKyAgICBXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRv
cihQbGF0Zm9ybVdoZWVsRXZlbnQmLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4pOworCitwcml2
YXRlOgorICAgIFdoZWVsRXZlbnQqIGV2ZW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGRp
c3BhdGNoRXZlbnQoRXZlbnREaXNwYXRjaGVyKikgY29uc3Q7Cit9OworCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBXaGVlbEV2ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRI
YW5kbGVyLmNwcAppbmRleCBiMWY2OWQ1NDY1YWJlYjM3YWZiYmM3ZmE0YmI1OWM2ODY1YTkwYzY2
Li4zMGQ0MWZhZjFiMzM2NTU2ZjI4Yjk2Y2E0MGI5NjE5ZWM5MmFiOWMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0yMDc1LDkgKzIwNzUsMTAgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgICAgICB9
CiAKICAgICAgICAgbm9kZSA9IG5vZGUtPnNoYWRvd0FuY2VzdG9yTm9kZSgpOwotICAgICAgICBu
b2RlLT5kaXNwYXRjaFdoZWVsRXZlbnQoZSk7Ci0gICAgICAgIGlmIChlLmlzQWNjZXB0ZWQoKSkK
KyAgICAgICAgaWYgKCFub2RlLT5kaXNwYXRjaFdoZWVsRXZlbnQoZSkpIHsKKyAgICAgICAgICAg
IGUuYWNjZXB0KCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGlmIChlLmlzQWNjZXB0ZWQoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88274</attachid>
            <date>2011-04-05 10:38:21 -0700</date>
            <delta_ts>2011-04-06 21:10:49 -0700</delta_ts>
            <desc>Ready to bake on EWSs.</desc>
            <filename>bug-57642-20110405103820.patch</filename>
            <type>text/plain</type>
            <size>10123</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5NDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMGFhMTg4YzNmYThkNWRh
NTE0NzExYzZlNmM0MGJmOTZlY2M3MThiLi45NGY5NTU5ODJmNDg5MzAwMmZhNzcyZTJjNTU4NjU3
YTEwYmMxYzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTEtMDQtMDUgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFdoZWVsRXZlbnQtZGlzcGF0Y2hpbmcg
bG9naWMgaW50byBXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjQyCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAqIGRvbS9F
dmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpFdmVudERp
c3BhdGNoTWVkaWF0b3IpOiBBZGRlZCBkZWZhdWx0CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci4K
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZXZlbnQpOiBJbmxpbmVk
LgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpzZXRFdmVudCk6IEFk
ZGVkLgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOiBSZW1vdmVkIGRpc3BhdGNo
V2hlZWxFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmg6IFVwZGF0ZWQgZGVj
bHMuCisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlz
cGF0Y2hXaGVlbEV2ZW50KTogQ2hhbmdlZCB0byB1c2UgdGhlIG1lZGlhdG9yIGFuZAorICAgICAg
ICAgICAgcmV0dXJuIGEgYm9vbCwgbGlrZSBvdGhlciBkaXNwYXRjaCBldmVudCBmdW5jdGlvbnMu
CisgICAgICAgICogZG9tL05vZGUuaDogQ2hhbmdlZCBkZWNsLgorICAgICAgICAqIGRvbS9XaGVl
bEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdyYW51bGFyaXR5KTogTW92ZWQgZnJvbSBF
dmVudERpc3BhdGNoZXIuCisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50RGlzcGF0Y2hNZWRp
YXRvcjo6V2hlZWxFdmVudERpc2F0Y2hNZWRpYXRvcik6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6OmV2ZW50KTogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudCk6IEFkZGVk
LgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50Lmg6IFVwZGF0ZWQgZGVjbHMuCisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpo
YW5kbGVXaGVlbEV2ZW50KTogQ2hhbmdlZCB0byByZWNlaXZlIGFuZCByZWFjdAorICAgICAgICAg
ICAgdG8gdGhlIHJldHVybiB2YWx1ZS4KKworMjAxMS0wNC0wNSAgRGltaXRyaSBHbGF6a292ICA8
ZGdsYXprb3ZAY2hyb21pdW0ub3JnPgorCiAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIu
CiAKICAgICAgICAgTW92ZSBNb3VzZUV2ZW50LWRpc3BhdGNoaW5nIGxvZ2ljIGludG8gTW91c2VF
dmVudERpc3BhdGNoTWVkaWF0b3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcAppbmRleCBlZjdmZjQ4MjYzNTZl
NmY0ZDI2MDFiYWRkYjljM2M2OWQ1NDA5YTIwLi44ZWU3ZDJlOThiMmIwNDI2YzAyMjg0ODBhNTBl
YmNjYTk5NDNmOWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKQEAgLTMwOCw5ICszMDgsNCBAQCBib29s
IEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIqIGRp
c3BhdGNoZXIpIGNvbnN0CiAgICAgcmV0dXJuIGRpc3BhdGNoZXItPmRpc3BhdGNoRXZlbnQobV9l
dmVudC5nZXQoKSk7CiB9CiAKLUV2ZW50KiBFdmVudERpc3BhdGNoTWVkaWF0b3I6OmV2ZW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9ldmVudC5nZXQoKTsKLX0KLQogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnQuaAppbmRleCAyYWFmNThmZTg4M2VlN2ViMTJhN2VjNjBiMWVmMzI1
ZTkzN2NiMTkzLi5kMGU2YTc3YTM3NmZlZjU4YjM3ZTdlMmIwYmMzNzZhODkwNTgxYzM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnQuaApAQCAtMTk5LDExICsxOTksMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkV2
ZW50RGlzcGF0Y2hNZWRpYXRvcigpOwogCiAgICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQo
RXZlbnREaXNwYXRjaGVyKikgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBFdmVudERpc3BhdGNo
TWVkaWF0b3IoKTsKKwogICAgIEV2ZW50KiBldmVudCgpIGNvbnN0OworICAgIHZvaWQgc2V0RXZl
bnQoUGFzc1JlZlB0cjxFdmVudD4pOworCiBwcml2YXRlOgogICAgIFJlZlB0cjxFdmVudD4gbV9l
dmVudDsKIH07CiAKK2lubGluZSBFdmVudERpc3BhdGNoTWVkaWF0b3I6OkV2ZW50RGlzcGF0Y2hN
ZWRpYXRvcigpCit7Cit9CisKK2lubGluZSBFdmVudCogRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpl
dmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXZlbnQuZ2V0KCk7Cit9CisKK2lubGluZSB2
b2lkIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6c2V0RXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCit7CisgICAgbV9ldmVudCA9IGV2ZW50OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKICNlbmRpZiAvLyBFdmVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3Bw
CmluZGV4IDhmNWNmOTE0Y2YxYjI2MGRmN2FiOWM4NjhlYmI1YjNjNTAyZDYyNWYuLmE5NjExZTdl
OTEwYWIzODg5ZjVhYzU0NzNlMGVlNWU3YTQ2ZjA0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5vZGUu
aCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJTY29wZWRFdmVu
dFF1ZXVlLmgiCiAKICNpZiBFTkFCTEUoU1ZHKQpAQCAtNDQsNyArNDMsNiBAQAogCiAjaW5jbHVk
ZSAiVUlFdmVudC5oIgogI2luY2x1ZGUgIlVJRXZlbnRXaXRoS2V5U3RhdGUuaCIKLSNpbmNsdWRl
ICJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiV2luZG93RXZlbnRDb250ZXh0LmgiCiAKICNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0xMjQsMjggKzEyMiw2IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKE5vZGUqIG5vZGUsIFBhc3NSZWZQdHI8RXZlbnQ+
IHVuZGVyCiAgICAgZ05vZGVzRGlzcGF0Y2hpbmdTaW11bGF0ZWRDbGlja3MtPnJlbW92ZShub2Rl
KTsKIH0KIAotaW5saW5lIHN0YXRpYyBXaGVlbEV2ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0
eShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQotewotICAgIHJldHVybiBldmVudC5n
cmFudWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQgPyBXaGVlbEV2ZW50OjpQYWdl
IDogV2hlZWxFdmVudDo6UGl4ZWw7Ci19Ci0KLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aFdoZWVsRXZlbnQoTm9kZSogbm9kZSwgUGxhdGZvcm1XaGVlbEV2ZW50JiBldmVudCkKLXsKLSAg
ICBBU1NFUlQoIWV2ZW50RGlzcGF0Y2hGb3JiaWRkZW4oKSk7Ci0gICAgaWYgKCEoZXZlbnQuZGVs
dGFYKCkgfHwgZXZlbnQuZGVsdGFZKCkpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBFdmVudERp
c3BhdGNoZXIgZGlzcGF0Y2hlcihub2RlKTsKLQotICAgIFJlZlB0cjxXaGVlbEV2ZW50PiB3aGVl
bEV2ZW50ID0gV2hlZWxFdmVudDo6Y3JlYXRlKGV2ZW50LndoZWVsVGlja3NYKCksIGV2ZW50Lndo
ZWVsVGlja3NZKCksIGV2ZW50LmRlbHRhWCgpLCBldmVudC5kZWx0YVkoKSwgZ3JhbnVsYXJpdHko
ZXZlbnQpLAotICAgICAgICBub2RlLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCBldmVudC5n
bG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSwgZXZlbnQueCgpLCBldmVudC55KCksCi0gICAgICAg
IGV2ZW50LmN0cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5KCksIGV2ZW50
Lm1ldGFLZXkoKSk7Ci0KLSAgICBpZiAoIWRpc3BhdGNoZXIuZGlzcGF0Y2hFdmVudCh3aGVlbEV2
ZW50KSB8fCB3aGVlbEV2ZW50LT5kZWZhdWx0SGFuZGxlZCgpKQotICAgICAgICBldmVudC5hY2Nl
cHQoKTsKLQotfQotCiAvLyBGSVhNRTogT25jZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTI5NjMgbGFuZHMsIHRoaXMgc2hvdWxkCiAvLyBiZSBncmVhdGx5IGltcHJv
dmVkLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU0MDI1Lgog
UGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZlbnREaXNwYXRjaGVyOjphZGp1c3RSZWxhdGVkVGFy
Z2V0KFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnREaXNwYXRjaGVyLmgKaW5kZXggMTQ2YzBkOTMwYTg2YmEwMjZjNzBhYWM5MGZjYmJiNDY5
ZDlhZWM2MS4uMmRiYjk4NTQ2Y2M1ZDA5YWI2OTE1YTBmZDY3OTEzNWMyMDAwNTQwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaApAQCAtNTIsNyArNTIsNiBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTY29wZWRFdmVudChOb2RlKiwgUGFzc1JlZlB0cjxFdmVu
dD4pOwogCiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhOb2RlKiwgUGFz
c1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50LCBib29sIHNlbmRNb3VzZUV2ZW50cywgYm9v
bCBzaG93UHJlc3NlZExvb2spOwotICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudChO
b2RlKiwgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAKICAgICBib29sIGRpc3BhdGNoRXZlbnQoUGFz
c1JlZlB0cjxFdmVudD4pOwogICAgIFBhc3NSZWZQdHI8RXZlbnRUYXJnZXQ+IGFkanVzdFJlbGF0
ZWRUYXJnZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDM1
ZTVhNjljMmM3ZTc2YTA2MzhmMzllYTVlNjIwYjY4ODk0YzhiY2IuLjk0MmE0ZWY5OTVhZjI4YmU1
MDY3MzNmNWMwY2ZkM2VmZDgyZmFiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTI2NTksOSArMjY1
OSw5IEBAIHZvaWQgTm9kZTo6ZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhQYXNzUmVmUHRyPEV2ZW50
PiBldmVudCwgYm9vbCBzZW5kTW91c2VFdmVudHMsCiAgICAgRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaFNpbXVsYXRlZENsaWNrKHRoaXMsIGV2ZW50LCBzZW5kTW91c2VFdmVudHMsIHNob3dQcmVz
c2VkTG9vayk7CiB9CiAKLXZvaWQgTm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBsYXRmb3JtV2hl
ZWxFdmVudCYgZSkKK2Jvb2wgTm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxF
dmVudCYgZSkKIHsKLSAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh0aGlz
LCBlKTsKKyAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KHRoaXMsIFdo
ZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yKGUsIGRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCkpKTsK
IH0KIAogdm9pZCBOb2RlOjpkaXNwYXRjaEZvY3VzRXZlbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggYjk0
ZmYxYTk3NWE0N2YzZGU1Mzg1YWFiOWQ3M2Q4ZjgwNzY3ZjcwMS4uYjcyMjg4M2FhZThiNmFhOGM4
ZGU1OTAyNzAzYzZiZWFmZGFmNmUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC01MzMsNyArNTMzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgIHZv
aWQgZGlzcGF0Y2hVSUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBpbnQgZGV0
YWlsLCBQYXNzUmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQpOwogICAgIGJvb2wgZGlzcGF0
Y2hLZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmKTsKLSAgICB2b2lkIGRpc3Bh
dGNoV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKKyAgICBib29sIGRpc3BhdGNoV2hl
ZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKICAgICBib29sIGRpc3BhdGNoTW91c2VFdmVu
dChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSwgaW50IGNsaWNrQ291bnQgPSAwLCBOb2RlKiByZWxhdGVkVGFyZ2V0ID0gMCk7CiAgICAgdm9p
ZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKFBhc3NSZWZQdHI8RXZlbnQ+IHVuZGVybHlpbmdFdmVu
dCwgYm9vbCBzZW5kTW91c2VFdmVudHMgPSBmYWxzZSwgYm9vbCBzaG93UHJlc3NlZExvb2sgPSB0
cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCmluZGV4IDA5ODFhNTcxNzZiNjg3MDJk
YjA3MjBiY2JiNDVjODYyZWRiYTFjZmQuLjE5OTliNGY5ZWZlZDZmZmJmMmQwOGU1NDQyNjdlMjcx
M2E5MTI3OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKQEAgLTIzLDcgKzIzLDEwIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2hlZWxFdmVudC5oIgogCisjaW5jbHVk
ZSAiRXZlbnREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtV2hlZWxFdmVudC5oIgorCiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTIsNCArOTUsMzMgQEAgYm9vbCBXaGVlbEV2ZW50Ojpp
c1doZWVsRXZlbnQoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCitpbmxpbmUgc3RhdGlj
IFdoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5KGNvbnN0IFBsYXRmb3JtV2hlZWxF
dmVudCYgZXZlbnQpCit7CisgICAgcmV0dXJuIGV2ZW50LmdyYW51bGFyaXR5KCkgPT0gU2Nyb2xs
QnlQYWdlV2hlZWxFdmVudCA/IFdoZWVsRXZlbnQ6OlBhZ2UgOiBXaGVlbEV2ZW50OjpQaXhlbDsK
K30KKworV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6OldoZWVsRXZlbnREaXNwYXRjaE1lZGlh
dG9yKFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiB2
aWV3KQorICAgIDogRXZlbnREaXNwYXRjaE1lZGlhdG9yKCkKK3sKKyAgICBpZiAoIShldmVudC5k
ZWx0YVgoKSB8fCBldmVudC5kZWx0YVkoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHNldEV2
ZW50KFdoZWVsRXZlbnQ6OmNyZWF0ZShldmVudC53aGVlbFRpY2tzWCgpLCBldmVudC53aGVlbFRp
Y2tzWSgpLCBldmVudC5kZWx0YVgoKSwgZXZlbnQuZGVsdGFZKCksIGdyYW51bGFyaXR5KGV2ZW50
KSwKKyAgICAgICAgdmlldywgZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCksIGV2ZW50
LngoKSwgZXZlbnQueSgpLCBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5z
aGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCkpKTsKKworfQorCitXaGVlbEV2ZW50KiBXaGVlbEV2
ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxXaGVlbEV2ZW50Kj4oRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVudCgpKTsKK30KKwor
Ym9vbCBXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERpc3Bh
dGNoZXIqIGRpc3BhdGNoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFldmVudCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNo
RXZlbnQoZGlzcGF0Y2hlcikgJiYgIWV2ZW50KCktPmRlZmF1bHRIYW5kbGVkKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVl
bEV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCmluZGV4IGIwODVlODZl
ZWJkZGQ5MjllZDU4OGM1YTQyNjExMDM3Y2Y3ZjAzMTAuLjQ2YjJlOTI0MzAxNDAwNTAxNzk1Mzg1
ZjRhNDhjYjgxZjhmMTk3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaApAQCAtODIsNiArODIs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBHcmFudWxhcml0eSBtX2dyYW51bGFy
aXR5OwogICAgIH07CiAKK2NsYXNzIFdoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yIDogcHVibGlj
IEV2ZW50RGlzcGF0Y2hNZWRpYXRvciB7CitwdWJsaWM6CisgICAgV2hlZWxFdmVudERpc3BhdGNo
TWVkaWF0b3IoUGxhdGZvcm1XaGVlbEV2ZW50JiwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+KTsK
KworcHJpdmF0ZToKKyAgICBXaGVlbEV2ZW50KiBldmVudCgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciopIGNvbnN0OworfTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gV2hlZWxFdmVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZGQyNjFkODY3ZmY3MWU1MjQ2ZWY2OTY1NWEyMGE0Y2Y2
ZmI3MzZkZS4uNjI4Nzk4MTljYTU3ZTk0YjVmYjAyODU2OTFiYzk5NjFkMGNmMTYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjA4MCw5ICsyMDgwLDEwIEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAg
ICAgICAgfQogCiAgICAgICAgIG5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKLSAg
ICAgICAgbm9kZS0+ZGlzcGF0Y2hXaGVlbEV2ZW50KGUpOwotICAgICAgICBpZiAoZS5pc0FjY2Vw
dGVkKCkpCisgICAgICAgIGlmICghbm9kZS0+ZGlzcGF0Y2hXaGVlbEV2ZW50KGUpKSB7CisgICAg
ICAgICAgICBlLmFjY2VwdCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoZS5pc0FjY2VwdGVkKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88566</attachid>
            <date>2011-04-06 21:10:51 -0700</date>
            <delta_ts>2011-04-07 13:59:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57642-20110406211050.patch</filename>
            <type>text/plain</type>
            <size>10066</size>
            <attacher name="Dimitri Glazkov (Google)">dglazkov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMxMzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YmFlZDQ1YzFkNDg1M2Y2
ODk4N2UyN2MxNzUxMzExODk2MDEwMGYwLi4zNzI0MTA4ZjhlODBjNjIwM2MyNzM2NjdlMGE4NTMx
MDgzYzY1MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDQtMDUgIERpbWl0
cmkgR2xhemtvdiAgPGRnbGF6a292QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIFdoZWVsRXZlbnQtZGlzcGF0Y2hpbmcg
bG9naWMgaW50byBXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvci4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3NjQyCisKKyAgICAgICAgQ292ZXJlZCBi
eSBleGlzdGluZyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCisKKyAgICAgICAgKiBkb20v
RXZlbnQuY3BwOgorICAgICAgICAqIGRvbS9FdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnREaXNwYXRjaE1lZGlhdG9yOjpFdmVudERpc3BhdGNoTWVkaWF0b3IpOiBBZGRlZCBkZWZhdWx0
CisgICAgICAgICAgICBjb25zdHJ1Y3Rvci4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0
Y2hNZWRpYXRvcjo6ZXZlbnQpOiBJbmxpbmVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnREaXNw
YXRjaE1lZGlhdG9yOjpzZXRFdmVudCk6IEFkZGVkLgorICAgICAgICAqIGRvbS9FdmVudERpc3Bh
dGNoZXIuY3BwOiBSZW1vdmVkIGRpc3BhdGNoV2hlZWxFdmVudC4KKyAgICAgICAgKiBkb20vRXZl
bnREaXNwYXRjaGVyLmg6IFVwZGF0ZWQgZGVjbHMuCisgICAgICAgICogZG9tL05vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50KTogQ2hhbmdlZCB0byB1
c2UgdGhlIG1lZGlhdG9yIGFuZAorICAgICAgICAgICAgcmV0dXJuIGEgYm9vbCwgbGlrZSBvdGhl
ciBkaXNwYXRjaCBldmVudCBmdW5jdGlvbnMuCisgICAgICAgICogZG9tL05vZGUuaDogQ2hhbmdl
ZCBkZWNsLgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmdyYW51bGFyaXR5KTogTW92ZWQgZnJvbSBFdmVudERpc3BhdGNoZXIuCisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6V2hlZWxFdmVudERpc2F0Y2hNZWRpYXRv
cik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6
OmV2ZW50KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50RGlzcGF0Y2hNZWRp
YXRvcjo6ZGlzcGF0Y2hFdmVudCk6IEFkZGVkLgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50Lmg6
IFVwZGF0ZWQgZGVjbHMuCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KTogQ2hhbmdlZCB0byBy
ZWNlaXZlIGFuZCByZWFjdAorICAgICAgICAgICAgdG8gdGhlIHJldHVybiB2YWx1ZS4KKwogMjAx
MS0wNC0wNiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuY3BwCmluZGV4IGEyZGM4NTc4ZGMwYTQz
Y2E1MWYyMTNiMmVmOTY0YWYxOWMxMjBhNWMuLjljYjI3NzhhODMwOGExNjliYjBlNGNjMmMyMjU5
MWNmYjAxYjFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50LmNwcApAQCAtMzEzLDkgKzMxMyw0IEBAIGJvb2wg
RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciogZGlz
cGF0Y2hlcikgY29uc3QKICAgICByZXR1cm4gZGlzcGF0Y2hlci0+ZGlzcGF0Y2hFdmVudChtX2V2
ZW50LmdldCgpKTsKIH0KIAotRXZlbnQqIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZXZlbnQoKSBj
b25zdAotewotICAgIHJldHVybiBtX2V2ZW50LmdldCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudC5oCmluZGV4IGQ3YzM4ZWQ0NDY1NTYxYTBjMWZkYjQ2NWRkMDAxNjNi
YjdkYTc4OTEuLmY2ZTU1ODY5NWFjNDQ0MDA5YWM2NGUxOWUwMmIzMGQyZjQ3NmNlZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudC5oCkBAIC0yMDAsMTEgKzIwMCwzMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RXZl
bnREaXNwYXRjaE1lZGlhdG9yKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChF
dmVudERpc3BhdGNoZXIqKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvcigpOworCiAgICAgRXZlbnQqIGV2ZW50KCkgY29uc3Q7CisgICAgdm9pZCBzZXRFdmVu
dChQYXNzUmVmUHRyPEV2ZW50Pik7CisKIHByaXZhdGU6CiAgICAgUmVmUHRyPEV2ZW50PiBtX2V2
ZW50OwogfTsKIAoraW5saW5lIEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6RXZlbnREaXNwYXRjaE1l
ZGlhdG9yKCkKK3sKK30KKworaW5saW5lIEV2ZW50KiBFdmVudERpc3BhdGNoTWVkaWF0b3I6OmV2
ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9ldmVudC5nZXQoKTsKK30KKworaW5saW5lIHZv
aWQgRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpzZXRFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKK3sKKyAgICBtX2V2ZW50ID0gZXZlbnQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEV2ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAK
aW5kZXggOGY1Y2Y5MTRjZjFiMjYwZGY3YWI5Yzg2OGViYjViM2M1MDJkNjI1Zi4uYTk2MTFlN2U5
MTBhYjM4ODlmNWFjNTQ3M2UwZWU1ZTdhNDZmMDQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
RGlzcGF0Y2hlci5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50
UXVldWUuaCIKIAogI2lmIEVOQUJMRShTVkcpCkBAIC00NCw3ICs0Myw2IEBACiAKICNpbmNsdWRl
ICJVSUV2ZW50LmgiCiAjaW5jbHVkZSAiVUlFdmVudFdpdGhLZXlTdGF0ZS5oIgotI2luY2x1ZGUg
IldoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJXaW5kb3dFdmVudENvbnRleHQuaCIKIAogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTEyNCwyOCArMTIyLDYgQEAgdm9pZCBFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoU2ltdWxhdGVkQ2xpY2soTm9kZSogbm9kZSwgUGFzc1JlZlB0cjxFdmVudD4g
dW5kZXIKICAgICBnTm9kZXNEaXNwYXRjaGluZ1NpbXVsYXRlZENsaWNrcy0+cmVtb3ZlKG5vZGUp
OwogfQogCi1pbmxpbmUgc3RhdGljIFdoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5
KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZXZlbnQpCi17Ci0gICAgcmV0dXJuIGV2ZW50Lmdy
YW51bGFyaXR5KCkgPT0gU2Nyb2xsQnlQYWdlV2hlZWxFdmVudCA/IFdoZWVsRXZlbnQ6OlBhZ2Ug
OiBXaGVlbEV2ZW50OjpQaXhlbDsKLX0KLQotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
V2hlZWxFdmVudChOb2RlKiBub2RlLCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQotewotICAg
IEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJpZGRlbigpKTsKLSAgICBpZiAoIShldmVudC5kZWx0
YVgoKSB8fCBldmVudC5kZWx0YVkoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEV2ZW50RGlz
cGF0Y2hlciBkaXNwYXRjaGVyKG5vZGUpOwotCi0gICAgUmVmUHRyPFdoZWVsRXZlbnQ+IHdoZWVs
RXZlbnQgPSBXaGVlbEV2ZW50OjpjcmVhdGUoZXZlbnQud2hlZWxUaWNrc1goKSwgZXZlbnQud2hl
ZWxUaWNrc1koKSwgZXZlbnQuZGVsdGFYKCksIGV2ZW50LmRlbHRhWSgpLCBncmFudWxhcml0eShl
dmVudCksCi0gICAgICAgIG5vZGUtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIGV2ZW50Lmds
b2JhbFgoKSwgZXZlbnQuZ2xvYmFsWSgpLCBldmVudC54KCksIGV2ZW50LnkoKSwKLSAgICAgICAg
ZXZlbnQuY3RybEtleSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQu
bWV0YUtleSgpKTsKLQotICAgIGlmICghZGlzcGF0Y2hlci5kaXNwYXRjaEV2ZW50KHdoZWVsRXZl
bnQpIHx8IHdoZWVsRXZlbnQtPmRlZmF1bHRIYW5kbGVkKCkpCi0gICAgICAgIGV2ZW50LmFjY2Vw
dCgpOwotCi19Ci0KIC8vIEZJWE1FOiBPbmNlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01Mjk2MyBsYW5kcywgdGhpcyBzaG91bGQKIC8vIGJlIGdyZWF0bHkgaW1wcm92
ZWQuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTQwMjUuCiBQ
YXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiBFdmVudERpc3BhdGNoZXI6OmFkanVzdFJlbGF0ZWRUYXJn
ZXQoUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRhcmdldCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuaAppbmRleCAxNDZjMGQ5MzBhODZiYTAyNmM3MGFhYzkwZmNiYmI0Njlk
OWFlYzYxLi4yZGJiOTg1NDZjYzVkMDlhYjY5MTVhMGZkNjc5MTM1YzIwMDA1NDBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC01Miw3ICs1Miw2IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNjb3BlZEV2ZW50KE5vZGUqLCBQYXNzUmVmUHRyPEV2ZW50
Pik7CiAKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNpbXVsYXRlZENsaWNrKE5vZGUqLCBQYXNz
UmVmUHRyPEV2ZW50PiB1bmRlcmx5aW5nRXZlbnQsIGJvb2wgc2VuZE1vdXNlRXZlbnRzLCBib29s
IHNob3dQcmVzc2VkTG9vayk7Ci0gICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KE5v
ZGUqLCBQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAogICAgIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CiAgICAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gYWRqdXN0UmVsYXRl
ZFRhcmdldChQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggMTVj
YjhhOGI0OGExZjIxNjM5OTFmOWRiNjFmZDk2YThhYTY2M2I0ZC4uYWUzY2I4ODczMjY1OTYwMTE4
M2Y3MDE3ZjhkZWZiYjcxMTc2NmNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjY1OSw5ICsyNjU5
LDkgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrKFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50LCBib29sIHNlbmRNb3VzZUV2ZW50cywKICAgICBFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoU2ltdWxhdGVkQ2xpY2sodGhpcywgZXZlbnQsIHNlbmRNb3VzZUV2ZW50cywgc2hvd1ByZXNz
ZWRMb29rKTsKIH0KIAotdm9pZCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGxhdGZvcm1XaGVl
bEV2ZW50JiBlKQorYm9vbCBOb2RlOjpkaXNwYXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiBldmVudCkKIHsKLSAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxF
dmVudCh0aGlzLCBlKTsKKyAgICByZXR1cm4gRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50
KHRoaXMsIFdoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yKGV2ZW50LCBkb2N1bWVudCgpLT5kZWZh
dWx0VmlldygpKSk7CiB9CiAKIHZvaWQgTm9kZTo6ZGlzcGF0Y2hGb2N1c0V2ZW50KCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IGMyMjVkYmFjOGZmODkxZGY5Y2ZlMjY1ZWMyNmI4MmRlMWM0YmIxM2IuLjBhYjZl
MjE3Mzg1NzdmZTJhMmU5OTFiYWM3N2IyMGNmOWYwMjU1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTMz
LDcgKzUzMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZl
bnQoKTsKICAgICB2b2lkIGRpc3BhdGNoVUlFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSwgaW50IGRldGFpbCwgUGFzc1JlZlB0cjxFdmVudD4gdW5kZXJseWluZ0V2ZW50KTsKICAg
ICBib29sIGRpc3BhdGNoS2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50Jik7Ci0g
ICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50Jik7CisgICAgYm9v
bCBkaXNwYXRjaFdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50Jik7CiAgICAgYm9v
bCBkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiwgY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUsIGludCBjbGlja0NvdW50ID0gMCwgTm9kZSogcmVsYXRlZFRh
cmdldCA9IDApOwogICAgIHZvaWQgZGlzcGF0Y2hTaW11bGF0ZWRDbGljayhQYXNzUmVmUHRyPEV2
ZW50PiB1bmRlcmx5aW5nRXZlbnQsIGJvb2wgc2VuZE1vdXNlRXZlbnRzID0gZmFsc2UsIGJvb2wg
c2hvd1ByZXNzZWRMb29rID0gdHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9XaGVlbEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAppbmRl
eCAwOTgxYTU3MTc2YjY4NzAyZGIwNzIwYmNiYjQ1Yzg2MmVkYmExY2ZkLi5hNjczYzkzYTFkMTVm
YjQ5ODFlYTg0MjdmZWEwYzAzNWVhNTNkNTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vV2hlZWxFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3Bw
CkBAIC0yMyw3ICsyMywxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldoZWVs
RXZlbnQuaCIKIAorI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIkV2ZW50
TmFtZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKKwogI2luY2x1ZGUgPHd0
Zi9NYXRoRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkyLDQgKzk1LDMyIEBA
IGJvb2wgV2hlZWxFdmVudDo6aXNXaGVlbEV2ZW50KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAoraW5saW5lIHN0YXRpYyBXaGVlbEV2ZW50OjpHcmFudWxhcml0eSBncmFudWxhcml0eShj
b25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50KQoreworICAgIHJldHVybiBldmVudC5ncmFu
dWxhcml0eSgpID09IFNjcm9sbEJ5UGFnZVdoZWVsRXZlbnQgPyBXaGVlbEV2ZW50OjpQYWdlIDog
V2hlZWxFdmVudDo6UGl4ZWw7Cit9CisKK1doZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpXaGVl
bEV2ZW50RGlzcGF0Y2hNZWRpYXRvcihjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGV2ZW50LCBQ
YXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldykKK3sKKyAgICBpZiAoIShldmVudC5kZWx0YVgo
KSB8fCBldmVudC5kZWx0YVkoKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHNldEV2ZW50KFdo
ZWVsRXZlbnQ6OmNyZWF0ZShldmVudC53aGVlbFRpY2tzWCgpLCBldmVudC53aGVlbFRpY2tzWSgp
LCBldmVudC5kZWx0YVgoKSwgZXZlbnQuZGVsdGFZKCksIGdyYW51bGFyaXR5KGV2ZW50KSwKKyAg
ICAgICAgdmlldywgZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCksIGV2ZW50LngoKSwg
ZXZlbnQueSgpLCBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtl
eSgpLCBldmVudC5tZXRhS2V5KCkpKTsKKworfQorCitXaGVlbEV2ZW50KiBXaGVlbEV2ZW50RGlz
cGF0Y2hNZWRpYXRvcjo6ZXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxX
aGVlbEV2ZW50Kj4oRXZlbnREaXNwYXRjaE1lZGlhdG9yOjpldmVudCgpKTsKK30KKworYm9vbCBX
aGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6ZGlzcGF0Y2hFdmVudChFdmVudERpc3BhdGNoZXIq
IGRpc3BhdGNoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFldmVudCgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIHJldHVybiBFdmVudERpc3BhdGNoTWVkaWF0b3I6OmRpc3BhdGNoRXZlbnQo
ZGlzcGF0Y2hlcikgJiYgIWV2ZW50KCktPmRlZmF1bHRIYW5kbGVkKCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCmluZGV4IGIwODVlODZlZWJkZGQ5
MjllZDU4OGM1YTQyNjExMDM3Y2Y3ZjAzMTAuLjVmMGQ1NjkzMDJjZWRkNmQ1OTAyMDg1YzU3OTU5
NjM3NjkzMThmMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaApAQCAtODIsNiArODIsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5Owog
ICAgIH07CiAKK2NsYXNzIFdoZWVsRXZlbnREaXNwYXRjaE1lZGlhdG9yIDogcHVibGljIEV2ZW50
RGlzcGF0Y2hNZWRpYXRvciB7CitwdWJsaWM6CisgICAgV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0
b3IoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+KTsK
KworcHJpdmF0ZToKKyAgICBXaGVlbEV2ZW50KiBldmVudCgpIGNvbnN0OworICAgIHZpcnR1YWwg
Ym9vbCBkaXNwYXRjaEV2ZW50KEV2ZW50RGlzcGF0Y2hlciopIGNvbnN0OworfTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gV2hlZWxFdmVudF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0V2ZW50SGFuZGxlci5jcHAKaW5kZXggZGQyNjFkODY3ZmY3MWU1MjQ2ZWY2OTY1NWEyMGE0Y2Y2
ZmI3MzZkZS4uNjI4Nzk4MTljYTU3ZTk0YjVmYjAyODU2OTFiYzk5NjFkMGNmMTYxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjA4MCw5ICsyMDgwLDEwIEBAIGJvb2wg
RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAg
ICAgICAgfQogCiAgICAgICAgIG5vZGUgPSBub2RlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKLSAg
ICAgICAgbm9kZS0+ZGlzcGF0Y2hXaGVlbEV2ZW50KGUpOwotICAgICAgICBpZiAoZS5pc0FjY2Vw
dGVkKCkpCisgICAgICAgIGlmICghbm9kZS0+ZGlzcGF0Y2hXaGVlbEV2ZW50KGUpKSB7CisgICAg
ICAgICAgICBlLmFjY2VwdCgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICBpZiAoZS5pc0FjY2VwdGVkKCkpCg==
</data>
<flag name="review"
          id="81091"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>