<?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>138107</bug_id>
          
          <creation_ts>2014-10-27 15:39:54 -0700</creation_ts>
          <short_desc>Introduce a new abstract class called AudioProducer and keep a set of AudioProducers rather than the active MediaSessions in Document</short_desc>
          <delta_ts>2014-10-28 15:21:56 -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>Media</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ada Chan">adachan</reporter>
          <assigned_to name="Ada Chan">adachan</assigned_to>
          <cc>adachan</cc>
    
    <cc>buildbot</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1044346</commentid>
    <comment_count>0</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-10-27 15:39:54 -0700</bug_when>
    <thetext>In preparation for handling Web Audio and plug-ins for the isPlayingAudio() API in Document, introduce an abstract class called AudioProducer that HTMLMediaElement, PluginView, and AudioContext will implement.  Initially it&apos;ll have this method:

virtual bool isPlayingAudio() = 0;

Instead of keeping a set of MediaSessions in Document, we&apos;ll be keeping a set of AudioProducers instead.  The Document will query its AudioProducers for its overall audio playing state in Document::updateIsPlayingAudio().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044372</commentid>
    <comment_count>1</comment_count>
      <attachid>240517</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-10-27 17:51:06 -0700</bug_when>
    <thetext>Created attachment 240517
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044557</commentid>
    <comment_count>2</comment_count>
      <attachid>240517</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2014-10-28 11:29:01 -0700</bug_when>
    <thetext>Comment on attachment 240517
Patch

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

&gt; Source/WebCore/html/HTMLMediaElement.cpp:6028
&gt; +bool HTMLMediaElement::isPlayingAudio()
&gt; +{
&gt; +    return m_mediaSession-&gt;hasMediaCharacteristics(MediaSession::MediaCharacteristicAudible) &amp;&amp; m_mediaSession-&gt;state() == MediaSession::Playing;
&gt; +}

Nit: why ask the session when it will just call back into HTMLMediaElement? Something like &quot;return hasAudio() &amp;&amp; isPlaying()&quot; should be equivalent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044623</commentid>
    <comment_count>3</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-10-28 15:21:23 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 240517 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=240517&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:6028
&gt; &gt; +bool HTMLMediaElement::isPlayingAudio()
&gt; &gt; +{
&gt; &gt; +    return m_mediaSession-&gt;hasMediaCharacteristics(MediaSession::MediaCharacteristicAudible) &amp;&amp; m_mediaSession-&gt;state() == MediaSession::Playing;
&gt; &gt; +}
&gt; 
&gt; Nit: why ask the session when it will just call back into HTMLMediaElement?
&gt; Something like &quot;return hasAudio() &amp;&amp; isPlaying()&quot; should be equivalent.

I changed it to call hasAudio() directly.  I&apos;m still querying m_mediaSession&apos;s state here for now because HTMLMediaElement::m_playing is not updated to the correct value yet when MediaSession::setState() is called (which triggers Document::updateIsPlayingAudio() to be called).

I&apos;ve filed https://bugs.webkit.org/show_bug.cgi?id=138153.  That bug will cover removing Remove MediaSessionClient::hasMediaCharacteristics() and MediaSessionClient::mediaStateDidChange().  As part of that change, I&apos;ll call Document::updateIsPlayingAudio() after HTMLMediaElement::m_playing has been updated, and then I can change HTMLMediaElement::isPlayingAudio() to call isPlaying() directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1044624</commentid>
    <comment_count>4</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-10-28 15:21:56 -0700</bug_when>
    <thetext>Committed:
http://trac.webkit.org/changeset/175273</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240517</attachid>
            <date>2014-10-27 17:51:06 -0700</date>
            <delta_ts>2014-10-28 11:29:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Introduce-a-new-abstract-class-called-AudioProducer-.patch</filename>
            <type>text/plain</type>
            <size>16895</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">RnJvbSAwZjBjNjdjMTJiNjQ1OGQ1YTJkMzA1NzAwOWM3YTYzMTM2NzI4OTIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGEgQ2hhbiA8YWRhY2hhbkBhcHBsZS5jb20+CkRhdGU6IE1v
biwgMjcgT2N0IDIwMTQgMTc6NTA6MjcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBJbnRyb2R1Y2Ug
YSBuZXcgYWJzdHJhY3QgY2xhc3MgY2FsbGVkIEF1ZGlvUHJvZHVjZXIgYW5kIGtlZXAKIGEgc2V0
IG9mIEF1ZGlvUHJvZHVjZXJzIHJhdGhlciB0aGFuIHRoZSBhY3RpdmUgTWVkaWFTZXNzaW9ucyBp
biBEb2N1bWVudAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODEw
NwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9y
IGNoYW5nZS4KCiogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgpBZGQgQXVkaW9Q
cm9kdWNlci5oIHRvIHRoZSBwcm9qZWN0LgoqIGRvbS9Eb2N1bWVudC5jcHA6CihXZWJDb3JlOjpE
b2N1bWVudDo6YWRkQXVkaW9Qcm9kdWNlcik6CihXZWJDb3JlOjpEb2N1bWVudDo6cmVtb3ZlQXVk
aW9Qcm9kdWNlcik6CihXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nQXVkaW8pOgpH
byB0aHJvdWdoIHRoZSBzZXQgb2YgQXVkaW9Qcm9kdWNlcnMgYW5kIHNlZSBpZiBhbnkgaXMgcGxh
eWluZyBhdWRpby4KTm93IHRoYXQgdGhpcyBtZXRob2Qgbm8gbG9uZ2VyIHJlZmVycyB0byBNZWRp
YVNlc3Npb25zIGRpcmVjdGx5LCB0aGlzIGNvZGUKZG9lcyBub3QgbmVlZCB0byBiZSBndWFyZGVk
IGJ5ICNpZiBFTkFCTEUoVklERU8pLgooV2ViQ29yZTo6RG9jdW1lbnQ6OnJlZ2lzdGVyTWVkaWFT
ZXNzaW9uKTogRGVsZXRlZC4KKFdlYkNvcmU6OkRvY3VtZW50Ojp1bnJlZ2lzdGVyTWVkaWFTZXNz
aW9uKTogRGVsZXRlZC4KKiBkb20vRG9jdW1lbnQuaDoKKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwOgooV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQpOgoo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dW5yZWdpc3RlcldpdGhEb2N1bWVudCk6CihXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc1BsYXlpbmdBdWRpbyk6ClJldHVybiB3aGV0aGVyIHRo
ZSBNZWRpYVNlc3Npb24gaGFzIGF1ZGlibGUgY2hhcmFjdGVyaXN0aWMgYW5kIGlzIHBsYXlpbmcu
CiogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CiogcGFnZS9BdWRpb1Byb2R1Y2VyLmg6IEFkZGVk
LgooV2ViQ29yZTo6QXVkaW9Qcm9kdWNlcjo6fkF1ZGlvUHJvZHVjZXIpOgoqIHBhZ2UvUGFnZS5j
cHA6CihXZWJDb3JlOjpQYWdlOjp1cGRhdGVJc1BsYXlpbmdBdWRpbyk6ClRoaXMgaXMgbm8gbG9u
Z2VyIGd1YXJkZWQgd2l0aCAjaWYgRU5BQkxFKFZJREVPKSBzaW5jZSB0aGUgRG9jdW1lbnQgbWV0
aG9kcyBpdCBjYWxscwphcmUgbm8gbG9uZ2VyIGd1YXJkZWQuCiogcGFnZS9QYWdlLmg6Ci0tLQog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzYgKysr
KysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogfCAgNCArKysKIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgICAg
ICAgICAgICAgICAgICB8IDE2ICsrKystLS0tLQogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmggICAgICAgICAgICAgICAgICAgIHwgMTAgKysrLS0tCiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwICAgICAgICAgfCAgOSArKysrLS0KIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5oICAgICAgICAgICB8ICA2ICsrKy0KIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvQXVkaW9Qcm9kdWNlci5oICAgICAgICAgICAgICB8IDQxICsrKysrKysrKysrKysrKysr
KysrKysrKwogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCAgICAgICAgICAgICAgICAgICAg
IHwgIDIgLS0KIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oICAgICAgICAgICAgICAgICAgICAg
ICB8ICAyIC0tCiA5IGZpbGVzIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wYWdlL0F1ZGlvUHJvZHVj
ZXIuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA2NGRlNjQ5Li4yMWQ5N2E5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMTQtMTAtMjcgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgSW50cm9kdWNlIGEgbmV3IGFic3RyYWN0IGNsYXNzIGNhbGxlZCBBdWRpb1Byb2R1Y2Vy
IGFuZCBrZWVwIGEgc2V0IG9mIEF1ZGlvUHJvZHVjZXJzCisgICAgICAgIHJhdGhlciB0aGFuIHRo
ZSBhY3RpdmUgTWVkaWFTZXNzaW9ucyBpbiBEb2N1bWVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgIEFkZCBBdWRpb1Byb2R1Y2VyLmggdG8gdGhlIHByb2plY3QuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRBdWRpb1Byb2R1Y2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZW1vdmVBdWRpb1Byb2R1Y2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdBdWRpbyk6CisgICAgICAg
IEdvIHRocm91Z2ggdGhlIHNldCBvZiBBdWRpb1Byb2R1Y2VycyBhbmQgc2VlIGlmIGFueSBpcyBw
bGF5aW5nIGF1ZGlvLgorICAgICAgICBOb3cgdGhhdCB0aGlzIG1ldGhvZCBubyBsb25nZXIgcmVm
ZXJzIHRvIE1lZGlhU2Vzc2lvbnMgZGlyZWN0bHksIHRoaXMgY29kZQorICAgICAgICBkb2VzIG5v
dCBuZWVkIHRvIGJlIGd1YXJkZWQgYnkgI2lmIEVOQUJMRShWSURFTykuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6cmVnaXN0ZXJNZWRpYVNlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnVucmVnaXN0ZXJNZWRpYVNlc3Npb24pOiBEZWxldGVkLgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZWdpc3RlcldpdGhEb2N1
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0
aERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzUGxheWlu
Z0F1ZGlvKToKKyAgICAgICAgUmV0dXJuIHdoZXRoZXIgdGhlIE1lZGlhU2Vzc2lvbiBoYXMgYXVk
aWJsZSBjaGFyYWN0ZXJpc3RpYyBhbmQgaXMgcGxheWluZy4KKyAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0F1ZGlvUHJvZHVjZXIuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1Byb2R1Y2VyOjp+QXVkaW9Qcm9kdWNlcik6CisgICAgICAg
ICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnVwZGF0ZUlzUGxheWlu
Z0F1ZGlvKToKKyAgICAgICAgVGhpcyBpcyBubyBsb25nZXIgZ3VhcmRlZCB3aXRoICNpZiBFTkFC
TEUoVklERU8pIHNpbmNlIHRoZSBEb2N1bWVudCBtZXRob2RzIGl0IGNhbGxzCisgICAgICAgIGFy
ZSBubyBsb25nZXIgZ3VhcmRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAxNC0xMC0y
NyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBodHRwL3Rl
c3RzL2Nvb2tpZXMvdGhpcmQtcGFydHktY29va2llLXJlbGF4aW5nLmh0bWwgaXMgZmxha3kgb24g
Ym90cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGQxZWMzN2IuLjRmMzk3ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIwNDMsNiArMjA0Myw3IEBACiAJCTUy
Q0NBOUU4MTVFM0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkNDQTlFNTE1RTNG
NjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oICovOyB9OwogCQk1MkND
QTlFOTE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQ0NBOUU2MTVFM0Y2
NEMwMDUzQzc3RiAvKiBET01ET01OYW1lZEZsb3dDb2xsZWN0aW9uLm1tICovOyB9OwogCQk1MkND
QTlFQTE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbkludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkNDQTlF
NzE1RTNGNjRDMDA1M0M3N0YgLyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbkludGVybmFsLmgg
Ki87IH07CisJCTUyRTJDQUZDMTlGRjAyMDcwMDFFRUI0RiAvKiBBdWRpb1Byb2R1Y2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkUyQ0FGQjE5RkYw
MjA3MDAxRUVCNEYgLyogQXVkaW9Qcm9kdWNlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyRjEwODY1MTYyQjZEQTQwMDlBQzgxRSAvKiBNaXhl
ZENvbnRlbnRDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUyRjEwODYyMTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2Vy
LmNwcCAqLzsgfTsKIAkJNTJGMTA4NjYxNjJCNkRBODAwOUFDODFFIC8qIE1peGVkQ29udGVudENo
ZWNrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
RjEwODYzMTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJGNTJFMTExNEEwMTM0
RjAwQUNDMzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGNTJFMTAxNEEwMTM0RjAwQUNDMzk3IC8qIE5T
U2Nyb2xsZXJJbXBEZXRhaWxzLm1tICovOyB9OwpAQCAtOTE4MSw2ICs5MTgyLDcgQEAKIAkJNTJD
Q0E5RTUxNUUzRjY0QzAwNTNDNzdGIC8qIERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkNDQTlFNjE1RTNGNjRDMDA1M0M3N0Yg
LyogRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IERPTURPTU5hbWVkRmxvd0NvbGxlY3Rpb24ubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyQ0NBOUU3MTVFM0Y2NEMwMDUzQzc3RiAvKiBET01ET01OYW1l
ZEZsb3dDb2xsZWN0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NRE9NTmFtZWRGbG93Q29sbGVjdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUyRTJDQUZCMTlGRjAyMDcwMDFFRUI0RiAvKiBBdWRpb1Byb2R1Y2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1ZGlvUHJvZHVjZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGMTA4NjIxNjJCNkQ4MjAwOUFDODFFIC8qIE1peGVk
Q29udGVudENoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWl4ZWRDb250ZW50Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
RjEwODYzMTYyQjZEODIwMDlBQzgxRSAvKiBNaXhlZENvbnRlbnRDaGVja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1peGVkQ29udGVudENoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJGNTJFMTAxNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xs
ZXJJbXBEZXRhaWxzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TlNTY3JvbGxlckltcERldGFpbHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
NjU3Myw2ICsxNjU3NSw3IEBACiAJCQkJODUzOEYwMDAwQUQ3MTc3MDAwNkE4MUQxIC8qIEFic3Ry
YWN0Vmlldy5pZGwgKi8sCiAJCQkJQkNGNDhDRTYxMzcwRDExNDAwNEU4N0Q2IC8qIEFkanVzdFZp
ZXdTaXplT3JOb3QuaCAqLywKIAkJCQlDRURBMTJENjE1MkNBMUNCMDBEOUUwOEQgLyogQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50LmggKi8sCisJCQkJNTJFMkNBRkIxOUZGMDIwNzAwMUVFQjRGIC8qIEF1
ZGlvUHJvZHVjZXIuaCAqLywKIAkJCQk0NTgzMEQ0QjE2NzlCNEY4MDBBQ0Y4QzMgLyogQXV0b3Nj
cm9sbENvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ1ODMwRDRDMTY3OUI0RjgwMEFDRjhDMyAvKiBB
dXRvc2Nyb2xsQ29udHJvbGxlci5oICovLAogCQkJCUJDMTI0RUU0MEMyNjQxQ0QwMDlFMjM0OSAv
KiBCYXJQcm9wLmNwcCAqLywKQEAgLTI1ODY1LDYgKzI1ODY4LDcgQEAKIAkJCQk3RUU2ODQ2RjEy
RDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTdFRTY4NDcwMTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZVJlc3BvbnNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRDNzY3RjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTUyRTJDQUZDMTlGRjAyMDcwMDFFRUI0RiAvKiBB
dWRpb1Byb2R1Y2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBNTEyQjAyNkY3MDBDMUEz
NTkgLyogUmV2ZXJiLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMxNjBBNzEyQjAyNkY3MDBDMUEz
NTkgLyogUmV2ZXJiQWNjdW11bGF0aW9uQnVmZmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDMx
NjBBOTEyQjAyNkY3MDBDMUEzNTkgLyogUmV2ZXJiQ29udm9sdmVyLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDA3NjkwNDYuLjBkYTAzNjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUu
aCIKICNpbmNsdWRlICJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQXR0ci5oIgor
I2luY2x1ZGUgIkF1ZGlvUHJvZHVjZXIuaCIKICNpbmNsdWRlICJDREFUQVNlY3Rpb24uaCIKICNp
bmNsdWRlICJDU1NTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5o
IgpAQCAtOTksNyArMTAwLDYgQEAKICNpbmNsdWRlICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIK
ICNpbmNsdWRlICJNZWRpYVF1ZXJ5TGlzdC5oIgogI2luY2x1ZGUgIk1lZGlhUXVlcnlNYXRjaGVy
LmgiCi0jaW5jbHVkZSAiTWVkaWFTZXNzaW9uLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cy5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5l
c3RpbmdMZXZlbEluY3JlbWVudGVyLmgiCkBAIC0zMjczLDI0ICszMjczLDIzIEBAIHZvaWQgRG9j
dW1lbnQ6OnVwZGF0ZVZpZXdwb3J0VW5pdHNPblJlc2l6ZSgpCiAgICAgfQogfQogCi0jaWYgRU5B
QkxFKFZJREVPKQotdm9pZCBEb2N1bWVudDo6cmVnaXN0ZXJNZWRpYVNlc3Npb24oTWVkaWFTZXNz
aW9uJiBtZWRpYVNlc3Npb24pCit2b2lkIERvY3VtZW50OjphZGRBdWRpb1Byb2R1Y2VyKEF1ZGlv
UHJvZHVjZXIqIGF1ZGlvUHJvZHVjZXIpCiB7Ci0gICAgbV9tZWRpYVNlc3Npb25zLmFkZCgmbWVk
aWFTZXNzaW9uKTsKKyAgICBtX2F1ZGlvUHJvZHVjZXJzLmFkZChhdWRpb1Byb2R1Y2VyKTsKICAg
ICB1cGRhdGVJc1BsYXlpbmdBdWRpbygpOwogfQogCi12b2lkIERvY3VtZW50Ojp1bnJlZ2lzdGVy
TWVkaWFTZXNzaW9uKE1lZGlhU2Vzc2lvbiYgbWVkaWFTZXNzaW9uKQordm9pZCBEb2N1bWVudDo6
cmVtb3ZlQXVkaW9Qcm9kdWNlcihBdWRpb1Byb2R1Y2VyKiBhdWRpb1Byb2R1Y2VyKQogewotICAg
IG1fbWVkaWFTZXNzaW9ucy5yZW1vdmUoJm1lZGlhU2Vzc2lvbik7CisgICAgbV9hdWRpb1Byb2R1
Y2Vycy5yZW1vdmUoYXVkaW9Qcm9kdWNlcik7CiAgICAgdXBkYXRlSXNQbGF5aW5nQXVkaW8oKTsK
IH0KIAogdm9pZCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nQXVkaW8oKQogewogICAgIGJvb2wg
aXNQbGF5aW5nQXVkaW8gPSBmYWxzZTsKLSAgICBmb3IgKGF1dG8gbWVkaWFTZXNzaW9uIDogbV9t
ZWRpYVNlc3Npb25zKSB7Ci0gICAgICAgIGlmIChtZWRpYVNlc3Npb24tPmhhc01lZGlhQ2hhcmFj
dGVyaXN0aWNzKE1lZGlhU2Vzc2lvbjo6TWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUpICYmIG1l
ZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBNZWRpYVNlc3Npb246OlBsYXlpbmcpIHsKKyAgICBmb3Ig
KGF1dG8gYXVkaW9Qcm9kdWNlciA6IG1fYXVkaW9Qcm9kdWNlcnMpIHsKKyAgICAgICAgaWYgKGF1
ZGlvUHJvZHVjZXItPmlzUGxheWluZ0F1ZGlvKCkpIHsKICAgICAgICAgICAgIGlzUGxheWluZ0F1
ZGlvID0gdHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0zMzA0LDcgKzMz
MDMsNiBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdBdWRpbygpCiAgICAgaWYgKHBh
Z2UoKSkKICAgICAgICAgcGFnZSgpLT51cGRhdGVJc1BsYXlpbmdBdWRpbygpOwogfQotI2VuZGlm
CiAKIHZvaWQgRG9jdW1lbnQ6OnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFN0eWxlUmVzb2x2ZXJVcGRh
dGVGbGFnIHVwZGF0ZUZsYWcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGZlNjU5MWMuLmNk
Mzg0ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC02Nyw2ICs2Nyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgQVhPYmplY3RDYWNoZTsKIGNsYXNzIEF0dHI7CitjbGFzcyBBdWRp
b1Byb2R1Y2VyOwogY2xhc3MgQ0RBVEFTZWN0aW9uOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlv
bjsKIGNsYXNzIENTU1N0eWxlU2hlZXQ7CkBAIC0xMjIsNyArMTIzLDYgQEAgY2xhc3MgTG9jYWxl
OwogY2xhc3MgTWVkaWFDYW5TdGFydExpc3RlbmVyOwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7CiBj
bGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKLWNsYXNzIE1lZGlhU2Vzc2lvbjsKIGNsYXNzIE1vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHM7CiBjbGFzcyBOYW1lZEZsb3dDb2xsZWN0aW9uOwogY2xh
c3MgTm9kZUZpbHRlcjsKQEAgLTEyODgsMTIgKzEyODgsMTAgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzU3R5bGVXaXRoVmlld3BvcnRVbml0cygpIGNvbnN0IHsgcmV0dXJuIG1faGFzU3R5bGVXaXRo
Vmlld3BvcnRVbml0czsgfQogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRVbml0c09uUmVzaXplKCk7
CiAKLSNpZiBFTkFCTEUoVklERU8pCi0gICAgdm9pZCByZWdpc3Rlck1lZGlhU2Vzc2lvbihNZWRp
YVNlc3Npb24mKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJNZWRpYVNlc3Npb24oTWVkaWFTZXNzaW9u
Jik7CisgICAgdm9pZCBhZGRBdWRpb1Byb2R1Y2VyKEF1ZGlvUHJvZHVjZXIqKTsKKyAgICB2b2lk
IHJlbW92ZUF1ZGlvUHJvZHVjZXIoQXVkaW9Qcm9kdWNlciopOwogICAgIGJvb2wgaXNQbGF5aW5n
QXVkaW8oKSBjb25zdCB7IHJldHVybiBtX2lzUGxheWluZ0F1ZGlvOyB9CiAgICAgdm9pZCB1cGRh
dGVJc1BsYXlpbmdBdWRpbygpOwotI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBlbnVtIENvbnN0
cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBsYWNlaG9sZGVyID0g
MSA8PCAxIH07CkBAIC0xNzI1LDcgKzE3MjMsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2hh
c1N0eWxlV2l0aFZpZXdwb3J0VW5pdHM7CiAKLSAgICBIYXNoU2V0PE1lZGlhU2Vzc2lvbio+IG1f
bWVkaWFTZXNzaW9uczsKKyAgICBIYXNoU2V0PEF1ZGlvUHJvZHVjZXIqPiBtX2F1ZGlvUHJvZHVj
ZXJzOwogICAgIGJvb2wgbV9pc1BsYXlpbmdBdWRpbzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IGEzN2RlYTcuLmJjMDY4YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDQzLDcgKzQ0Myw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmVnaXN0ZXJXaXRoRG9jdW1lbnQoRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgICAgICBkb2N1bWVudC5yZWdpc3RlckZvclBhZ2VTY2FsZUZhY3RvckNoYW5nZWRDYWxs
YmFja3ModGhpcyk7CiAjZW5kaWYKIAotICAgIGRvY3VtZW50LnJlZ2lzdGVyTWVkaWFTZXNzaW9u
KCptX21lZGlhU2Vzc2lvbik7CisgICAgZG9jdW1lbnQuYWRkQXVkaW9Qcm9kdWNlcih0aGlzKTsK
ICAgICBhZGRFbGVtZW50VG9Eb2N1bWVudE1hcCgqdGhpcywgZG9jdW1lbnQpOwogfQogCkBAIC00
NjgsNyArNDY4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aERvY3Vt
ZW50KERvY3VtZW50JiBkb2N1bWVudCkKICAgICAgICAgZG9jdW1lbnQudW5yZWdpc3RlckZvclBh
Z2VTY2FsZUZhY3RvckNoYW5nZWRDYWxsYmFja3ModGhpcyk7CiAjZW5kaWYKIAotICAgIGRvY3Vt
ZW50LnVucmVnaXN0ZXJNZWRpYVNlc3Npb24oKm1fbWVkaWFTZXNzaW9uKTsKKyAgICBkb2N1bWVu
dC5yZW1vdmVBdWRpb1Byb2R1Y2VyKHRoaXMpOwogICAgIHJlbW92ZUVsZW1lbnRGcm9tRG9jdW1l
bnRNYXAoKnRoaXMsIGRvY3VtZW50KTsKIH0KIApAQCAtNjAyMiw2ICs2MDIyLDExIEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFTdGF0ZURpZENoYW5nZSgpCiAgICAgZG9jdW1lbnQoKS51
cGRhdGVJc1BsYXlpbmdBdWRpbygpOwogfQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzUGxh
eWluZ0F1ZGlvKCkKK3sKKyAgICByZXR1cm4gbV9tZWRpYVNlc3Npb24tPmhhc01lZGlhQ2hhcmFj
dGVyaXN0aWNzKE1lZGlhU2Vzc2lvbjo6TWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGUpICYmIG1f
bWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IE1lZGlhU2Vzc2lvbjo6UGxheWluZzsKK30KKwogYm9v
bCBIVE1MTWVkaWFFbGVtZW50Ojpkb2VzSGF2ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcm
IGF0dHJpYnV0ZSwgQXRvbWljU3RyaW5nKiB2YWx1ZSkgY29uc3QKIHsKICAgICBRdWFsaWZpZWRO
YW1lIGF0dHJpYnV0ZU5hbWUobnVsbEF0b20sIGF0dHJpYnV0ZSwgbnVsbEF0b20pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBiM2FmMDA3Li5mNGMyNTNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaApAQCAtMjksNiArMjksNyBAQAogI2lm
IEVOQUJMRShWSURFTykKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkFjdGl2
ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkF1ZGlvUHJvZHVjZXIuaCIKICNpbmNsdWRlICJHZW5l
cmljRXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYVNlc3Npb24uaCIKICNpbmNsdWRl
ICJNZWRpYUNhblN0YXJ0TGlzdGVuZXIuaCIKQEAgLTk0LDcgKzk1LDcgQEAgY2xhc3MgTWVkaWFT
dHJlYW07CiAKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICA6IHB1YmxpYyBIVE1MRWxlbWVu
dAotICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxheWVyU3Vw
cG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSAsIHB1YmxpYyBN
ZWRpYVNlc3Npb25DbGllbnQKKyAgICAsIHByaXZhdGUgTWVkaWFQbGF5ZXJDbGllbnQsIHB1Ymxp
YyBNZWRpYVBsYXllclN1cHBvcnRzVHlwZUNsaWVudCwgcHJpdmF0ZSBNZWRpYUNhblN0YXJ0TGlz
dGVuZXIsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBNZWRpYUNvbnRyb2xsZXJJbnRl
cmZhY2UgLCBwdWJsaWMgTWVkaWFTZXNzaW9uQ2xpZW50LCBwcml2YXRlIEF1ZGlvUHJvZHVjZXIK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLCBwcml2YXRlIEF1ZGlvVHJhY2tDbGllbnQK
ICAgICAsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50CkBAIC03MDcsNiArNzA4LDkgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGJvb2wgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpY3MoTWVkaWFTZXNzaW9u
OjpNZWRpYUNoYXJhY3RlcmlzdGljcykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IG1lZGlhU3RhdGVEaWRDaGFuZ2UoKSBvdmVycmlkZTsKIAorICAgIC8vIEF1ZGlvUHJvZHVjZXIg
b3ZlcnJpZGVzCisgICAgdmlydHVhbCBib29sIGlzUGxheWluZ0F1ZGlvKCkgb3ZlcnJpZGU7CisK
ICAgICB2b2lkIHJlZ2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyV2l0aERvY3VtZW50KERvY3VtZW50Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQXVkaW9Qcm9kdWNlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9BdWRpb1Byb2R1
Y2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNmMDFmYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQXVkaW9Qcm9kdWNlci5oCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEF1ZGlvUHJvZHVjZXJfaAorI2RlZmluZSBBdWRpb1Byb2R1Y2VyX2gKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1Byb2R1Y2VyIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IH5BdWRpb1Byb2R1Y2VyKCkgeyB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
aW5kZXggNDM4NjQyNy4uM2FkYTdlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xMTkzLDcgKzEx
OTMsNiBAQCB2b2lkIFBhZ2U6OmVuYWJsZUxlZ2FjeVByaXZhdGVCcm93c2luZyhib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpCiAgICAgc2V0U2Vzc2lvbklEKHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgPyBTZXNzaW9uSUQ6OmxlZ2FjeVByaXZhdGVTZXNzaW9uSUQoKSA6IFNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpKTsKIH0KIAotI2lmIEVOQUJMRShWSURFTykKIHZvaWQgUGFnZTo6dXBk
YXRlSXNQbGF5aW5nQXVkaW8oKQogewogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8gPSBmYWxzZTsK
QEAgLTEyMTEsNyArMTIxMCw2IEBAIHZvaWQgUGFnZTo6dXBkYXRlSXNQbGF5aW5nQXVkaW8oKQog
CiAgICAgY2hyb21lKCkuY2xpZW50KCkuaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UobV9pc1BsYXlp
bmdBdWRpbyk7CiB9Ci0jZW5kaWYKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKIHZvaWQgUGFnZTo6
Y2hlY2tTdWJmcmFtZUNvdW50Q29uc2lzdGVuY3koKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCBj
MTZjMGEzLi5jOTI3ZTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNDM2LDEwICs0MzYsOCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmFibGVMZWdhY3lQcml2YXRlQnJvd3Npbmco
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKICAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNz
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKTsgfQogCi0jaWYg
RU5BQkxFKFZJREVPKQogICAgIGJvb2wgaXNQbGF5aW5nQXVkaW8oKSBjb25zdCB7IHJldHVybiBt
X2lzUGxheWluZ0F1ZGlvOyB9CiAgICAgdm9pZCB1cGRhdGVJc1BsYXlpbmdBdWRpbygpOwotI2Vu
ZGlmCiAKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0R3JvdXAoKTsKLS0g
CjEuOS4zIChBcHBsZSBHaXQtNTApCgo=
</data>
<flag name="review"
          id="265290"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>