<?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>78840</bug_id>
          
          <creation_ts>2012-02-16 14:03:21 -0800</creation_ts>
          <short_desc>Abstract ImageEventSender into a general purpose EventSender</short_desc>
          <delta_ts>2013-01-25 07:18:41 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          <blocked>38995</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>yong.li.webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>558508</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-16 14:03:21 -0800</bug_when>
    <thetext>We should abstract the functionality of ImageEventSender into a general purpose class, called EventSender. This general purpose class may be useful towards fixing bug #38995.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558510</commentid>
    <comment_count>1</comment_count>
      <attachid>127438</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-16 14:06:08 -0800</bug_when>
    <thetext>Created attachment 127438
Patch

The name &quot;EventSender&quot; is a bit vague. The purpose of this class is to queue up senders of a specific DOM event, say a Load event, and to call each sender back when they should dispatch such an event. Maybe EventSenderScheduler or EventSenderQueue would be a more descriptive name?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558584</commentid>
    <comment_count>2</comment_count>
      <attachid>127438</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-16 15:20:30 -0800</bug_when>
    <thetext>Comment on attachment 127438
Patch

Clearing review flag as I need to add EventSender.h to all build systems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558655</commentid>
    <comment_count>3</comment_count>
      <attachid>127464</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-16 16:27:42 -0800</bug_when>
    <thetext>Created attachment 127464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561138</commentid>
    <comment_count>4</comment_count>
      <attachid>127464</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-21 12:35:54 -0800</bug_when>
    <thetext>Comment on attachment 127464
Patch

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

&gt; Source/WebCore/dom/EventSender.h:88
&gt; +    if (m_dispatchSoonList.isEmpty())
&gt; +        m_timer.stop();

Do you mean to check whether the list is empty or whether it contains all zeros?  I&apos;m not sure how this function could result in m_dispatchSoonList being empty if it wasn&apos;t already empty.

&gt; Source/WebCore/loader/ImageLoader.cpp:-385
&gt; -    if (m_dispatchSoonList.isEmpty())
&gt; -        m_timer.stop();

I see this was here already.  We might want to ask the original author why they intended here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562444</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-22 15:19:15 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 127464 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127464&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/EventSender.h:88
&gt; &gt; +    if (m_dispatchSoonList.isEmpty())
&gt; &gt; +        m_timer.stop();
&gt; 
&gt; Do you mean to check whether the list is empty or whether it contains all zeros?  I&apos;m not sure how this function could result in m_dispatchSoonList being empty if it wasn&apos;t already empty.

As far as I can tell this code isn&apos;t necessary anymore and is an artifact of using a QPtrList data structure for this functionality when it was originally in DocumentImpl::removeImage() (see &lt;http://trac.webkit.org/browser/trunk/WebCore/khtml/xml/DocumentImpl.cpp?rev=12515#L2302&gt;). In particular, DocumentImpl::removeImage() actually removed items from its QPtrList m_imageLoadEventDispatchSoonList (as opposed to zeroing out its items as we do today) ;=&gt; m_imageLoadEventDispatchSoonList could become empty.

I&apos;ll remove this code before landing.

CC&apos;ing Darin Adler since he may be interested to see this go by given that he kept this &quot;if (m_dispatchSoonList.isEmpty())&quot; code through both &lt;http://trac.webkit.org/changeset/39296&gt; (changed functionality to zero out list entries) and &lt;http://trac.webkit.org/changeset/41766&gt; (moved functionality out of Document.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562454</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2012-02-22 15:27:57 -0800</bug_when>
    <thetext>Committed r108561: &lt;http://trac.webkit.org/changeset/108561&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816576</commentid>
    <comment_count>7</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2013-01-25 07:18:41 -0800</bug_when>
    <thetext>This EventSender should be SuspendableTimer or at least ActiveDOMObject?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127438</attachid>
            <date>2012-02-16 14:06:08 -0800</date>
            <delta_ts>2012-02-16 16:27:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug78840.patch</filename>
            <type>text/plain</type>
            <size>12632</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzk3NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDEyLTAyLTE2ICBEYW5pZWwg
QmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAgICAgICBBYnN0cmFjdCBJbWFnZUV2ZW50
U2VuZGVyIGludG8gYSBnZW5lcmFsIHB1cnBvc2UgRXZlbnRTZW5kZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODQwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2Vk
OyBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkIEV2ZW50U2VuZGVyLmguCisgICAgICAgICogZG9tL0V2ZW50U2VuZGVyLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFdmVudFNlbmRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudFNlbmRlcjo6ZXZlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50U2VuZGVyOjpoYXNQZW5kaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
U2VuZGVyOjp0aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6RXZlbnRTZW5kZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6OjpkaXNwYXRjaEV2ZW50U29vbik6CisgICAgICAgIChXZWJDb3Jl
Ojo6OmNhbmNlbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6ZGlzcGF0Y2hQZW5kaW5nRXZl
bnRzKToKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOiBNb2RpZmllZCB0byB1c2Ug
RXZlbnRTZW5kZXIuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
TG9hZGVyOjpkaXNwYXRjaFBlbmRpbmdFdmVudCk6IEFkZGVkLgorICAgICAgICAqIGxvYWRlci9J
bWFnZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbWFnZUxvYWRlcik6
CisKIDIwMTItMDItMTYgIFNlcmdpbyBWaWxsYXIgU2VuaW4gIDxzdmlsbGFyQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW3NvdXBdIE1vdmUgaW1wb3J0YW50IFNvdXBTZXNzaW9uIGZlYXR1cmUgaW5p
dGlhbGl6YXRpb24gdG8gV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA3OTQ3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjYxMCw2ICsxMjYxMCw3IEBACiAJCUNFMDU3RkEzMTIyMDczMTEwMEE0NzZENSAvKiBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQ0UwNTdGQTQxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtl
ckNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U1NEZEMzcxMDE2
RDlBNjAwOEI0NEM4IC8qIFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcmlwdFNvdXJjZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNFNUNCMUIzMTRFREFCNkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVudFNlbmRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRUEzOTQ5QTExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFz
aFNldE5vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
YXRpY0hhc2hTZXROb2RlTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
QTM5NDlCMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQ0NGQzNBMTQxOTczRDUwMDJBMEFDMSAvKiBEZWNv
ZGVFc2NhcGVTZXF1ZW5jZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVj
b2RlRXNjYXBlU2VxdWVuY2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDY0
OCw2ICsyMDY0OSw3IEBACiAJCQkJOTM5ODg1QzEwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFt
ZXMuY3BwICovLAogCQkJCTkzOTg4NUMyMDhCN0UzRDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmgg
Ki8sCiAJCQkJOEY2NzU2MTkxMjg4QjE3QjAwNDdBQ0EzIC8qIEV2ZW50UXVldWUuaCAqLywKKwkJ
CQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLywKIAkJCQlFMTJF
REJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZlbnRUYXJnZXQuY3BwICovLAogCQkJCUUxMkVEQjdB
MEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdldC5oICovLAogCQkJCTg1QUZBNzQyMEFBRjI5
ODQwMEU4NDMwNSAvKiBFdmVudFRhcmdldC5pZGwgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRTZW5kZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRT
ZW5kZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFNlbmRlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRXZl
bnRTZW5kZXJfaAorI2RlZmluZSBFdmVudFNlbmRlcl9oCisKKyNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBFdmVudFNlbmRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoRXZlbnRTZW5kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBFdmVudFNlbmRlcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisKKyAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRU
eXBlOyB9CisgICAgdm9pZCBkaXNwYXRjaEV2ZW50U29vbihUKik7CisgICAgdm9pZCBjYW5jZWxF
dmVudChUKik7CisgICAgdm9pZCBkaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsKKworI2lmbmRlZiBO
REVCVUcKKyAgICBib29sIGhhc1BlbmRpbmdFdmVudHMoVCogc2VuZGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZGlzcGF0Y2hTb29uTGlzdC5maW5kKHNlbmRlcikgIT0gbm90Rm91
bmQgfHwgbV9kaXNwYXRjaGluZ0xpc3QuZmluZChzZW5kZXIpICE9IG5vdEZvdW5kOworICAgIH0K
KyNlbmRpZgorCitwcml2YXRlOgorICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxFdmVudFNlbmRl
cjxUPiA+KikgeyBkaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsgfQorCisgICAgQXRvbWljU3RyaW5n
IG1fZXZlbnRUeXBlOworICAgIFRpbWVyPEV2ZW50U2VuZGVyPFQ+ID4gbV90aW1lcjsKKyAgICBW
ZWN0b3I8VCo+IG1fZGlzcGF0Y2hTb29uTGlzdDsKKyAgICBWZWN0b3I8VCo+IG1fZGlzcGF0Y2hp
bmdMaXN0OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gRXZlbnRTZW5kZXI8VD46OkV2ZW50
U2VuZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorICAgIDogbV9ldmVudFR5cGUo
ZXZlbnRUeXBlKQorICAgICwgbV90aW1lcih0aGlzLCAmRXZlbnRTZW5kZXI6OnRpbWVyRmlyZWQp
Cit7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmRpc3Bh
dGNoRXZlbnRTb29uKFQqIHNlbmRlcikKK3sKKyAgICBtX2Rpc3BhdGNoU29vbkxpc3QuYXBwZW5k
KHNlbmRlcik7CisgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIu
c3RhcnRPbmVTaG90KDApOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2Vu
ZGVyPFQ+OjpjYW5jZWxFdmVudChUKiBzZW5kZXIpCit7CisgICAgLy8gUmVtb3ZlIGluc3RhbmNl
cyBvZiB0aGlzIHNlbmRlciBmcm9tIGJvdGggbGlzdHMuCisgICAgLy8gVXNlIGxvb3BzIGJlY2F1
c2Ugd2UgYWxsb3cgbXVsdGlwbGUgaW5zdGFuY2VzIHRvIGdldCBpbnRvIHRoZSBsaXN0cy4KKyAg
ICBzaXplX3Qgc2l6ZSA9IG1fZGlzcGF0Y2hTb29uTGlzdC5zaXplKCk7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgaWYgKG1fZGlzcGF0Y2hTb29uTGlz
dFtpXSA9PSBzZW5kZXIpCisgICAgICAgICAgICBtX2Rpc3BhdGNoU29vbkxpc3RbaV0gPSAwOwor
ICAgIH0KKyAgICBzaXplID0gbV9kaXNwYXRjaGluZ0xpc3Quc2l6ZSgpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChtX2Rpc3BhdGNoaW5nTGlz
dFtpXSA9PSBzZW5kZXIpCisgICAgICAgICAgICBtX2Rpc3BhdGNoaW5nTGlzdFtpXSA9IDA7Cisg
ICAgfQorICAgIGlmIChtX2Rpc3BhdGNoU29vbkxpc3QuaXNFbXB0eSgpKQorICAgICAgICBtX3Rp
bWVyLnN0b3AoKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBFdmVudFNlbmRlcjxU
Pjo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnRzKCkKK3sKKyAgICAvLyBOZWVkIHRvIGF2b2lkIHJlLWVu
dGVyaW5nIHRoaXMgZnVuY3Rpb247IGlmIG5ldyBkaXNwYXRjaGVzIGFyZQorICAgIC8vIHNjaGVk
dWxlZCBiZWZvcmUgdGhlIHBhcmVudCBmaW5pc2hlcyBwcm9jZXNzaW5nIHRoZSBsaXN0LCB0aGV5
CisgICAgLy8gd2lsbCBzZXQgYSB0aW1lciBhbmQgZXZlbnR1YWxseSBiZSBwcm9jZXNzZWQuCisg
ICAgaWYgKCFtX2Rpc3BhdGNoaW5nTGlzdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fdGltZXIuc3RvcCgpOworCisgICAgbV9kaXNwYXRjaFNvb25MaXN0LmNoZWNrQ29uc2lz
dGVuY3koKTsKKworICAgIG1fZGlzcGF0Y2hpbmdMaXN0LnN3YXAobV9kaXNwYXRjaFNvb25MaXN0
KTsKKyAgICBzaXplX3Qgc2l6ZSA9IG1fZGlzcGF0Y2hpbmdMaXN0LnNpemUoKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBpZiAoVCogc2VuZGVyID0g
bV9kaXNwYXRjaGluZ0xpc3RbaV0pIHsKKyAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ld
ID0gMDsKKyAgICAgICAgICAgIHNlbmRlci0+ZGlzcGF0Y2hQZW5kaW5nRXZlbnQodGhpcyk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgbV9kaXNwYXRjaGluZ0xpc3QuY2xlYXIoKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRXZlbnRTZW5kZXJfaApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMDc5NDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxPYmplY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgpAQCAtNjIsMzIgKzYzLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgVmFs
dWVDaGVjazxXZWJDb3JlOjpJbQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdl
RXZlbnRTZW5kZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRXZlbnRTZW5kZXIp
OyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZUV2ZW50U2VuZGVy
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKLQotICAgIHZvaWQgZGlzcGF0Y2hFdmVu
dFNvb24oSW1hZ2VMb2FkZXIqKTsKLSAgICB2b2lkIGNhbmNlbEV2ZW50KEltYWdlTG9hZGVyKik7
Ci0KLSAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOwotCi0jaWZuZGVmIE5ERUJVRwot
ICAgIGJvb2wgaGFzUGVuZGluZ0V2ZW50cyhJbWFnZUxvYWRlciogbG9hZGVyKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fZGlzcGF0Y2hTb29uTGlzdC5maW5kKGxvYWRlcikgIT0gbm90
Rm91bmQgfHwgbV9kaXNwYXRjaGluZ0xpc3QuZmluZChsb2FkZXIpICE9IG5vdEZvdW5kOwotICAg
IH0KLSNlbmRpZgotCi1wcml2YXRlOgotICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxJbWFnZUV2
ZW50U2VuZGVyPiopOwotCi0gICAgQXRvbWljU3RyaW5nIG1fZXZlbnRUeXBlOwotICAgIFRpbWVy
PEltYWdlRXZlbnRTZW5kZXI+IG1fdGltZXI7Ci0gICAgVmVjdG9yPEltYWdlTG9hZGVyKj4gbV9k
aXNwYXRjaFNvb25MaXN0OwotICAgIFZlY3RvcjxJbWFnZUxvYWRlcio+IG1fZGlzcGF0Y2hpbmdM
aXN0OwotfTsKLQogc3RhdGljIEltYWdlRXZlbnRTZW5kZXImIGJlZm9yZUxvYWRFdmVudFNlbmRl
cigpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChJbWFnZUV2ZW50U2VuZGVyLCBzZW5kZXIs
IChldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KSk7CkBAIC0zMDIsNiArMjc3LDE2IEBAIHZv
aWQgSW1hZ2VMb2FkZXI6OnVwZGF0ZVJlbmRlcmVyKCkKICAgICAgICAgaW1hZ2VSZXNvdXJjZS0+
c2V0Q2FjaGVkSW1hZ2UobV9pbWFnZS5nZXQoKSk7CiB9CiAKK3ZvaWQgSW1hZ2VMb2FkZXI6OmRp
c3BhdGNoUGVuZGluZ0V2ZW50KEltYWdlRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQoreworICAg
IEFTU0VSVChldmVudFNlbmRlciA9PSAmYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkgfHwgZXZlbnRT
ZW5kZXIgPT0gJmxvYWRFdmVudFNlbmRlcigpKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSA9IGV2ZW50U2VuZGVyLT5ldmVudFR5cGUoKTsKKyAgICBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5iZWZvcmVsb2FkRXZlbnQpCisgICAgICAgIGRpc3BhdGNoUGVuZGluZ0Jl
Zm9yZUxvYWRFdmVudCgpOworICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmxvYWRF
dmVudCkKKyAgICAgICAgZGlzcGF0Y2hQZW5kaW5nTG9hZEV2ZW50KCk7Cit9CisKIHZvaWQgSW1h
Z2VMb2FkZXI6OmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRFdmVudCgpCiB7CiAgICAgaWYgKG1f
ZmlyZWRCZWZvcmVMb2FkKQpAQCAtMzU0LDY2ICszMzksNCBAQCB2b2lkIEltYWdlTG9hZGVyOjpl
bGVtZW50RGlkTW92ZVRvTmV3RG9jCiAgICAgc2V0SW1hZ2UoMCk7CiB9CiAKLUltYWdlRXZlbnRT
ZW5kZXI6OkltYWdlRXZlbnRTZW5kZXIoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCi0g
ICAgOiBtX2V2ZW50VHlwZShldmVudFR5cGUpCi0gICAgLCBtX3RpbWVyKHRoaXMsICZJbWFnZUV2
ZW50U2VuZGVyOjp0aW1lckZpcmVkKQotewotfQotCi12b2lkIEltYWdlRXZlbnRTZW5kZXI6OmRp
c3BhdGNoRXZlbnRTb29uKEltYWdlTG9hZGVyKiBsb2FkZXIpCi17Ci0gICAgbV9kaXNwYXRjaFNv
b25MaXN0LmFwcGVuZChsb2FkZXIpOwotICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQotICAg
ICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKLX0KLQotdm9pZCBJbWFnZUV2ZW50U2VuZGVy
OjpjYW5jZWxFdmVudChJbWFnZUxvYWRlciogbG9hZGVyKQotewotICAgIC8vIFJlbW92ZSBpbnN0
YW5jZXMgb2YgdGhpcyBsb2FkZXIgZnJvbSBib3RoIGxpc3RzLgotICAgIC8vIFVzZSBsb29wcyBi
ZWNhdXNlIHdlIGFsbG93IG11bHRpcGxlIGluc3RhbmNlcyB0byBnZXQgaW50byB0aGUgbGlzdHMu
Ci0gICAgc2l6ZV90IHNpemUgPSBtX2Rpc3BhdGNoU29vbkxpc3Quc2l6ZSgpOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2Rpc3BhdGNoU29v
bkxpc3RbaV0gPT0gbG9hZGVyKQotICAgICAgICAgICAgbV9kaXNwYXRjaFNvb25MaXN0W2ldID0g
MDsKLSAgICB9Ci0gICAgc2l6ZSA9IG1fZGlzcGF0Y2hpbmdMaXN0LnNpemUoKTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAobV9kaXNwYXRjaGlu
Z0xpc3RbaV0gPT0gbG9hZGVyKQotICAgICAgICAgICAgbV9kaXNwYXRjaGluZ0xpc3RbaV0gPSAw
OwotICAgIH0KLSAgICBpZiAobV9kaXNwYXRjaFNvb25MaXN0LmlzRW1wdHkoKSkKLSAgICAgICAg
bV90aW1lci5zdG9wKCk7Ci19Ci0KLXZvaWQgSW1hZ2VFdmVudFNlbmRlcjo6ZGlzcGF0Y2hQZW5k
aW5nRXZlbnRzKCkKLXsKLSAgICAvLyBOZWVkIHRvIGF2b2lkIHJlLWVudGVyaW5nIHRoaXMgZnVu
Y3Rpb247IGlmIG5ldyBkaXNwYXRjaGVzIGFyZQotICAgIC8vIHNjaGVkdWxlZCBiZWZvcmUgdGhl
IHBhcmVudCBmaW5pc2hlcyBwcm9jZXNzaW5nIHRoZSBsaXN0LCB0aGV5Ci0gICAgLy8gd2lsbCBz
ZXQgYSB0aW1lciBhbmQgZXZlbnR1YWxseSBiZSBwcm9jZXNzZWQuCi0gICAgaWYgKCFtX2Rpc3Bh
dGNoaW5nTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdGltZXIuc3Rv
cCgpOwotCi0gICAgbV9kaXNwYXRjaFNvb25MaXN0LmNoZWNrQ29uc2lzdGVuY3koKTsKLQotICAg
IG1fZGlzcGF0Y2hpbmdMaXN0LnN3YXAobV9kaXNwYXRjaFNvb25MaXN0KTsKLSAgICBzaXplX3Qg
c2l6ZSA9IG1fZGlzcGF0Y2hpbmdMaXN0LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBpZiAoSW1hZ2VMb2FkZXIqIGxvYWRlciA9IG1fZGlz
cGF0Y2hpbmdMaXN0W2ldKSB7Ci0gICAgICAgICAgICBtX2Rpc3BhdGNoaW5nTGlzdFtpXSA9IDA7
Ci0gICAgICAgICAgICBpZiAobV9ldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZWxvYWRF
dmVudCkKLSAgICAgICAgICAgICAgICBsb2FkZXItPmRpc3BhdGNoUGVuZGluZ0JlZm9yZUxvYWRF
dmVudCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGxvYWRlci0+ZGlzcGF0
Y2hQZW5kaW5nTG9hZEV2ZW50KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbV9kaXNwYXRjaGlu
Z0xpc3QuY2xlYXIoKTsKLX0KLQotdm9pZCBJbWFnZUV2ZW50U2VuZGVyOjp0aW1lckZpcmVkKFRp
bWVyPEltYWdlRXZlbnRTZW5kZXI+KikKLXsKLSAgICBkaXNwYXRjaFBlbmRpbmdFdmVudHMoKTsK
LX0KLQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHJldmlzaW9uIDEw
Nzk0NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw5ICszMCwxMiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVt
ZW50OwotY2xhc3MgSW1hZ2VMb2FkRXZlbnRTZW5kZXI7CitjbGFzcyBJbWFnZUxvYWRlcjsKIGNs
YXNzIFJlbmRlckltYWdlUmVzb3VyY2U7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEV2
ZW50U2VuZGVyOwordHlwZWRlZiBFdmVudFNlbmRlcjxJbWFnZUxvYWRlcj4gSW1hZ2VFdmVudFNl
bmRlcjsKKwogY2xhc3MgSW1hZ2VMb2FkZXIgOiBwdWJsaWMgQ2FjaGVkSW1hZ2VDbGllbnQgewog
cHVibGljOgogICAgIEltYWdlTG9hZGVyKEVsZW1lbnQqKTsKQEAgLTU5LDYgKzYyLDggQEAgcHVi
bGljOgogICAgIGJvb2wgaGF2ZUZpcmVkQmVmb3JlTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4g
bV9maXJlZEJlZm9yZUxvYWQ7IH0KICAgICBib29sIGhhdmVGaXJlZExvYWRFdmVudCgpIGNvbnN0
IHsgcmV0dXJuIG1fZmlyZWRMb2FkOyB9CiAKKyAgICB2b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50
KEltYWdlRXZlbnRTZW5kZXIqKTsKKwogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0Jl
Zm9yZUxvYWRFdmVudHMoKTsKICAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZl
bnRzKCk7CiAKQEAgLTY5LDcgKzc0LDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hMb2FkRXZlbnQoKSA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgc291cmNlVVJJKGNvbnN0
IEF0b21pY1N0cmluZyYpIGNvbnN0ID0gMDsKIAotICAgIGZyaWVuZCBjbGFzcyBJbWFnZUV2ZW50
U2VuZGVyOwogICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7CiAgICAg
dm9pZCBkaXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127464</attachid>
            <date>2012-02-16 16:27:42 -0800</date>
            <delta_ts>2012-02-21 12:35:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug78840_1.patch</filename>
            <type>text/plain</type>
            <size>14896</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNzk5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTAyLTE2ICBEYW5pZWwg
QmF0ZXMgIDxkYmF0ZXNAd2Via2l0Lm9yZz4KKworICAgICAgICBBYnN0cmFjdCBJbWFnZUV2ZW50
U2VuZGVyIGludG8gYSBnZW5lcmFsIHB1cnBvc2UgRXZlbnRTZW5kZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4ODQwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWJzdHJhY3QgdGhlIGZ1bmN0aW9uYWxp
dHkgaW4gSW1hZ2VFdmVudFNlbmRlciBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGFnYWluLgorICAg
ICAgICBUaGlzIGZ1bmN0aW9uYWxpdHkgbWF5IGJlIHVzZWZ1bCBpbiBmaXhpbmcgV2ViS2l0IEJ1
ZyAjMzg5OTUuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbGl0eSB3YXMgY2hhbmdlZDsgbm8gbmV3
IHRlc3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogQWRkZWQgRXZlbnRTZW5k
ZXIuaC4KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0
by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgor
ICAgICAgICAqIGRvbS9FdmVudFNlbmRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoRXZlbnRTZW5kZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRTZW5kZXI6OmV2
ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNlbmRlcjo6aGFzUGVuZGluZ0V2ZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFNlbmRlcjo6dGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjo6OkV2ZW50U2VuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6ZGlzcGF0Y2hF
dmVudFNvb24pOgorICAgICAgICAoV2ViQ29yZTo6OjpjYW5jZWxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjo6OmRpc3BhdGNoUGVuZGluZ0V2ZW50cyk6CisgICAgICAgICogbG9hZGVyL0ltYWdl
TG9hZGVyLmNwcDogTW9kaWZpZWQgdG8gdXNlIEV2ZW50U2VuZGVyLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXZlbnQp
OiBBZGRlZDsgY2FsbGVkIGJ5IEV2ZW50U2VuZGVyIHdoZW4gdGhlIEltYWdlTG9hZGVyCisgICAg
ICAgIHNob3VsZCBkaXNwYXRjaCBhIHBlbmRpbmcgQmVmb3JlTG9hZCBvciBMb2FkIGV2ZW50Lgor
ICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChJbWFnZUxvYWRlcik6CisKIDIwMTItMDItMTYgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBbQ29udmVydFNjcmlwdFN0cmluZ10gZnJv
bSBGaWxlUmVhZGVyU3luYy5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
cmV2aXNpb24gMTA3OTQ3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQko
d29ya2luZyBjb3B5KQpAQCAtMTU2NCw2ICsxNTY0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UXVldWUuaCBcCisJ
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9F
eGNlcHRpb25CYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDEwNzk0NykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MzIsNiArMTYzMiw3IEBAIEhFQURFUlMgKz0gXAogICAgIGRvbS9FdmVudExp
c3RlbmVyTWFwLmggXAogICAgIGRvbS9FdmVudE5hbWVzLmggXAogICAgIGRvbS9FdmVudFF1ZXVl
LmggXAorICAgIGRvbS9FdmVudFNlbmRlci5oIFwKICAgICBkb20vRXZlbnRUYXJnZXQuaCBcCiAg
ICAgZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDc5NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTUwMjUsNiArNTAyNSw3IEBACiAgICAgICAgICAg
ICAnZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwJywKICAgICAgICAgICAgICdkb20vRXZlbnROYW1l
cy5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FdmVudFF1ZXVlLmgnLAorICAgICAgICAgICAgJ2Rv
bS9FdmVudFNlbmRlci5oJywKICAgICAgICAgICAgICdkb20vRXZlbnRUYXJnZXQuY3BwJywKICAg
ICAgICAgICAgICdkb20vRXhjZXB0aW9uQmFzZS5jcHAnLAogICAgICAgICAgICAgJ2RvbS9FeGNl
cHRpb25CYXNlLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNzk0NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00ODY5OCw2ICs0ODY5OCwx
MCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxk
b21cRXZlbnRTZW5kZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cZG9tXEV2ZW50VGFyZ2V0LmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1
cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDc5NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNjEwLDYgKzEy
NjEwLDcgQEAKIAkJQ0UwNTdGQTMxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTA1
N0ZBNDEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTU0RkQzNzEwMTZEOUE2MDA4QjQ0QzggLyog
U2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2NyaXB0U291cmNlUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U1
Q0IxQjMxNEVEQUI2RjAwQkIyNzk1IC8qIEV2ZW50U2VuZGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV2ZW50U2VuZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFQTM5NDlBMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGljSGFzaFNldE5vZGVM
aXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VBMzk0OUIxMUQ0NUNEQTAw
MzA5NENGIC8qIFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTdGF0aWNIYXNoU2V0Tm9kZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VDQ0ZDM0ExNDE5NzNENTAwMkEwQUMxIC8qIERlY29kZUVzY2FwZVNlcXVlbmNl
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWNvZGVFc2NhcGVTZXF1ZW5j
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjQ4LDYgKzIwNjQ5LDcgQEAK
IAkJCQk5Mzk4ODVDMTA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnROYW1lcy5jcHAgKi8sCiAJCQkJ
OTM5ODg1QzIwOEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuaCAqLywKIAkJCQk4RjY3NTYx
OTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovLAorCQkJCUNFNUNCMUIzMTRFREFC
NkYwMEJCMjc5NSAvKiBFdmVudFNlbmRlci5oICovLAogCQkJCUUxMkVEQkU5MEIzMDhFMEIwMDI3
MDRCNiAvKiBFdmVudFRhcmdldC5jcHAgKi8sCiAJCQkJRTEyRURCN0EwQjMwOEE3ODAwMjcwNEI2
IC8qIEV2ZW50VGFyZ2V0LmggKi8sCiAJCQkJODVBRkE3NDIwQUFGMjk4NDAwRTg0MzA1IC8qIEV2
ZW50VGFyZ2V0LmlkbCAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFNlbmRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFNlbmRlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50U2VuZGVyLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFdmVudFNlbmRlcl9oCisjZGVm
aW5lIEV2ZW50U2VuZGVyX2gKKworI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNs
YXNzIEV2ZW50U2VuZGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFdmVudFNlbmRlcik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IEV2ZW50U2Vu
ZGVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKKworICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9ldmVudFR5cGU7IH0KKyAgICB2b2lk
IGRpc3BhdGNoRXZlbnRTb29uKFQqKTsKKyAgICB2b2lkIGNhbmNlbEV2ZW50KFQqKTsKKyAgICB2
b2lkIGRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOworCisjaWZuZGVmIE5ERUJVRworICAgIGJvb2wg
aGFzUGVuZGluZ0V2ZW50cyhUKiBzZW5kZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV9kaXNwYXRjaFNvb25MaXN0LmZpbmQoc2VuZGVyKSAhPSBub3RGb3VuZCB8fCBtX2Rpc3BhdGNo
aW5nTGlzdC5maW5kKHNlbmRlcikgIT0gbm90Rm91bmQ7CisgICAgfQorI2VuZGlmCisKK3ByaXZh
dGU6CisgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPEV2ZW50U2VuZGVyPFQ+ID4qKSB7IGRpc3Bh
dGNoUGVuZGluZ0V2ZW50cygpOyB9CisKKyAgICBBdG9taWNTdHJpbmcgbV9ldmVudFR5cGU7Cisg
ICAgVGltZXI8RXZlbnRTZW5kZXI8VD4gPiBtX3RpbWVyOworICAgIFZlY3RvcjxUKj4gbV9kaXNw
YXRjaFNvb25MaXN0OworICAgIFZlY3RvcjxUKj4gbV9kaXNwYXRjaGluZ0xpc3Q7Cit9OworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBFdmVudFNlbmRlcjxUPjo6RXZlbnRTZW5kZXIoY29uc3QgQXRv
bWljU3RyaW5nJiBldmVudFR5cGUpCisgICAgOiBtX2V2ZW50VHlwZShldmVudFR5cGUpCisgICAg
LCBtX3RpbWVyKHRoaXMsICZFdmVudFNlbmRlcjo6dGltZXJGaXJlZCkKK3sKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gdm9pZCBFdmVudFNlbmRlcjxUPjo6ZGlzcGF0Y2hFdmVudFNvb24oVCog
c2VuZGVyKQoreworICAgIG1fZGlzcGF0Y2hTb29uTGlzdC5hcHBlbmQoc2VuZGVyKTsKKyAgICBp
ZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgRXZlbnRTZW5kZXI8VD46OmNhbmNlbEV2
ZW50KFQqIHNlbmRlcikKK3sKKyAgICAvLyBSZW1vdmUgaW5zdGFuY2VzIG9mIHRoaXMgc2VuZGVy
IGZyb20gYm90aCBsaXN0cy4KKyAgICAvLyBVc2UgbG9vcHMgYmVjYXVzZSB3ZSBhbGxvdyBtdWx0
aXBsZSBpbnN0YW5jZXMgdG8gZ2V0IGludG8gdGhlIGxpc3RzLgorICAgIHNpemVfdCBzaXplID0g
bV9kaXNwYXRjaFNvb25MaXN0LnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkgeworICAgICAgICBpZiAobV9kaXNwYXRjaFNvb25MaXN0W2ldID09IHNlbmRlcikK
KyAgICAgICAgICAgIG1fZGlzcGF0Y2hTb29uTGlzdFtpXSA9IDA7CisgICAgfQorICAgIHNpemUg
PSBtX2Rpc3BhdGNoaW5nTGlzdC5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgaWYgKG1fZGlzcGF0Y2hpbmdMaXN0W2ldID09IHNlbmRlcikK
KyAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ldID0gMDsKKyAgICB9CisgICAgaWYgKG1f
ZGlzcGF0Y2hTb29uTGlzdC5pc0VtcHR5KCkpCisgICAgICAgIG1fdGltZXIuc3RvcCgpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIEV2ZW50U2VuZGVyPFQ+OjpkaXNwYXRjaFBlbmRp
bmdFdmVudHMoKQoreworICAgIC8vIE5lZWQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgdGhpcyBmdW5j
dGlvbjsgaWYgbmV3IGRpc3BhdGNoZXMgYXJlCisgICAgLy8gc2NoZWR1bGVkIGJlZm9yZSB0aGUg
cGFyZW50IGZpbmlzaGVzIHByb2Nlc3NpbmcgdGhlIGxpc3QsIHRoZXkKKyAgICAvLyB3aWxsIHNl
dCBhIHRpbWVyIGFuZCBldmVudHVhbGx5IGJlIHByb2Nlc3NlZC4KKyAgICBpZiAoIW1fZGlzcGF0
Y2hpbmdMaXN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV90aW1lci5zdG9w
KCk7CisKKyAgICBtX2Rpc3BhdGNoU29vbkxpc3QuY2hlY2tDb25zaXN0ZW5jeSgpOworCisgICAg
bV9kaXNwYXRjaGluZ0xpc3Quc3dhcChtX2Rpc3BhdGNoU29vbkxpc3QpOworICAgIHNpemVfdCBz
aXplID0gbV9kaXNwYXRjaGluZ0xpc3Quc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CisgICAgICAgIGlmIChUKiBzZW5kZXIgPSBtX2Rpc3BhdGNoaW5nTGlz
dFtpXSkgeworICAgICAgICAgICAgbV9kaXNwYXRjaGluZ0xpc3RbaV0gPSAwOworICAgICAgICAg
ICAgc2VuZGVyLT5kaXNwYXRjaFBlbmRpbmdFdmVudCh0aGlzKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBtX2Rpc3BhdGNoaW5nTGlzdC5jbGVhcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFdmVudFNlbmRlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSW1hZ2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAJKHJldmlzaW9uIDEwNzk0NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5o
IgorI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgi
CkBAIC02MiwzMiArNjMsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBWYWx1ZUNoZWNrPFdlYkNvcmU6
OkltCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSW1hZ2VFdmVudFNlbmRlciB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VFdmVudFNlbmRlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotcHVibGljOgotICAgIEltYWdlRXZlbnRTZW5kZXIoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUpOwotCi0gICAgdm9pZCBkaXNwYXRjaEV2ZW50U29vbihJbWFnZUxvYWRl
ciopOwotICAgIHZvaWQgY2FuY2VsRXZlbnQoSW1hZ2VMb2FkZXIqKTsKLQotICAgIHZvaWQgZGlz
cGF0Y2hQZW5kaW5nRXZlbnRzKCk7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBoYXNQZW5k
aW5nRXZlbnRzKEltYWdlTG9hZGVyKiBsb2FkZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbV9kaXNwYXRjaFNvb25MaXN0LmZpbmQobG9hZGVyKSAhPSBub3RGb3VuZCB8fCBtX2Rpc3Bh
dGNoaW5nTGlzdC5maW5kKGxvYWRlcikgIT0gbm90Rm91bmQ7Ci0gICAgfQotI2VuZGlmCi0KLXBy
aXZhdGU6Ci0gICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPEltYWdlRXZlbnRTZW5kZXI+Kik7Ci0K
LSAgICBBdG9taWNTdHJpbmcgbV9ldmVudFR5cGU7Ci0gICAgVGltZXI8SW1hZ2VFdmVudFNlbmRl
cj4gbV90aW1lcjsKLSAgICBWZWN0b3I8SW1hZ2VMb2FkZXIqPiBtX2Rpc3BhdGNoU29vbkxpc3Q7
Ci0gICAgVmVjdG9yPEltYWdlTG9hZGVyKj4gbV9kaXNwYXRjaGluZ0xpc3Q7Ci19OwotCiBzdGF0
aWMgSW1hZ2VFdmVudFNlbmRlciYgYmVmb3JlTG9hZEV2ZW50U2VuZGVyKCkKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEltYWdlRXZlbnRTZW5kZXIsIHNlbmRlciwgKGV2ZW50TmFtZXMoKS5i
ZWZvcmVsb2FkRXZlbnQpKTsKQEAgLTMwMiw2ICsyNzcsMTYgQEAgdm9pZCBJbWFnZUxvYWRlcjo6
dXBkYXRlUmVuZGVyZXIoKQogICAgICAgICBpbWFnZVJlc291cmNlLT5zZXRDYWNoZWRJbWFnZSht
X2ltYWdlLmdldCgpKTsKIH0KIAordm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0Y2hQZW5kaW5nRXZl
bnQoSW1hZ2VFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCit7CisgICAgQVNTRVJUKGV2ZW50U2Vu
ZGVyID09ICZiZWZvcmVMb2FkRXZlbnRTZW5kZXIoKSB8fCBldmVudFNlbmRlciA9PSAmbG9hZEV2
ZW50U2VuZGVyKCkpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gZXZlbnRT
ZW5kZXItPmV2ZW50VHlwZSgpOworICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJl
Zm9yZWxvYWRFdmVudCkKKyAgICAgICAgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7
CisgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkubG9hZEV2ZW50KQorICAgICAgICBk
aXNwYXRjaFBlbmRpbmdMb2FkRXZlbnQoKTsKK30KKwogdm9pZCBJbWFnZUxvYWRlcjo6ZGlzcGF0
Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCkKIHsKICAgICBpZiAobV9maXJlZEJlZm9yZUxvYWQp
CkBAIC0zNTQsNjYgKzMzOSw0IEBAIHZvaWQgSW1hZ2VMb2FkZXI6OmVsZW1lbnREaWRNb3ZlVG9O
ZXdEb2MKICAgICBzZXRJbWFnZSgwKTsKIH0KIAotSW1hZ2VFdmVudFNlbmRlcjo6SW1hZ2VFdmVu
dFNlbmRlcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKLSAgICA6IG1fZXZlbnRUeXBl
KGV2ZW50VHlwZSkKLSAgICAsIG1fdGltZXIodGhpcywgJkltYWdlRXZlbnRTZW5kZXI6OnRpbWVy
RmlyZWQpCi17Ci19Ci0KLXZvaWQgSW1hZ2VFdmVudFNlbmRlcjo6ZGlzcGF0Y2hFdmVudFNvb24o
SW1hZ2VMb2FkZXIqIGxvYWRlcikKLXsKLSAgICBtX2Rpc3BhdGNoU29vbkxpc3QuYXBwZW5kKGxv
YWRlcik7Ci0gICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KDApOwotfQotCi12b2lkIEltYWdlRXZlbnRTZW5kZXI6OmNhbmNlbEV2ZW50KElt
YWdlTG9hZGVyKiBsb2FkZXIpCi17Ci0gICAgLy8gUmVtb3ZlIGluc3RhbmNlcyBvZiB0aGlzIGxv
YWRlciBmcm9tIGJvdGggbGlzdHMuCi0gICAgLy8gVXNlIGxvb3BzIGJlY2F1c2Ugd2UgYWxsb3cg
bXVsdGlwbGUgaW5zdGFuY2VzIHRvIGdldCBpbnRvIHRoZSBsaXN0cy4KLSAgICBzaXplX3Qgc2l6
ZSA9IG1fZGlzcGF0Y2hTb29uTGlzdC5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKLSAgICAgICAgaWYgKG1fZGlzcGF0Y2hTb29uTGlzdFtpXSA9PSBsb2Fk
ZXIpCi0gICAgICAgICAgICBtX2Rpc3BhdGNoU29vbkxpc3RbaV0gPSAwOwotICAgIH0KLSAgICBz
aXplID0gbV9kaXNwYXRjaGluZ0xpc3Quc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2Rpc3BhdGNoaW5nTGlzdFtpXSA9PSBsb2Fk
ZXIpCi0gICAgICAgICAgICBtX2Rpc3BhdGNoaW5nTGlzdFtpXSA9IDA7Ci0gICAgfQotICAgIGlm
IChtX2Rpc3BhdGNoU29vbkxpc3QuaXNFbXB0eSgpKQotICAgICAgICBtX3RpbWVyLnN0b3AoKTsK
LX0KLQotdm9pZCBJbWFnZUV2ZW50U2VuZGVyOjpkaXNwYXRjaFBlbmRpbmdFdmVudHMoKQotewot
ICAgIC8vIE5lZWQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgdGhpcyBmdW5jdGlvbjsgaWYgbmV3IGRp
c3BhdGNoZXMgYXJlCi0gICAgLy8gc2NoZWR1bGVkIGJlZm9yZSB0aGUgcGFyZW50IGZpbmlzaGVz
IHByb2Nlc3NpbmcgdGhlIGxpc3QsIHRoZXkKLSAgICAvLyB3aWxsIHNldCBhIHRpbWVyIGFuZCBl
dmVudHVhbGx5IGJlIHByb2Nlc3NlZC4KLSAgICBpZiAoIW1fZGlzcGF0Y2hpbmdMaXN0LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV90aW1lci5zdG9wKCk7Ci0KLSAgICBtX2Rp
c3BhdGNoU29vbkxpc3QuY2hlY2tDb25zaXN0ZW5jeSgpOwotCi0gICAgbV9kaXNwYXRjaGluZ0xp
c3Quc3dhcChtX2Rpc3BhdGNoU29vbkxpc3QpOwotICAgIHNpemVfdCBzaXplID0gbV9kaXNwYXRj
aGluZ0xpc3Quc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
Ci0gICAgICAgIGlmIChJbWFnZUxvYWRlciogbG9hZGVyID0gbV9kaXNwYXRjaGluZ0xpc3RbaV0p
IHsKLSAgICAgICAgICAgIG1fZGlzcGF0Y2hpbmdMaXN0W2ldID0gMDsKLSAgICAgICAgICAgIGlm
IChtX2V2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50KQotICAgICAgICAg
ICAgICAgIGxvYWRlci0+ZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50KCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFBlbmRpbmdMb2FkRXZl
bnQoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBtX2Rpc3BhdGNoaW5nTGlzdC5jbGVhcigpOwot
fQotCi12b2lkIEltYWdlRXZlbnRTZW5kZXI6OnRpbWVyRmlyZWQoVGltZXI8SW1hZ2VFdmVudFNl
bmRlcj4qKQotewotICAgIGRpc3BhdGNoUGVuZGluZ0V2ZW50cygpOwotfQotCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuaAkocmV2aXNpb24gMTA3OTQ3KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMw
LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7Ci1jbGFzcyBJbWFn
ZUxvYWRFdmVudFNlbmRlcjsKK2NsYXNzIEltYWdlTG9hZGVyOwogY2xhc3MgUmVuZGVySW1hZ2VS
ZXNvdXJjZTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgRXZlbnRTZW5kZXI7Cit0eXBl
ZGVmIEV2ZW50U2VuZGVyPEltYWdlTG9hZGVyPiBJbWFnZUV2ZW50U2VuZGVyOworCiBjbGFzcyBJ
bWFnZUxvYWRlciA6IHB1YmxpYyBDYWNoZWRJbWFnZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgSW1h
Z2VMb2FkZXIoRWxlbWVudCopOwpAQCAtNTksNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXZlRmlyZWRCZWZvcmVMb2FkRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZpcmVkQmVmb3JlTG9h
ZDsgfQogICAgIGJvb2wgaGF2ZUZpcmVkTG9hZEV2ZW50KCkgY29uc3QgeyByZXR1cm4gbV9maXJl
ZExvYWQ7IH0KIAorICAgIHZvaWQgZGlzcGF0Y2hQZW5kaW5nRXZlbnQoSW1hZ2VFdmVudFNlbmRl
ciopOworCiAgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hQZW5kaW5nQmVmb3JlTG9hZEV2ZW50cygp
OwogICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoUGVuZGluZ0xvYWRFdmVudHMoKTsKIApAQCAtNjks
NyArNzQsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgp
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VVUkkoY29uc3QgQXRvbWljU3RyaW5nJikg
Y29uc3QgPSAwOwogCi0gICAgZnJpZW5kIGNsYXNzIEltYWdlRXZlbnRTZW5kZXI7CiAgICAgdm9p
ZCBkaXNwYXRjaFBlbmRpbmdCZWZvcmVMb2FkRXZlbnQoKTsKICAgICB2b2lkIGRpc3BhdGNoUGVu
ZGluZ0xvYWRFdmVudCgpOwogCg==
</data>
<flag name="review"
          id="129603"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>