<?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>96010</bug_id>
          
          <creation_ts>2012-09-06 12:58:51 -0700</creation_ts>
          <short_desc>[chromium] Fix deadlock between WebMediaPlayerClientImpl dtor and PutCurrentFrame</short_desc>
          <delta_ts>2012-09-10 11:39:54 -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>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="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fischman</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>qinmin</cc>
    
    <cc>sievers</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713600</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-06 12:58:51 -0700</bug_when>
    <thetext>[chromium] Fix deadlock between WebMediaPlayerClientImpl dtor and PutCurrentFrame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713622</commentid>
    <comment_count>1</comment_count>
      <attachid>162565</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-06 13:22:18 -0700</bug_when>
    <thetext>Created attachment 162565
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713626</commentid>
    <comment_count>2</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-06 13:26:31 -0700</bug_when>
    <thetext>See: http://code.google.com/p/chromium/issues/detail?id=146859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713732</commentid>
    <comment_count>3</comment_count>
      <attachid>162565</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-06 14:47:13 -0700</bug_when>
    <thetext>Comment on attachment 162565
Patch

Looks good to me. Fingers crossed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713741</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-06 14:56:15 -0700</bug_when>
    <thetext>I have convinced myself that the client/provider lifetimes and locks are good with this patch, but I&apos;m a little unsure about the interaction between load() on the main thread which creates/destroys m_webMediaPlayer and getCurrentFrame()/putCurrentFrame() which is called from the compositor thread and accesses m_webMediaPlayer.

I&apos;m wondering if we should switch out m_compositorMutex in load()/loadInternal() for this new m_mediaPlayerMutex and also lock it in getCurrentFrame/putCurrentFrame.  I think that would be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713746</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-09-06 15:00:53 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I have convinced myself that the client/provider lifetimes and locks are good with this patch, but I&apos;m a little unsure about the interaction between load() on the main thread which creates/destroys m_webMediaPlayer and getCurrentFrame()/putCurrentFrame() which is called from the compositor thread and accesses m_webMediaPlayer.
&gt; 
&gt; I&apos;m wondering if we should switch out m_compositorMutex in load()/loadInternal() for this new m_mediaPlayerMutex and also lock it in getCurrentFrame/putCurrentFrame.  I think that would be sufficient.

Should setVideoFrameProviderClient() also acquire m_mediaPlayerMutex then? Since it gets called from the impl thread and might race with load.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713750</commentid>
    <comment_count>6</comment_count>
      <attachid>162598</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-06 15:08:20 -0700</bug_when>
    <thetext>Created attachment 162598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713752</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 15:12:58 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713760</commentid>
    <comment_count>8</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-09-06 15:18:15 -0700</bug_when>
    <thetext>WebMediaPlayerClientImpl::load() should be called before getCurrentFrame() and PutCurrentFrame() gets called. 
And I think load() cannot be called twice, as HTMLMediaElement will construct a new WebMediaPlayerClientImpl if src changes or media.load() is called again.

(In reply to comment #4)
&gt; I have convinced myself that the client/provider lifetimes and locks are good with this patch, but I&apos;m a little unsure about the interaction between load() on the main thread which creates/destroys m_webMediaPlayer and getCurrentFrame()/putCurrentFrame() which is called from the compositor thread and accesses m_webMediaPlayer.
&gt; 
&gt; I&apos;m wondering if we should switch out m_compositorMutex in load()/loadInternal() for this new m_mediaPlayerMutex and also lock it in getCurrentFrame/putCurrentFrame.  I think that would be sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713762</commentid>
    <comment_count>9</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-06 15:19:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; WebMediaPlayerClientImpl::load() should be called before getCurrentFrame() and PutCurrentFrame() gets called. 
&gt; And I think load() cannot be called twice, as HTMLMediaElement will construct a new WebMediaPlayerClientImpl if src changes or media.load() is called again.

How is the ordering of load() and getCurrentFrame() guaranteed? Aren&apos;t they coming from different threads?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713769</commentid>
    <comment_count>10</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-09-06 15:26:20 -0700</bug_when>
    <thetext>
(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; WebMediaPlayerClientImpl::load() should be called before getCurrentFrame() and PutCurrentFrame() gets called. 
&gt; &gt; And I think load() cannot be called twice, as HTMLMediaElement will construct a new WebMediaPlayerClientImpl if src changes or media.load() is called again.
&gt; 
&gt; How is the ordering of load() and getCurrentFrame() guaranteed? Aren&apos;t they coming from different threads?

VideoLayerChromium will not get created until the first readyStateChanged() gets called. 
That function is called by m_webmediaplayer(), and it has to happen after load()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713873</commentid>
    <comment_count>11</comment_count>
      <attachid>162598</attachid>
    <who name="Daniel Sievers">sievers</who>
    <bug_when>2012-09-06 17:09:13 -0700</bug_when>
    <thetext>Comment on attachment 162598
Patch

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

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:770
&gt;      m_videoFrameProviderClient = client;

Maybe also acquire m_webMediaPlayerMutex before accessing m_webMediaPlayer here since this is the other of the 3 VideoFrameProvider APIs being called from the impl thread?
But then scope each of the two locks, so we don&apos;t get another deadlock :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714391</commentid>
    <comment_count>12</comment_count>
      <attachid>162598</attachid>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-09-07 04:36:28 -0700</bug_when>
    <thetext>Comment on attachment 162598
Patch

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

&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:95
&gt; +    MutexLocker locker(m_clientMutex);

Using a lock in a dtor is a pretty strong smell (one I suspect I originally authored in some ancestor of this code; sorry).

If something else can race with this dtor (and thus actually require mutual exclusion), that means a use-after-free is just waiting to happen (when the dtor acquires the lock first and the other task ends up waiting for the dtor to return).
Is this only needed as a fence/barrier, not a mutex?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714602</commentid>
    <comment_count>13</comment_count>
      <attachid>162598</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-07 09:35:28 -0700</bug_when>
    <thetext>Comment on attachment 162598
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp:95
&gt;&gt; +    MutexLocker locker(m_clientMutex);
&gt; 
&gt; Using a lock in a dtor is a pretty strong smell (one I suspect I originally authored in some ancestor of this code; sorry).
&gt; 
&gt; If something else can race with this dtor (and thus actually require mutual exclusion), that means a use-after-free is just waiting to happen (when the dtor acquires the lock first and the other task ends up waiting for the dtor to return).
&gt; Is this only needed as a fence/barrier, not a mutex?

It&apos;s true that this is a bad smell.  The more I think about it, maybe we don&apos;t need m_clientMutex at all (at least based on the calling conventions that currently exist).

m_clientMutex right now guards setVideoFrameProviderClient calls from the impl thread and ~WebMediaPlayerClientImpl calls from the main thread.  Right now, setVideoFrameProviderClient only gets called during tree sync when the main thread is blocked.  Arguably, we could insert some asserts here that the main thread is actually blocked and just remove the mutex entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714701</commentid>
    <comment_count>14</comment_count>
      <attachid>162809</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-07 10:33:19 -0700</bug_when>
    <thetext>Created attachment 162809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715523</commentid>
    <comment_count>15</comment_count>
    <who name="Min Qin">qinmin</who>
    <bug_when>2012-09-09 10:07:21 -0700</bug_when>
    <thetext>LGTM with 1 nit.

In WebMediaPlayerImplClient.h:.
199	    Mutex m_webMediaPlayerMutex; // Guards the m_webMediaPlayerMutex
should be m_webMediaPlayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716238</commentid>
    <comment_count>16</comment_count>
      <attachid>163160</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-09-10 10:32:35 -0700</bug_when>
    <thetext>Created attachment 163160
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716321</commentid>
    <comment_count>17</comment_count>
      <attachid>163160</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 11:39:50 -0700</bug_when>
    <thetext>Comment on attachment 163160
Patch for landing

Clearing flags on attachment: 163160

Committed r128082: &lt;http://trac.webkit.org/changeset/128082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716322</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 11:39:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162565</attachid>
            <date>2012-09-06 13:22:18 -0700</date>
            <delta_ts>2012-09-06 15:08:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96010-20120906132158.patch</filename>
            <type>text/plain</type>
            <size>3012</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDAzNjcyYTFmNzAwN2ZlYWNkNDY0ZjU0N2JiOTU4YzQ5YzE1MmZiOTcuLjJjNzJjOWE3M2IwYmE2
ZDYyOGIwMDQyOTEyMzdjZWRmZDNkNDA4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTItMDktMDYgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xl
LmNvbT4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBkZWFkbG9jayBiZXR3ZWVuIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbCBkdG9yIGFuZCBQdXRDdXJyZW50RnJhbWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MDEwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGtleSBmaXggaGVyZSBpcyB0aGF0
IGdldEN1cnJlbnRGcmFtZS9wdXRDdXJyZW50RnJhbWUgbm8gbG9uZ2VyCisgICAgICAgIGhvbGRz
IG9udG8gYSBtdXRleC4KKworICAgICAgICBUaGUgbV9wcm92aWRlck11dGV4IGluIENDVmlkZW9M
YXllckltcGwgcHJldmVudHMgdGhlIGRlc3RydWN0aW9uIG9mCisgICAgICAgIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbCwgdGh1cyBrZWVwaW5nIHRoZSBmcmFtZSBhY3F1aXJlZCB2aWEKKyAgICAg
ICAgZ2V0Q3VycmVudEZyYW1lIGFsaXZlIHVudGlsIHB1dEN1cnJlbnRGcmFtZSBpcyBjYWxsZWQu
IFRoZXNlIGZ1bmN0aW9ucworICAgICAgICBhcmUgb25seSBjYWxsZWQgYnkgdGhlIGNsaWVudC4K
KworICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdldEN1cnJlbnRGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cHV0Q3VycmVudEZyYW1lKToK
KyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJN
ZWRpYVBsYXllckNsaWVudEltcGwpOgorCiAyMDEyLTA5LTA1ICBNYXJrIFBpbGdyaW0gIDxwaWxn
cmltQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbW92ZSBnZXRSZW5kZXJT
dHlsZUZvclN0cmlrZSBmcm9tIFBsYXRmb3JtU3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggMDg4
MWYwOWI0NmUxMWYwYTljZjAzZDMyMGVkODdiY2I3YmQ0OTBiMi4uMWViZmMzNzQ2YTQwNmQyYTAx
ZDY1OWNhODhhMmViZjM0NzY1ZGQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC03NzMsNyArNzczLDYg
QEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNldFZpZGVvRnJhbWVQcm92aWRlckNs
aWVudChXZWJWaWRlb0ZyYW1lUHJvdmlkZXIKIAogV2ViVmlkZW9GcmFtZSogV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpnZXRDdXJyZW50RnJhbWUoKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2NvbXBvc2l0aW5nTXV0ZXgpOwogICAgIEFTU0VSVCghbV9jdXJyZW50VmlkZW9GcmFtZSk7
CiAgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpCiAgICAgICAgIG1fY3VycmVudFZpZGVvRnJhbWUg
PSBtX3dlYk1lZGlhUGxheWVyLT5nZXRDdXJyZW50RnJhbWUoKTsKQEAgLTc4Miw3ICs3ODEsNiBA
QCBXZWJWaWRlb0ZyYW1lKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdldEN1cnJlbnRGcmFt
ZSgpCiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwdXRDdXJyZW50RnJhbWUoV2Vi
VmlkZW9GcmFtZSogdmlkZW9GcmFtZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb21w
b3NpdGluZ011dGV4KTsKICAgICBBU1NFUlQodmlkZW9GcmFtZSA9PSBtX2N1cnJlbnRWaWRlb0Zy
YW1lKTsKICAgICBpZiAoIXZpZGVvRnJhbWUpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5k
ZXggYmQyOTA3ZWQyNjFmMTdmZGExMjQ5N2Q2ODUzMGM2OGRjYjkzMzkzMC4uYjAyMmYzMmY3YjFk
YTg5ODJkYTYyZTZkNWZmZjQzNjdiODY2ZTA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKQEAgLTE5Niw3ICsxOTYs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWNjZWxlcmF0ZWRSZW5kZXJpbmdJblVzZSgpOwogI2Vu
ZGlmCiAKLSAgICBNdXRleCBtX2NvbXBvc2l0aW5nTXV0ZXg7IC8vIEd1YXJkcyBtX2N1cnJlbnRW
aWRlb0ZyYW1lIGFuZCBtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudC4KKyAgICBNdXRleCBtX2Nv
bXBvc2l0aW5nTXV0ZXg7IC8vIEd1YXJkcyB0aGUgbGlmZXRpbWUgb2YgbV92aWRlb0ZyYW1lUHJv
dmlkZXJDbGllbnQgYW5kIG1fd2ViTWVkaWFQbGF5ZXIKICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
ciogbV9tZWRpYVBsYXllcjsKICAgICBPd25QdHI8V2ViTWVkaWFQbGF5ZXI+IG1fd2ViTWVkaWFQ
bGF5ZXI7CiAgICAgV2ViVmlkZW9GcmFtZSogbV9jdXJyZW50VmlkZW9GcmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162598</attachid>
            <date>2012-09-06 15:08:20 -0700</date>
            <delta_ts>2012-09-07 10:33:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96010-20120906150800.patch</filename>
            <type>text/plain</type>
            <size>8181</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ODE5NjZkMWI1MGZi
OWI1Mzg4MTY4ZTMwNjAwYzY1OGIwZTg3MWI4Li5iNTMxMjA1YzUzNWFmMjNlMzI1YWRmMzJhYzZi
NmY5MGM5MDRjMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0wNiAg
QWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Rml4IGRlYWRsb2NrIGJldHdlZW4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGR0b3IgYW5kIFB1
dEN1cnJlbnRGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTYwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc29tZSBhZGRpdGlvbmFsIGNsYXJpZnlpbmcgY29tbWVudHMuCisKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZVByb3ZpZGVyLmg6CisgICAgICAgIChDbGll
bnQpOgorICAgICAgICAoV2ViVmlkZW9GcmFtZVByb3ZpZGVyKToKKwogMjAxMi0wOS0wNSAgTWFy
ayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBS
ZW1vdmUgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDM2NzJhMWY3MDA3ZmVhY2Q0NjRmNTQ3YmI5NThjNDlj
MTUyZmI5Ny4uNTlmMzY5NWExNzY1MTJlOGZlN2YyYzBlNmFmMTcxNGU0OTQyOThiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0wOS0wNiAgQWRyaWVu
bmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4IGRl
YWRsb2NrIGJldHdlZW4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGR0b3IgYW5kIFB1dEN1cnJl
bnRGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTYwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUga2V5IGZpeCBoZXJlIGlzIHRoYXQgZ2V0Q3VycmVudEZyYW1lL3B1dEN1cnJlbnRGcmFtZSBu
byBsb25nZXIKKyAgICAgICAgaG9sZHMgb250byB0aGUgY29tcG9zaXRpbmcgKG5vdyBjYWxsZWQg
Y2xpZW50KSBtdXRleC4KKworICAgICAgICBUaGUgbV9wcm92aWRlck11dGV4IGluIENDVmlkZW9M
YXllckltcGwgcHJldmVudHMgdGhlIGRlc3RydWN0aW9uIG9mCisgICAgICAgIFdlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbCwgdGh1cyBrZWVwaW5nIHRoZSBmcmFtZSBhY3F1aXJlZCB2aWEKKyAgICAg
ICAgZ2V0Q3VycmVudEZyYW1lIGFsaXZlIHVudGlsIHB1dEN1cnJlbnRGcmFtZSBpcyBjYWxsZWQu
IFRoZXNlIGZ1bmN0aW9ucworICAgICAgICBhcmUgb25seSBjYWxsZWQgYnkgdGhlIGNsaWVudC4K
KworICAgICAgICBUbyBwcmV2ZW50IGEgcmFjZSBiZXR3ZWVuIGxvYWQoKSBhbmQgZ2V0Q3VycmVu
dEZyYW1lL3B1dEN1cnJlbnRGcmFtZQorICAgICAgICAod2hpY2ggYXJlIGNhbGxlZCBmcm9tIGRp
ZmZlcmVudCB0aHJlYWRzKSBhIG5ldyBtX3dlYk1lZGlhUGxheWVyTXV0ZXgKKyAgICAgICAgaXMg
YWRkZWQuIEJ5IHNwbGl0dGluZyB0aGUgbXV0ZXggaW50byB0d28sIHRoaXMgcmFjZSBpcyBwcmV2
ZW50ZWQKKyAgICAgICAgd2hpbGUgbm90IGFsbG93aW5nIHRoZSBvcmlnaW5hbCBkZWFkbG9jay4K
KworICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudElt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmxvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmxvYWRJbnRlcm5hbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0VmlkZW9GcmFt
ZVByb3ZpZGVyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpnZXRDdXJyZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnB1dEN1cnJlbnRGcmFtZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKwogMjAx
Mi0wOS0wNSAgTWFyayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W0Nocm9taXVtXSBSZW1vdmUgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UgZnJvbSBQbGF0Zm9ybVN1
cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlk
ZW9GcmFtZVByb3ZpZGVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZp
ZGVvRnJhbWVQcm92aWRlci5oCmluZGV4IDRkNjU2YTI2ODM3Yzc0ZjBmZGRjMTUyNjViM2U2ZGFm
YjVmZmZiNTguLjQ5NDJmZTRkODQ1MmYwMzliZjY2Mzg0ZjFjNTc3NmU2MWE1Yzc5ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZVByb3Zp
ZGVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1l
UHJvdmlkZXIuaApAQCAtNDYsNyArNDYsOCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ2xpZW50IHsK
ICAgICBwdWJsaWM6CiAgICAgICAgIC8vIFByb3ZpZGVyIHdpbGwgY2FsbCB0aGlzIG1ldGhvZCB0
byB0ZWxsIHRoZSBjbGllbnQgdG8gc3RvcCB1c2luZyBpdC4KLSAgICAgICAgLy8gc3RvcFVzaW5n
UHJvdmlkZXIoKSBtYXkgYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KKyAgICAgICAgLy8gc3Rv
cFVzaW5nUHJvdmlkZXIoKSBtYXkgYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4gVGhlIGNsaWVu
dCBzaG91bGQKKyAgICAgICAgLy8gYmxvY2sgdW50aWwgaXQgaGFzIHB1dEN1cnJlbnRGcmFtZSBh
bnkgb3V0c3RhbmRpbmcgZnJhbWVzLgogICAgICAgICB2aXJ0dWFsIHZvaWQgc3RvcFVzaW5nUHJv
dmlkZXIoKSA9IDA7CiAKICAgICAgICAgLy8gTm90aWZpZXMgdGhlIHByb3ZpZGVyJ3MgY2xpZW50
IHRoYXQgYSBjYWxsIHRvIGdldEN1cnJlbnRGcmFtZSgpIHdpbGwgcmV0dXJuIG5ldyBkYXRhLgpA
QCAtNjMsMTEgKzY0LDEzIEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHBsYWNlcyBh
IGxvY2sgb24gdGhlIGN1cnJlbnQgZnJhbWUgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0Lgog
ICAgIC8vIENhbGxzIHRvIHRoaXMgbWV0aG9kIHNob3VsZCBhbHdheXMgYmUgZm9sbG93ZWQgd2l0
aCBhIGNhbGwgdG8gcHV0Q3VycmVudEZyYW1lKCkuCiAgICAgLy8gVGhlIG93bmVyc2hpcCBvZiB0
aGUgb2JqZWN0IGlzIG5vdCB0cmFuc2ZlcnJlZCB0byB0aGUgY2FsbGVyIGFuZAotICAgIC8vIHRo
ZSBjYWxsZXIgc2hvdWxkIG5vdCBmcmVlIHRoZSByZXR1cm5lZCBvYmplY3QuCisgICAgLy8gdGhl
IGNhbGxlciBzaG91bGQgbm90IGZyZWUgdGhlIHJldHVybmVkIG9iamVjdC4gT25seSB0aGUgY3Vy
cmVudCBwcm92aWRlcgorICAgIC8vIGNsaWVudCBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uLgog
ICAgIHZpcnR1YWwgV2ViVmlkZW9GcmFtZSogZ2V0Q3VycmVudEZyYW1lKCkgPSAwOwogICAgIC8v
IFRoaXMgZnVuY3Rpb24gcmVsZWFzZXMgdGhlIGxvY2sgb24gdGhlIHZpZGVvIGZyYW1lIGluIGNo
cm9taXVtLiBJdCBzaG91bGQKICAgICAvLyBhbHdheXMgYmUgY2FsbGVkIGFmdGVyIGdldEN1cnJl
bnRGcmFtZSgpLiBGcmFtZXMgcGFzc2VkIGludG8gdGhpcyBtZXRob2QKLSAgICAvLyBzaG91bGQg
bm8gbG9uZ2VyIGJlIHJlZmVyZW5jZWQgYWZ0ZXIgdGhlIGNhbGwgaXMgbWFkZS4KKyAgICAvLyBz
aG91bGQgbm8gbG9uZ2VyIGJlIHJlZmVyZW5jZWQgYWZ0ZXIgdGhlIGNhbGwgaXMgbWFkZS4gT25s
eSB0aGUgY3VycmVudAorICAgIC8vIHByb3ZpZGVyIGNsaWVudCBzaG91bGQgY2FsbCB0aGlzIGZ1
bmN0aW9uLgogICAgIHZpcnR1YWwgdm9pZCBwdXRDdXJyZW50RnJhbWUoV2ViVmlkZW9GcmFtZSop
ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuY3BwCmluZGV4IDA4ODFmMDliNDZlMTFmMGE5Y2YwM2QzMjBl
ZDg3YmNiN2JkNDkwYjIuLmJhYzUyYWQyOGNmYjg3ZDg5MWU1Y2Y0MzUzMzgyZDQ2ZjM2YmQ5OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmNwcApAQCAtOTIsOSArOTIsMTEgQEAgV2ViTWVkaWFQbGF5ZXIqIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6bWVkaWFQbGF5ZXIoKSBjb25zdAogV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjp+V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKCkKIHsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY29tcG9zaXRpbmdN
dXRleCk7CisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY2xpZW50TXV0ZXgpOwogICAgIGlmICht
X3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCkKICAgICAgICAgbV92aWRlb0ZyYW1lUHJvdmlkZXJD
bGllbnQtPnN0b3BVc2luZ1Byb3ZpZGVyKCk7CisgICAgLy8gTm8gbmVlZCBmb3IgYSBsb2NrIGhl
cmUsIGFzIGdldEN1cnJlbnRGcmFtZS9wdXRDdXJyZW50RnJhbWUgY2FuJ3QgYmUKKyAgICAvLyBj
YWxsZWQgbm93IHRoYXQgdGhlIGNsaWVudCBpcyBubyBsb25nZXIgdXNpbmcgdGhpcyBwcm92aWRl
ci4KICAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKICAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+
c2V0U3RyZWFtVGV4dHVyZUNsaWVudCgwKTsKICNlbmRpZgpAQCAtMzE1LDggKzMxNyw4IEBAIHZv
aWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewog
ICAgIG1fdXJsID0gdXJsOwogCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2ViTWVkaWFQbGF5
ZXJNdXRleCk7CiAgICAgaWYgKG1fcHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6Tm9uZSkgewotICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb21wb3NpdGluZ011dGV4KTsKICNpZiBFTkFCTEUo
V0VCX0FVRElPKQogICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIud3JhcCgwKTsgLy8gQ2xl
YXIgd2VhayByZWZlcmVuY2UgdG8gbV93ZWJNZWRpYVBsYXllcidzIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXIuCiAjZW5kaWYKQEAgLTMyOCw3ICszMzAsNiBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbDo6bG9hZChjb25zdCBTdHJpbmcmIHVybCkKIAogdm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OmxvYWRJbnRlcm5hbCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY29t
cG9zaXRpbmdNdXRleCk7CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBtX2F1ZGlvU291cmNl
UHJvdmlkZXIud3JhcCgwKTsgLy8gQ2xlYXIgd2VhayByZWZlcmVuY2UgdG8gbV93ZWJNZWRpYVBs
YXllcidzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuCiAjZW5kaWYKQEAgLTc2Myw3ICs3NjQsNyBA
QCBib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdJblVz
ZSgpCiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRWaWRlb0ZyYW1lUHJvdmlk
ZXJDbGllbnQoV2ViVmlkZW9GcmFtZVByb3ZpZGVyOjpDbGllbnQqIGNsaWVudCkKIHsKLSAgICBN
dXRleExvY2tlciBsb2NrZXIobV9jb21wb3NpdGluZ011dGV4KTsKKyAgICBNdXRleExvY2tlciBs
b2NrZXIobV9jbGllbnRNdXRleCk7CiAgICAgaWYgKG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50
KQogICAgICAgICBtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudC0+c3RvcFVzaW5nUHJvdmlkZXIo
KTsKICAgICBtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCA9IGNsaWVudDsKQEAgLTc3Myw4ICs3
NzQsMTAgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNldFZpZGVvRnJhbWVQcm92
aWRlckNsaWVudChXZWJWaWRlb0ZyYW1lUHJvdmlkZXIKIAogV2ViVmlkZW9GcmFtZSogV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpnZXRDdXJyZW50RnJhbWUoKQogewotICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2NvbXBvc2l0aW5nTXV0ZXgpOworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2Fs
bGVkIG9ubHkgYnkgdGhlIGNsaWVudC4KKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93ZWJNZWRp
YVBsYXllck11dGV4KTsKICAgICBBU1NFUlQoIW1fY3VycmVudFZpZGVvRnJhbWUpOworICAgIEFT
U0VSVChtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCk7CiAgICAgaWYgKG1fd2ViTWVkaWFQbGF5
ZXIpCiAgICAgICAgIG1fY3VycmVudFZpZGVvRnJhbWUgPSBtX3dlYk1lZGlhUGxheWVyLT5nZXRD
dXJyZW50RnJhbWUoKTsKICAgICByZXR1cm4gbV9jdXJyZW50VmlkZW9GcmFtZTsKQEAgLTc4Miw4
ICs3ODUsMTAgQEAgV2ViVmlkZW9GcmFtZSogV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpnZXRD
dXJyZW50RnJhbWUoKQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cHV0Q3VycmVu
dEZyYW1lKFdlYlZpZGVvRnJhbWUqIHZpZGVvRnJhbWUpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9j
a2VyKG1fY29tcG9zaXRpbmdNdXRleCk7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg
b25seSBieSB0aGUgY2xpZW50LgorICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dlYk1lZGlhUGxh
eWVyTXV0ZXgpOwogICAgIEFTU0VSVCh2aWRlb0ZyYW1lID09IG1fY3VycmVudFZpZGVvRnJhbWUp
OworICAgIEFTU0VSVChtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCk7CiAgICAgaWYgKCF2aWRl
b0ZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1fd2ViTWVkaWFQbGF5ZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5oCmluZGV4IGJkMjkwN2VkMjYxZjE3ZmRhMTI0OTdkNjg1MzBjNjhkY2I5MzM5MzAuLjFhOGZj
MzdmMGZhNmY5ZTIwZDhmNjRmMzBiMjRjZGFkNDU0MTA3ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC0xOTYs
NyArMTk2LDggQEAgcHJpdmF0ZToKICAgICBib29sIGFjY2VsZXJhdGVkUmVuZGVyaW5nSW5Vc2Uo
KTsKICNlbmRpZgogCi0gICAgTXV0ZXggbV9jb21wb3NpdGluZ011dGV4OyAvLyBHdWFyZHMgbV9j
dXJyZW50VmlkZW9GcmFtZSBhbmQgbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQuCisgICAgTXV0
ZXggbV9jbGllbnRNdXRleDsgLy8gR3VhcmRzIHRoZSBtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVu
dAorICAgIE11dGV4IG1fd2ViTWVkaWFQbGF5ZXJNdXRleDsgLy8gR3VhcmRzIHRoZSBtX3dlYk1l
ZGlhUGxheWVyTXV0ZXgKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllciogbV9tZWRpYVBsYXllcjsK
ICAgICBPd25QdHI8V2ViTWVkaWFQbGF5ZXI+IG1fd2ViTWVkaWFQbGF5ZXI7CiAgICAgV2ViVmlk
ZW9GcmFtZSogbV9jdXJyZW50VmlkZW9GcmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162809</attachid>
            <date>2012-09-07 10:33:19 -0700</date>
            <delta_ts>2012-09-10 10:32:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96010-20120907103259.patch</filename>
            <type>text/plain</type>
            <size>8790</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NjU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ODE5NjZkMWI1MGZi
OWI1Mzg4MTY4ZTMwNjAwYzY1OGIwZTg3MWI4Li5iNTMxMjA1YzUzNWFmMjNlMzI1YWRmMzJhYzZi
NmY5MGM5MDRjMTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0wNiAg
QWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Rml4IGRlYWRsb2NrIGJldHdlZW4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGR0b3IgYW5kIFB1
dEN1cnJlbnRGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTYwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgc29tZSBhZGRpdGlvbmFsIGNsYXJpZnlpbmcgY29tbWVudHMuCisKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZVByb3ZpZGVyLmg6CisgICAgICAgIChDbGll
bnQpOgorICAgICAgICAoV2ViVmlkZW9GcmFtZVByb3ZpZGVyKToKKwogMjAxMi0wOS0wNSAgTWFy
ayBQaWxncmltICA8cGlsZ3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBS
ZW1vdmUgZ2V0UmVuZGVyU3R5bGVGb3JTdHJpa2UgZnJvbSBQbGF0Zm9ybVN1cHBvcnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggMDM2NzJhMWY3MDA3ZmVhY2Q0NjRmNTQ3YmI5NThjNDlj
MTUyZmI5Ny4uZDAzNWY0YjliZjlhNTNiYWUwY2E3NTM1NDc0ODI4MWM3OGQyNGM4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0wNiAgQWRyaWVu
bmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4IGRl
YWRsb2NrIGJldHdlZW4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGR0b3IgYW5kIFB1dEN1cnJl
bnRGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTYwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
aGUga2V5IGZpeCBoZXJlIGlzIHRoYXQgdGhlIGRlc3RydWN0b3Igbm8gbG9uZ2VyIGhhcyBhIG11
dGV4LgorICAgICAgICBUaGUgbV9jb21wb3NpdGluZ011dGV4IHdhcyBzdXBwb3NlZGx5IHByb3Rl
Y3RpbmcgcmFjZXMgYmV0d2VlbgorICAgICAgICB+V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGFu
ZCBzZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQuIFRoZQorICAgICAgICBmb3JtZXIgaXMgb25s
eSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSBsYXR0ZXIgaXMgY2FsbGVkCisg
ICAgICAgIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkIG9ubHkgd2hlbiB0aGUgbWFpbiB0aHJl
YWQgaXMgYmxvY2tlZCAoYW5kCisgICAgICAgIGl0IGFscmVhZHkgYXNzZXJ0cyB0aGF0IHRoaXMg
aXMgdGhlIGNhc2UpLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgbV9wcm92aWRlck11dGV4
IGluIENDVmlkZW9MYXllckltcGwgcHJldmVudHMgdGhlCisgICAgICAgIGRlc3RydWN0aW9uIG9m
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCwgdGh1cyBrZWVwaW5nIHRoZSBmcmFtZQorICAgICAg
ICBhY3F1aXJlZCB2aWEgZ2V0Q3VycmVudEZyYW1lIGFsaXZlIHVudGlsIHB1dEN1cnJlbnRGcmFt
ZSBpcyBjYWxsZWQuCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgYnkg
dGhlIGNsaWVudCwgYW5kIGNvbW1lbnRzIGFyZSBhZGRlZAorICAgICAgICB0byB0aGUgaW50ZXJm
YWNlIHRvIGJldHRlciBkb2N1bWVudCB0aGlzLgorCisgICAgICAgIFRvIHByZXZlbnQgYSByYWNl
IGJldHdlZW4gbG9hZCgpIGFuZCBnZXRDdXJyZW50RnJhbWUvcHV0Q3VycmVudEZyYW1lCisgICAg
ICAgICh3aGljaCBhcmUgY2FsbGVkIGZyb20gZGlmZmVyZW50IHRocmVhZHMpIGEgbmV3IG1fd2Vi
TWVkaWFQbGF5ZXJNdXRleAorICAgICAgICB0byByZXBsYWNlIHBhcnQgb2Ygd2hhdCB0aGUgb2xk
IG1fY29tcG9zaXRpbmdNdXRleCB3YXMgZG9pbmcuCisKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjp+V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpsb2FkSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Z2V0Q3VycmVudEZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwdXRDdXJyZW50RnJhbWUp
OgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisKIDIwMTItMDktMDUgIE1hcmsgUGlsZ3JpbSAgPHBp
bGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gUmVtb3ZlIGdldFJlbmRl
clN0eWxlRm9yU3RyaWtlIGZyb20gUGxhdGZvcm1TdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWVQcm92aWRlci5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lUHJvdmlkZXIuaAppbmRleCA0
ZDY1NmEyNjgzN2M3NGYwZmRkYzE1MjY1YjNlNmRhZmI1ZmZmYjU4Li4yNDU1MmU4MDIwYzg0YWQ2
ZTgzOWNmY2QwMDA1MTg1Zjc2ZTA4ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWVQcm92aWRlci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZVByb3ZpZGVyLmgKQEAgLTQ2LDcgKzQ2LDgg
QEAgcHVibGljOgogICAgIGNsYXNzIENsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICAvLyBQ
cm92aWRlciB3aWxsIGNhbGwgdGhpcyBtZXRob2QgdG8gdGVsbCB0aGUgY2xpZW50IHRvIHN0b3Ag
dXNpbmcgaXQuCi0gICAgICAgIC8vIHN0b3BVc2luZ1Byb3ZpZGVyKCkgbWF5IGJlIGNhbGxlZCBm
cm9tIGFueSB0aHJlYWQuCisgICAgICAgIC8vIHN0b3BVc2luZ1Byb3ZpZGVyKCkgbWF5IGJlIGNh
bGxlZCBmcm9tIGFueSB0aHJlYWQuIFRoZSBjbGllbnQgc2hvdWxkCisgICAgICAgIC8vIGJsb2Nr
IHVudGlsIGl0IGhhcyBwdXRDdXJyZW50RnJhbWUgYW55IG91dHN0YW5kaW5nIGZyYW1lcy4KICAg
ICAgICAgdmlydHVhbCB2b2lkIHN0b3BVc2luZ1Byb3ZpZGVyKCkgPSAwOwogCiAgICAgICAgIC8v
IE5vdGlmaWVzIHRoZSBwcm92aWRlcidzIGNsaWVudCB0aGF0IGEgY2FsbCB0byBnZXRDdXJyZW50
RnJhbWUoKSB3aWxsIHJldHVybiBuZXcgZGF0YS4KQEAgLTU3LDE3ICs1OCwyMCBAQCBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQqKSA9IDA7
CiAgICAgfTsKIAotICAgIC8vIE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgorICAgIC8v
IE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLCBidXQgdGhlcmUgbXVzdCBiZSBzb21lIGV4
dGVybmFsIGd1YXJhbnRlZQorICAgIC8vIHRoYXQgdGhlIHByb3ZpZGVyIGlzIG5vdCBkZXN0cm95
ZWQgYmVmb3JlIHRoaXMgY2FsbCByZXR1cm5zLgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaWRlb0Zy
YW1lUHJvdmlkZXJDbGllbnQoQ2xpZW50KikgPSAwOwogCiAgICAgLy8gVGhpcyBmdW5jdGlvbiBw
bGFjZXMgYSBsb2NrIG9uIHRoZSBjdXJyZW50IGZyYW1lIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0
byBpdC4KICAgICAvLyBDYWxscyB0byB0aGlzIG1ldGhvZCBzaG91bGQgYWx3YXlzIGJlIGZvbGxv
d2VkIHdpdGggYSBjYWxsIHRvIHB1dEN1cnJlbnRGcmFtZSgpLgogICAgIC8vIFRoZSBvd25lcnNo
aXAgb2YgdGhlIG9iamVjdCBpcyBub3QgdHJhbnNmZXJyZWQgdG8gdGhlIGNhbGxlciBhbmQKLSAg
ICAvLyB0aGUgY2FsbGVyIHNob3VsZCBub3QgZnJlZSB0aGUgcmV0dXJuZWQgb2JqZWN0LgorICAg
IC8vIHRoZSBjYWxsZXIgc2hvdWxkIG5vdCBmcmVlIHRoZSByZXR1cm5lZCBvYmplY3QuIE9ubHkg
dGhlIGN1cnJlbnQgcHJvdmlkZXIKKyAgICAvLyBjbGllbnQgc2hvdWxkIGNhbGwgdGhpcyBmdW5j
dGlvbi4KICAgICB2aXJ0dWFsIFdlYlZpZGVvRnJhbWUqIGdldEN1cnJlbnRGcmFtZSgpID0gMDsK
ICAgICAvLyBUaGlzIGZ1bmN0aW9uIHJlbGVhc2VzIHRoZSBsb2NrIG9uIHRoZSB2aWRlbyBmcmFt
ZSBpbiBjaHJvbWl1bS4gSXQgc2hvdWxkCiAgICAgLy8gYWx3YXlzIGJlIGNhbGxlZCBhZnRlciBn
ZXRDdXJyZW50RnJhbWUoKS4gRnJhbWVzIHBhc3NlZCBpbnRvIHRoaXMgbWV0aG9kCi0gICAgLy8g
c2hvdWxkIG5vIGxvbmdlciBiZSByZWZlcmVuY2VkIGFmdGVyIHRoZSBjYWxsIGlzIG1hZGUuCisg
ICAgLy8gc2hvdWxkIG5vIGxvbmdlciBiZSByZWZlcmVuY2VkIGFmdGVyIHRoZSBjYWxsIGlzIG1h
ZGUuIE9ubHkgdGhlIGN1cnJlbnQKKyAgICAvLyBwcm92aWRlciBjbGllbnQgc2hvdWxkIGNhbGwg
dGhpcyBmdW5jdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgcHV0Q3VycmVudEZyYW1lKFdlYlZpZGVv
RnJhbWUqKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAppbmRleCAwODgxZjA5YjQ2ZTExZjBhOWNm
MDNkMzIwZWQ4N2JjYjdiZDQ5MGIyLi4wYmU0ODg0YzAwMWE5NmMwZDVkMzMyOGI1YjI4MjAwMGU0
MDBkYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBs
YXllckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKQEAgLTkyLDkgKzkyLDExIEBAIFdlYk1lZGlhUGxheWVy
KiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6Om1lZGlhUGxheWVyKCkgY29uc3QKIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6fldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCgpCiB7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2NvbXBv
c2l0aW5nTXV0ZXgpOwogICAgIGlmIChtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCkKICAgICAg
ICAgbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQtPnN0b3BVc2luZ1Byb3ZpZGVyKCk7CisgICAg
Ly8gTm8gbmVlZCBmb3IgYSBsb2NrIGhlcmUsIGFzIGdldEN1cnJlbnRGcmFtZS9wdXRDdXJyZW50
RnJhbWUgY2FuJ3QgYmUKKyAgICAvLyBjYWxsZWQgbm93IHRoYXQgdGhlIGNsaWVudCBpcyBubyBs
b25nZXIgdXNpbmcgdGhpcyBwcm92aWRlci4gQWxzbywgbG9hZCgpCisgICAgLy8gYW5kIHRoaXMg
ZGVzdHJ1Y3RvciBhcmUgY2FsbGVkIGZyb20gdGhlIHNhbWUgdGhyZWFkLgogICAgIGlmIChtX3dl
Yk1lZGlhUGxheWVyKQogICAgICAgICBtX3dlYk1lZGlhUGxheWVyLT5zZXRTdHJlYW1UZXh0dXJl
Q2xpZW50KDApOwogI2VuZGlmCkBAIC0zMTUsOCArMzE3LDggQEAgdm9pZCBXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgbV91cmwgPSB1cmw7
CiAKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93ZWJNZWRpYVBsYXllck11dGV4KTsKICAgICBp
ZiAobV9wcmVsb2FkID09IE1lZGlhUGxheWVyOjpOb25lKSB7Ci0gICAgICAgIE11dGV4TG9ja2Vy
IGxvY2tlcihtX2NvbXBvc2l0aW5nTXV0ZXgpOwogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAg
ICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci53cmFwKDApOyAvLyBDbGVhciB3ZWFrIHJlZmVyZW5j
ZSB0byBtX3dlYk1lZGlhUGxheWVyJ3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlci4KICNlbmRpZgpA
QCAtMzI4LDcgKzMzMCw2IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKGNv
bnN0IFN0cmluZyYgdXJsKQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bG9hZElu
dGVybmFsKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb21wb3NpdGluZ011dGV4KTsK
ICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlci53cmFwKDAp
OyAvLyBDbGVhciB3ZWFrIHJlZmVyZW5jZSB0byBtX3dlYk1lZGlhUGxheWVyJ3MgV2ViQXVkaW9T
b3VyY2VQcm92aWRlci4KICNlbmRpZgpAQCAtNzYzLDcgKzc2NCw3IEBAIGJvb2wgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjphY2NlbGVyYXRlZFJlbmRlcmluZ0luVXNlKCkKIAogdm9pZCBXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudChXZWJWaWRl
b0ZyYW1lUHJvdmlkZXI6OkNsaWVudCogY2xpZW50KQogewotICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX2NvbXBvc2l0aW5nTXV0ZXgpOworICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dlYk1lZGlh
UGxheWVyTXV0ZXgpOwogICAgIGlmIChtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudCkKICAgICAg
ICAgbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQtPnN0b3BVc2luZ1Byb3ZpZGVyKCk7CiAgICAg
bV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQgPSBjbGllbnQ7CkBAIC03NzMsOCArNzc0LDEwIEBA
IHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGll
bnQoV2ViVmlkZW9GcmFtZVByb3ZpZGVyCiAKIFdlYlZpZGVvRnJhbWUqIFdlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbDo6Z2V0Q3VycmVudEZyYW1lKCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIo
bV9jb21wb3NpdGluZ011dGV4KTsKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5
IGJ5IHRoZSBjbGllbnQuCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2ViTWVkaWFQbGF5ZXJN
dXRleCk7CiAgICAgQVNTRVJUKCFtX2N1cnJlbnRWaWRlb0ZyYW1lKTsKKyAgICBBU1NFUlQobV92
aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQpOwogICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQogICAg
ICAgICBtX2N1cnJlbnRWaWRlb0ZyYW1lID0gbV93ZWJNZWRpYVBsYXllci0+Z2V0Q3VycmVudEZy
YW1lKCk7CiAgICAgcmV0dXJuIG1fY3VycmVudFZpZGVvRnJhbWU7CkBAIC03ODIsOCArNzg1LDEw
IEBAIFdlYlZpZGVvRnJhbWUqIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Z2V0Q3VycmVudEZy
YW1lKCkKIAogdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnB1dEN1cnJlbnRGcmFtZShX
ZWJWaWRlb0ZyYW1lKiB2aWRlb0ZyYW1lKQogewotICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2Nv
bXBvc2l0aW5nTXV0ZXgpOworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9ubHkgYnkg
dGhlIGNsaWVudC4KKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93ZWJNZWRpYVBsYXllck11dGV4
KTsKICAgICBBU1NFUlQodmlkZW9GcmFtZSA9PSBtX2N1cnJlbnRWaWRlb0ZyYW1lKTsKKyAgICBB
U1NFUlQobV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQpOwogICAgIGlmICghdmlkZW9GcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmIChtX3dlYk1lZGlhUGxheWVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAppbmRl
eCBiZDI5MDdlZDI2MWYxN2ZkYTEyNDk3ZDY4NTMwYzY4ZGNiOTMzOTMwLi40YTEwZjE1ZTViMGVi
YTIzZTJjNDUxZDQwYjY4MWI2MjZhOTA2MWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtMTk2LDcgKzE5Niw3
IEBAIHByaXZhdGU6CiAgICAgYm9vbCBhY2NlbGVyYXRlZFJlbmRlcmluZ0luVXNlKCk7CiAjZW5k
aWYKIAotICAgIE11dGV4IG1fY29tcG9zaXRpbmdNdXRleDsgLy8gR3VhcmRzIG1fY3VycmVudFZp
ZGVvRnJhbWUgYW5kIG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50LgorICAgIE11dGV4IG1fd2Vi
TWVkaWFQbGF5ZXJNdXRleDsgLy8gR3VhcmRzIHRoZSBtX3dlYk1lZGlhUGxheWVyTXV0ZXgKICAg
ICBXZWJDb3JlOjpNZWRpYVBsYXllciogbV9tZWRpYVBsYXllcjsKICAgICBPd25QdHI8V2ViTWVk
aWFQbGF5ZXI+IG1fd2ViTWVkaWFQbGF5ZXI7CiAgICAgV2ViVmlkZW9GcmFtZSogbV9jdXJyZW50
VmlkZW9GcmFtZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163160</attachid>
            <date>2012-09-10 10:32:35 -0700</date>
            <delta_ts>2012-09-10 11:39:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-96010-20120910103211.patch</filename>
            <type>text/plain</type>
            <size>8786</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA2ZTkxM2U3ODE2N2Jl
MzllZjk1YWIyODI4NTA4NzUzZmU3MmEzNTE0Li4wYzdhZWZmMGQ3ODQ1ZmMzOTg5ZDRlNWUzMmQz
M2EzMTU0MWRmMzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0wNiAg
QWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Rml4IGRlYWRsb2NrIGJldHdlZW4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGR0b3IgYW5kIFB1
dEN1cnJlbnRGcmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTYwMTAKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAg
ICAgICBBZGQgc29tZSBhZGRpdGlvbmFsIGNsYXJpZnlpbmcgY29tbWVudHMuCisKKyAgICAgICAg
KiBjaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZVByb3ZpZGVyLmg6CisgICAgICAgIChDbGll
bnQpOgorICAgICAgICAoV2ViVmlkZW9GcmFtZVByb3ZpZGVyKToKKwogMjAxMi0wOS0xMCAgVG9t
bXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1d
IE1lZGlhU3RyZWFtIEFQSTogUmVtb3ZlIHRoZSBEZXNjcmlwdG9yIHBvc3RmaXgKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggMmE2MjE0NTFiZDAzZWI4YmM4YmJhNzljMGY0YmI3ODEzMDkz
ZmNjNC4uZWYwN2E4ZmUzZjY4OTM2NWNmMjgwODNlYzcxMzVjZjRmNDA3MWU2NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0wOS0wNiAgQWRyaWVubmUg
V2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0gRml4IGRlYWRs
b2NrIGJldHdlZW4gV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGR0b3IgYW5kIFB1dEN1cnJlbnRG
cmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYw
MTAKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KKworICAgICAgICBUaGUg
a2V5IGZpeCBoZXJlIGlzIHRoYXQgdGhlIGRlc3RydWN0b3Igbm8gbG9uZ2VyIGhhcyBhIG11dGV4
LgorICAgICAgICBUaGUgbV9jb21wb3NpdGluZ011dGV4IHdhcyBzdXBwb3NlZGx5IHByb3RlY3Rp
bmcgcmFjZXMgYmV0d2VlbgorICAgICAgICB+V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsIGFuZCBz
ZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQuIFRoZQorICAgICAgICBmb3JtZXIgaXMgb25seSBj
YWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgYW5kIHRoZSBsYXR0ZXIgaXMgY2FsbGVkCisgICAg
ICAgIGZyb20gdGhlIGNvbXBvc2l0b3IgdGhyZWFkIG9ubHkgd2hlbiB0aGUgbWFpbiB0aHJlYWQg
aXMgYmxvY2tlZCAoYW5kCisgICAgICAgIGl0IGFscmVhZHkgYXNzZXJ0cyB0aGF0IHRoaXMgaXMg
dGhlIGNhc2UpLgorCisgICAgICAgIEluIGFkZGl0aW9uLCB0aGUgbV9wcm92aWRlck11dGV4IGlu
IENDVmlkZW9MYXllckltcGwgcHJldmVudHMgdGhlCisgICAgICAgIGRlc3RydWN0aW9uIG9mIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbCwgdGh1cyBrZWVwaW5nIHRoZSBmcmFtZQorICAgICAgICBh
Y3F1aXJlZCB2aWEgZ2V0Q3VycmVudEZyYW1lIGFsaXZlIHVudGlsIHB1dEN1cnJlbnRGcmFtZSBp
cyBjYWxsZWQuCisgICAgICAgIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgYnkgdGhl
IGNsaWVudCwgYW5kIGNvbW1lbnRzIGFyZSBhZGRlZAorICAgICAgICB0byB0aGUgaW50ZXJmYWNl
IHRvIGJldHRlciBkb2N1bWVudCB0aGlzLgorCisgICAgICAgIFRvIHByZXZlbnQgYSByYWNlIGJl
dHdlZW4gbG9hZCgpIGFuZCBnZXRDdXJyZW50RnJhbWUvcHV0Q3VycmVudEZyYW1lCisgICAgICAg
ICh3aGljaCBhcmUgY2FsbGVkIGZyb20gZGlmZmVyZW50IHRocmVhZHMpIGEgbmV3IG1fd2ViTWVk
aWFQbGF5ZXJNdXRleAorICAgICAgICB0byByZXBsYWNlIHBhcnQgb2Ygd2hhdCB0aGUgb2xkIG1f
Y29tcG9zaXRpbmdNdXRleCB3YXMgZG9pbmcuCisKKyAgICAgICAgKiBzcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjp+V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpsb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpsb2FkSW50ZXJuYWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnNldFZpZGVvRnJhbWVQcm92aWRlckNsaWVudCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Z2V0Q3VycmVudEZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwdXRDdXJyZW50RnJhbWUpOgor
ICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbCk6CisKIDIwMTItMDktMTAgIFJpY2sgQnllcnMgIDxyYnllcnNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG9uJ3QgdXNlIFdlYkdlc3R1cmVF
dmVudC5ib3VuZGluZ0JveCBmb3IgdG91Y2ggYWRqdXN0bWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lUHJvdmlkZXIuaCBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9GcmFtZVByb3ZpZGVyLmgKaW5kZXgg
NGQ2NTZhMjY4MzdjNzRmMGZkZGMxNTI2NWIzZTZkYWZiNWZmZmI1OC4uMjQ1NTJlODAyMGM4NGFk
NmU4MzljZmNkMDAwNTE4NWY3NmUwOGVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJWaWRlb0ZyYW1lUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvRnJhbWVQcm92aWRlci5oCkBAIC00Niw3ICs0Niw4
IEBAIHB1YmxpYzoKICAgICBjbGFzcyBDbGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgLy8g
UHJvdmlkZXIgd2lsbCBjYWxsIHRoaXMgbWV0aG9kIHRvIHRlbGwgdGhlIGNsaWVudCB0byBzdG9w
IHVzaW5nIGl0LgotICAgICAgICAvLyBzdG9wVXNpbmdQcm92aWRlcigpIG1heSBiZSBjYWxsZWQg
ZnJvbSBhbnkgdGhyZWFkLgorICAgICAgICAvLyBzdG9wVXNpbmdQcm92aWRlcigpIG1heSBiZSBj
YWxsZWQgZnJvbSBhbnkgdGhyZWFkLiBUaGUgY2xpZW50IHNob3VsZAorICAgICAgICAvLyBibG9j
ayB1bnRpbCBpdCBoYXMgcHV0Q3VycmVudEZyYW1lIGFueSBvdXRzdGFuZGluZyBmcmFtZXMuCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBzdG9wVXNpbmdQcm92aWRlcigpID0gMDsKIAogICAgICAgICAv
LyBOb3RpZmllcyB0aGUgcHJvdmlkZXIncyBjbGllbnQgdGhhdCBhIGNhbGwgdG8gZ2V0Q3VycmVu
dEZyYW1lKCkgd2lsbCByZXR1cm4gbmV3IGRhdGEuCkBAIC01NywxNyArNTgsMjAgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlTWF0cml4KGNvbnN0IGZsb2F0KikgPSAw
OwogICAgIH07CiAKLSAgICAvLyBNYXkgYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC4KKyAgICAv
LyBNYXkgYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZCwgYnV0IHRoZXJlIG11c3QgYmUgc29tZSBl
eHRlcm5hbCBndWFyYW50ZWUKKyAgICAvLyB0aGF0IHRoZSBwcm92aWRlciBpcyBub3QgZGVzdHJv
eWVkIGJlZm9yZSB0aGlzIGNhbGwgcmV0dXJucy4KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlkZW9G
cmFtZVByb3ZpZGVyQ2xpZW50KENsaWVudCopID0gMDsKIAogICAgIC8vIFRoaXMgZnVuY3Rpb24g
cGxhY2VzIGEgbG9jayBvbiB0aGUgY3VycmVudCBmcmFtZSBhbmQgcmV0dXJucyBhIHBvaW50ZXIg
dG8gaXQuCiAgICAgLy8gQ2FsbHMgdG8gdGhpcyBtZXRob2Qgc2hvdWxkIGFsd2F5cyBiZSBmb2xs
b3dlZCB3aXRoIGEgY2FsbCB0byBwdXRDdXJyZW50RnJhbWUoKS4KICAgICAvLyBUaGUgb3duZXJz
aGlwIG9mIHRoZSBvYmplY3QgaXMgbm90IHRyYW5zZmVycmVkIHRvIHRoZSBjYWxsZXIgYW5kCi0g
ICAgLy8gdGhlIGNhbGxlciBzaG91bGQgbm90IGZyZWUgdGhlIHJldHVybmVkIG9iamVjdC4KKyAg
ICAvLyB0aGUgY2FsbGVyIHNob3VsZCBub3QgZnJlZSB0aGUgcmV0dXJuZWQgb2JqZWN0LiBPbmx5
IHRoZSBjdXJyZW50IHByb3ZpZGVyCisgICAgLy8gY2xpZW50IHNob3VsZCBjYWxsIHRoaXMgZnVu
Y3Rpb24uCiAgICAgdmlydHVhbCBXZWJWaWRlb0ZyYW1lKiBnZXRDdXJyZW50RnJhbWUoKSA9IDA7
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiByZWxlYXNlcyB0aGUgbG9jayBvbiB0aGUgdmlkZW8gZnJh
bWUgaW4gY2hyb21pdW0uIEl0IHNob3VsZAogICAgIC8vIGFsd2F5cyBiZSBjYWxsZWQgYWZ0ZXIg
Z2V0Q3VycmVudEZyYW1lKCkuIEZyYW1lcyBwYXNzZWQgaW50byB0aGlzIG1ldGhvZAotICAgIC8v
IHNob3VsZCBubyBsb25nZXIgYmUgcmVmZXJlbmNlZCBhZnRlciB0aGUgY2FsbCBpcyBtYWRlLgor
ICAgIC8vIHNob3VsZCBubyBsb25nZXIgYmUgcmVmZXJlbmNlZCBhZnRlciB0aGUgY2FsbCBpcyBt
YWRlLiBPbmx5IHRoZSBjdXJyZW50CisgICAgLy8gcHJvdmlkZXIgY2xpZW50IHNob3VsZCBjYWxs
IHRoaXMgZnVuY3Rpb24uCiAgICAgdmlydHVhbCB2b2lkIHB1dEN1cnJlbnRGcmFtZShXZWJWaWRl
b0ZyYW1lKikgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggZTU3MGRjYTVhODA5MDE4ZjQ3
MDUxOTRhN2Y2ZmVmOWY4YjdjYjhlYy4uZTc1YzczOTQ3ZTZhMDEzMTg1NmQxZTQyN2E0NTVkNjVh
MjY0MzhiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC05Miw5ICs5MiwxMSBAQCBXZWJNZWRpYVBsYXll
ciogV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjptZWRpYVBsYXllcigpIGNvbnN0CiBXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6On5XZWJNZWRpYVBsYXllckNsaWVudEltcGwoKQogewogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9jb21w
b3NpdGluZ011dGV4KTsKICAgICBpZiAobV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQpCiAgICAg
ICAgIG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50LT5zdG9wVXNpbmdQcm92aWRlcigpOworICAg
IC8vIE5vIG5lZWQgZm9yIGEgbG9jayBoZXJlLCBhcyBnZXRDdXJyZW50RnJhbWUvcHV0Q3VycmVu
dEZyYW1lIGNhbid0IGJlCisgICAgLy8gY2FsbGVkIG5vdyB0aGF0IHRoZSBjbGllbnQgaXMgbm8g
bG9uZ2VyIHVzaW5nIHRoaXMgcHJvdmlkZXIuIEFsc28sIGxvYWQoKQorICAgIC8vIGFuZCB0aGlz
IGRlc3RydWN0b3IgYXJlIGNhbGxlZCBmcm9tIHRoZSBzYW1lIHRocmVhZC4KICAgICBpZiAobV93
ZWJNZWRpYVBsYXllcikKICAgICAgICAgbV93ZWJNZWRpYVBsYXllci0+c2V0U3RyZWFtVGV4dHVy
ZUNsaWVudCgwKTsKICNlbmRpZgpAQCAtMzEyLDggKzMxNCw4IEBAIHZvaWQgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIG1fdXJsID0gdXJs
OwogCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2ViTWVkaWFQbGF5ZXJNdXRleCk7CiAgICAg
aWYgKG1fcHJlbG9hZCA9PSBNZWRpYVBsYXllcjo6Tm9uZSkgewotICAgICAgICBNdXRleExvY2tl
ciBsb2NrZXIobV9jb21wb3NpdGluZ011dGV4KTsKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAg
ICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIud3JhcCgwKTsgLy8gQ2xlYXIgd2VhayByZWZlcmVu
Y2UgdG8gbV93ZWJNZWRpYVBsYXllcidzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXIuCiAjZW5kaWYK
QEAgLTMyNSw3ICszMjcsNiBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bG9hZChj
b25zdCBTdHJpbmcmIHVybCkKIAogdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmxvYWRJ
bnRlcm5hbCgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fY29tcG9zaXRpbmdNdXRleCk7
CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIud3JhcCgw
KTsgLy8gQ2xlYXIgd2VhayByZWZlcmVuY2UgdG8gbV93ZWJNZWRpYVBsYXllcidzIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXIuCiAjZW5kaWYKQEAgLTc2Niw3ICs3NjcsNyBAQCBib29sIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdJblVzZSgpCiAKIHZvaWQgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQoV2ViVmlk
ZW9GcmFtZVByb3ZpZGVyOjpDbGllbnQqIGNsaWVudCkKIHsKLSAgICBNdXRleExvY2tlciBsb2Nr
ZXIobV9jb21wb3NpdGluZ011dGV4KTsKKyAgICBNdXRleExvY2tlciBsb2NrZXIobV93ZWJNZWRp
YVBsYXllck11dGV4KTsKICAgICBpZiAobV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQpCiAgICAg
ICAgIG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50LT5zdG9wVXNpbmdQcm92aWRlcigpOwogICAg
IG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50ID0gY2xpZW50OwpAQCAtNzc2LDggKzc3NywxMCBA
QCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xp
ZW50KFdlYlZpZGVvRnJhbWVQcm92aWRlcgogCiBXZWJWaWRlb0ZyYW1lKiBXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OmdldEN1cnJlbnRGcmFtZSgpCiB7Ci0gICAgTXV0ZXhMb2NrZXIgbG9ja2Vy
KG1fY29tcG9zaXRpbmdNdXRleCk7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25s
eSBieSB0aGUgY2xpZW50LgorICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX3dlYk1lZGlhUGxheWVy
TXV0ZXgpOwogICAgIEFTU0VSVCghbV9jdXJyZW50VmlkZW9GcmFtZSk7CisgICAgQVNTRVJUKG1f
dmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KTsKICAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKICAg
ICAgICAgbV9jdXJyZW50VmlkZW9GcmFtZSA9IG1fd2ViTWVkaWFQbGF5ZXItPmdldEN1cnJlbnRG
cmFtZSgpOwogICAgIHJldHVybiBtX2N1cnJlbnRWaWRlb0ZyYW1lOwpAQCAtNzg1LDggKzc4OCwx
MCBAQCBXZWJWaWRlb0ZyYW1lKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmdldEN1cnJlbnRG
cmFtZSgpCiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpwdXRDdXJyZW50RnJhbWUo
V2ViVmlkZW9GcmFtZSogdmlkZW9GcmFtZSkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9j
b21wb3NpdGluZ011dGV4KTsKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGJ5
IHRoZSBjbGllbnQuCisgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1fd2ViTWVkaWFQbGF5ZXJNdXRl
eCk7CiAgICAgQVNTRVJUKHZpZGVvRnJhbWUgPT0gbV9jdXJyZW50VmlkZW9GcmFtZSk7CisgICAg
QVNTRVJUKG1fdmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KTsKICAgICBpZiAoIXZpZGVvRnJhbWUp
CiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV93ZWJNZWRpYVBsYXllcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5k
ZXggZGQxNzBlNTdjZDcwZmVkODQ4NjUyYzhhNmFhYmY3MWVmMTc2YjA0NC4uNzNlYjc4ZmE4NmJk
OTJkOTQzN2JmZDZkNTNiMTUzYzU2MWQ0YmU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKQEAgLTE5Nyw3ICsxOTcs
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgYWNjZWxlcmF0ZWRSZW5kZXJpbmdJblVzZSgpOwogI2Vu
ZGlmCiAKLSAgICBNdXRleCBtX2NvbXBvc2l0aW5nTXV0ZXg7IC8vIEd1YXJkcyBtX2N1cnJlbnRW
aWRlb0ZyYW1lIGFuZCBtX3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudC4KKyAgICBNdXRleCBtX3dl
Yk1lZGlhUGxheWVyTXV0ZXg7IC8vIEd1YXJkcyB0aGUgbV93ZWJNZWRpYVBsYXllcgogICAgIFdl
YkNvcmU6Ok1lZGlhUGxheWVyKiBtX21lZGlhUGxheWVyOwogICAgIE93blB0cjxXZWJNZWRpYVBs
YXllcj4gbV93ZWJNZWRpYVBsYXllcjsKICAgICBXZWJWaWRlb0ZyYW1lKiBtX2N1cnJlbnRWaWRl
b0ZyYW1lOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>