<?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>43394</bug_id>
          
          <creation_ts>2010-08-02 17:18:01 -0700</creation_ts>
          <short_desc>[Chromium] Full screen media player interface between WebMediaPlayer and WebWidgetClient</short_desc>
          <delta_ts>2011-01-12 18:40:53 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Bo Liu">boliu</reporter>
          <assigned_to name="Bo Liu">boliu</assigned_to>
          <cc>abarth</cc>
    
    <cc>boliu</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>hclam</cc>
    
    <cc>levin</cc>
    
    <cc>scherkus</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>259210</commentid>
    <comment_count>0</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-02 17:18:01 -0700</bug_when>
    <thetext>Add class WebFullscreenMediaPlayer that interfaces between WebMediaPlayer and WebWidgetClient. Add methods for WebMediaPlayer to set the WebMediaPlayerClient. WebFullscreenMediaPlayer inherits from WebWidget (interface used by WebWidgetClient) and WebMediaPlayerClient (interface used by WebMediaPlayer). WebFullscreenMediaPlayer shortcuts the invalidate/paint cycle.

This patches depends on this chromium patch (http://codereview.chromium.org/3055009/show).

Will upload corresponding chromium patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259211</commentid>
    <comment_count>1</comment_count>
      <attachid>63281</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-02 17:19:24 -0700</bug_when>
    <thetext>Created attachment 63281
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259216</commentid>
    <comment_count>2</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-02 17:31:28 -0700</bug_when>
    <thetext>Corresponding chromium patch: http://codereview.chromium.org/3026043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259220</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-02 17:42:49 -0700</bug_when>
    <thetext>Attachment 63281 did not build on chromium:
Build output: http://queues.webkit.org/results/3619490</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259576</commentid>
    <comment_count>4</comment_count>
      <attachid>63281</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-03 11:26:35 -0700</bug_when>
    <thetext>Comment on attachment 63281
Patch


Drive by comment.

&gt; diff --git a/WebKit/chromium/public/WebFullscreenMediaPlayer.h b/WebKit/chromium/public/WebFullscreenMediaPlayer.h
&gt; +    WebFullscreenMediaPlayer(WebWidgetClient* webWidgetClient);

The parameter name &quot;webWidgetClient&quot; shouldn&apos;t be here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259577</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-08-03 11:27:39 -0700</bug_when>
    <thetext>Adding Darin Fisher since this involves the chromium public api.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259583</commentid>
    <comment_count>6</comment_count>
      <attachid>63358</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-03 11:34:11 -0700</bug_when>
    <thetext>Created attachment 63358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259592</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-03 11:46:07 -0700</bug_when>
    <thetext>Attachment 63358 did not build on chromium:
Build output: http://queues.webkit.org/results/3632402</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259625</commentid>
    <comment_count>8</comment_count>
      <attachid>63358</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-03 12:34:26 -0700</bug_when>
    <thetext>Comment on attachment 63358
Patch

WebKit/chromium/public/WebMediaPlayer.h:84
 +      virtual WebMediaPlayerClient* GetClient() const = 0;
use webkit style here.  this should be client() and setClient(),
but i have to ask:  why do you need the client to be accessible
like this, and why do you need it to be mutable?

we have so far tried to avoid exposing clients like this.  what
problem are you trying to solve?

WebKit/chromium/public/WebPopupType.h:40
 +      WebPopupTypeFullscreenMediaPlayer,
why does this popup type need to be media player specific?  in the future,
we may have other needs for a fullscreen popup, and i think the code you
are adding could be used for that too.  so i would drop the MediaPlayer
suffix.

WebKit/chromium/public/WebViewClient.h:91
 +      virtual WebWidget* createFullscreenWindow(WebPopupType) { return 0; }
i don&apos;t see why you need to pass WebPopupType to this method.

but instead of removing it, perhaps it would be better to combine
this function with the createPopupMenu(WebPopupType) method from
above into a single:

  virtual WebWidget* createPopup(WebPopupType);

then, deprecate the createPopupMenu(WebPopupType) method.
WebKit/chromium/public/WebFullscreenMediaPlayer.h:53
 +  class WebFullscreenMediaPlayer : public WebWidget,
implementation classes like this should go in chromium/src.  what you
should do in this case is make WebFullscreenMediaPlayer be an interface
with a static create function (see WebPopupMenu.h).  in chromium/src,
you can have an implementation of WebFullscreenMediaPlayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259642</commentid>
    <comment_count>9</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-03 12:56:50 -0700</bug_when>
    <thetext>Get/SetClient is used to replace the client in order to paint into full screen.

Is the general design of replacing the client for full screen okay, or should WebMediaPlayer have methods like enterFullscreen(WebMediaPlayerFullscreenClient*) and exitFullscreen?

Will get the other issues fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259654</commentid>
    <comment_count>10</comment_count>
    <who name="Andrew Scherkus">scherkus</who>
    <bug_when>2010-08-03 13:10:05 -0700</bug_when>
    <thetext>yeah the idea is to swap the client so the fullscreen RenderWidget can intercept the events bubbled up from the WebMediaPlayer (repaints, etc..)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259674</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-03 13:55:48 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Get/SetClient is used to replace the client in order to paint into full screen.

Can the client be a parameter to WebFullscreenMediaPlayer upon construction?


&gt; Is the general design of replacing the client for full screen okay, or should WebMediaPlayer have methods like enterFullscreen(WebMediaPlayerFullscreenClient*) and exitFullscreen?

I don&apos;t follow this suggestion.  In general, it is better for clients to be immutable and specified at object construction time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259675</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-08-03 13:56:48 -0700</bug_when>
    <thetext>do you need to intercept all client methods?  or if it is only a subset of methods, should you define a WebFullscreenMediaPlayerClient interface?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259680</commentid>
    <comment_count>13</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-03 14:06:43 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; do you need to intercept all client methods?  or if it is only a subset of methods, should you define a WebFullscreenMediaPlayerClient interface?

Right now only the repaint call is intercepted. All other WebMediaPlayerClient calls are forwarded to the original client.

However, there is no media control UI in full screen yet. The other calls will probably be needed intercepted as well when the controls are in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259695</commentid>
    <comment_count>14</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-03 14:35:40 -0700</bug_when>
    <thetext>&gt; WebKit/chromium/public/WebPopupType.h:40
&gt;  +      WebPopupTypeFullscreenMediaPlayer,
&gt; why does this popup type need to be media player specific?  in the future,
&gt; we may have other needs for a fullscreen popup, and i think the code you
&gt; are adding could be used for that too.  so i would drop the MediaPlayer
&gt; suffix.
&gt; 
&gt; WebKit/chromium/public/WebViewClient.h:91
&gt;  +      virtual WebWidget* createFullscreenWindow(WebPopupType) { return 0; }
&gt; i don&apos;t see why you need to pass WebPopupType to this method.
&gt; 
&gt; but instead of removing it, perhaps it would be better to combine
&gt; this function with the createPopupMenu(WebPopupType) method from
&gt; above into a single:
&gt; 
&gt;   virtual WebWidget* createPopup(WebPopupType);
&gt; 
&gt; then, deprecate the createPopupMenu(WebPopupType) method.

I thought about creating a generic full screen pop up type, and it might
not work very well.

Every WebPopupType match to one concrete sublcass of WebWidget.
Then WebViewClient::createPopup will return a WebWidget* based on the pop up
type passed in. If there is only a generic full screen type, it can
only return a generic full screen subclass of WebWidget. Then the WebWidget
will somehow need to be customized for full screen video, probably by
introducing another interface.

Is it possible for future uses of full screen to add new pop up types?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259749</commentid>
    <comment_count>15</comment_count>
      <attachid>63389</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-03 16:57:35 -0700</bug_when>
    <thetext>Created attachment 63389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259768</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-03 17:45:16 -0700</bug_when>
    <thetext>Attachment 63389 did not build on chromium:
Build output: http://queues.webkit.org/results/3577836</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265795</commentid>
    <comment_count>17</comment_count>
      <attachid>64644</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2010-08-17 15:13:09 -0700</bug_when>
    <thetext>Created attachment 64644
Patch

Fix handling keyboard inputs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265877</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-17 17:49:39 -0700</bug_when>
    <thetext>Attachment 64644 did not build on chromium:
Build output: http://queues.webkit.org/results/3707317</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266322</commentid>
    <comment_count>19</comment_count>
    <who name="Andrew Scherkus">scherkus</who>
    <bug_when>2010-08-18 12:41:38 -0700</bug_when>
    <thetext>so I don&apos;t see anything glaringly wrong with this patch -- overall makes sense however I&apos;m not a WebKit reviewer so fishd should take another glance</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297758</commentid>
    <comment_count>20</comment_count>
      <attachid>71515</attachid>
    <who name="Andrew Scherkus">scherkus</who>
    <bug_when>2010-10-21 17:48:57 -0700</bug_when>
    <thetext>Created attachment 71515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297761</commentid>
    <comment_count>21</comment_count>
    <who name="Andrew Scherkus">scherkus</who>
    <bug_when>2010-10-21 17:59:55 -0700</bug_when>
    <thetext>I&apos;m picking up boliu&apos;s leftover fullscreen patches.

The general design was to try to reuse as much as the RenderWidget IPC codepath as possible.

So we have a popup type (WebPopupTypeFullscreenMediaPlayer) and an implementation of it (WebFullscreenMediaPlayerClientImpl)

The general idea is to swap the RenderWidget on WebMediaPlayerImpl so that WebMediaPlayerImpl starts receiving commands from the full screen widget (i.e., seeking, pause, volume, paint) and responds with events.

I&apos;m not sure if this is still the right approach so I&apos;m open to ideas!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298521</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-23 21:53:47 -0700</bug_when>
    <thetext>Attachment 71515 did not build on chromium:
Build output: http://queues.webkit.org/results/4684061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333429</commentid>
    <comment_count>23</comment_count>
      <attachid>71515</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-12 16:57:59 -0800</bug_when>
    <thetext>Comment on attachment 71515
Patch

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

I&apos;m worried that this patch introduces memory safety issues.  It might well be fine, but I&apos;m not sure it&apos;s correct.

&gt; WebKit/chromium/src/ChromeClientImpl.cpp:836
&gt; +    fullscreenClient-&gt;exitFullscreen();

When does the client get deleted?

&gt; WebKit/chromium/src/WebFullscreenMediaPlayerClientImpl.cpp:43
&gt; +namespace WebKit {

Missing blank line after this line.

&gt; WebKit/chromium/src/WebFullscreenMediaPlayerClientImpl.cpp:46
&gt; +    return new WebFullscreenMediaPlayerClientImpl(client);

Is this normal memory management for the Chromium API?  In WebCore, we&apos;d use something like a PassOwnPtr.

&gt; WebKit/chromium/src/WebFullscreenMediaPlayerClientImpl.cpp:84
&gt; +    delete this;

I see.  This seems like a dangerous pattern for memory management, but maybe it&apos;s the norm?

&gt; WebKit/chromium/src/WebFullscreenMediaPlayerClientImpl.cpp:94
&gt; +    // Called when first created.

Can this be called multiple times?  I don&apos;t really understand this comment.

&gt; WebKit/chromium/src/WebFullscreenMediaPlayerClientImpl.cpp:118
&gt; +      switch (static_cast&lt;const WebKeyboardEvent&amp;&gt;(event).windowsKeyCode) {

Bad indent.

&gt; WebKit/chromium/src/WebFullscreenMediaPlayerClientImpl.cpp:121
&gt; +              m_mediaElement-&gt;play(m_mediaElement-&gt;processingUserGesture());

Why are we asking the media element if its processing a user gesture?  Whether we&apos;re processing a user gesture is static state.

&gt; WebKit/chromium/src/WebFullscreenMediaPlayerClientImpl.h:103
&gt; +    // Weak pointer to WebWidgetClient.

It&apos;s not technically a weak pointer, right?  There&apos;s no notification of when the client destructs itself.

&gt; WebKit/chromium/src/WebFullscreenMediaPlayerClientImpl.h:109
&gt; +    // Pointer to the corresponding media element is saved
&gt; +    // for properly exiting full screen as a result of user
&gt; +    // action.
&gt; +    WebCore::HTMLMediaElement* m_mediaElement;

We don&apos;t need to hold a reference to the element here?  What if it gets removed from the DOM and deallocated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333441</commentid>
    <comment_count>24</comment_count>
    <who name="Andrew Scherkus">scherkus</who>
    <bug_when>2011-01-12 17:13:31 -0800</bug_when>
    <thetext>holy smokes I hope you didn&apos;t spend too much time reviewing this adam!

I think this patch (and possibly associated ones) will be made obsolete due to recent &quot;real&quot; fullscreen support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333491</commentid>
    <comment_count>25</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-12 18:40:35 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; holy smokes I hope you didn&apos;t spend too much time reviewing this adam!

No problem.  I&apos;m just trying to clear out the backlog of seemingly forgotten review requests.

&gt; I think this patch (and possibly associated ones) will be made obsolete due to recent &quot;real&quot; fullscreen support

It would be helpful if you could mark them obsolete in the bug tracker so they don&apos;t show up in http://webkit.org/pending-review.  Glad to hear we&apos;re getting real fullscreen support.  :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63281</attachid>
            <date>2010-08-02 17:19:24 -0700</date>
            <delta_ts>2010-08-03 11:34:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43394-20100802171923.patch</filename>
            <type>text/plain</type>
            <size>17136</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGY0MTc5OWM5ZTkwNTBmYjJhNDg1MDZlNzg3YzM3OTk5NDlmZjEwZjAu
LmMyZDA0MTcwNGY5YmNkZmEzY2U4N2JhNGFlMjUzNWRkNmVjMTExZjAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ5IEBACisyMDEwLTA4LTAyICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9t
aXVtXSBGdWxsIHNjcmVlbiBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlIGJldHdlZW4gV2ViTWVkaWFQ
bGF5ZXIgYW5kIFdlYldpZGdldENsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDMzOTQKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAg
ICogcHVibGljL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBw
dWJsaWMvV2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViUG9wdXBUeXBlLmg6
CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6Y3JlYXRlRnVsbHNjcmVlbldpbmRvdyk6
CisgICAgICAgICogc3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjp+V2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyOjpJbml0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllcjo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6
OnNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OnJlc2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bGF5b3V0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpwYWludCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6aGFuZGxlSW5wdXRFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bW91c2VDYXB0dXJl
TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6c2V0Rm9j
dXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OnNldENvbXBv
c2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpjb25m
aXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXI6OnRleHRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXI6OmNhcmV0T3JTZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxs
c2NyZWVuTWVkaWFQbGF5ZXI6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bmV0d29ya1N0YXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6cmVh
ZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXI6OnZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXI6Om11dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyOjp0aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllcjo6cmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllcjo6ZHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5N
ZWRpYVBsYXllcjo6c2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXI6OnNhd1Vuc3VwcG9ydGVkVHJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbHNjcmVlbk1lZGlhUGxheWVyOjp2b2x1bWUpOgorCiAyMDEwLTA4LTAyICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEds
YXprb3YuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDEwZjAxZTUzMTgxOWY3MTlkYzVhMDkwN2ZhNmFmZWM1
NzM2YTU5OTEuLjRjZmI5YmQwY2QwNzg4MjJkZmM2NzlkYzdlYTMwNDUwNzhlNmE0MzkgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCkBAIC0xNjUsNiArMTY1LDcgQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YkZvbnRDYWNoZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvcm1Db250cm9sRWxl
bWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvcm1FbGVtZW50LmgnLAorICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyLmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlTW9jay5oJywKQEAgLTQwMyw2ICs0MDQs
NyBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9ybUVsZW1lbnQuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkZyYW1lSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RnJhbWVJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlk
Z2VJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2VJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNl
TW9jay5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjkxODQ4MzNiZTRmNjZlN2MyZmJhYmZiZTI2YjViYWMy
ODMxYzFmZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyLmgKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZ1bGxzY3Jl
ZW5NZWRpYVBsYXllcl9oCisjZGVmaW5lIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcl9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJNZWRpYUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJXZWJNZWRpYVBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgIldlYlJlY3QuaCIKKyNpbmNs
dWRlICJXZWJXaWRnZXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYldpZGdldENsaWVu
dDsKK2NsYXNzIFdlYk1lZGlhUGxheWVyOworCisvLyBUaGlzIGNsYXNzIGNvbm5lY3RzIGEgZnVs
bCBzY3JlZW4gV2ViV2lkZ2V0Q2xpZW50IGFuZCBhCisvLyBXZWJNZWRpYVBsYXllci4gV2ViV2lk
Z2V0Q2xpZW50IHVzZXMgdGhlIFdlYldpZGdldCBpbnRlcmZhY2UKKy8vIHRvIHNlbmQgcGFpbnQg
cmVxdWVzdHMgYW5kIGlucHV0IGV2ZW50cy4gV2ViTWVkaWFQbGF5ZXIKKy8vIHVzZXMgdGhlIFdl
Yk1lZGlhUGxheWVyQ2xpZW50IHRvIHNlbmQgaW52YWxpZGF0ZXMuCitjbGFzcyBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXIgOiBwdWJsaWMgV2ViV2lkZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFdlYk1lZGlhUGxheWVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBX
RUJLSVRfQVBJIHN0YXRpYyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIqIGNyZWF0ZShXZWJXaWRn
ZXRDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIoKTsKKwor
ICAgIC8vIEluaXRpYWxpemUgd2l0aCB0aGUgbWVkaWEgZWxlbWVudCBhbmQgc2hvdyB0aGUgZnVs
bAorICAgIC8vIHNjcmVlbiBXZWJXaWRnZXQuCisgICAgdm9pZCBJbml0KFdlYk1lZGlhRWxlbWVu
dCk7CisKKyAgICAvLyBTaG91bGQgYmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIEhUTUxNZWRpYUVs
ZW1lbnQ6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZS4KKyAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7
CisKKyAgICAvLyBXZWJXaWRnZXQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB2b2lkIGNs
b3NlKCk7CisgICAgdmlydHVhbCBXZWJTaXplIHNpemUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
aXplKGNvbnN0IFdlYlNpemUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0KCk7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50Jik7CisgICAgdmlydHVh
bCB2b2lkIG1vdXNlQ2FwdHVyZUxvc3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9jdXMoYm9v
bCk7CisgICAgdmlydHVhbCBib29sIHNldENvbXBvc2l0aW9uKAorICAgICAgICBjb25zdCBXZWJT
dHJpbmcmIHRleHQsCisgICAgICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJDb21wb3NpdGlvblVuZGVy
bGluZT4mIHVuZGVybGluZXMsCisgICAgICAgIGludCBzZWxlY3Rpb25TdGFydCwKKyAgICAgICAg
aW50IHNlbGVjdGlvbkVuZCk7CisgICAgdmlydHVhbCBib29sIGNvbmZpcm1Db21wb3NpdGlvbigp
OworICAgIHZpcnR1YWwgV2ViVGV4dElucHV0VHlwZSB0ZXh0SW5wdXRUeXBlKCk7CisgICAgdmly
dHVhbCBXZWJSZWN0IGNhcmV0T3JTZWxlY3Rpb25Cb3VuZHMoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VGV4dERpcmVjdGlvbihXZWJUZXh0RGlyZWN0aW9uKTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3Q7CisKKyAgICAvLyBXZWJNZWRpYVBs
YXllckNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBuZXR3b3JrU3RhdGVDaGFuZ2VkKCk7CisgICAg
dmlydHVhbCB2b2lkIHJlYWR5U3RhdGVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHZvbHVt
ZUNoYW5nZWQoZmxvYXQpOworICAgIHZpcnR1YWwgdm9pZCBtdXRlQ2hhbmdlZChib29sKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdGltZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwYWludCgp
OworICAgIHZpcnR1YWwgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmF0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2l6ZUNoYW5nZWQoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2F3VW5zdXBwb3J0ZWRUcmFja3MoKTsKKyAgICB2aXJ0dWFsIGZsb2F0IHZvbHVt
ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcihXZWJX
aWRnZXRDbGllbnQqIHdlYldpZGdldENsaWVudCk7CisKKyAgICAvLyBXZWFrIHBvaW50ZXIgdG8g
V2ViV2lkZ2V0Q2xpZW50LgorICAgIFdlYldpZGdldENsaWVudCogbV93ZWJXaWRnZXRDbGllbnQ7
CisKKyAgICAvLyBQb2ludGVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIG1lZGlhIGVsZW1lbnQgaXMg
c2F2ZWQKKyAgICAvLyBmb3IgcHJvcGVybHkgZXhpdGluZyBmdWxsIHNjcmVlbiBhcyBhIHJlc3Vs
dCBvZiB1c2VyCisgICAgLy8gYWN0aW9uLgorICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQq
IG1fbWVkaWFFbGVtZW50OworCisgICAgV2ViTWVkaWFQbGF5ZXIqIG1fbWVkaWFQbGF5ZXI7CisK
KyAgICAvLyBUaGUgb3JpZ2luYWwgV2ViTWVkaWFQbGF5ZXJDbGllbnQgaXMgc2F2ZWQgc28gdGhh
dAorICAgIC8vIGl0IGNhbiBiZSByZXN0b3JlZCBvbmNlIGZ1bGwgc2NyZWVuIGV4aXRzLgorICAg
IFdlYk1lZGlhUGxheWVyQ2xpZW50KiBtX21lZGlhUGxheWVyQ2xpZW50OworCisgICAgLy8gRGlt
ZW5zaW9ucyBvZiB0aGUgZnVsbCBzY3JlZW4gV2ViV2lkZ2V0LgorICAgIFdlYlJlY3QgbV9yZWN0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXJfaApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRp
YVBsYXllci5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCmluZGV4
IDZmNTEzNDVkMDc0ZWVkZDdjMTk5ZTEwYzM4YTM5OWY5YmQwZGE1OTUuLjU1ZGQ4YTIzODIxNGFk
ZmVkYTc5ZTcyM2IwMjliMmExNmQ5NGM0N2MgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhUGxheWVyLmgKQEAgLTgwLDYgKzgwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfldl
Yk1lZGlhUGxheWVyKCkge30KIAorICAgIC8vIEFjY2Vzc29ycyBmb3IgdGhlIGNsaWVudC4KKyAg
ICB2aXJ0dWFsIFdlYk1lZGlhUGxheWVyQ2xpZW50KiBHZXRDbGllbnQoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIFNldENsaWVudChXZWJNZWRpYVBsYXllckNsaWVudCopID0gMDsKKwog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFdlYlVSTCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgY2FuY2VsTG9hZCgpID0gMDsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJQb3B1cFR5cGUuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBUeXBlLmgK
aW5kZXggOGE1NDZiYWU0MjI3YzdmNTc1OGQ3NmMwYWY3ODdiNjg1ZWY2ZjZlMy4uNDhiYzNjYzVj
NWI4ODQzN2NmOTYyYzJkMjM0OGNiYmFjZDMzOWYxZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJQb3B1cFR5cGUuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlBvcHVwVHlwZS5oCkBAIC0zNyw2ICszNyw3IEBAIGVudW0gV2ViUG9wdXBUeXBlIHsKICAgICBX
ZWJQb3B1cFR5cGVOb25lLCAvLyBOb3QgYSBwb3B1cC4KICAgICBXZWJQb3B1cFR5cGVTZWxlY3Qs
IC8vIEEgSFRNTCBzZWxlY3QgKGNvbWJvLWJveCkgcG9wdXAuCiAgICAgV2ViUG9wdXBUeXBlU3Vn
Z2VzdGlvbiwgLy8gQW4gYXV0b2ZpbGwvYXV0b2NvbXBsZXRlIHBvcHVwLgorICAgIFdlYlBvcHVw
VHlwZUZ1bGxzY3JlZW5NZWRpYVBsYXllciwKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCA0NjI4YzJmNDQzZDM1MDJm
ZTUyYjc2NDJiYTQ4NWIwMzdkYTU1MjU0Li43NzNmZDcyMDFhZDAyMDhkMTkwMGUxODVkMzY2MDJh
ZGY4N2E1OGQyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGll
bnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtODYs
NiArODYsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1l
bnUoV2ViUG9wdXBUeXBlKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNy
ZWF0ZVBvcHVwTWVudShjb25zdCBXZWJQb3B1cE1lbnVJbmZvJikgeyByZXR1cm4gMDsgfQogCisg
ICAgLy8gQ3JlYXRlIGEgbmV3IFdlYldpZGdldCB0aGF0IGlzIGZ1bGwgc2NyZWVuLiBBIFdlYldp
ZGdldCBpcyBuZWVkZWQgc2luY2UKKyAgICAvLyBmdWxsIHNjcmVlbiB3aW5kb3cgaXMgZ2VuZXJp
Yy4KKyAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlRnVsbHNjcmVlbldpbmRvdyhXZWJQb3B1
cFR5cGUpIHsgcmV0dXJuIDA7IH0KKwogICAgIC8vIENyZWF0ZSBhIHNlc3Npb24gc3RvcmFnZSBu
YW1lc3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZpZXcuCiAgICAgdmlydHVh
bCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1bnNp
Z25lZCBxdW90YSkgeyByZXR1cm4gMDsgfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllci5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI4MTJhNTZiYmQzMjBkNTk3
MGFjMGI1YjlkMjdhOWExYTE2OGI2NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyLmNwcApAQCAtMCwwICsxLDIzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIuaCIKKwor
I2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Lmgi
CisjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJSZWN0LmgiCisjaW5j
bHVkZSAiV2ViU2NyZWVuSW5mby5oIgorI2luY2x1ZGUgIldlYlNpemUuaCIKKyNpbmNsdWRlICJX
ZWJUZXh0SW5wdXRUeXBlLmgiCisjaW5jbHVkZSAiV2ViV2lkZ2V0Q2xpZW50LmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyKiBXZWJGdWxsc2NyZWVuTWVk
aWFQbGF5ZXI6OmNyZWF0ZShXZWJXaWRnZXRDbGllbnQqIGNsaWVudCkKK3sKKyAgICByZXR1cm4g
bmV3IFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcihjbGllbnQpOworfQorCitXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXI6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcihXZWJXaWRnZXRDbGllbnQqIHdl
YldpZGdldENsaWVudCkKKyAgICA6IG1fd2ViV2lkZ2V0Q2xpZW50KHdlYldpZGdldENsaWVudCks
CisgICAgICBtX21lZGlhRWxlbWVudCgwKSwKKyAgICAgIG1fbWVkaWFQbGF5ZXIoMCksCisgICAg
ICBtX21lZGlhUGxheWVyQ2xpZW50KDApCit7CisgICAgV2ViU2NyZWVuSW5mbyBzaSA9IHdlYldp
ZGdldENsaWVudC0+c2NyZWVuSW5mbygpOworICAgIG1fcmVjdCA9IHNpLnJlY3Q7Cit9CisKK1dl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6fldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcigpCit7Cit9
CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpJbml0KFdlYk1lZGlhRWxlbWVudCBt
ZWRpYUVsZW1lbnQpCit7CisgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQudW53cmFw
PFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+KCk7CisKKyAgICBtX21lZGlhUGxheWVyID0gbWVk
aWFFbGVtZW50LnBsYXllcigpOworICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQgPSBtX21lZGlhUGxh
eWVyLT5HZXRDbGllbnQoKTsKKyAgICBtX21lZGlhUGxheWVyLT5TZXRDbGllbnQodGhpcyk7CisK
KyAgICBtX3dlYldpZGdldENsaWVudC0+c2hvdyhXZWJOYXZpZ2F0aW9uUG9saWN5SWdub3JlKTsK
K30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmV4aXRGdWxsc2NyZWVuKCkKK3sK
KyAgICBtX3dlYldpZGdldENsaWVudC0+Y2xvc2VXaWRnZXRTb29uKCk7Cit9CisKKy8vIFdlYldp
ZGdldCBpbXBsZW1lbnRhdGlvbi4KK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpjbG9z
ZSgpCit7CisgICAgbV9tZWRpYVBsYXllci0+U2V0Q2xpZW50KG1fbWVkaWFQbGF5ZXJDbGllbnQp
OworICAgIG1fbWVkaWFQbGF5ZXIgPSAwOworICAgIGRlbGV0ZSB0aGlzOworfQorCitXZWJTaXpl
IFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6c2l6ZSgpCit7CisgICAgcmV0dXJuIG1fbWVkaWFQ
bGF5ZXItPm5hdHVyYWxTaXplKCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
OjpyZXNpemUoY29uc3QgV2ViU2l6ZSYgc2l6ZSkKK3sKKyAgICAvLyBDYWxsZWQgd2hlbiBmaXJz
dCBjcmVhdGVkLgorICAgIG1fd2ViV2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChXZWJS
ZWN0KDAsIDAsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KSk7Cit9CisKK3ZvaWQgV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyOjpsYXlvdXQoKQoreworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllcjo6cGFpbnQoV2ViQ2FudmFzKiBjYW52YXMsIGNvbnN0IFdlYlJlY3QmIHJlY3QpCit7
CisgICAgbV9tZWRpYVBsYXllci0+cGFpbnQoY2FudmFzLCByZWN0KTsKK30KKworYm9vbCBXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVu
dCYgZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRFdmVudDo6S2V5VXAp
IHsKKyAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2V5Ym9hcmRFdmVudCY+KGV2
ZW50KS5uYXRpdmVLZXlDb2RlKSB7CisgICAgICBjYXNlIDY1OiAvLyBzcGFjZQorICAgICAgICAg
IGlmIChtX21lZGlhUGxheWVyLT5wYXVzZWQoKSkKKyAgICAgICAgICAgICAgbV9tZWRpYVBsYXll
ci0+cGxheSgpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgbV9tZWRpYVBsYXllci0+
cGF1c2UoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOTogLy8gZXNjYXBlCisgICAg
ICAgICAgbV9tZWRpYUVsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgICAgYnJlYWs7
CisgICAgICBkZWZhdWx0OgorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6Om1vdXNlQ2Fw
dHVyZUxvc3QoKQoreworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6c2V0Rm9j
dXMoYm9vbCkKK3sKK30KKworYm9vbCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OnNldENvbXBv
c2l0aW9uKAorICAgIGNvbnN0IFdlYlN0cmluZyYgdGV4dCwKKyAgICBjb25zdCBXZWJWZWN0b3I8
V2ViQ29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLAorICAgIGludCBzZWxlY3Rpb25T
dGFydCwKKyAgICBpbnQgc2VsZWN0aW9uRW5kKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwor
Ym9vbCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmNvbmZpcm1Db21wb3NpdGlvbigpCit7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCitXZWJUZXh0SW5wdXRUeXBlIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllcjo6dGV4dElucHV0VHlwZSgpCit7CisgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVO
b25lOworfQorCitXZWJSZWN0IFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6Y2FyZXRPclNlbGVj
dGlvbkJvdW5kcygpCit7CisgICAgcmV0dXJuIFdlYlJlY3QoKTsKK30KKwordm9pZCBXZWJGdWxs
c2NyZWVuTWVkaWFQbGF5ZXI6OnNldFRleHREaXJlY3Rpb24oV2ViVGV4dERpcmVjdGlvbikKK3sK
K30KKworYm9vbCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKKy8vIFdlYk1l
ZGlhUGxheWVyQ2xpZW50Cit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bmV0d29ya1N0
YXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1f
bWVkaWFQbGF5ZXJDbGllbnQtPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXI6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9t
ZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+cmVhZHlTdGF0
ZUNoYW5nZWQoKTsKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OnZvbHVtZUNo
YW5nZWQoZmxvYXQgdm9sdW1lKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAg
ICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT52b2x1bWVDaGFuZ2VkKHZvbHVtZSk7Cit9CisKK3Zv
aWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjptdXRlQ2hhbmdlZChib29sIG11dGVkKQorewor
ICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50
LT5tdXRlQ2hhbmdlZChtdXRlZCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
Ojp0aW1lQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAg
IG1fbWVkaWFQbGF5ZXJDbGllbnQtPnRpbWVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyOjpyZXBhaW50KCkKK3sKKyAgICBpZiAobV93ZWJXaWRnZXRDbGllbnQp
CisgICAgICAgIG1fd2ViV2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChtX3JlY3QpOwor
fQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6ZHVyYXRpb25DaGFuZ2VkKCkKK3sK
KyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVu
dC0+ZHVyYXRpb25DaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
OjpyYXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAg
IG1fbWVkaWFQbGF5ZXJDbGllbnQtPnJhdGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyOjpzaXplQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJD
bGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPnNpemVDaGFuZ2VkKCk7Cit9CisK
K3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpzYXdVbnN1cHBvcnRlZFRyYWNrcygpCit7
CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGll
bnQtPnNhd1Vuc3VwcG9ydGVkVHJhY2tzKCk7Cit9CisKK2Zsb2F0IFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllcjo6dm9sdW1lKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkK
KyAgICAgICAgcmV0dXJuIG1fbWVkaWFQbGF5ZXJDbGllbnQtPnZvbHVtZSgpOworICAgIHJldHVy
biAxLjBmOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63358</attachid>
            <date>2010-08-03 11:34:11 -0700</date>
            <delta_ts>2010-08-03 16:57:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43394-20100803113410.patch</filename>
            <type>text/plain</type>
            <size>17143</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDUwMDNlNTM3MTljZmY5YTA3OGQzMjYwY2ZjOTFhMDY1ODc0MGViMzcu
LjRiN2M5MjhhYzQ1MDU5MmFmNGMwZjMxODhjMWQxOTU0NzM3ZmQwZWIgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ5IEBACisyMDEwLTA4LTAzICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9t
aXVtXSBGdWxsIHNjcmVlbiBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlIGJldHdlZW4gV2ViTWVkaWFQ
bGF5ZXIgYW5kIFdlYldpZGdldENsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDMzOTQKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAg
ICogcHVibGljL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllci5oOiBBZGRlZC4KKyAgICAgICAgKiBw
dWJsaWMvV2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViUG9wdXBUeXBlLmg6
CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6Y3JlYXRlRnVsbHNjcmVlbldpbmRvdyk6
CisgICAgICAgICogc3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjp+V2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyOjpJbml0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllcjo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6
OnNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OnJlc2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bGF5b3V0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpwYWludCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6aGFuZGxlSW5wdXRFdmVudCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bW91c2VDYXB0dXJl
TG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6c2V0Rm9j
dXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OnNldENvbXBv
c2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpjb25m
aXJtQ29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXI6OnRleHRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXI6OmNhcmV0T3JTZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxs
c2NyZWVuTWVkaWFQbGF5ZXI6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bmV0d29ya1N0YXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6cmVh
ZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXI6OnZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXI6Om11dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyOjp0aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllcjo6cmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllcjo6ZHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyOjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5N
ZWRpYVBsYXllcjo6c2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXI6OnNhd1Vuc3VwcG9ydGVkVHJhY2tzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbHNjcmVlbk1lZGlhUGxheWVyOjp2b2x1bWUpOgorCiAyMDEwLTA4LTAzICBZdXJ5IFNlbWlr
aGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBD
aHJvbWl1bSBpbnRlcmFjdGl2ZSBVSSB0ZXN0cy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggOWRhODVjZDdj
YTM4YzUwNzI3ODEzMTU4MDdlYzM5NWNkYjViZDI0NC4uMzY4ODhjZTliYjA4MTlhM2MxNzZjZmJj
ZjcyYjIyNWQ3ODhlY2RjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE2Myw2ICsxNjMsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViRm9ybUVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXIuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblNl
cnZpY2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VC
cmlkZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VN
b2NrLmgnLApAQCAtMzkzLDYgKzM5NCw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb3Jt
RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
Ykdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllci5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NmI1ZjgxZmIz
ZDkyNDhiNTYxZTQwMDUxYzU4Y2VmY2JlZTc0OTcwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIuaApAQCAtMCwwICsxLDEy
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyX2gKKyNkZWZpbmUgV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyX2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldl
Yk1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViUmVjdC5oIgorI2luY2x1ZGUgIldlYldpZGdldC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgV2ViV2lkZ2V0Q2xpZW50OworY2xhc3MgV2ViTWVkaWFQbGF5ZXI7CisKKy8vIFRo
aXMgY2xhc3MgY29ubmVjdHMgYSBmdWxsIHNjcmVlbiBXZWJXaWRnZXRDbGllbnQgYW5kIGEKKy8v
IFdlYk1lZGlhUGxheWVyLiBXZWJXaWRnZXRDbGllbnQgdXNlcyB0aGUgV2ViV2lkZ2V0IGludGVy
ZmFjZQorLy8gdG8gc2VuZCBwYWludCByZXF1ZXN0cyBhbmQgaW5wdXQgZXZlbnRzLiBXZWJNZWRp
YVBsYXllcgorLy8gdXNlcyB0aGUgV2ViTWVkaWFQbGF5ZXJDbGllbnQgdG8gc2VuZCBpbnZhbGlk
YXRlcy4KK2NsYXNzIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllciA6IHB1YmxpYyBXZWJXaWRnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViTWVkaWFQbGF5ZXJD
bGllbnQgeworcHVibGljOgorICAgIFdFQktJVF9BUEkgc3RhdGljIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllciogY3JlYXRlKFdlYldpZGdldENsaWVudCopOworICAgIHZpcnR1YWwgfldlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllcigpOworCisgICAgLy8gSW5pdGlhbGl6ZSB3aXRoIHRoZSBtZWRpYSBl
bGVtZW50IGFuZCBzaG93IHRoZSBmdWxsCisgICAgLy8gc2NyZWVuIFdlYldpZGdldC4KKyAgICB2
b2lkIEluaXQoV2ViTWVkaWFFbGVtZW50KTsKKworICAgIC8vIFNob3VsZCBiZSBjYWxsZWQgYXMg
YSByZXN1bHQgb2YgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlLgorICAg
IHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIC8vIFdlYldpZGdldCBpbXBsZW1lbnRhdGlv
bi4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKyAgICB2aXJ0dWFsIFdlYlNpemUgc2l6ZSgp
OworICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpOworICAgIHZpcnR1YWwg
dm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29uc3Qg
V2ViUmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklu
cHV0RXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VDYXB0dXJlTG9zdCgpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0Q29tcG9zaXRp
b24oCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdGV4dCwKKyAgICAgICAgY29uc3QgV2ViVmVj
dG9yPFdlYkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywKKyAgICAgICAgaW50IHNl
bGVjdGlvblN0YXJ0LAorICAgICAgICBpbnQgc2VsZWN0aW9uRW5kKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAgdmlydHVhbCBXZWJUZXh0SW5wdXRUeXBlIHRl
eHRJbnB1dFR5cGUoKTsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgY2FyZXRPclNlbGVjdGlvbkJvdW5k
cygpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKFdlYlRleHREaXJlY3Rpb24p
OworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBjb25z
dDsKKworICAgIC8vIFdlYk1lZGlhUGxheWVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIG5ldHdv
cmtTdGF0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdm9sdW1lQ2hhbmdlZChmbG9hdCk7CisgICAgdmlydHVhbCB2b2lk
IG11dGVDaGFuZ2VkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCB0aW1lQ2hhbmdlZCgpOworICAg
IHZpcnR1YWwgdm9pZCByZXBhaW50KCk7CisgICAgdmlydHVhbCB2b2lkIGR1cmF0aW9uQ2hhbmdl
ZCgpOworICAgIHZpcnR1YWwgdm9pZCByYXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBz
aXplQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBzYXdVbnN1cHBvcnRlZFRyYWNrcygpOwor
ICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgV2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyKFdlYldpZGdldENsaWVudCopOworCisgICAgLy8gV2VhayBwb2lu
dGVyIHRvIFdlYldpZGdldENsaWVudC4KKyAgICBXZWJXaWRnZXRDbGllbnQqIG1fd2ViV2lkZ2V0
Q2xpZW50OworCisgICAgLy8gUG9pbnRlciB0byB0aGUgY29ycmVzcG9uZGluZyBtZWRpYSBlbGVt
ZW50IGlzIHNhdmVkCisgICAgLy8gZm9yIHByb3Blcmx5IGV4aXRpbmcgZnVsbCBzY3JlZW4gYXMg
YSByZXN1bHQgb2YgdXNlcgorICAgIC8vIGFjdGlvbi4KKyAgICBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50KiBtX21lZGlhRWxlbWVudDsKKworICAgIFdlYk1lZGlhUGxheWVyKiBtX21lZGlhUGxh
eWVyOworCisgICAgLy8gVGhlIG9yaWdpbmFsIFdlYk1lZGlhUGxheWVyQ2xpZW50IGlzIHNhdmVk
IHNvIHRoYXQKKyAgICAvLyBpdCBjYW4gYmUgcmVzdG9yZWQgb25jZSBmdWxsIHNjcmVlbiBleGl0
cy4KKyAgICBXZWJNZWRpYVBsYXllckNsaWVudCogbV9tZWRpYVBsYXllckNsaWVudDsKKworICAg
IC8vIERpbWVuc2lvbnMgb2YgdGhlIGZ1bGwgc2NyZWVuIFdlYldpZGdldC4KKyAgICBXZWJSZWN0
IG1fcmVjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyX2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViTWVkaWFQbGF5ZXIuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIu
aAppbmRleCA2ZjUxMzQ1ZDA3NGVlZGQ3YzE5OWUxMGMzOGEzOTlmOWJkMGRhNTk1Li41NWRkOGEy
MzgyMTRhZGZlZGE3OWU3MjNiMDI5YjJhMTZkOTRjNDdjIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVBsYXllci5oCkBAIC04MCw2ICs4MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIH5XZWJNZWRpYVBsYXllcigpIHt9CiAKKyAgICAvLyBBY2Nlc3NvcnMgZm9yIHRoZSBjbGll
bnQuCisgICAgdmlydHVhbCBXZWJNZWRpYVBsYXllckNsaWVudCogR2V0Q2xpZW50KCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBTZXRDbGllbnQoV2ViTWVkaWFQbGF5ZXJDbGllbnQqKSA9
IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBXZWJVUkwmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGNhbmNlbExvYWQoKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViUG9wdXBUeXBlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVw
VHlwZS5oCmluZGV4IDhhNTQ2YmFlNDIyN2M3ZjU3NThkNzZjMGFmNzg3YjY4NWVmNmY2ZTMuLjQ4
YmMzY2M1YzViODg0MzdjZjk2MmMyZDIzNDhjYmJhY2QzMzlmMWYgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBUeXBlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJQb3B1cFR5cGUuaApAQCAtMzcsNiArMzcsNyBAQCBlbnVtIFdlYlBvcHVwVHlwZSB7
CiAgICAgV2ViUG9wdXBUeXBlTm9uZSwgLy8gTm90IGEgcG9wdXAuCiAgICAgV2ViUG9wdXBUeXBl
U2VsZWN0LCAvLyBBIEhUTUwgc2VsZWN0IChjb21iby1ib3gpIHBvcHVwLgogICAgIFdlYlBvcHVw
VHlwZVN1Z2dlc3Rpb24sIC8vIEFuIGF1dG9maWxsL2F1dG9jb21wbGV0ZSBwb3B1cC4KKyAgICBX
ZWJQb3B1cFR5cGVGdWxsc2NyZWVuTWVkaWFQbGF5ZXIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggNDYyOGMyZjQ0
M2QzNTAyZmU1MmI3NjQyYmE0ODViMDM3ZGE1NTI1NC4uNzczZmQ3MjAxYWQwMjA4ZDE5MDBlMTg1
ZDM2NjAyYWRmODdhNThkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3Q2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgK
QEAgLTg2LDYgKzg2LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRl
UG9wdXBNZW51KFdlYlBvcHVwVHlwZSkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgV2ViV2lk
Z2V0KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgV2ViUG9wdXBNZW51SW5mbyYpIHsgcmV0dXJuIDA7
IH0KIAorICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJXaWRnZXQgdGhhdCBpcyBmdWxsIHNjcmVlbi4g
QSBXZWJXaWRnZXQgaXMgbmVlZGVkIHNpbmNlCisgICAgLy8gZnVsbCBzY3JlZW4gd2luZG93IGlz
IGdlbmVyaWMuCisgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZUZ1bGxzY3JlZW5XaW5kb3co
V2ViUG9wdXBUeXBlKSB7IHJldHVybiAwOyB9CisKICAgICAvLyBDcmVhdGUgYSBzZXNzaW9uIHN0
b3JhZ2UgbmFtZXNwYWNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJWaWV3LgogICAg
IHZpcnR1YWwgV2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpIHsgcmV0dXJuIDA7IH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyODEyYTU2YmJk
MzIwZDU5NzBhYzBiNWI5ZDI3YTlhMWExNjhiNjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllci5jcHAKQEAgLTAsMCArMSwyMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
LmgiCisKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViSW5wdXRF
dmVudC5oIgorI2luY2x1ZGUgIldlYk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAiV2ViUmVjdC5o
IgorI2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKKyNpbmNsdWRlICJXZWJTaXplLmgiCisjaW5j
bHVkZSAiV2ViVGV4dElucHV0VHlwZS5oIgorI2luY2x1ZGUgIldlYldpZGdldENsaWVudC5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKK1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllciogV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyOjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQpCit7CisgICAg
cmV0dXJuIG5ldyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIoY2xpZW50KTsKK30KKworV2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyOjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIoV2ViV2lkZ2V0Q2xp
ZW50KiB3ZWJXaWRnZXRDbGllbnQpCisgICAgOiBtX3dlYldpZGdldENsaWVudCh3ZWJXaWRnZXRD
bGllbnQpLAorICAgICAgbV9tZWRpYUVsZW1lbnQoMCksCisgICAgICBtX21lZGlhUGxheWVyKDAp
LAorICAgICAgbV9tZWRpYVBsYXllckNsaWVudCgwKQoreworICAgIFdlYlNjcmVlbkluZm8gc2kg
PSB3ZWJXaWRnZXRDbGllbnQtPnNjcmVlbkluZm8oKTsKKyAgICBtX3JlY3QgPSBzaS5yZWN0Owor
fQorCitXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6On5XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXIo
KQoreworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6SW5pdChXZWJNZWRpYUVs
ZW1lbnQgbWVkaWFFbGVtZW50KQoreworICAgIG1fbWVkaWFFbGVtZW50ID0gbWVkaWFFbGVtZW50
LnVud3JhcDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50PigpOworCisgICAgbV9tZWRpYVBsYXll
ciA9IG1lZGlhRWxlbWVudC5wbGF5ZXIoKTsKKyAgICBtX21lZGlhUGxheWVyQ2xpZW50ID0gbV9t
ZWRpYVBsYXllci0+R2V0Q2xpZW50KCk7CisgICAgbV9tZWRpYVBsYXllci0+U2V0Q2xpZW50KHRo
aXMpOworCisgICAgbV93ZWJXaWRnZXRDbGllbnQtPnNob3coV2ViTmF2aWdhdGlvblBvbGljeUln
bm9yZSk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpleGl0RnVsbHNjcmVl
bigpCit7CisgICAgbV93ZWJXaWRnZXRDbGllbnQtPmNsb3NlV2lkZ2V0U29vbigpOworfQorCisv
LyBXZWJXaWRnZXQgaW1wbGVtZW50YXRpb24uCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXll
cjo6Y2xvc2UoKQoreworICAgIG1fbWVkaWFQbGF5ZXItPlNldENsaWVudChtX21lZGlhUGxheWVy
Q2xpZW50KTsKKyAgICBtX21lZGlhUGxheWVyID0gMDsKKyAgICBkZWxldGUgdGhpczsKK30KKwor
V2ViU2l6ZSBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OnNpemUoKQoreworICAgIHJldHVybiBt
X21lZGlhUGxheWVyLT5uYXR1cmFsU2l6ZSgpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllcjo6cmVzaXplKGNvbnN0IFdlYlNpemUmIHNpemUpCit7CisgICAgLy8gQ2FsbGVkIHdo
ZW4gZmlyc3QgY3JlYXRlZC4KKyAgICBtX3dlYldpZGdldENsaWVudC0+ZGlkSW52YWxpZGF0ZVJl
Y3QoV2ViUmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCkpOworfQorCit2b2lkIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bGF5b3V0KCkKK3sKK30KKwordm9pZCBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXI6OnBhaW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0JiBy
ZWN0KQoreworICAgIG1fbWVkaWFQbGF5ZXItPnBhaW50KGNhbnZhcywgcmVjdCk7Cit9CisKK2Jv
b2wgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklu
cHV0RXZlbnQmIGV2ZW50KQoreworICAgIGlmIChldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6
OktleVVwKSB7CisgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PGNvbnN0IFdlYktleWJvYXJkRXZl
bnQmPihldmVudCkubmF0aXZlS2V5Q29kZSkgeworICAgICAgY2FzZSA2NTogLy8gc3BhY2UKKyAg
ICAgICAgICBpZiAobV9tZWRpYVBsYXllci0+cGF1c2VkKCkpCisgICAgICAgICAgICAgIG1fbWVk
aWFQbGF5ZXItPnBsYXkoKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG1fbWVkaWFQ
bGF5ZXItPnBhdXNlKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDk6IC8vIGVzY2Fw
ZQorICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICAg
IGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpt
b3VzZUNhcHR1cmVMb3N0KCkKK3sKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6
OnNldEZvY3VzKGJvb2wpCit7Cit9CisKK2Jvb2wgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpz
ZXRDb21wb3NpdGlvbigKKyAgICBjb25zdCBXZWJTdHJpbmcmIHRleHQsCisgICAgY29uc3QgV2Vi
VmVjdG9yPFdlYkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywKKyAgICBpbnQgc2Vs
ZWN0aW9uU3RhcnQsCisgICAgaW50IHNlbGVjdGlvbkVuZCkKK3sKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpjb25maXJtQ29tcG9zaXRpb24o
KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworV2ViVGV4dElucHV0VHlwZSBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXI6OnRleHRJbnB1dFR5cGUoKQoreworICAgIHJldHVybiBXZWJUZXh0SW5w
dXRUeXBlTm9uZTsKK30KKworV2ViUmVjdCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmNhcmV0
T3JTZWxlY3Rpb25Cb3VuZHMoKQoreworICAgIHJldHVybiBXZWJSZWN0KCk7Cit9CisKK3ZvaWQg
V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpzZXRUZXh0RGlyZWN0aW9uKFdlYlRleHREaXJlY3Rp
b24pCit7Cit9CisKK2Jvb2wgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjppc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworCisv
LyBXZWJNZWRpYVBsYXllckNsaWVudAordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6Om5l
dHdvcmtTdGF0ZUNoYW5nZWQoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAg
ICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7Cit9CisKK3Zv
aWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCit7CisgICAg
aWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPnJl
YWR5U3RhdGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyOjp2
b2x1bWVDaGFuZ2VkKGZsb2F0IHZvbHVtZSkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVu
dCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+dm9sdW1lQ2hhbmdlZCh2b2x1bWUpOwor
fQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6bXV0ZUNoYW5nZWQoYm9vbCBtdXRl
ZCkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXll
ckNsaWVudC0+bXV0ZUNoYW5nZWQobXV0ZWQpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllcjo6dGltZUNoYW5nZWQoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQor
ICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT50aW1lQ2hhbmdlZCgpOworfQorCit2b2lkIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6cmVwYWludCgpCit7CisgICAgaWYgKG1fd2ViV2lkZ2V0
Q2xpZW50KQorICAgICAgICBtX3dlYldpZGdldENsaWVudC0+ZGlkSW52YWxpZGF0ZVJlY3QobV9y
ZWN0KTsKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXI6OmR1cmF0aW9uQ2hhbmdl
ZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5
ZXJDbGllbnQtPmR1cmF0aW9uQ2hhbmdlZCgpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllcjo6cmF0ZUNoYW5nZWQoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQor
ICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5yYXRlQ2hhbmdlZCgpOworfQorCit2b2lkIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6c2l6ZUNoYW5nZWQoKQoreworICAgIGlmIChtX21lZGlh
UGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5zaXplQ2hhbmdlZCgp
OworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllcjo6c2F3VW5zdXBwb3J0ZWRUcmFj
a3MoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxh
eWVyQ2xpZW50LT5zYXdVbnN1cHBvcnRlZFRyYWNrcygpOworfQorCitmbG9hdCBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXI6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJD
bGllbnQpCisgICAgICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT52b2x1bWUoKTsKKyAg
ICByZXR1cm4gMS4wZjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63389</attachid>
            <date>2010-08-03 16:57:35 -0700</date>
            <delta_ts>2010-08-17 15:13:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43394-20100803165733.patch</filename>
            <type>text/plain</type>
            <size>24669</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDUwMDNlNTM3MTljZmY5YTA3OGQzMjYwY2ZjOTFhMDY1ODc0MGViMzcu
LjlmNTcyZDM2YjJjNjVhN2EyZjFmNTg1ZGExNDUwMzhhNjk1N2JjZmYgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU1IEBACisyMDEwLTA4LTAzICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9t
aXVtXSBGdWxsIHNjcmVlbiBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlIGJldHdlZW4gV2ViTWVkaWFQ
bGF5ZXIgYW5kIFdlYldpZGdldENsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDMzOTQKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAg
ICogcHVibGljL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViUG9wdXBU
eXBlLmg6CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6Y3JlYXRlRnVsbHNjcmVlbldp
bmRvdyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjpmb2N1c2VkTm9kZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZ1
bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
Q2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNs
aWVudEltcGw6On5XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6SW5pdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmV4aXRGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpzaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6cmVzaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6bGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bW91c2VDYXB0
dXJlTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVu
dEltcGw6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxs
c2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp0ZXh0SW5wdXRU
eXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6Y2FyZXRPclNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3Jl
ZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjppc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp2b2x1bWVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6bXV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjp0aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkdXJhdGlvbkNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyYXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudElt
cGw6OnNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c2F3VW5zdXBwb3J0ZWRUcmFja3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp2b2x1bWUpOgorICAgICAgICAqIHNy
Yy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6IEFkZGVkLgorCiAyMDEwLTA4
LTAzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQuIEZpeCBDaHJvbWl1bSBpbnRlcmFjdGl2ZSBVSSB0ZXN0cy4KZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
aW5kZXggOWRhODVjZDdjYTM4YzUwNzI3ODEzMTU4MDdlYzM5NWNkYjViZDI0NC4uZmMwM2JhMTY1
ZjI0YmRjYzE0MDA3ZGY1MjRhNDBhMDMwYjJkNmUwMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE2Myw2
ICsxNjMsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hlLmgnLAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJHZW9sb2NhdGlvblNlcnZpY2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJHZW9sb2NhdGlvblNlcnZpY2VCcmlkZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmgnLApAQCAtMzkzLDYgKzM5NCw4IEBACiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViRnJhbWVJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJp
ZGdlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNl
QnJpZGdlSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2Vydmlj
ZU1vY2suY3BwJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOTE1MGQ4MTliZjM4YmEyZjA5
MDM1YWZiMGJmOGFiZDNkNWI1Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudC5oCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudF9oCisjZGVmaW5lIFdlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNs
dWRlICJXZWJNZWRpYVBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgIldlYldpZGdldC5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV2lkZ2V0Q2xpZW50OworCitjbGFzcyBXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQgOiBwdWJsaWMgV2ViV2lkZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYk1lZGlhUGxheWVyQ2xpZW50
IHsKK3B1YmxpYzoKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXJDbGllbnQqIGNyZWF0ZShXZWJXaWRnZXRDbGllbnQqKTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYgLy8gV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCA2ZjUxMzQ1ZDA3NGVlZGQ3
YzE5OWUxMGMzOGEzOTlmOWJkMGRhNTk1Li41MjlmNWU4NzFjMjY0NTMxMTMwNzk5NGZiN2Y0Njhk
OTA3OTBhY2QwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxh
eWVyLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCkBAIC04
MCw2ICs4MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJNZWRpYVBsYXllcigpIHt9
CiAKKyAgICAvLyBBY2Nlc3NvcnMgZm9yIHRoZSBjbGllbnQuCisgICAgdmlydHVhbCBXZWJNZWRp
YVBsYXllckNsaWVudCogY2xpZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
bGllbnQoV2ViTWVkaWFQbGF5ZXJDbGllbnQqKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgbG9h
ZChjb25zdCBXZWJVUkwmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSA9IDA7
CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBUeXBlLmggYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVwVHlwZS5oCmluZGV4IDhhNTQ2YmFlNDIyN2M3
ZjU3NThkNzZjMGFmNzg3YjY4NWVmNmY2ZTMuLjQ4YmMzY2M1YzViODg0MzdjZjk2MmMyZDIzNDhj
YmJhY2QzMzlmMWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBU
eXBlLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQb3B1cFR5cGUuaApAQCAtMzcs
NiArMzcsNyBAQCBlbnVtIFdlYlBvcHVwVHlwZSB7CiAgICAgV2ViUG9wdXBUeXBlTm9uZSwgLy8g
Tm90IGEgcG9wdXAuCiAgICAgV2ViUG9wdXBUeXBlU2VsZWN0LCAvLyBBIEhUTUwgc2VsZWN0IChj
b21iby1ib3gpIHBvcHVwLgogICAgIFdlYlBvcHVwVHlwZVN1Z2dlc3Rpb24sIC8vIEFuIGF1dG9m
aWxsL2F1dG9jb21wbGV0ZSBwb3B1cC4KKyAgICBXZWJQb3B1cFR5cGVGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXIsCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3Q2xpZW50LmgKaW5kZXggNDYyOGMyZjQ0M2QzNTAyZmU1MmI3NjQyYmE0ODViMDM3ZGE1
NTI1NC4uZTY1NWZlN2RhMTE2YTg1YmFiNjIxYzZiMWMxM2YxOWI0NDRmMjVlNSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTg2LDYgKzg2LDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KFdlYlBvcHVwVHlwZSkgeyBy
ZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoY29uc3Qg
V2ViUG9wdXBNZW51SW5mbyYpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIENyZWF0ZSBhIG5ldyBX
ZWJXaWRnZXQgdGhhdCBpcyBmdWxsIHNjcmVlbi4gQSBXZWJXaWRnZXQgaXMgbmVlZGVkIHNpbmNl
CisgICAgLy8gZnVsbCBzY3JlZW4gd2luZG93IGlzIGdlbmVyaWMuCisgICAgdmlydHVhbCBXZWJX
aWRnZXQqIGNyZWF0ZUZ1bGxzY3JlZW5XaW5kb3coV2ViUG9wdXBUeXBlKSB7IHJldHVybiAwOyB9
CisKICAgICAvLyBDcmVhdGUgYSBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlIG9iamVjdCBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBXZWJWaWV3LgogICAgIHZpcnR1YWwgV2ViU3RvcmFnZU5hbWVzcGFj
ZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodW5zaWduZWQgcXVvdGEpIHsgcmV0dXJu
IDA7IH0KIApAQCAtMjE0LDggKzIxOCw2IEBAIHB1YmxpYzoKICAgICAgICAgV2ViRnJhbWUqLCBj
b25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYk5vZGUmKSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYk5vZGUmKSB7IH0KIAogICAg
IC8vIFVJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNw
cAppbmRleCAyYTVjMzJlOWMwMjE2YjI3MjFlNjQwMTUzZDAxYzAwMDQwOGUzYWI5Li5hMjZiYjYw
MDRhNDE2MTZhOWQ5YWExNWU1NDRjMTI0MzE5MmU5MTE3IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
Q2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJHZW9sb2Nh
dGlvblNlcnZpY2UuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkludFJlY3QuaCIKQEAgLTY5LDYgKzcwLDcgQEAKICNpbmNsdWRlICJXZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJD
bGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUgIldlYktp
dC5oIgogI2luY2x1ZGUgIldlYk5vZGUuaCIKQEAgLTIwNiw3ICsyMDgsNyBAQCB2b2lkIENocm9t
ZUNsaWVudEltcGw6OmZvY3VzZWROb2RlQ2hhbmdlZChOb2RlKiBub2RlKQogICAgICAgICAgICAg
Zm9jdXNVUkwgPSBoaXRUZXN0LmFic29sdXRlTGlua1VSTCgpOwogICAgIH0KICAgICBtX3dlYlZp
ZXctPmNsaWVudCgpLT5zZXRLZXlib2FyZEZvY3VzVVJMKGZvY3VzVVJMKTsKLSAgICAKKwogICAg
IGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMTYsNyArMjE4LDcgQEAgdm9pZCBD
aHJvbWVDbGllbnRJbXBsOjpmb2N1c2VkTm9kZUNoYW5nZWQoTm9kZSogbm9kZSkKICAgICBpZiAo
IWRvY3VtZW50KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm47Ci0gICAgfSAKKyAgICB9CiAgICAgaWYgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5heE9iamVj
dENhY2hlKCktPmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpIHsKICAgICAgICAgLy8gUmV0cmlldmUg
dGhlIGZvY3VzZWQgQWNjZXNzaWJpbGl0eU9iamVjdC4KICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogZm9jdXNlZEFjY09iaiA9CkBAIC03NjUsMTQgKzc2NywyMSBAQCBib29sIENocm9tZUNs
aWVudEltcGw6OnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgV2ViQ29yZTo6Tm9kZSog
bm9kZSkKIAogdm9pZCBDaHJvbWVDbGllbnRJbXBsOjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdl
YkNvcmU6Ok5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG1fd2ViVmlldy0+Y2xpZW50KCkpCi0gICAg
ICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViTm9kZShu
b2RlKSk7CisgICAgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbCogZnVsbHNjcmVl
bkNsaWVudCA9CisgICAgICAgIHN0YXRpY19jYXN0PFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNs
aWVudEltcGwqPigKKyAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+Y3JlYXRlRnVsbHNjcmVl
bldpbmRvdyhXZWJLaXQ6OldlYlBvcHVwVHlwZUZ1bGxzY3JlZW5NZWRpYVBsYXllcikpOworICAg
IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqPihub2RlKTsKKyAgICBmdWxsc2NyZWVuQ2xpZW50LT5J
bml0KFdlYk1lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpKTsKKyAgICBtX2Z1bGxzY3JlZW5NZWRp
YVBsYXllckNsaWVudHMuYWRkKG1lZGlhRWxlbWVudCwgZnVsbHNjcmVlbkNsaWVudCk7CiB9CiAK
IHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKFdlYkNvcmU6Ok5v
ZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG1fd2ViVmlldy0+Y2xpZW50KCkpCi0gICAgICAgIG1fd2Vi
Vmlldy0+Y2xpZW50KCktPmV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJOb2RlKG5vZGUpKTsKKyAg
ICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Kj4obm9kZSk7CisgICAgV2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyQ2xpZW50SW1wbCogZnVsbHNjcmVlbkNsaWVudCA9CisgICAgICAgIG1fZnVsbHNjcmVl
bk1lZGlhUGxheWVyQ2xpZW50cy5nZXQobWVkaWFFbGVtZW50KTsKKyAgICBtX2Z1bGxzY3JlZW5N
ZWRpYVBsYXllckNsaWVudHMucmVtb3ZlKG1lZGlhRWxlbWVudCk7CisgICAgZnVsbHNjcmVlbkNs
aWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAogYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpzZWxl
Y3RJdGVtV3JpdGluZ0RpcmVjdGlvbklzTmF0dXJhbCgpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5oCmluZGV4IDdmM2ZlYmZjOThmZTRjOGJhNmIyODBiY2FiNTc2OGQzNGM5ZmM5
MGMuLmEyOTc3M2ZlMjRhNGJkOWQ4MzQ3MjRmNzRhMTFjOWQ2MDk3YTZiYzQgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCkBAIC0zNSwxMCArMzUsMTIgQEAKICNpbmNsdWRl
ICJDaHJvbWVDbGllbnRDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlBvcHVwTWVudS5oIgogI2luY2x1
ZGUgIlNlYXJjaFBvcHVwTWVudS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBGaWxlQ2hv
b3NlcjsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBIVE1MUGFyc2VyUXVpcmtzOwog
Y2xhc3MgUG9wdXBDb250YWluZXI7CiBjbGFzcyBQb3B1cE1lbnVDbGllbnQ7CkBAIC00Nyw2ICs0
OSw3IEBAIHN0cnVjdCBXaW5kb3dGZWF0dXJlczsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOwogY2xhc3MgV2ViVmlld0lt
cGw7CiBzdHJ1Y3QgV2ViQ3Vyc29ySW5mbzsKIHN0cnVjdCBXZWJQb3B1cE1lbnVJbmZvOwpAQCAt
MTg1LDYgKzE4OCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zY3JvbGxiYXJzVmlzaWJsZTsK
ICAgICBib29sIG1fbWVudWJhclZpc2libGU7CiAgICAgYm9vbCBtX3Jlc2l6YWJsZTsKKworICAg
IHR5cGVkZWYgV1RGOjpIYXNoTWFwPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqLCBXZWJGdWxs
c2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKj4KKyAgICAgICAgRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50TWFwOworICAgIEZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudE1hcCBtX2Z1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXll
ckNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxZGY4ZmRiNWFiN2U2Mjc3ZDNjMDMwNWQ5YWEw
NTI4MzljNzczYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZ1
bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsMjM2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudElt
cGwuaCIKKworI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1
dEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJXZWJTY3Jl
ZW5JbmZvLmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgorI2luY2x1ZGUgIldlYlRleHRJbnB1dFR5
cGUuaCIKKyNpbmNsdWRlICJXZWJXaWRnZXRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CitXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQqIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXll
ckNsaWVudDo6Y3JlYXRlKFdlYldpZGdldENsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBu
ZXcgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbChjbGllbnQpOworfQorCitXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJD
bGllbnRJbXBsKFdlYldpZGdldENsaWVudCogd2ViV2lkZ2V0Q2xpZW50KQorICAgIDogbV93ZWJX
aWRnZXRDbGllbnQod2ViV2lkZ2V0Q2xpZW50KSwKKyAgICAgIG1fbWVkaWFFbGVtZW50KDApLAor
ICAgICAgbV9tZWRpYVBsYXllcigwKSwKKyAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQoMCkKK3sK
KyAgICBXZWJTY3JlZW5JbmZvIHNpID0gd2ViV2lkZ2V0Q2xpZW50LT5zY3JlZW5JbmZvKCk7Cisg
ICAgbV9yZWN0ID0gc2kucmVjdDsKK30KKworV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6fldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwoKQoreworfQorCit2b2lk
IFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OkluaXQoV2ViTWVkaWFFbGVtZW50
IG1lZGlhRWxlbWVudCkKK3sKKyAgICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudC51bndy
YXA8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4oKTsKKworICAgIG1fbWVkaWFQbGF5ZXIgPSBt
ZWRpYUVsZW1lbnQucGxheWVyKCk7CisgICAgbV9tZWRpYVBsYXllckNsaWVudCA9IG1fbWVkaWFQ
bGF5ZXItPmNsaWVudCgpOworICAgIG1fbWVkaWFQbGF5ZXItPnNldENsaWVudCh0aGlzKTsKKwor
ICAgIG1fd2ViV2lkZ2V0Q2xpZW50LT5zaG93KFdlYk5hdmlnYXRpb25Qb2xpY3lJZ25vcmUpOwor
fQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmV4aXRGdWxsc2Ny
ZWVuKCkKK3sKKyAgICBtX3dlYldpZGdldENsaWVudC0+Y2xvc2VXaWRnZXRTb29uKCk7Cit9CisK
Ky8vIFdlYldpZGdldCBpbXBsZW1lbnRhdGlvbi4KK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6Y2xvc2UoKQoreworICAgIG1fbWVkaWFQbGF5ZXItPnNldENsaWVudCht
X21lZGlhUGxheWVyQ2xpZW50KTsKKyAgICBtX21lZGlhUGxheWVyID0gMDsKKyAgICBkZWxldGUg
dGhpczsKK30KKworV2ViU2l6ZSBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpz
aXplKCkKK3sKKyAgICByZXR1cm4gbV9tZWRpYVBsYXllci0+bmF0dXJhbFNpemUoKTsKK30KKwor
dm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZXNpemUoY29uc3QgV2Vi
U2l6ZSYgc2l6ZSkKK3sKKyAgICAvLyBDYWxsZWQgd2hlbiBmaXJzdCBjcmVhdGVkLgorICAgIG1f
d2ViV2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChXZWJSZWN0KDAsIDAsIHNpemUud2lk
dGgsIHNpemUuaGVpZ2h0KSk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xp
ZW50SW1wbDo6bGF5b3V0KCkKK3sKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYgcmVjdCkK
K3sKKyAgICBtX21lZGlhUGxheWVyLT5wYWludChjYW52YXMsIHJlY3QpOworfQorCitib29sIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3Qg
V2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnR5cGUgPT0gV2ViSW5wdXRF
dmVudDo6S2V5VXApIHsKKyAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2V5Ym9h
cmRFdmVudCY+KGV2ZW50KS5uYXRpdmVLZXlDb2RlKSB7CisgICAgICBjYXNlIDY1OiAvLyBzcGFj
ZQorICAgICAgICAgIGlmIChtX21lZGlhUGxheWVyLT5wYXVzZWQoKSkKKyAgICAgICAgICAgICAg
bV9tZWRpYVBsYXllci0+cGxheSgpOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgbV9t
ZWRpYVBsYXllci0+cGF1c2UoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOTogLy8g
ZXNjYXBlCisgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICAgIGJyZWFrOworICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjptb3VzZUNhcHR1cmVMb3N0KCkKK3sKK30KKwordm9pZCBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRGb2N1cyhib29sKQoreworfQorCitib29sIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnNldENvbXBvc2l0aW9uKAorICAgIGNv
bnN0IFdlYlN0cmluZyYgdGV4dCwKKyAgICBjb25zdCBXZWJWZWN0b3I8V2ViQ29tcG9zaXRpb25V
bmRlcmxpbmU+JiB1bmRlcmxpbmVzLAorICAgIGludCBzZWxlY3Rpb25TdGFydCwKKyAgICBpbnQg
c2VsZWN0aW9uRW5kKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjb25maXJtQ29tcG9zaXRpb24oKQoreworICAgIHJl
dHVybiBmYWxzZTsKK30KKworV2ViVGV4dElucHV0VHlwZSBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjp0ZXh0SW5wdXRUeXBlKCkKK3sKKyAgICByZXR1cm4gV2ViVGV4dElucHV0
VHlwZU5vbmU7Cit9CisKK1dlYlJlY3QgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6Y2FyZXRPclNlbGVjdGlvbkJvdW5kcygpCit7CisgICAgcmV0dXJuIFdlYlJlY3QoKTsKK30K
Kwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRUZXh0RGlyZWN0
aW9uKFdlYlRleHREaXJlY3Rpb24pCit7Cit9CisKK2Jvb2wgV2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6aXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKKworLy8gV2ViTWVkaWFQbGF5ZXJDbGllbnQKK3ZvaWQg
V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bmV0d29ya1N0YXRlQ2hhbmdlZCgp
Cit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJD
bGllbnQtPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpyZWFkeVN0YXRlQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVk
aWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPnJlYWR5U3RhdGVD
aGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
dm9sdW1lQ2hhbmdlZChmbG9hdCB2b2x1bWUpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGll
bnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPnZvbHVtZUNoYW5nZWQodm9sdW1lKTsK
K30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjptdXRlQ2hhbmdl
ZChib29sIG11dGVkKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBt
X21lZGlhUGxheWVyQ2xpZW50LT5tdXRlQ2hhbmdlZChtdXRlZCk7Cit9CisKK3ZvaWQgV2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6dGltZUNoYW5nZWQoKQoreworICAgIGlmICht
X21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT50aW1lQ2hh
bmdlZCgpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnJl
cGFpbnQoKQoreworICAgIGlmIChtX3dlYldpZGdldENsaWVudCkKKyAgICAgICAgbV93ZWJXaWRn
ZXRDbGllbnQtPmRpZEludmFsaWRhdGVSZWN0KG1fcmVjdCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6ZHVyYXRpb25DaGFuZ2VkKCkKK3sKKyAgICBpZiAo
bV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+ZHVyYXRp
b25DaGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6cmF0ZUNoYW5nZWQoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAg
ICBtX21lZGlhUGxheWVyQ2xpZW50LT5yYXRlQ2hhbmdlZCgpOworfQorCit2b2lkIFdlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnNpemVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9t
ZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+c2l6ZUNoYW5n
ZWQoKTsKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzYXdV
bnN1cHBvcnRlZFRyYWNrcygpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAg
ICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPnNhd1Vuc3VwcG9ydGVkVHJhY2tzKCk7Cit9CisKK2Zs
b2F0IFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnZvbHVtZSgpIGNvbnN0Cit7
CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybiBtX21lZGlhUGxh
eWVyQ2xpZW50LT52b2x1bWUoKTsKKyAgICByZXR1cm4gMS4wZjsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZ1bGxzY3JlZW5N
ZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnVsbHNjcmVl
bk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmViZmVlNzFlZjFlNTJlYTRiOWJh
ZWYzZTU3MzAxZDNlYjhlZjJkNWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtMCwwICsxLDEyMSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbF9oCisjZGVmaW5lIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyQ2xpZW50LmgiCisKKyNpbmNsdWRlICJXZWJNZWRpYUVsZW1lbnQuaCIK
KyNpbmNsdWRlICJXZWJSZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxN
ZWRpYUVsZW1lbnQ7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJXaWRnZXRD
bGllbnQ7CitjbGFzcyBXZWJNZWRpYVBsYXllcjsKKworLy8gVGhpcyBjbGFzcyBjb25uZWN0cyBh
IGZ1bGwgc2NyZWVuIFdlYldpZGdldENsaWVudCBhbmQgYQorLy8gV2ViTWVkaWFQbGF5ZXIuIFdl
YldpZGdldENsaWVudCB1c2VzIHRoZSBXZWJXaWRnZXQgaW50ZXJmYWNlCisvLyB0byBzZW5kIHBh
aW50IHJlcXVlc3RzIGFuZCBpbnB1dCBldmVudHMuIFdlYk1lZGlhUGxheWVyCisvLyB1c2VzIHRo
ZSBXZWJNZWRpYVBsYXllckNsaWVudCB0byBzZW5kIGludmFsaWRhdGVzLgorY2xhc3MgV2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbCA6IHB1YmxpYyBXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnQgeworIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsKCk7CisKKyAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIG1lZGlhIGVs
ZW1lbnQgYW5kIHNob3cgdGhlIGZ1bGwKKyAgICAvLyBzY3JlZW4gV2ViV2lkZ2V0LgorICAgIHZv
aWQgSW5pdChXZWJNZWRpYUVsZW1lbnQpOworCisgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBhcyBh
IHJlc3VsdCBvZiBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbkZvck5vZGUuCisgICAg
dm9pZCBleGl0RnVsbHNjcmVlbigpOworCisgICAgLy8gV2ViV2lkZ2V0IGltcGxlbWVudGF0aW9u
LgorICAgIHZpcnR1YWwgdm9pZCBjbG9zZSgpOworICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCk7
CisgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBXZWJTaXplJik7CisgICAgdmlydHVhbCB2
b2lkIGxheW91dCgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBX
ZWJSZWN0Jik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5w
dXRFdmVudCYpOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUNhcHR1cmVMb3N0KCk7CisgICAgdmly
dHVhbCB2b2lkIHNldEZvY3VzKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBzZXRDb21wb3NpdGlv
bigKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB0ZXh0LAorICAgICAgICBjb25zdCBXZWJWZWN0
b3I8V2ViQ29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLAorICAgICAgICBpbnQgc2Vs
ZWN0aW9uU3RhcnQsCisgICAgICAgIGludCBzZWxlY3Rpb25FbmQpOworICAgIHZpcnR1YWwgYm9v
bCBjb25maXJtQ29tcG9zaXRpb24oKTsKKyAgICB2aXJ0dWFsIFdlYlRleHRJbnB1dFR5cGUgdGV4
dElucHV0VHlwZSgpOworICAgIHZpcnR1YWwgV2ViUmVjdCBjYXJldE9yU2VsZWN0aW9uQm91bmRz
KCk7CisgICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb24oV2ViVGV4dERpcmVjdGlvbik7
CisgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpIGNvbnN0
OworCisgICAgLy8gV2ViTWVkaWFQbGF5ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbmV0d29y
a1N0YXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCB2b2x1bWVDaGFuZ2VkKGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
bXV0ZUNoYW5nZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHRpbWVDaGFuZ2VkKCk7CisgICAg
dmlydHVhbCB2b2lkIHJlcGFpbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2Vk
KCk7CisgICAgdmlydHVhbCB2b2lkIHJhdGVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHNp
emVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHNhd1Vuc3VwcG9ydGVkVHJhY2tzKCk7Cisg
ICAgdmlydHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVu
ZCBjbGFzcyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQ7CisgICAgV2ViRnVsbHNjcmVl
bk1lZGlhUGxheWVyQ2xpZW50SW1wbChXZWJXaWRnZXRDbGllbnQqKTsKKworcHJpdmF0ZToKKyAg
ICAvLyBXZWFrIHBvaW50ZXIgdG8gV2ViV2lkZ2V0Q2xpZW50LgorICAgIFdlYldpZGdldENsaWVu
dCogbV93ZWJXaWRnZXRDbGllbnQ7CisKKyAgICAvLyBQb2ludGVyIHRvIHRoZSBjb3JyZXNwb25k
aW5nIG1lZGlhIGVsZW1lbnQgaXMgc2F2ZWQKKyAgICAvLyBmb3IgcHJvcGVybHkgZXhpdGluZyBm
dWxsIHNjcmVlbiBhcyBhIHJlc3VsdCBvZiB1c2VyCisgICAgLy8gYWN0aW9uLgorICAgIFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OworCisgICAgV2ViTWVkaWFQbGF5
ZXIqIG1fbWVkaWFQbGF5ZXI7CisKKyAgICAvLyBUaGUgb3JpZ2luYWwgV2ViTWVkaWFQbGF5ZXJD
bGllbnQgaXMgc2F2ZWQgc28gdGhhdAorICAgIC8vIGl0IGNhbiBiZSByZXN0b3JlZCBvbmNlIGZ1
bGwgc2NyZWVuIGV4aXRzLgorICAgIFdlYk1lZGlhUGxheWVyQ2xpZW50KiBtX21lZGlhUGxheWVy
Q2xpZW50OworCisgICAgLy8gRGltZW5zaW9ucyBvZiB0aGUgZnVsbCBzY3JlZW4gV2ViV2lkZ2V0
LgorICAgIFdlYlJlY3QgbV9yZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64644</attachid>
            <date>2010-08-17 15:13:09 -0700</date>
            <delta_ts>2010-10-21 17:48:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43394-20100817151308.patch</filename>
            <type>text/plain</type>
            <size>24787</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGM1YjJhNWQ0NjdhMzc4ZDc0YTA2YmQyMDIxYzBiMmY0YzljNzQxNzMu
LjUyMTQ0ZGZhYzlmMzM4Yzk5ZGFjM2IzMmVlZDk5MThjNDkxZTVmNzAgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU1IEBACisyMDEwLTA4LTE3ICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9t
aXVtXSBGdWxsIHNjcmVlbiBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlIGJldHdlZW4gV2ViTWVkaWFQ
bGF5ZXIgYW5kIFdlYldpZGdldENsaWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NDMzOTQKKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAg
ICogcHVibGljL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViUG9wdXBU
eXBlLmg6CisgICAgICAgIChXZWJLaXQ6Oik6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6Y3JlYXRlRnVsbHNjcmVlbldp
bmRvdyk6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjpmb2N1c2VkTm9kZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpDaHJvbWVDbGllbnRJbXBsOjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAgICAg
KFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKToKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkZ1
bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
Q2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNs
aWVudEltcGw6On5XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6SW5pdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmV4aXRGdWxs
c2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpzaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6cmVzaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6bGF5b3V0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bW91c2VDYXB0
dXJlTG9zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVu
dEltcGw6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxs
c2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjb25maXJtQ29tcG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp0ZXh0SW5wdXRU
eXBlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1w
bDo6Y2FyZXRPclNlbGVjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3Jl
ZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnNldFRleHREaXJlY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjppc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp2b2x1bWVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6bXV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjp0aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpkdXJhdGlvbkNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyYXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudElt
cGw6OnNpemVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c2F3VW5zdXBwb3J0ZWRUcmFja3MpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp2b2x1bWUpOgorICAgICAgICAqIHNy
Yy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmg6IEFkZGVkLgorCiAyMDEwLTA4
LTE3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjU1MTYuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IGMzMzhi
NTkwNDk5MmZkODZjM2UwNDcwNmJlZWM2MGRkNTg2NjllYWQuLmZmOTQ3NTUxNzRiMDA0ZmM2OGY4
OWU4MTk4ZTU5MzhkNDI0MDg1NzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0xNjksNiArMTY5LDcgQEAK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvbnRDYWNoZS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYkZvcm1FbGVtZW50LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRp
b25TZXJ2aWNlQnJpZGdlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2VvbG9jYXRp
b25TZXJ2aWNlTW9jay5oJywKQEAgLTQxMiw2ICs0MTMsOCBAQAogICAgICAgICAgICAgICAgICdz
cmMvV2ViRm9ybUVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZyYW1lSW1w
bC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmgnLAorICAgICAgICAg
ICAgICAgICdzcmMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZUJyaWRnZUltcGwu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJHZW9sb2NhdGlvblNlcnZpY2VNb2NrLmNwcCcs
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllckNsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjkxNTBkODE5YmYzOGJhMmYwOTAzNWFmYjBiZjhh
YmQzZDViNWNhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRfaAorI2RlZmluZSBXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViTWVk
aWFQbGF5ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJXaWRnZXQuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFdlYldpZGdldENsaWVudDsKKworY2xhc3MgV2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyQ2xpZW50IDogcHVibGljIFdlYldpZGdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJNZWRpYVBsYXllckNsaWVudCB7CitwdWJsaWM6
CisgICAgV0VCS0lUX0FQSSBzdGF0aWMgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50KiBj
cmVhdGUoV2ViV2lkZ2V0Q2xpZW50Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudF9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmggYi9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYk1lZGlhUGxheWVyLmgKaW5kZXggNmY1MTM0NWQwNzRlZWRkN2MxOTllMTBjMzhh
Mzk5ZjliZDBkYTU5NS4uNTI5ZjVlODcxYzI2NDUzMTEzMDc5OTRmYjdmNDY4ZDkwNzkwYWNkMCAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaApAQCAtODAsNiArODAsMTAg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+V2ViTWVkaWFQbGF5ZXIoKSB7fQogCisgICAgLy8g
QWNjZXNzb3JzIGZvciB0aGUgY2xpZW50LgorICAgIHZpcnR1YWwgV2ViTWVkaWFQbGF5ZXJDbGll
bnQqIGNsaWVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q2xpZW50KFdlYk1l
ZGlhUGxheWVyQ2xpZW50KikgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIGxvYWQoY29uc3QgV2Vi
VVJMJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxMb2FkKCkgPSAwOwogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVwVHlwZS5oIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJQb3B1cFR5cGUuaAppbmRleCA4YTU0NmJhZTQyMjdjN2Y1NzU4ZDc2YzBh
Zjc4N2I2ODVlZjZmNmUzLi40OGJjM2NjNWM1Yjg4NDM3Y2Y5NjJjMmQyMzQ4Y2JiYWNkMzM5ZjFm
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlBvcHVwVHlwZS5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBUeXBlLmgKQEAgLTM3LDYgKzM3LDcgQEAg
ZW51bSBXZWJQb3B1cFR5cGUgewogICAgIFdlYlBvcHVwVHlwZU5vbmUsIC8vIE5vdCBhIHBvcHVw
LgogICAgIFdlYlBvcHVwVHlwZVNlbGVjdCwgLy8gQSBIVE1MIHNlbGVjdCAoY29tYm8tYm94KSBw
b3B1cC4KICAgICBXZWJQb3B1cFR5cGVTdWdnZXN0aW9uLCAvLyBBbiBhdXRvZmlsbC9hdXRvY29t
cGxldGUgcG9wdXAuCisgICAgV2ViUG9wdXBUeXBlRnVsbHNjcmVlbk1lZGlhUGxheWVyLAogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCmluZGV4IGM2NDQxOGJhMjc3MmQ5NWYxOTE5MzgyZjJhOTkzMDNjYWMzMGE4YjYuLjJhODZm
YWIzZTkwY2VkNWNhOTAwZWE3NGY5YmU5Nzk2MmUzOWQyODUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlld0NsaWVudC5oCkBAIC04Nyw2ICs4Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFdlYldpZGdldCogY3JlYXRlUG9wdXBNZW51KFdlYlBvcHVwVHlwZSkgeyByZXR1cm4gMDsgfQog
ICAgIHZpcnR1YWwgV2ViV2lkZ2V0KiBjcmVhdGVQb3B1cE1lbnUoY29uc3QgV2ViUG9wdXBNZW51
SW5mbyYpIHsgcmV0dXJuIDA7IH0KIAorICAgIC8vIENyZWF0ZSBhIG5ldyBXZWJXaWRnZXQgdGhh
dCBpcyBmdWxsIHNjcmVlbi4KKyAgICB2aXJ0dWFsIFdlYldpZGdldCogY3JlYXRlRnVsbHNjcmVl
bldpbmRvdyhXZWJQb3B1cFR5cGUpIHsgcmV0dXJuIDA7IH0KKwogICAgIC8vIENyZWF0ZSBhIHNl
c3Npb24gc3RvcmFnZSBuYW1lc3BhY2Ugb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGlzIFdlYlZp
ZXcuCiAgICAgdmlydHVhbCBXZWJTdG9yYWdlTmFtZXNwYWNlKiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSh1bnNpZ25lZCBxdW90YSkgeyByZXR1cm4gMDsgfQogCkBAIC0yMTUsOCArMjE4
LDYgQEAgcHVibGljOgogICAgICAgICBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbWVzc2Fn
ZSkgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVl
bigpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZv
ck5vZGUoY29uc3QgV2ViTm9kZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVl
bkZvck5vZGUoY29uc3QgV2ViTm9kZSYpIHsgfQogCiAgICAgLy8gVUkgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCmluZGV4IDQwNWZiZjYxOTA2ZTMw
OTZkODBiZDg3ZTE0YjUyMjA1ZDYxYzcyMTIuLmQ1OTkyOThhMjQxYWU2NjhhZmZlMjk5MWJkZGZm
NjE2YzM0ODZkYWIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcApA
QCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZS5oIgogI2luY2x1
ZGUgIkdlb2xvY2F0aW9uU2VydmljZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ci5oIgorI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgpAQCAt
NjksNiArNzAsNyBAQAogI2luY2x1ZGUgIldlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgor
I2luY2x1ZGUgIldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwuaCIKICNpbmNsdWRl
ICJXZWJJbnB1dEV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViS2l0LmgiCiAjaW5jbHVkZSAiV2ViTm9k
ZS5oIgpAQCAtMjA2LDcgKzIwOCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6Zm9jdXNlZE5v
ZGVDaGFuZ2VkKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBmb2N1c1VSTCA9IGhpdFRlc3QuYWJz
b2x1dGVMaW5rVVJMKCk7CiAgICAgfQogICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnNldEtleWJv
YXJkRm9jdXNVUkwoZm9jdXNVUkwpOwotICAgIAorCiAgICAgaWYgKCFub2RlKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTIxNiw3ICsyMTgsNyBAQCB2b2lkIENocm9tZUNsaWVudEltcGw6OmZvY3Vz
ZWROb2RlQ2hhbmdlZChOb2RlKiBub2RlKQogICAgIGlmICghZG9jdW1lbnQpIHsKICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKLSAgICB9IAorICAgIH0KICAg
ICBpZiAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKSkgewogICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgZm9jdXNlZCBBY2Nlc3NpYmls
aXR5T2JqZWN0LgogICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmb2N1c2VkQWNjT2JqID0K
QEAgLTc2NSwxNCArNzY3LDIxIEBAIGJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c3VwcG9ydHNGdWxs
c2NyZWVuRm9yTm9kZShjb25zdCBXZWJDb3JlOjpOb2RlKiBub2RlKQogCiB2b2lkIENocm9tZUNs
aWVudEltcGw6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSogbm9kZSkKIHsK
LSAgICBpZiAobV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQo
KS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShXZWJOb2RlKG5vZGUpKTsKKyAgICBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKiBmdWxsc2NyZWVuQ2xpZW50ID0KKyAgICAgICAgc3Rh
dGljX2Nhc3Q8V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbCo+KAorICAgICAgICBt
X3dlYlZpZXctPmNsaWVudCgpLT5jcmVhdGVGdWxsc2NyZWVuV2luZG93KFdlYktpdDo6V2ViUG9w
dXBUeXBlRnVsbHNjcmVlbk1lZGlhUGxheWVyKSk7CisgICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dCo+KG5vZGUpOworICAgIGZ1bGxzY3JlZW5DbGllbnQtPkluaXQoV2ViTWVkaWFFbGVtZW50KG1l
ZGlhRWxlbWVudCkpOworICAgIG1fZnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50cy5hZGQobWVk
aWFFbGVtZW50LCBmdWxsc2NyZWVuQ2xpZW50KTsKIH0KIAogdm9pZCBDaHJvbWVDbGllbnRJbXBs
OjpleGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSogbm9kZSkKIHsKLSAgICBpZiAo
bV93ZWJWaWV3LT5jbGllbnQoKSkKLSAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZXhpdEZ1
bGxzY3JlZW5Gb3JOb2RlKFdlYk5vZGUobm9kZSkpOworICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnQqPihub2RlKTsKKyAgICBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKiBmdWxs
c2NyZWVuQ2xpZW50ID0KKyAgICAgICAgbV9mdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRzLmdl
dChtZWRpYUVsZW1lbnQpOworICAgIG1fZnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50cy5yZW1v
dmUobWVkaWFFbGVtZW50KTsKKyAgICBmdWxsc2NyZWVuQ2xpZW50LT5leGl0RnVsbHNjcmVlbigp
OwogfQogCiBib29sIENocm9tZUNsaWVudEltcGw6OnNlbGVjdEl0ZW1Xcml0aW5nRGlyZWN0aW9u
SXNOYXR1cmFsKCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKaW5kZXggODc2
M2RlZjdmZWE1MWE2ODJlNzEzNTVlMGVmMDcyNWE0OGY3MzExNC4uNmU3YjcyMjg5NzJhODY4YjYy
MWU4NjQ4ZDY5YTQwMmFkMWMzMGQ2MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJ
bXBsLmgKQEAgLTM1LDEwICszNSwxMiBAQAogI2luY2x1ZGUgIkNocm9tZUNsaWVudENocm9taXVt
LmgiCiAjaW5jbHVkZSAiUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiU2VhcmNoUG9wdXBNZW51Lmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QWNjZXNzaWJpbGl0eU9iamVjdDsKIGNsYXNzIEZpbGVDaG9vc2VyOworY2xhc3MgSFRNTE1lZGlh
RWxlbWVudDsKIGNsYXNzIEhUTUxQYXJzZXJRdWlya3M7CiBjbGFzcyBQb3B1cENvbnRhaW5lcjsK
IGNsYXNzIFBvcHVwTWVudUNsaWVudDsKQEAgLTQ3LDYgKzQ5LDcgQEAgc3RydWN0IFdpbmRvd0Zl
YXR1cmVzOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllckNsaWVudEltcGw7CiBjbGFzcyBXZWJWaWV3SW1wbDsKIHN0cnVjdCBXZWJDdXJzb3JJ
bmZvOwogc3RydWN0IFdlYlBvcHVwTWVudUluZm87CkBAIC0xODUsNiArMTg4LDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX3Njcm9sbGJhcnNWaXNpYmxlOwogICAgIGJvb2wgbV9tZW51YmFyVmlz
aWJsZTsKICAgICBib29sIG1fcmVzaXphYmxlOworCisgICAgdHlwZWRlZiBXVEY6Okhhc2hNYXA8
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCosIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVu
dEltcGwqPgorICAgICAgICBGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRNYXA7CisgICAgRnVs
bHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50TWFwIG1fZnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOGU3ODA4OTg5OTRiOWU1Yzc3MWQ2YmExNjdiZDcyYjZkYzRhYzM0NQotLS0gL2Rldi9u
dWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5jcHAKQEAgLTAsMCArMSwyMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oIgorCisjaW5jbHVkZSAiSFRN
TE1lZGlhRWxlbWVudC5oIgorI2luY2x1ZGUgIktleWJvYXJkQ29kZXMuaCIKKyNpbmNsdWRlICJX
ZWJJbnB1dEV2ZW50LmgiCisjaW5jbHVkZSAiV2ViTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJX
ZWJTY3JlZW5JbmZvLmgiCisjaW5jbHVkZSAiV2ViU2l6ZS5oIgorI2luY2x1ZGUgIldlYlRleHRJ
bnB1dFR5cGUuaCIKKyNpbmNsdWRlICJXZWJXaWRnZXRDbGllbnQuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CitXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQqIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllckNsaWVudDo6Y3JlYXRlKFdlYldpZGdldENsaWVudCogY2xpZW50KQoreworICAgIHJl
dHVybiBuZXcgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbChjbGllbnQpOworfQor
CitXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsKFdlYldpZGdldENsaWVudCogd2ViV2lkZ2V0Q2xpZW50KQorICAgIDog
bV93ZWJXaWRnZXRDbGllbnQod2ViV2lkZ2V0Q2xpZW50KSwKKyAgICAgIG1fbWVkaWFFbGVtZW50
KDApLAorICAgICAgbV9tZWRpYVBsYXllcigwKSwKKyAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQo
MCkKK3sKKyAgICBXZWJTY3JlZW5JbmZvIHNpID0gd2ViV2lkZ2V0Q2xpZW50LT5zY3JlZW5JbmZv
KCk7CisgICAgbV9yZWN0ID0gc2kucmVjdDsKK30KKworV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
Q2xpZW50SW1wbDo6fldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwoKQoreworfQor
Cit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OkluaXQoV2ViTWVkaWFF
bGVtZW50IG1lZGlhRWxlbWVudCkKK3sKKyAgICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVu
dC51bndyYXA8V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudD4oKTsKKworICAgIG1fbWVkaWFQbGF5
ZXIgPSBtZWRpYUVsZW1lbnQucGxheWVyKCk7CisgICAgbV9tZWRpYVBsYXllckNsaWVudCA9IG1f
bWVkaWFQbGF5ZXItPmNsaWVudCgpOworICAgIG1fbWVkaWFQbGF5ZXItPnNldENsaWVudCh0aGlz
KTsKKworICAgIG1fd2ViV2lkZ2V0Q2xpZW50LT5zaG93KFdlYk5hdmlnYXRpb25Qb2xpY3lJZ25v
cmUpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmV4aXRG
dWxsc2NyZWVuKCkKK3sKKyAgICBtX3dlYldpZGdldENsaWVudC0+Y2xvc2VXaWRnZXRTb29uKCk7
Cit9CisKKy8vIFdlYldpZGdldCBpbXBsZW1lbnRhdGlvbi4KK3ZvaWQgV2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6Y2xvc2UoKQoreworICAgIG1fbWVkaWFQbGF5ZXItPnNldENs
aWVudChtX21lZGlhUGxheWVyQ2xpZW50KTsKKyAgICBtX21lZGlhUGxheWVyID0gMDsKKyAgICBk
ZWxldGUgdGhpczsKK30KKworV2ViU2l6ZSBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpzaXplKCkKK3sKKyAgICByZXR1cm4gbV9tZWRpYVBsYXllci0+bmF0dXJhbFNpemUoKTsK
K30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZXNpemUoY29u
c3QgV2ViU2l6ZSYgc2l6ZSkKK3sKKyAgICAvLyBDYWxsZWQgd2hlbiBmaXJzdCBjcmVhdGVkLgor
ICAgIG1fd2ViV2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChXZWJSZWN0KDAsIDAsIHNp
emUud2lkdGgsIHNpemUuaGVpZ2h0KSk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6bGF5b3V0KCkKK3sKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpwYWludChXZWJDYW52YXMqIGNhbnZhcywgY29uc3QgV2ViUmVjdCYg
cmVjdCkKK3sKKyAgICBtX21lZGlhUGxheWVyLT5wYWludChjYW52YXMsIHJlY3QpOworfQorCiti
b29sIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmhhbmRsZUlucHV0RXZlbnQo
Y29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQpCit7CisgICAgaWYgKGV2ZW50LnR5cGUgPT0gV2Vi
SW5wdXRFdmVudDo6S2V5VXApIHsKKyAgICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
S2V5Ym9hcmRFdmVudCY+KGV2ZW50KS53aW5kb3dzS2V5Q29kZSkgeworICAgICAgY2FzZSBXZWJD
b3JlOjpWS0VZX1NQQUNFOgorICAgICAgICAgIGlmIChtX21lZGlhUGxheWVyLT5wYXVzZWQoKSkK
KyAgICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXkobV9tZWRpYUVsZW1lbnQtPnByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG1fbWVk
aWFFbGVtZW50LT5wYXVzZShtX21lZGlhRWxlbWVudC0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkp
OworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBXZWJDb3JlOjpWS0VZX0VTQ0FQRToKKyAg
ICAgICAgICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudElt
cGw6Om1vdXNlQ2FwdHVyZUxvc3QoKQoreworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllckNsaWVudEltcGw6OnNldEZvY3VzKGJvb2wpCit7Cit9CisKK2Jvb2wgV2ViRnVsbHNjcmVl
bk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0Q29tcG9zaXRpb24oCisgICAgY29uc3QgV2ViU3Ry
aW5nJiB0ZXh0LAorICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJDb21wb3NpdGlvblVuZGVybGluZT4m
IHVuZGVybGluZXMsCisgICAgaW50IHNlbGVjdGlvblN0YXJ0LAorICAgIGludCBzZWxlY3Rpb25F
bmQpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFdlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllckNsaWVudEltcGw6OmNvbmZpcm1Db21wb3NpdGlvbigpCit7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitXZWJUZXh0SW5wdXRUeXBlIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudElt
cGw6OnRleHRJbnB1dFR5cGUoKQoreworICAgIHJldHVybiBXZWJUZXh0SW5wdXRUeXBlTm9uZTsK
K30KKworV2ViUmVjdCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjYXJldE9y
U2VsZWN0aW9uQm91bmRzKCkKK3sKKyAgICByZXR1cm4gV2ViUmVjdCgpOworfQorCit2b2lkIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnNldFRleHREaXJlY3Rpb24oV2ViVGV4
dERpcmVjdGlvbikKK3sKK30KKworYm9vbCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjppc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKworCisvLyBXZWJNZWRpYVBsYXllckNsaWVudAordm9pZCBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpuZXR3b3JrU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBp
ZiAobV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bmV0
d29ya1N0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNs
aWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNs
aWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsK
K30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp2b2x1bWVDaGFu
Z2VkKGZsb2F0IHZvbHVtZSkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAg
ICAgbV9tZWRpYVBsYXllckNsaWVudC0+dm9sdW1lQ2hhbmdlZCh2b2x1bWUpOworfQorCit2b2lk
IFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6Om11dGVDaGFuZ2VkKGJvb2wgbXV0
ZWQpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5
ZXJDbGllbnQtPm11dGVDaGFuZ2VkKG11dGVkKTsKK30KKwordm9pZCBXZWJGdWxsc2NyZWVuTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjp0aW1lQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fbWVkaWFQbGF5
ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPnRpbWVDaGFuZ2VkKCk7Cit9
CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVwYWludCgpCit7
CisgICAgaWYgKG1fd2ViV2lkZ2V0Q2xpZW50KQorICAgICAgICBtX3dlYldpZGdldENsaWVudC0+
ZGlkSW52YWxpZGF0ZVJlY3QobV9yZWN0KTsKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkK
KyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+cmVwYWludCgpOworfQorCit2b2lkIFdlYkZ1
bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmR1cmF0aW9uQ2hhbmdlZCgpCit7CisgICAg
aWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPmR1
cmF0aW9uQ2hhbmdlZCgpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVu
dEltcGw6OnJhdGVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKKyAg
ICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+cmF0ZUNoYW5nZWQoKTsKK30KKwordm9pZCBXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzaXplQ2hhbmdlZCgpCit7CisgICAgaWYg
KG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJDbGllbnQtPnNpemVD
aGFuZ2VkKCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
c2F3VW5zdXBwb3J0ZWRUcmFja3MoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQor
ICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5zYXdVbnN1cHBvcnRlZFRyYWNrcygpOworfQor
CitmbG9hdCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp2b2x1bWUoKSBjb25z
dAoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICByZXR1cm4gbV9tZWRp
YVBsYXllckNsaWVudC0+dm9sdW1lKCk7CisgICAgcmV0dXJuIDEuMGY7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmZlZTcxZWYxZTUyZWE0
YjliYWVmM2U1NzMwMWQzZWI4ZWYyZDVkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgKQEAgLTAsMCArMSwx
MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGxfaAorI2RlZmlu
ZSBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsX2gKKworI2luY2x1ZGUgIldlYkZ1
bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudC5oIgorCisjaW5jbHVkZSAiV2ViTWVkaWFFbGVtZW50
LmgiCisjaW5jbHVkZSAiV2ViUmVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBI
VE1MTWVkaWFFbGVtZW50OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViV2lk
Z2V0Q2xpZW50OworY2xhc3MgV2ViTWVkaWFQbGF5ZXI7CisKKy8vIFRoaXMgY2xhc3MgY29ubmVj
dHMgYSBmdWxsIHNjcmVlbiBXZWJXaWRnZXRDbGllbnQgYW5kIGEKKy8vIFdlYk1lZGlhUGxheWVy
LiBXZWJXaWRnZXRDbGllbnQgdXNlcyB0aGUgV2ViV2lkZ2V0IGludGVyZmFjZQorLy8gdG8gc2Vu
ZCBwYWludCByZXF1ZXN0cyBhbmQgaW5wdXQgZXZlbnRzLiBXZWJNZWRpYVBsYXllcgorLy8gdXNl
cyB0aGUgV2ViTWVkaWFQbGF5ZXJDbGllbnQgdG8gc2VuZCBpbnZhbGlkYXRlcy4KK2NsYXNzIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwgOiBwdWJsaWMgV2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyQ2xpZW50IHsKKyBwdWJsaWM6CisgICAgdmlydHVhbCB+V2ViRnVsbHNjcmVlbk1l
ZGlhUGxheWVyQ2xpZW50SW1wbCgpOworCisgICAgLy8gSW5pdGlhbGl6ZSB3aXRoIHRoZSBtZWRp
YSBlbGVtZW50IGFuZCBzaG93IHRoZSBmdWxsCisgICAgLy8gc2NyZWVuIFdlYldpZGdldC4KKyAg
ICB2b2lkIEluaXQoV2ViTWVkaWFFbGVtZW50KTsKKworICAgIC8vIFNob3VsZCBiZSBjYWxsZWQg
YXMgYSByZXN1bHQgb2YgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlLgor
ICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKKworICAgIC8vIFdlYldpZGdldCBpbXBsZW1lbnRh
dGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2UoKTsKKyAgICB2aXJ0dWFsIFdlYlNpemUgc2l6
ZSgpOworICAgIHZpcnR1YWwgdm9pZCByZXNpemUoY29uc3QgV2ViU2l6ZSYpOworICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ2FudmFzKiwgY29u
c3QgV2ViUmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdl
YklucHV0RXZlbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VDYXB0dXJlTG9zdCgpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRGb2N1cyhib29sKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0Q29tcG9z
aXRpb24oCisgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdGV4dCwKKyAgICAgICAgY29uc3QgV2Vi
VmVjdG9yPFdlYkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywKKyAgICAgICAgaW50
IHNlbGVjdGlvblN0YXJ0LAorICAgICAgICBpbnQgc2VsZWN0aW9uRW5kKTsKKyAgICB2aXJ0dWFs
IGJvb2wgY29uZmlybUNvbXBvc2l0aW9uKCk7CisgICAgdmlydHVhbCBXZWJUZXh0SW5wdXRUeXBl
IHRleHRJbnB1dFR5cGUoKTsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgY2FyZXRPclNlbGVjdGlvbkJv
dW5kcygpOworICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RGlyZWN0aW9uKFdlYlRleHREaXJlY3Rp
b24pOworICAgIHZpcnR1YWwgYm9vbCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoKSBj
b25zdDsKKworICAgIC8vIFdlYk1lZGlhUGxheWVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIG5l
dHdvcmtTdGF0ZUNoYW5nZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZHlTdGF0ZUNoYW5nZWQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdm9sdW1lQ2hhbmdlZChmbG9hdCk7CisgICAgdmlydHVhbCB2
b2lkIG11dGVDaGFuZ2VkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCB0aW1lQ2hhbmdlZCgpOwor
ICAgIHZpcnR1YWwgdm9pZCByZXBhaW50KCk7CisgICAgdmlydHVhbCB2b2lkIGR1cmF0aW9uQ2hh
bmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCByYXRlQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9p
ZCBzaXplQ2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCBzYXdVbnN1cHBvcnRlZFRyYWNrcygp
OworICAgIHZpcnR1YWwgZmxvYXQgdm9sdW1lKCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICBm
cmllbmQgY2xhc3MgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50OworICAgIFdlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwoV2ViV2lkZ2V0Q2xpZW50Kik7CisKK3ByaXZhdGU6
CisgICAgLy8gV2VhayBwb2ludGVyIHRvIFdlYldpZGdldENsaWVudC4KKyAgICBXZWJXaWRnZXRD
bGllbnQqIG1fd2ViV2lkZ2V0Q2xpZW50OworCisgICAgLy8gUG9pbnRlciB0byB0aGUgY29ycmVz
cG9uZGluZyBtZWRpYSBlbGVtZW50IGlzIHNhdmVkCisgICAgLy8gZm9yIHByb3Blcmx5IGV4aXRp
bmcgZnVsbCBzY3JlZW4gYXMgYSByZXN1bHQgb2YgdXNlcgorICAgIC8vIGFjdGlvbi4KKyAgICBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudDsKKworICAgIFdlYk1lZGlh
UGxheWVyKiBtX21lZGlhUGxheWVyOworCisgICAgLy8gVGhlIG9yaWdpbmFsIFdlYk1lZGlhUGxh
eWVyQ2xpZW50IGlzIHNhdmVkIHNvIHRoYXQKKyAgICAvLyBpdCBjYW4gYmUgcmVzdG9yZWQgb25j
ZSBmdWxsIHNjcmVlbiBleGl0cy4KKyAgICBXZWJNZWRpYVBsYXllckNsaWVudCogbV9tZWRpYVBs
YXllckNsaWVudDsKKworICAgIC8vIERpbWVuc2lvbnMgb2YgdGhlIGZ1bGwgc2NyZWVuIFdlYldp
ZGdldC4KKyAgICBXZWJSZWN0IG1fcmVjdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71515</attachid>
            <date>2010-10-21 17:48:57 -0700</date>
            <delta_ts>2011-01-12 16:57:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43394-20101021174856.patch</filename>
            <type>text/plain</type>
            <size>24549</size>
            <attacher name="Andrew Scherkus">scherkus</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IDAwZmEzNmQ0OTY5MmE0NGM0MzhlNmRlYTUwNjdkMjc2NDAyNWE1NzYu
LjIzYTkyM2Y0YjZiZjRlNDM2NThmNTlkYWI0ODUzOWRiZWVkZWI0OGUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU4IEBACisyMDEwLTEwLTIxICBBbmRyZXcgU2NoZXJrdXMgIDxzY2hlcmt1c0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0Nocm9taXVtXSBGdWxsIHNjcmVlbiBtZWRpYSBwbGF5ZXIgaW50ZXJmYWNlIGJldHdl
ZW4gV2ViTWVkaWFQbGF5ZXIgYW5kIFdlYldpZGdldENsaWVudAorCisgICAgICAgIFBhdGNoIG9y
aWdpbmFsbHkgYnkgYm9saXVAY2hyb21pdW0ub3JnLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzM5NAorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50Lmg6IEFkZGVk
LgorICAgICAgICAqIHB1YmxpYy9XZWJNZWRpYVBsYXllci5oOgorICAgICAgICAqIHB1YmxpYy9X
ZWJQb3B1cFR5cGUuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpjcmVhdGVGdWxsc2NyZWVuV2luZG93KToKKyAgICAg
ICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudEltcGw6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAoV2ViS2l0OjpDaHJv
bWVDbGllbnRJbXBsOjpleGl0RnVsbHNjcmVlbkZvck5vZGUpOgorICAgICAgICAqIHNyYy9DaHJv
bWVDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNs
aWVudEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyQ2xpZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6fldl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpJbml0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjbG9zZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnNp
emUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBs
OjpyZXNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpsYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjpwYWludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllckNsaWVudEltcGw6OmNvbXBvc2l0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnRoZW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmhhbmRsZUlucHV0RXZlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpt
b3VzZUNhcHR1cmVMb3N0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6c2V0Rm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRDb21wb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmNvbmZpcm1Db21wb3NpdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnRl
eHRJbnB1dFR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpjYXJldE9yU2VsZWN0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0VGV4dERpcmVjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmlzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5N
ZWRpYVBsYXllckNsaWVudEltcGw6Om5ldHdvcmtTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZWFkeVN0YXRlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6
OnZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVuTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjptdXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3Jl
ZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVwYWludCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmR1cmF0aW9uQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6
OnJhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
Q2xpZW50SW1wbDo6c2l6ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzYXdVbnN1cHBvcnRlZFRyYWNrcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnZvbHVtZSk6CisgICAg
ICAgICogc3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwuaDogQWRkZWQuCisK
IDIwMTAtMTAtMjEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYWYz
MjI1MGFlMWJmZDk4OGRhYjVmODBkYzQ4NWJiNjYyYWY3NTMzNS4uNDhjMzMxODE4NjBmYjUyNDVi
NmE2NzUwM2U0YjQ3MDQ3Yzc2YmZkYSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTE3Miw2ICsxNzIsNyBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hlLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAogICAgICAgICAgICAgICAgICdw
dWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGdWxs
c2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJH
ZW9sb2NhdGlvblNlcnZpY2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2Nh
dGlvblNlcnZpY2VCcmlkZ2UuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJHZW9sb2Nh
dGlvblNlcnZpY2VNb2NrLmgnLApAQCAtNDM2LDYgKzQzNyw4IEBACiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJGb3JtRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJ
bXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuaCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCisg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1wbC5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViR2VvbG9jYXRpb25TZXJ2aWNlQnJpZGdlSW1w
bC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkdlb2xvY2F0aW9uU2VydmljZU1vY2suY3Bw
JywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyQ2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmOTE1MGQ4MTliZjM4YmEyZjA5MDM1YWZiMGJm
OGFiZDNkNWI1Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdl
YkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudF9oCisjZGVmaW5lIFdlYkZ1bGxzY3JlZW5NZWRp
YVBsYXllckNsaWVudF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJN
ZWRpYVBsYXllckNsaWVudC5oIgorI2luY2x1ZGUgIldlYldpZGdldC5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViV2lkZ2V0Q2xpZW50OworCitjbGFzcyBXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXJDbGllbnQgOiBwdWJsaWMgV2ViV2lkZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYk1lZGlhUGxheWVyQ2xpZW50IHsKK3B1Ymxp
YzoKKyAgICBXRUJLSVRfQVBJIHN0YXRpYyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQq
IGNyZWF0ZShXZWJXaWRnZXRDbGllbnQqKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50X2gKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViTWVkaWFQbGF5ZXIuaAppbmRleCA2Y2VjMGY1NDkwZDYxNGE3OGNlNDdkODhj
YjU2ZjcwOGIzNGVjMzAxLi5kOWM3MGUyNjBkYTJjMTI4ZWMzNjc1MThhNDhhNDBiNjRlYTg1ZThl
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYk1lZGlhUGxheWVyLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVBsYXllci5oCkBAIC04MSw2ICs4MSwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5XZWJNZWRpYVBsYXllcigpIHt9CiAKKyAgICAv
LyBBY2Nlc3NvcnMgZm9yIHRoZSBjbGllbnQuCisgICAgdmlydHVhbCBXZWJNZWRpYVBsYXllckNs
aWVudCogY2xpZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDbGllbnQoV2Vi
TWVkaWFQbGF5ZXJDbGllbnQqKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgbG9hZChjb25zdCBX
ZWJVUkwmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbExvYWQoKSA9IDA7CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBUeXBlLmggYi9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlBvcHVwVHlwZS5oCmluZGV4IDhhNTQ2YmFlNDIyN2M3ZjU3NThkNzZj
MGFmNzg3YjY4NWVmNmY2ZTMuLjQ4YmMzY2M1YzViODg0MzdjZjk2MmMyZDIzNDhjYmJhY2QzMzlm
MWYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViUG9wdXBUeXBlLmgKKysr
IGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQb3B1cFR5cGUuaApAQCAtMzcsNiArMzcsNyBA
QCBlbnVtIFdlYlBvcHVwVHlwZSB7CiAgICAgV2ViUG9wdXBUeXBlTm9uZSwgLy8gTm90IGEgcG9w
dXAuCiAgICAgV2ViUG9wdXBUeXBlU2VsZWN0LCAvLyBBIEhUTUwgc2VsZWN0IChjb21iby1ib3gp
IHBvcHVwLgogICAgIFdlYlBvcHVwVHlwZVN1Z2dlc3Rpb24sIC8vIEFuIGF1dG9maWxsL2F1dG9j
b21wbGV0ZSBwb3B1cC4KKyAgICBXZWJQb3B1cFR5cGVGdWxsc2NyZWVuTWVkaWFQbGF5ZXIsCiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgKaW5kZXggZWRkOTU3OWQyNjIxNWRmOGM4NzYwZTZkNjczYTBiOGFhZWQzMGM4MS4uOGU4
MDQwYzc3ZTZlNTVlNGMyZmJlNGQ0NjlmNTE5NDE3ZWUwZmNjNCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTkyLDYgKzkyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgV2ViRXh0ZXJuYWxQb3B1cE1lbnUqIGNyZWF0ZUV4dGVybmFsUG9wdXBNZW51KAogICAgICAg
ICBjb25zdCBXZWJQb3B1cE1lbnVJbmZvJiwgV2ViRXh0ZXJuYWxQb3B1cE1lbnVDbGllbnQqKSB7
IHJldHVybiAwOyB9CiAKKyAgICAvLyBDcmVhdGUgYSBuZXcgV2ViV2lkZ2V0IHRoYXQgaXMgZnVs
bCBzY3JlZW4uCisgICAgdmlydHVhbCBXZWJXaWRnZXQqIGNyZWF0ZUZ1bGxzY3JlZW5XaW5kb3co
V2ViUG9wdXBUeXBlKSB7IHJldHVybiAwOyB9CisKICAgICAvLyBDcmVhdGUgYSBzZXNzaW9uIHN0
b3JhZ2UgbmFtZXNwYWNlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBXZWJWaWV3LgogICAg
IHZpcnR1YWwgV2ViU3RvcmFnZU5hbWVzcGFjZSogY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodW5zaWduZWQgcXVvdGEpIHsgcmV0dXJuIDA7IH0KIApAQCAtMjIwLDggKzIyMyw2IEBAIHB1
YmxpYzoKICAgICAgICAgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW4oKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKGNv
bnN0IFdlYk5vZGUmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2Rl
KGNvbnN0IFdlYk5vZGUmKSB7IH0KIAogICAgIC8vIFVJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAppbmRleCBiYjU0YjU3N2YxOWM4YWQ4NzExZWFj
NDhjMzFjODM2MzhhZTRhYzc1Li43ZTc1NjdiZTQ5YjliMTRkYmNmZjUwYjY3ZjE0MzAxYzQzYjU3
YWUwIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKQEAgLTQ5LDYg
KzQ5LDcgQEAKICNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKICNpbmNsdWRlICJHZW9s
b2NhdGlvblNlcnZpY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKQEAgLTY5LDYgKzcw
LDcgQEAKICNpbmNsdWRlICJXZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRl
ICJXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiV2ViR2Vv
bG9jYXRpb25TZXJ2aWNlLmgiCiAjaW5jbHVkZSAiV2ViSW5wdXRFdmVudC5oIgogI2luY2x1ZGUg
IldlYktpdC5oIgpAQCAtODE3LDE0ICs4MTksMjEgQEAgYm9vbCBDaHJvbWVDbGllbnRJbXBsOjpz
dXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IFdlYkNvcmU6Ok5vZGUqIG5vZGUpCiAKIHZv
aWQgQ2hyb21lQ2xpZW50SW1wbDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2Rl
KiBub2RlKQogewotICAgIGlmIChtX3dlYlZpZXctPmNsaWVudCgpKQotICAgICAgICBtX3dlYlZp
ZXctPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKFdlYk5vZGUobm9kZSkpOworICAg
IFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwqIGZ1bGxzY3JlZW5DbGllbnQgPQor
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKj4o
CisgICAgICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPmNyZWF0ZUZ1bGxzY3JlZW5XaW5kb3coV2Vi
S2l0OjpXZWJQb3B1cFR5cGVGdWxsc2NyZWVuTWVkaWFQbGF5ZXIpKTsKKyAgICBXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50Kj4obm9kZSk7CisgICAgZnVsbHNjcmVlbkNsaWVudC0+SW5pdChXZWJNZWRp
YUVsZW1lbnQobWVkaWFFbGVtZW50KSk7CisgICAgbV9mdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGll
bnRzLmFkZChtZWRpYUVsZW1lbnQsIGZ1bGxzY3JlZW5DbGllbnQpOwogfQogCiB2b2lkIENocm9t
ZUNsaWVudEltcGw6OmV4aXRGdWxsc2NyZWVuRm9yTm9kZShXZWJDb3JlOjpOb2RlKiBub2RlKQog
ewotICAgIGlmIChtX3dlYlZpZXctPmNsaWVudCgpKQotICAgICAgICBtX3dlYlZpZXctPmNsaWVu
dCgpLT5leGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViTm9kZShub2RlKSk7CisgICAgV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudCo+KG5vZGUpOworICAgIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVu
dEltcGwqIGZ1bGxzY3JlZW5DbGllbnQgPQorICAgICAgICBtX2Z1bGxzY3JlZW5NZWRpYVBsYXll
ckNsaWVudHMuZ2V0KG1lZGlhRWxlbWVudCk7CisgICAgbV9mdWxsc2NyZWVuTWVkaWFQbGF5ZXJD
bGllbnRzLnJlbW92ZShtZWRpYUVsZW1lbnQpOworICAgIGZ1bGxzY3JlZW5DbGllbnQtPmV4aXRG
dWxsc2NyZWVuKCk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50SW1wbDo6c2VsZWN0SXRlbVdyaXRp
bmdEaXJlY3Rpb25Jc05hdHVyYWwoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwu
aAppbmRleCBiMTIwOGY3NDY5ZjQyMjFkZTAzM2QzZGE5MTAwNzNmOGRkODJhOTQ3Li43ZDJmYWIy
MDQ5YjhjN2FkMGNlZGQ1YmRiMzQ4N2FjM2U3MDYxMzc5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0No
cm9tZUNsaWVudEltcGwuaApAQCAtMzUsMTAgKzM1LDEyIEBACiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50Q2hyb21pdW0uaCIKICNpbmNsdWRlICJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJTZWFyY2hQ
b3B1cE1lbnUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwogY2xhc3MgRmlsZUNob29zZXI7CitjbGFz
cyBIVE1MTWVkaWFFbGVtZW50OwogY2xhc3MgSFRNTFBhcnNlclF1aXJrczsKIGNsYXNzIFBvcHVw
Q29udGFpbmVyOwogY2xhc3MgUG9wdXBNZW51Q2xpZW50OwpAQCAtNDcsNiArNDksNyBAQCBzdHJ1
Y3QgV2luZG93RmVhdHVyZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDsKIGNsYXNzIFdlYlZpZXdJbXBsOwogc3RydWN0
IFdlYkN1cnNvckluZm87CiBzdHJ1Y3QgV2ViUG9wdXBNZW51SW5mbzsKQEAgLTE4Myw2ICsxODYs
MTAgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2Nyb2xsYmFyc1Zpc2libGU7CiAgICAgYm9vbCBt
X21lbnViYXJWaXNpYmxlOwogICAgIGJvb2wgbV9yZXNpemFibGU7CisKKyAgICB0eXBlZGVmIFdU
Rjo6SGFzaE1hcDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiwgV2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyQ2xpZW50SW1wbCo+CisgICAgICAgIEZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudE1h
cDsKKyAgICBGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRNYXAgbV9mdWxsc2NyZWVuTWVkaWFQ
bGF5ZXJDbGllbnRzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwuY3Bw
IGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iZjVhMWQ4MGJlMDgzMGYwYWZlNjlhYzgyZWY4OWVkNjA3ZjIwMWVm
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGdWxsc2NyZWVuTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcApAQCAtMCwwICsxLDI0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmgiCisKKyNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjaW5jbHVkZSAiS2V5Ym9hcmRDb2Rlcy5oIgor
I2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJXZWJNZWRpYVBsYXllci5oIgor
I2luY2x1ZGUgIldlYlNjcmVlbkluZm8uaCIKKyNpbmNsdWRlICJXZWJTaXplLmgiCisjaW5jbHVk
ZSAiV2ViVGV4dElucHV0VHlwZS5oIgorI2luY2x1ZGUgIldlYldpZGdldENsaWVudC5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudCogV2ViRnVs
bHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50OjpjcmVhdGUoV2ViV2lkZ2V0Q2xpZW50KiBjbGllbnQp
Cit7CisgICAgcmV0dXJuIG5ldyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKGNs
aWVudCk7Cit9CisKK1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OldlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGwoV2ViV2lkZ2V0Q2xpZW50KiB3ZWJXaWRnZXRDbGll
bnQpCisgICAgOiBtX3dlYldpZGdldENsaWVudCh3ZWJXaWRnZXRDbGllbnQpLAorICAgICAgbV9t
ZWRpYUVsZW1lbnQoMCksCisgICAgICBtX21lZGlhUGxheWVyKDApLAorICAgICAgbV9tZWRpYVBs
YXllckNsaWVudCgwKQoreworICAgIFdlYlNjcmVlbkluZm8gc2kgPSB3ZWJXaWRnZXRDbGllbnQt
PnNjcmVlbkluZm8oKTsKKyAgICBtX3JlY3QgPSBzaS5yZWN0OworfQorCitXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjp+V2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1w
bCgpCit7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6SW5p
dChXZWJNZWRpYUVsZW1lbnQgbWVkaWFFbGVtZW50KQoreworICAgIG1fbWVkaWFFbGVtZW50ID0g
bWVkaWFFbGVtZW50LnVud3JhcDxXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50PigpOworCisgICAg
bV9tZWRpYVBsYXllciA9IG1lZGlhRWxlbWVudC5wbGF5ZXIoKTsKKyAgICBtX21lZGlhUGxheWVy
Q2xpZW50ID0gbV9tZWRpYVBsYXllci0+Y2xpZW50KCk7CisgICAgbV9tZWRpYVBsYXllci0+c2V0
Q2xpZW50KHRoaXMpOworCisgICAgbV93ZWJXaWRnZXRDbGllbnQtPnNob3coV2ViTmF2aWdhdGlv
blBvbGljeUlnbm9yZSk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6ZXhpdEZ1bGxzY3JlZW4oKQoreworICAgIG1fd2ViV2lkZ2V0Q2xpZW50LT5jbG9zZVdp
ZGdldFNvb24oKTsKK30KKworLy8gV2ViV2lkZ2V0IGltcGxlbWVudGF0aW9uLgordm9pZCBXZWJG
dWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjbG9zZSgpCit7CisgICAgbV9tZWRpYVBs
YXllci0+c2V0Q2xpZW50KG1fbWVkaWFQbGF5ZXJDbGllbnQpOworICAgIG1fbWVkaWFQbGF5ZXIg
PSAwOworICAgIGRlbGV0ZSB0aGlzOworfQorCitXZWJTaXplIFdlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllckNsaWVudEltcGw6OnNpemUoKQoreworICAgIHJldHVybiBtX21lZGlhUGxheWVyLT5uYXR1
cmFsU2l6ZSgpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6
OnJlc2l6ZShjb25zdCBXZWJTaXplJiBzaXplKQoreworICAgIC8vIENhbGxlZCB3aGVuIGZpcnN0
IGNyZWF0ZWQuCisgICAgbV93ZWJXaWRnZXRDbGllbnQtPmRpZEludmFsaWRhdGVSZWN0KFdlYlJl
Y3QoMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpKTsKK30KKwordm9pZCBXZWJGdWxsc2Ny
ZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpsYXlvdXQoKQoreworfQorCit2b2lkIFdlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnBhaW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25z
dCBXZWJSZWN0JiByZWN0KQoreworICAgIG1fbWVkaWFQbGF5ZXItPnBhaW50KGNhbnZhcywgcmVj
dCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y29tcG9z
aXRlKGJvb2wgZmluaXNoKQoreworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNs
aWVudEltcGw6OnRoZW1lQ2hhbmdlZCgpCit7Cit9CisKK2Jvb2wgV2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBl
dmVudCkKK3sKKyAgICBpZiAoZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpLZXlVcCkgewor
ICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Jj4oZXZlbnQp
LndpbmRvd3NLZXlDb2RlKSB7CisgICAgICBjYXNlIFdlYkNvcmU6OlZLRVlfU1BBQ0U6CisgICAg
ICAgICAgaWYgKG1fbWVkaWFQbGF5ZXItPnBhdXNlZCgpKQorICAgICAgICAgICAgICBtX21lZGlh
RWxlbWVudC0+cGxheShtX21lZGlhRWxlbWVudC0+cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwor
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBhdXNlKG1fbWVk
aWFFbGVtZW50LT5wcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIFdlYkNvcmU6OlZLRVlfRVNDQVBFOgorICAgICAgICAgIG1fbWVkaWFFbGVtZW50
LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3Zv
aWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6bW91c2VDYXB0dXJlTG9zdCgp
Cit7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0Rm9j
dXMoYm9vbCkKK3sKK30KKworYm9vbCBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBs
OjpzZXRDb21wb3NpdGlvbigKKyAgICBjb25zdCBXZWJTdHJpbmcmIHRleHQsCisgICAgY29uc3Qg
V2ViVmVjdG9yPFdlYkNvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywKKyAgICBpbnQg
c2VsZWN0aW9uU3RhcnQsCisgICAgaW50IHNlbGVjdGlvbkVuZCkKK3sKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6Y29uZmly
bUNvbXBvc2l0aW9uKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1dlYlRleHRJbnB1dFR5
cGUgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6dGV4dElucHV0VHlwZSgpCit7
CisgICAgcmV0dXJuIFdlYlRleHRJbnB1dFR5cGVOb25lOworfQorCitXZWJSZWN0IFdlYkZ1bGxz
Y3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmNhcmV0T3JTZWxlY3Rpb25Cb3VuZHMoKQorewor
ICAgIHJldHVybiBXZWJSZWN0KCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
Q2xpZW50SW1wbDo6c2V0VGV4dERpcmVjdGlvbihXZWJUZXh0RGlyZWN0aW9uKQoreworfQorCiti
b29sIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OmlzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0FjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKKy8vIFdl
Yk1lZGlhUGxheWVyQ2xpZW50Cit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudElt
cGw6Om5ldHdvcmtTdGF0ZUNoYW5nZWQoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50
KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50LT5uZXR3b3JrU3RhdGVDaGFuZ2VkKCk7Cit9
CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0ZUNo
YW5nZWQoKQoreworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlh
UGxheWVyQ2xpZW50LT5yZWFkeVN0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIFdlYkZ1bGxzY3Jl
ZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnZvbHVtZUNoYW5nZWQoZmxvYXQgdm9sdW1lKQorewor
ICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xpZW50
LT52b2x1bWVDaGFuZ2VkKHZvbHVtZSk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxh
eWVyQ2xpZW50SW1wbDo6bXV0ZUNoYW5nZWQoYm9vbCBtdXRlZCkKK3sKKyAgICBpZiAobV9tZWRp
YVBsYXllckNsaWVudCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+bXV0ZUNoYW5nZWQo
bXV0ZWQpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudEltcGw6OnRp
bWVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkKKyAgICAgICAgbV9t
ZWRpYVBsYXllckNsaWVudC0+dGltZUNoYW5nZWQoKTsKK30KKwordm9pZCBXZWJGdWxsc2NyZWVu
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZXBhaW50KCkKK3sKKyAgICBpZiAobV93ZWJXaWRnZXRD
bGllbnQpCisgICAgICAgIG1fd2ViV2lkZ2V0Q2xpZW50LT5kaWRJbnZhbGlkYXRlUmVjdChtX3Jl
Y3QpOworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVy
Q2xpZW50LT5yZXBhaW50KCk7Cit9CisKK3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xp
ZW50SW1wbDo6ZHVyYXRpb25DaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVu
dCkKKyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+ZHVyYXRpb25DaGFuZ2VkKCk7Cit9CisK
K3ZvaWQgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmF0ZUNoYW5nZWQoKQor
eworICAgIGlmIChtX21lZGlhUGxheWVyQ2xpZW50KQorICAgICAgICBtX21lZGlhUGxheWVyQ2xp
ZW50LT5yYXRlQ2hhbmdlZCgpOworfQorCit2b2lkIFdlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNs
aWVudEltcGw6OnNpemVDaGFuZ2VkKCkKK3sKKyAgICBpZiAobV9tZWRpYVBsYXllckNsaWVudCkK
KyAgICAgICAgbV9tZWRpYVBsYXllckNsaWVudC0+c2l6ZUNoYW5nZWQoKTsKK30KKwordm9pZCBX
ZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzYXdVbnN1cHBvcnRlZFRyYWNrcygp
Cit7CisgICAgaWYgKG1fbWVkaWFQbGF5ZXJDbGllbnQpCisgICAgICAgIG1fbWVkaWFQbGF5ZXJD
bGllbnQtPnNhd1Vuc3VwcG9ydGVkVHJhY2tzKCk7Cit9CisKK2Zsb2F0IFdlYkZ1bGxzY3JlZW5N
ZWRpYVBsYXllckNsaWVudEltcGw6OnZvbHVtZSgpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFQ
bGF5ZXJDbGllbnQpCisgICAgICAgIHJldHVybiBtX21lZGlhUGxheWVyQ2xpZW50LT52b2x1bWUo
KTsKKyAgICByZXR1cm4gMS4wZjsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZ1bGxzY3JlZW5NZWRpYVBsYXllckNsaWVudElt
cGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNmZTIwNTk4YWUxZmVmODNhM2E1ODNhYzY0YTgwODljZmQzZTY3
YzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZ1bGxzY3JlZW5N
ZWRpYVBsYXllckNsaWVudEltcGwuaApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRnVsbHNj
cmVlbk1lZGlhUGxheWVyQ2xpZW50SW1wbF9oCisjZGVmaW5lIFdlYkZ1bGxzY3JlZW5NZWRpYVBs
YXllckNsaWVudEltcGxfaAorCisjaW5jbHVkZSAiV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVyQ2xp
ZW50LmgiCisKKyNpbmNsdWRlICJXZWJNZWRpYUVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJSZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJXaWRnZXRDbGllbnQ7CitjbGFzcyBXZWJN
ZWRpYVBsYXllcjsKKworLy8gVGhpcyBjbGFzcyBjb25uZWN0cyBhIGZ1bGwgc2NyZWVuIFdlYldp
ZGdldENsaWVudCBhbmQgYQorLy8gV2ViTWVkaWFQbGF5ZXIuIFdlYldpZGdldENsaWVudCB1c2Vz
IHRoZSBXZWJXaWRnZXQgaW50ZXJmYWNlCisvLyB0byBzZW5kIHBhaW50IHJlcXVlc3RzIGFuZCBp
bnB1dCBldmVudHMuIFdlYk1lZGlhUGxheWVyCisvLyB1c2VzIHRoZSBXZWJNZWRpYVBsYXllckNs
aWVudCB0byBzZW5kIGludmFsaWRhdGVzLgorY2xhc3MgV2ViRnVsbHNjcmVlbk1lZGlhUGxheWVy
Q2xpZW50SW1wbCA6IHB1YmxpYyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQgeworIHB1
YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsKCk7
CisKKyAgICAvLyBJbml0aWFsaXplIHdpdGggdGhlIG1lZGlhIGVsZW1lbnQgYW5kIHNob3cgdGhl
IGZ1bGwKKyAgICAvLyBzY3JlZW4gV2ViV2lkZ2V0LgorICAgIHZvaWQgSW5pdChXZWJNZWRpYUVs
ZW1lbnQpOworCisgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBhcyBhIHJlc3VsdCBvZiBIVE1MTWVk
aWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbkZvck5vZGUuCisgICAgdm9pZCBleGl0RnVsbHNjcmVl
bigpOworCisgICAgLy8gV2ViV2lkZ2V0IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZSgpOworICAgIHZpcnR1YWwgV2ViU2l6ZSBzaXplKCk7CisgICAgdmlydHVhbCB2b2lk
IHJlc2l6ZShjb25zdCBXZWJTaXplJik7CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludChXZWJDYW52YXMqLCBjb25zdCBXZWJSZWN0Jik7CisgICAgdmly
dHVhbCB2b2lkIGNvbXBvc2l0ZShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2Vk
KCk7CisgICAgdmlydHVhbCBib29sIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVu
dCYpOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZUNhcHR1cmVMb3N0KCk7CisgICAgdmlydHVhbCB2
b2lkIHNldEZvY3VzKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBzZXRDb21wb3NpdGlvbigKKyAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiB0ZXh0LAorICAgICAgICBjb25zdCBXZWJWZWN0b3I8V2Vi
Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLAorICAgICAgICBpbnQgc2VsZWN0aW9u
U3RhcnQsCisgICAgICAgIGludCBzZWxlY3Rpb25FbmQpOworICAgIHZpcnR1YWwgYm9vbCBjb25m
aXJtQ29tcG9zaXRpb24oKTsKKyAgICB2aXJ0dWFsIFdlYlRleHRJbnB1dFR5cGUgdGV4dElucHV0
VHlwZSgpOworICAgIHZpcnR1YWwgV2ViUmVjdCBjYXJldE9yU2VsZWN0aW9uQm91bmRzKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFRleHREaXJlY3Rpb24oV2ViVGV4dERpcmVjdGlvbik7CisgICAg
dmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSgpIGNvbnN0OworCisg
ICAgLy8gV2ViTWVkaWFQbGF5ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbmV0d29ya1N0YXRl
Q2hhbmdlZCgpOworICAgIHZpcnR1YWwgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpOworICAgIHZp
cnR1YWwgdm9pZCB2b2x1bWVDaGFuZ2VkKGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNo
YW5nZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHRpbWVDaGFuZ2VkKCk7CisgICAgdmlydHVh
bCB2b2lkIHJlcGFpbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJhdGVDaGFuZ2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHNpemVDaGFu
Z2VkKCk7CisgICAgdmlydHVhbCB2b2lkIHNhd1Vuc3VwcG9ydGVkVHJhY2tzKCk7CisgICAgdmly
dHVhbCBmbG9hdCB2b2x1bWUoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIGZyaWVuZCBjbGFz
cyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnQ7CisgICAgV2ViRnVsbHNjcmVlbk1lZGlh
UGxheWVyQ2xpZW50SW1wbChXZWJXaWRnZXRDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICAvLyBX
ZWFrIHBvaW50ZXIgdG8gV2ViV2lkZ2V0Q2xpZW50LgorICAgIFdlYldpZGdldENsaWVudCogbV93
ZWJXaWRnZXRDbGllbnQ7CisKKyAgICAvLyBQb2ludGVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIG1l
ZGlhIGVsZW1lbnQgaXMgc2F2ZWQKKyAgICAvLyBmb3IgcHJvcGVybHkgZXhpdGluZyBmdWxsIHNj
cmVlbiBhcyBhIHJlc3VsdCBvZiB1c2VyCisgICAgLy8gYWN0aW9uLgorICAgIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OworCisgICAgV2ViTWVkaWFQbGF5ZXIqIG1f
bWVkaWFQbGF5ZXI7CisKKyAgICAvLyBUaGUgb3JpZ2luYWwgV2ViTWVkaWFQbGF5ZXJDbGllbnQg
aXMgc2F2ZWQgc28gdGhhdAorICAgIC8vIGl0IGNhbiBiZSByZXN0b3JlZCBvbmNlIGZ1bGwgc2Ny
ZWVuIGV4aXRzLgorICAgIFdlYk1lZGlhUGxheWVyQ2xpZW50KiBtX21lZGlhUGxheWVyQ2xpZW50
OworCisgICAgLy8gRGltZW5zaW9ucyBvZiB0aGUgZnVsbCBzY3JlZW4gV2ViV2lkZ2V0LgorICAg
IFdlYlJlY3QgbV9yZWN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJGdWxsc2NyZWVuTWVkaWFQbGF5ZXJDbGllbnRJbXBsX2gK
</data>
<flag name="review"
          id="61580"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>