<?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>41084</bug_id>
          
          <creation_ts>2010-06-23 11:07:38 -0700</creation_ts>
          <short_desc>Get accelerated compositing working with webkit2</short_desc>
          <delta_ts>2010-07-21 10:51:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>42662</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andersca</cc>
    
    <cc>jesus</cc>
    
    <cc>kenneth</cc>
    
    <cc>noam</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>241945</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-23 11:07:38 -0700</bug_when>
    <thetext>Bug to get accelerated compositing working with webkit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241946</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-23 11:08:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/7660600&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241958</commentid>
    <comment_count>2</comment_count>
      <attachid>59538</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-23 11:21:07 -0700</bug_when>
    <thetext>Created attachment 59538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241997</commentid>
    <comment_count>3</comment_count>
      <attachid>59538</attachid>
    <who name="">mitz</who>
    <bug_when>2010-06-23 11:50:27 -0700</bug_when>
    <thetext>Comment on attachment 59538
Patch

Style review:


&gt; +        Get accelerated compositing working with webkit2

Please include the Radar URL. s/webkit2/WebKit2/.

&gt; +        First step: display the compositing layer tree from the webkit process

s/webkit/web/

&gt; +        (WebKit::ChunkedUpdateDrawingArea::attachCompositingContext): Non-mac stub.

Mac.

&gt; +#if PLATFORM(MAC)
&gt; +    SetupAcceleratedCompositingPort
&gt; +#endif

The verb is “set up” so the name should be “SetUpAcceleratedCompositingPort”.

&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +    NSView* _layerHostingView;
&gt; +#endif

The star should go next to the name.

&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +- (void)_startAcceleratedCompositing:(CALayer*)rootLayer

There should be a space before the star.

&gt; +        NSView* hostingView = [[NSView alloc] initWithFrame:[self bounds]];

Move the star over to the other side.

&gt; +        [self addSubview:hostingView];
&gt; +        [hostingView release];
&gt; +        // hostingView is owned by being a subview of self

I think the comment is redundant. Being a full sentence, it should be terminated by a period. Or you could just remove it.

&gt; +    CALayer* viewLayer = [CALayer layer];

Star should be next to the name.

&gt; +- (void)_startAcceleratedCompositing:(CALayer*)rootLayer;

Needs a space before the star.

&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +    void setupAcceleratedCompositing();
&gt; +#endif

s/setup/setUp/

&gt; --- a/WebKit2/UIProcess/mac/ChunkedUpdateDrawingAreaProxyMac.mm
&gt; +++ b/WebKit2/UIProcess/mac/ChunkedUpdateDrawingAreaProxyMac.mm
&gt; @@ -25,11 +25,15 @@
&gt;  
&gt;  #include &quot;ChunkedUpdateDrawingAreaProxy.h&quot;
&gt;  
&gt; +#include &lt;QuartzCore/QuartzCore.h&gt;
&gt; +
&gt;  #include &quot;DrawingAreaMessageKinds.h&quot;
&gt;  #include &quot;DrawingAreaProxyMessageKinds.h&quot;
&gt;  #include &quot;UpdateChunk.h&quot;
&gt;  #include &quot;WKAPICast.h&quot;
&gt;  #include &quot;WKView.h&quot;
&gt; +#include &quot;WKViewInternal.h&quot;
&gt; +#include &quot;WebKitSystemInterface.h&quot;
&gt;  #include &quot;WebPageProxy.h&quot;

&lt;QuartzCore/QuartzCore.h&gt; should not be in its own paragraph. It should be at the end of the main paragraph. You can change all of the #include directives to #import directives now that this is an Objective-C file.

&gt; +    // Cleanup.

This comment tells me absolutely nothing, but at least it’s period-terminated.

&gt; --- a/WebKit2/WebProcess/WebPage/mac/ChunkedUpdateDrawingAreaMac.cpp
&gt; +++ b/WebKit2/WebProcess/WebPage/mac/ChunkedUpdateDrawingAreaMac.mm
&gt; @@ -25,9 +25,15 @@
&gt;  
&gt;  #include &quot;ChunkedUpdateDrawingArea.h&quot;
&gt;  
&gt; +#include &lt;QuartzCore/QuartzCore.h&gt;
&gt; +

Should not be in its own separate paragraph.

&gt; +#include &quot;DrawingAreaProxyMessageKinds.h&quot;
&gt;  #include &quot;UpdateChunk.h&quot;
&gt;  #include &quot;WebPage.h&quot;
&gt; +#include &quot;WebProcess.h&quot;
&gt;  #include &lt;WebCore/GraphicsContext.h&gt;
&gt; +#include &lt;WebCore/GraphicsLayer.h&gt;
&gt; +#include &quot;WebKitSystemInterface.h&quot;
&gt;  #include &lt;wtf/RetainPtr.h&gt;

This should be sorted.

&gt; +    CALayer* caLayer = layer-&gt;platformLayer();

Star is on the wrong side.

&gt; +#if PLATFORM(MAC)
&gt; +    , m_compositingRenderServerPort(MACH_PORT_NULL)
&gt; +#endif

Is this needed in non-accelerated-compositing builds?

&gt; +#if PLATFORM(MAC)
&gt; +    mach_port_t compositingRenderServerPort() const { return m_compositingRenderServerPort; }
&gt; +#endif

Ditto.

&gt; +#if PLATFORM(MAC)
&gt; +    mach_port_t m_compositingRenderServerPort;
&gt; +#endif

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245027</commentid>
    <comment_count>4</comment_count>
      <attachid>59538</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-30 17:19:08 -0700</bug_when>
    <thetext>Comment on attachment 59538
Patch

Taking a different tack now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245030</commentid>
    <comment_count>5</comment_count>
      <attachid>60173</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-30 17:22:55 -0700</bug_when>
    <thetext>Created attachment 60173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245462</commentid>
    <comment_count>6</comment_count>
      <attachid>60268</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-01 12:05:13 -0700</bug_when>
    <thetext>Created attachment 60268
GraphicsLayer changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245468</commentid>
    <comment_count>7</comment_count>
      <attachid>60268</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-01 12:10:10 -0700</bug_when>
    <thetext>Comment on attachment 60268
GraphicsLayer changes

I’m not a huge fan of xxxRecursive as the name for the version that includes sublayers. The &quot;recursive&quot; suffix seems a little vague and I don’t like it in places we already have it.

If the normal case would be to sync the sublayers, then I&apos;d suggest calling the single-layer version syncCompositingStateForThisLayerOnly or something like that. Or you could call the new one syncCompositingStateIncludingSublayers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245481</commentid>
    <comment_count>8</comment_count>
      <attachid>60173</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-01 12:30:35 -0700</bug_when>
    <thetext>Comment on attachment 60173
Patch

http://trac.webkit.org/changeset/62283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245489</commentid>
    <comment_count>9</comment_count>
      <attachid>60268</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-01 12:39:12 -0700</bug_when>
    <thetext>Comment on attachment 60268
GraphicsLayer changes

http://trac.webkit.org/changeset/62286</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245537</commentid>
    <comment_count>10</comment_count>
      <attachid>60284</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-01 14:12:50 -0700</bug_when>
    <thetext>Created attachment 60284
Add layer-backed drawing area</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245539</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-01 14:14:39 -0700</bug_when>
    <thetext>Attachment 60284 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.cpp:153:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.h:34:  Alphabetical sorting problem.  [build/include_order] [4]
WebKit2/WebProcess/WebPage/LayerBackedDrawingArea.h:47:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/UIProcess/LayerBackedDrawingAreaProxy.cpp:28:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
WebKit2/UIProcess/LayerBackedDrawingAreaProxy.cpp:121:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 6 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245585</commentid>
    <comment_count>12</comment_count>
      <attachid>60284</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-01 15:24:41 -0700</bug_when>
    <thetext>Comment on attachment 60284
Add layer-backed drawing area

http://trac.webkit.org/changeset/62303</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245588</commentid>
    <comment_count>13</comment_count>
      <attachid>60173</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-01 15:25:18 -0700</bug_when>
    <thetext>Comment on attachment 60173
Patch

Export some webcore symbols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245603</commentid>
    <comment_count>14</comment_count>
      <attachid>60301</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-01 15:36:46 -0700</bug_when>
    <thetext>Created attachment 60301
Render server setup, and style fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245854</commentid>
    <comment_count>15</comment_count>
      <attachid>60173</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-02 03:17:07 -0700</bug_when>
    <thetext>Comment on attachment 60173
Patch

Cleared Sam Weinig&apos;s review+ from obsolete attachment 60173 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245855</commentid>
    <comment_count>16</comment_count>
      <attachid>60268</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-02 03:17:11 -0700</bug_when>
    <thetext>Comment on attachment 60268
GraphicsLayer changes

Cleared Darin Adler&apos;s review+ from obsolete attachment 60268 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245857</commentid>
    <comment_count>17</comment_count>
      <attachid>60284</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-02 03:17:15 -0700</bug_when>
    <thetext>Comment on attachment 60284
Add layer-backed drawing area

Cleared Anders Carlsson&apos;s review+ from obsolete attachment 60284 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253908</commentid>
    <comment_count>18</comment_count>
      <attachid>62110</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-20 14:16:14 -0700</bug_when>
    <thetext>Created attachment 62110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253910</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-20 14:17:53 -0700</bug_when>
    <thetext>Attachment 62110 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/WebPage/DrawingArea.cpp:40:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 24 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254340</commentid>
    <comment_count>20</comment_count>
      <attachid>62110</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-07-21 09:25:07 -0700</bug_when>
    <thetext>Comment on attachment 62110
Patch

&gt;  } // namespace WebKit
&gt; diff --git a/WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h b/WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h
&gt; index 2644abb4907b608351abaa5ccbe5c74ffa323e6d..05323b42f9dec1c1141a17d53cbb6fc5ef804c79 100644
&gt; --- a/WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h
&gt; +++ b/WebKit2/UIProcess/ChunkedUpdateDrawingAreaProxy.h
&gt; @@ -71,6 +71,7 @@ private:
&gt;  
&gt;      // DrawingAreaProxy
&gt;      virtual void didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder&amp;);
&gt; +    virtual void didReceiveSyncMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::ArgumentDecoder&amp;, CoreIPC::ArgumentEncoder&amp;);
&gt;      virtual void paint(const WebCore::IntRect&amp;, PlatformDrawingContext);
&gt;      virtual void setSize(const WebCore::IntSize&amp;);
&gt;      virtual void setPageIsVisible(bool isVisible);
&gt; diff --git a/WebKit2/UIProcess/DrawingAreaProxy.h b/WebKit2/UIProcess/DrawingAreaProxy.h
&gt; index 1bd7da3cf1692d013efc8d75ac0571e9ed65c3c6..3817eb1f55c70fadafbcb58045cb464edcc62d59 100644
&gt; --- a/WebKit2/UIProcess/DrawingAreaProxy.h
&gt; +++ b/WebKit2/UIProcess/DrawingAreaProxy.h
&gt; @@ -55,7 +55,9 @@ typedef QPainter* PlatformDrawingContext;
&gt;  
&gt; +void WebPageProxy::setDrawingArea(DrawingAreaProxy* drawingArea)

Since m_drawingArea is an OwnPtr, this should take a PassOwnPtr. Also, the setDrawingArea call site should use OwnPtrs.



&gt; +#if USE(ACCELERATED_COMPOSITING)
&gt; +        case WebPageProxyMessage::DidChangeAcceleratedCompositing: {
&gt; +            bool compositing;
&gt; +            if (!arguments.decode(CoreIPC::Out(compositing)))
&gt; +                return;
&gt; +
&gt; +            if (compositing)
&gt; +                didEnterAcceleratedCompositing();
&gt; +            else
&gt; +                didLeaveAcceleratedCompositing();
&gt; +
&gt; +            DrawingAreaProxy::Type drawingAreaType = drawingArea()-&gt;type();
&gt; +            reply.encode(CoreIPC::In(static_cast&lt;uint32_t&gt;(drawingAreaType)));
&gt; +            break;

We usually don&apos;t do any work other than decoding/encoding in the didReceiveMessage case handlers. This should just call a didChangeAcceleratedCompositing function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254417</commentid>
    <comment_count>21</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-21 10:51:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63843</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59538</attachid>
            <date>2010-06-23 11:21:07 -0700</date>
            <delta_ts>2010-06-30 17:19:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41084-20100623112106.patch</filename>
            <type>text/plain</type>
            <size>31139</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
MWE3YmRmNTczMWU2YzEwZmI2ODBkNGRlM2VhOWVhZDA3MjE3Njk2ZS4uZTEyM2I2OTYxYTZjMTE3
NGUzNDI0N2JhZDJlOWQxNzNkMDA0ZTViZiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MyBAQAorMjAxMC0wNi0yMyAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
d29ya2luZyB3aXRoIHdlYmtpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMDg0CisgICAgICAgIAorICAgICAgICBGaXJzdCBzdGVwOiBkaXNwbGF5
IHRoZSBjb21wb3NpdGluZyBsYXllciB0cmVlIGZyb20gdGhlIHdlYmtpdCBwcm9jZXNzCisgICAg
ICAgIGluIHRoZSBVSSBwcm9jZXNzIHVzaW5nIGEgcmVuZGVyIHNlcnZlci4KKworICAgICAgICAq
IFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmg6Cisg
ICAgICAgIChEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6KTogQWRkIEF0dGFjaENvbXBvc2l0aW5n
Q29udGV4dCBhbmQgRGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0LAorICAgICAgICB1c2VkIHdoZW4g
dGhlIHdlYiBwcm9jZXNzIGVudGVycyBhbmQgbGVhdmVzIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5n
IG1vZGUuCisKKyAgICAgICAgKiBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01lc3Nh
Z2VLaW5kcy5oOgorICAgICAgICAoV2ViUHJvY2Vzc01lc3NhZ2U6Oik6IEFkZCBTZXR1cEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdQb3J0LCB1c2VkIHRvIHNlbmQgdGhlIAorICAgICAgICByZW5kZXIg
c2VydmVyIHBvcnQgb3ZlciB0byB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgIAorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToKKyAgICAgICAgKC1bV0tWaWV3IF9zdGFydEFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmc6XSk6IEFkZCBhIGxheWVyIGhvc3Rpbmcgc3VidmlldworICAg
ICAgICB0byBwYXJlbnQgdGhlIGxheWVyIGNvbWluZyBvdmVyIGZyb20gdGhlIHdlYiBwcm9jZXNz
LgorICAgICAgICAoLVtXS1ZpZXcgX3N0b3BBY2NlbGVyYXRlZENvbXBvc2l0aW5nXSk6IFJlbW92
ZSB0aGUgbGF5ZXIgaG9zdGluZyB2aWV3LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3SW50ZXJuYWwuaDogQWRkIF9zdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmc6IGFuZAor
ICAgICAgICBfc3RvcEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcuCisgICAgICAgIAorICAgICAgICAq
IFVJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6
IEhhbmRsZSB0aGUgQXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0CisgICAgICAgIGFuZCBEZXRhY2hD
b21wb3NpdGluZ0NvbnRleHQgbWVzc2FnZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaDogQWRkIGF0dGFjaENvbXBvc2l0aW5nQ29udGV4dCgp
IGFuZCBkZXRhY2hDb21wb3NpdGluZ0NvbnRleHQoKQorICAgICAgICBhbmQgYSBtZW1iZXIgdmFy
aWFibGUgdG8gaG9sZCB0aGUgcm9vdCBsYXllci4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9j
ZXNzL0RyYXdpbmdBcmVhUHJveHkuaDogIEFkZCBhdHRhY2hDb21wb3NpdGluZ0NvbnRleHQoKSBh
bmQgZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOiAKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpXZWJQ
cm9jZXNzUHJveHkpOiBBZGQgY2FsbCB0byBzZXR1cEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnNldHVwQWNjZWxlcmF0ZWRDb21wb3Np
dGluZyk6IG5vbi1NYWMgc3R1Yi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaDogRGVjbGFyZSBzZXR1cEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW06CisgICAg
ICAgIChXZWJLaXQ6OkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjphdHRhY2hDb21wb3Np
dGluZ0NvbnRleHQpOiBHZXQgdGhlIGxheWVyIGZyb20gdGhlIHJlbmRlciBzZXJ2ZXIsCisgICAg
ICAgIGFuZCBwdXQgdGhlIHdlYiB2aWV3IGludG8gY29tcG9zaXRpbmcgbW9kZS4KKyAgICAgICAg
CisgICAgICAgIChXZWJLaXQ6OkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpkZXRhY2hD
b21wb3NpdGluZ0NvbnRleHQpOiBUYWtlIHRoZSB3ZWIgdmlldyBvdXQgb2YgY29tcG9zaXRpbmcg
bW9kZQorICAgICAgICBhbmQgcmVsZWFzZSB0aGUgbGF5ZXIuCisgICAgICAgIAorICAgICAgICAq
IFVJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXR1cEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOiBNYWMt
c3BlY2lmaWMgY29kZSB0byBpbml0bGFpemUgdGhlIHJlbmRlciBzZXJ2ZXIsCisgICAgICAgIGFu
ZCBzZW5kIHRoZSByZW5kZXIgc2VydmVyJ3MgbWFjaCBwb3J0IG92ZXIgdG8gdGhlIHdlYiBwcm9j
ZXNzLgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IEFkZCBXZWJQcm9jZXNzUHJveHlNYWMubW0sIGFuZCBjaGFuZ2UgQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhTWFjLmNwcCB0bworICAgICAgICBhIC5tbSBmaWxlLgorICAgICAgICAKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOiBJ
bXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcm91dGUgY2FsbHMgdG8gdGhlIGRyYXdpbmcgYXJlYS4K
KyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYTo6
YXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KTogTm9uLW1hYyBzdHViLgorICAgICAgICAoV2ViS2l0
OjpDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWE6OmRldGFjaENvbXBvc2l0aW5nQ29udGV4dCk6IERp
dHRvCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhLmg6IERlY2xhcmUgYXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkgYW5kIGRldGFjaENvbXBv
c2l0aW5nQ29udGV4dCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmg6IERlY2xhcmUgYXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkgYW5kIGRldGFjaENvbXBv
c2l0aW5nQ29udGV4dCgpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9DaHVu
a2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhTWFjLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhOjpwYWludEludG9VcGRhdGVD
aHVuayk6CisgICAgICAgIChXZWJLaXQ6OkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYTo6YXR0YWNo
Q29tcG9zaXRpbmdDb250ZXh0KTogV3JhcCB0aGUgcGxhdGZvcm0gbGF5ZXIgaW4gYSByZW1vdGUg
bGF5ZXIgY2xpZW50LAorICAgICAgICBhbmQgc2VuZCB0aGUgY29ycmVzcG9uZGluZyBjb250ZXh0
SUQgb3ZlciB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgCisgICAgICAgIChXZWJLaXQ6OkNo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYTo6ZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KTogVGVsbCB0
aGUgVUkgcHJvY2VzcyB0aGF0IHdlJ3JlIGxlYXZpbmcgY29tcG9zaXRpbmcgbW9kZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OldlYlByb2Nlc3MpOiBJbml0aWFsaXplIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQ
b3J0CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKTogSGFu
ZGxlIHRoZSBTZXR1cEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0IG1lc3NhZ2UuCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6IEFkZCBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVy
UG9ydC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y29tcG9zaXRpbmdSZW5kZXJTZXJ2
ZXJQb3J0KTogR2V0dGVyIGZvciBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydC4KKwogMjAx
MC0wNi0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYgLS1naXQgYS9XZWJLaXQyL1NoYXJlZC9Db3Jl
SVBDU3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmggYi9XZWJLaXQyL1NoYXJl
ZC9Db3JlSVBDU3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgKaW5kZXggOTQy
YTI4MDYxZmMwNjVhOTYzZjk4ZjViMzU2ZTA0NTdkYjU3YzJmYS4uZWIxNzA0MzNmMzE1OGRhMGFj
ZDczY2YxZWFjNjE1NmZkY2IxMzJjOCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQ
Q1N1cHBvcnQvRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oCisrKyBiL1dlYktpdDIvU2hh
cmVkL0NvcmVJUENTdXBwb3J0L0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaApAQCAtMzQs
NyArMzQsMTEgQEAgbmFtZXNwYWNlIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlIHsKIAogZW51bSBL
aW5kIHsKICAgICBVcGRhdGUsCi0gICAgRGlkU2V0U2l6ZQorICAgIERpZFNldFNpemUsCisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIEF0dGFjaENvbXBvc2l0aW5nQ29udGV4
dCwKKyAgICBEZXRhY2hDb21wb3NpdGluZ0NvbnRleHQsCisjZW5kaWYKIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1dlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2lu
ZHMuaCBiL1dlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2lu
ZHMuaAppbmRleCA0ZDc2NjEwODQxOTA5ZDc1ZjkyNTM0NDU5MGI0NWViYmU2ZWU4ZWMzLi4wZTRj
ZjQ0ZmNmNWNkZjBlMjEzOTU3Mjc2Y2ViZWY1NzFkMDVhMmNkIDEwMDY0NAotLS0gYS9XZWJLaXQy
L1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgKKysrIGIvV2Vi
S2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oCkBAIC0z
NSw3ICszNSwxMCBAQCBuYW1lc3BhY2UgV2ViUHJvY2Vzc01lc3NhZ2UgewogZW51bSBLaW5kIHsK
ICAgICBMb2FkSW5qZWN0ZWRCdW5kbGUsCiAgICAgQ3JlYXRlLAotICAgIFBvc3RNZXNzYWdlCisg
ICAgUG9zdE1lc3NhZ2UsCisjaWYgUExBVEZPUk0oTUFDKQorICAgIFNldHVwQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1BvcnQKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmll
dy5tbQppbmRleCA2MTRiODA4ZTBmMzMwMTQ2MzUzNmZiNzU0MDllMjFhYjYyZWY3Nzk4Li4yNmM3
ZjM1YjMwMzRkNGRlNmUyMjYyZTNjZGZmMzVhODhkNzIwYzhmIDEwMDY0NAotLS0gYS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
bWFjL1dLVmlldy5tbQpAQCAtNTQsNiArNTQsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAgICAgTlNUb29sVGlwVGFnIF9sYXN0VG9vbFRpcFRhZzsKICAgICBpZCBfdHJhY2tpbmdSZWN0
T3duZXI7CiAgICAgdm9pZCogX3RyYWNraW5nUmVjdFVzZXJEYXRhOworCisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIE5TVmlldyogX2xheWVySG9zdGluZ1ZpZXc7CisjZW5k
aWYKIH0KIEBlbmQKIApAQCAtNDI3LDQgKzQzMSw2MyBAQCBzdGF0aWMgYm9vbCBpc1ZpZXdWaXNp
YmxlKE5TVmlldyAqdmlldykKICAgICB9CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCistICh2b2lkKV9zdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmc6KENBTGF5ZXIqKXJv
b3RMYXllcgoreworICAgIGlmICghX2RhdGEtPl9sYXllckhvc3RpbmdWaWV3KSB7CisgICAgICAg
IE5TVmlldyogaG9zdGluZ1ZpZXcgPSBbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpbc2Vs
ZiBib3VuZHNdXTsKKyNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorICAgICAgICBb
aG9zdGluZ1ZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNW
aWV3SGVpZ2h0U2l6YWJsZSldOworI2VuZGlmCisgICAgICAgIFtzZWxmIGFkZFN1YnZpZXc6aG9z
dGluZ1ZpZXddOworICAgICAgICBbaG9zdGluZ1ZpZXcgcmVsZWFzZV07CisgICAgICAgIC8vIGhv
c3RpbmdWaWV3IGlzIG93bmVkIGJ5IGJlaW5nIGEgc3VidmlldyBvZiBzZWxmCisgICAgICAgIF9k
YXRhLT5fbGF5ZXJIb3N0aW5nVmlldyA9IGhvc3RpbmdWaWV3OworICAgIH0KKworICAgIC8vIE1h
a2UgYSBjb250YWluZXIgbGF5ZXIsIHdoaWNoIHdpbGwgZ2V0IHNpemVkL3Bvc2l0aW9uZWQgYnkg
QXBwS2l0IGFuZCBDQS4KKyAgICBDQUxheWVyKiB2aWV3TGF5ZXIgPSBbQ0FMYXllciBsYXllcl07
CisKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAgLy8gVHVybiBvZmYgZGVm
YXVsdCBhbmltYXRpb25zLgorICAgIE5TTnVsbCAqbnVsbFZhbHVlID0gW05TTnVsbCBudWxsXTsK
KyAgICBOU0RpY3Rpb25hcnkgKmFjdGlvbnMgPSBbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRo
T2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJhbmNob3JQb2ludCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxWYWx1ZSwg
QCJib3VuZHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29u
dGVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiY29udGVu
dHNSZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAIm9wYWNp
dHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAicG9zaXRpb24i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5ZXJUcmFu
c2Zvcm0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAic3VibGF5
ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAInRyYW5zZm9y
bSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgW3ZpZXdMYXllciBz
ZXRTdHlsZTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmFjdGlvbnMgZm9yS2V5
OkAiYWN0aW9ucyJdXTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkKKyAgICAvLyBJZiB3ZSBhcmVuJ3QgaW4gdGhlIHdpbmRvdyB5ZXQsIHdlJ2xsIHVzZSB0aGUg
c2NyZWVuJ3Mgc2NhbGUgZmFjdG9yIG5vdywgYW5kIHJlc2V0IHRoZSBzY2FsZSAKKyAgICAvLyB2
aWEgLXZpZXdEaWRNb3ZlVG9XaW5kb3cuCisgICAgQ0dGbG9hdCBzY2FsZUZhY3RvciA9IFtzZWxm
IHdpbmRvd10gPyBbW3NlbGYgd2luZG93XSB1c2VyU3BhY2VTY2FsZUZhY3Rvcl0gOiBbW05TU2Ny
ZWVuIG1haW5TY3JlZW5dIHVzZXJTcGFjZVNjYWxlRmFjdG9yXTsKKyAgICBbdmlld0xheWVyIHNl
dFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rv
ciwgMSldOworI2VuZGlmCisKKyAgICBbX2RhdGEtPl9sYXllckhvc3RpbmdWaWV3IHNldExheWVy
OnZpZXdMYXllcl07CisgICAgW19kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldyBzZXRXYW50c0xheWVy
OllFU107CisgICAgCisgICAgLy8gUGFyZW50IG91ciByb290IGxheWVyIGluIHRoZSBjb250YWlu
ZXIgbGF5ZXIKKyAgICBbdmlld0xheWVyIGFkZFN1YmxheWVyOnJvb3RMYXllcl07Cit9CisKKy0g
KHZvaWQpX3N0b3BBY2NlbGVyYXRlZENvbXBvc2l0aW5nCit7CisgICAgaWYgKF9kYXRhLT5fbGF5
ZXJIb3N0aW5nVmlldykgeworICAgICAgICBbX2RhdGEtPl9sYXllckhvc3RpbmdWaWV3IHNldExh
eWVyOm5pbF07CisgICAgICAgIFtfZGF0YS0+X2xheWVySG9zdGluZ1ZpZXcgc2V0V2FudHNMYXll
cjpOT107CisgICAgICAgIFtfZGF0YS0+X2xheWVySG9zdGluZ1ZpZXcgcmVtb3ZlRnJvbVN1cGVy
dmlld107CisgICAgICAgIF9kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldyA9IG5pbDsKKyAgICB9Cit9
CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCiBAZW5kCmRpZmYgLS1n
aXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKaW5kZXggMzljNGNjMjhkZDBiZWNj
OGUyZTdmMzJiZDVlYjljMWFhYmJjNjgzMi4uYzcyODcyZGRkMjlkYjJjMGUyNTBjNzY1M2I4ZTJk
YTk2ZmEwYWRkMiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJ
bnRlcm5hbC5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwu
aApAQCAtMzAsNCArMzAsOSBAQAogLSAodm9pZClfcHJvY2Vzc0RpZFJldml2ZTsKIC0gKHZvaWQp
X3Rha2VGb2N1czooQk9PTClkaXJlY3Rpb247CiAtICh2b2lkKV90b29sVGlwQ2hhbmdlZEZyb206
KE5TU3RyaW5nICopb2xkVG9vbFRpcCB0bzooTlNTdHJpbmcgKiluZXdUb29sVGlwOworCisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorLSAodm9pZClfc3RhcnRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nOihDQUxheWVyKilyb290TGF5ZXI7CistICh2b2lkKV9zdG9wQWNjZWxlcmF0ZWRD
b21wb3NpdGluZzsKKyNlbmRpZgogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwCmluZGV4IDcxNWUxOWFhNjJmZTQ0MTk0YmM5
OGE3M2Y3MTE4ZmQ3YjUzN2Q5ZjMuLjdjNTc0MGE1YzljZDRkOWY4NDdkYzBkYmNjNWI5Mjk4ZGYy
NTkwOTEgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYVByb3h5LmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWFQcm94eS5jcHAKQEAgLTE1MSw2ICsxNTEsMTkgQEAgdm9pZCBDaHVua2VkVXBkYXRlRHJh
d2luZ0FyZWFQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmUKICAgICAgICAgICAgIGRpZFNldFNpemUoJnVwZGF0ZUNodW5rKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAg
ICBjYXNlIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpBdHRhY2hDb21wb3NpdGluZ0NvbnRleHQ6
IHsKKyAgICAgICAgICAgIHVpbnQzMl90IGNvbnRleHRJRDsKKyAgICAgICAgICAgIGlmICghYXJn
dW1lbnRzLmRlY29kZShDb3JlSVBDOjpPdXQoY29udGV4dElEKSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgYXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KGNvbnRleHRJRCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIERyYXdpbmdBcmVh
UHJveHlNZXNzYWdlOjpEZXRhY2hDb21wb3NpdGluZ0NvbnRleHQ6IHsKKyAgICAgICAgICAgIGRl
dGFjaENvbXBvc2l0aW5nQ29udGV4dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhUHJveHkuaCBiL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYVByb3h5LmgKaW5kZXggNjRhYzNjMjZhNTRlOWMwZjkzYWRhZmMxYmE1MTg0M2YyY2FkZDA3
MC4uZjdiMWMzZjE1M2ZlZWYzYTAzZDE1ZTI3ZWNjNWEwMjg5MDlhYTZjYiAxMDA2NDQKLS0tIGEv
V2ViS2l0Mi9VSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaAorKysgYi9X
ZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oCkBAIC0zMiw4
ICszMiwxMCBAQAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBDQUxheWVyOwogQGNsYXNzIFdLVmlldzsKICNlbHNl
CitjbGFzcyBDQUxheWVyOwogY2xhc3MgV0tWaWV3OwogI2VuZGlmCiAjZW5kaWYKQEAgLTY5LDYg
KzcxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmLCBQbGF0Zm9ybURyYXdpbmdDb250ZXh0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhZ2VJ
c1Zpc2libGUoYm9vbCBpc1Zpc2libGUpOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hDb21wb3NpdGluZ0NvbnRleHQodWludDMyX3Qg
Y29udGV4dElEKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCk7
CisjZW5kaWYKICAgICAKICAgICB2b2lkIGVuc3VyZUJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQg
aW52YWxpZGF0ZUJhY2tpbmdTdG9yZSgpOwpAQCAtODYsNiArOTMsNyBAQCBwcml2YXRlOgogI2lm
IFBMQVRGT1JNKE1BQykKICAgICAvLyBCYWNraW5nU3RvcmUKICAgICBSZXRhaW5QdHI8Q0dDb250
ZXh0UmVmPiBtX2JpdG1hcENvbnRleHQ7CisgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fY29tcG9z
aXRpbmdSb290TGF5ZXI7CiAjZWxpZiBQTEFURk9STShXSU4pCiAgICAgLy8gQmFja2luZ1N0b3Jl
CiAgICAgT3duUHRyPEhEQz4gbV9iYWNraW5nU3RvcmVEQzsKZGlmZiAtLWdpdCBhL1dlYktpdDIv
VUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuaCBiL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuaAppbmRleCBmNDc1YTY3OTJlMmEwOWMxZDU0ODg5MWNiMmEyOTBlYTUwNjg4NjJl
Li4wMWQwY2JiMTY3NTAxNGY2NjY3ZDljNTFkY2I1MTFjOWIzN2VmMGY5IDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKKysrIGIvV2ViS2l0Mi9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5oCkBAIC02OCw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpKTsKICAgICB9CiAK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lkIGF0dGFj
aENvbXBvc2l0aW5nQ29udGV4dCh1aW50MzJfdCBjb250ZXh0SUQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkgPSAwOworI2VuZGlmCisKIHByb3RlY3Rl
ZDoKICAgICBEcmF3aW5nQXJlYVByb3h5KFR5cGUpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA4NDBiNTAwYjUyNThiMzA3MDhjYzIxYTYxZDA4NmUzZTM5MmExMDQ1
Li5iNmMxNzg1NWNhMjBhYWMwNjQxMmM4MTQ5ZTgxMWU5ZTZjNjUwYzQ4IDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTU5LDYgKzU5LDEwIEBAIFdlYlByb2Nlc3NQcm94
eTo6V2ViUHJvY2Vzc1Byb3h5KFdlYkNvbnRleHQqIGNvbnRleHQpCiAgICAgLy8gV291bGQgdGhh
dCBiZSBiZXR0ZXIgdGhhbiBzZW5kaW5nIGEgY29ubmVjdGlvbj8KICAgICBpZiAoIWNvbnRleHQt
PmluamVjdGVkQnVuZGxlUGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgY29ubmVjdGlvbigpLT5z
ZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpMb2FkSW5qZWN0ZWRCdW5kbGUsIDAsIENvcmVJUEM6Oklu
KGNvbnRleHQtPmluamVjdGVkQnVuZGxlUGF0aCgpKSk7CisKKyNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisgICAgc2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CisjZW5kaWYK
IH0KIAogV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKQEAgLTg4LDYgKzkyLDEz
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGUoKQogI2VuZGlmCiB9CiAKKyNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmICFQTEFURk9STShNQUMpCit2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6c2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkKK3sKKworfQorI2VuZGlm
CisKIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpLmdldCgpOwpkaWZm
IC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCBjYWZkNDI2OTI5ZWQ1YTg2MjQxYmQ2NjEx
ZDM3ODA1ZmE0NjI2NjZiLi4zNTE5ZDFkZjBhMTViODRkMDk5ODI3OGMzYzljYTZiZWE3ZTExNTUw
IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNzYsNiArNzYsMTAgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgY29ubmVjdCgpOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQorICAgIHZvaWQgc2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CisjZW5kaWYK
KwogICAgIHZvaWQgZm9yd2FyZE1lc3NhZ2VUb1dlYkNvbnRleHQoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJik7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKZGlmZiAtLWdpdCBh
L1dlYktpdDIvVUlQcm9jZXNzL21hYy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5t
bSBiL1dlYktpdDIvVUlQcm9jZXNzL21hYy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1h
Yy5tbQppbmRleCA4N2E5ZTc5ZWEwNmE3NzY1MTRkOWU1MGRkZTk2MmI3ZjM1MTQ0M2E0Li44YmZi
NjM0ZmNmYzJiYWU1MTZjM2UzODlmMDU2OWUwNDEwMDQzZTA4IDEwMDY0NAotLS0gYS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0KKysrIGIv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1t
CkBAIC0yNSwxMSArMjUsMTUgQEAKIAogI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YVByb3h5LmgiCiAKKyNpbmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKwogI2luY2x1
ZGUgIkRyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIlVwZGF0ZUNodW5rLmgiCiAjaW5jbHVkZSAiV0tB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV0tWaWV3LmgiCisjaW5jbHVkZSAiV0tWaWV3SW50ZXJuYWwu
aCIKKyNpbmNsdWRlICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04MCw0ICs4NCwyMCBAQCB2
b2lkIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpkcmF3VXBkYXRlQ2h1bmtJbnRvQmFj
a2luZ1N0b3JlKFVwZGF0ZUNodW5rKgogICAgIFttX3dlYlZpZXcgc2V0TmVlZHNEaXNwbGF5SW5S
ZWN0Ok5TUmVjdEZyb21DR1JlY3QodXBkYXRlQ2h1bmtSZWN0KV07CiB9CiAKK3ZvaWQgQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmF0dGFjaENvbXBvc2l0aW5nQ29udGV4dCh1aW50MzJf
dCBjb250ZXh0SUQpCit7CisgICAgbV9jb21wb3NpdGluZ1Jvb3RMYXllciA9IFdLTWFrZVJlbmRl
ckxheWVyKGNvbnRleHRJRCk7CisKKyAgICBbbV93ZWJWaWV3IF9zdGFydEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmc6bV9jb21wb3NpdGluZ1Jvb3RMYXllci5nZXQoKV07Cit9CisKK3ZvaWQgQ2h1bmtl
ZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmRldGFjaENvbXBvc2l0aW5nQ29udGV4dCgpCit7Cisg
ICAgW21fd2ViVmlldyBfc3RvcEFjY2VsZXJhdGVkQ29tcG9zaXRpbmddOworCisgICAgLy8gQ2xl
YW51cC4KKyAgICBtX2NvbXBvc2l0aW5nUm9vdExheWVyID0gMDsKK30KKworCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9D
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dl
YlByb2Nlc3NQcm94eU1hYy5tbQpzaW1pbGFyaXR5IGluZGV4IDU5JQpjb3B5IGZyb20gV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5jcHAK
Y29weSB0byBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4
IGRlYzAxYmZkYjI1NjQ3MzQxMWI0ZWZjOWU1ZGVkYmY2NTAwY2M3YmMuLmQ4ZDRmMzc0N2E3Yjk5
NDUxOGQxNzgzZjE2MmI2YTYxMDc4ODE1MWEgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMuY3BwCisrKyBiL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMubW0KQEAgLTIzLDMxICsyMywyMyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRlICJD
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIK
IAotI2luY2x1ZGUgIlVwZGF0ZUNodW5rLmgiCi0jaW5jbHVkZSAiV2ViUGFnZS5oIgotI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgorI2luY2x1ZGUgIk1hY2hQb3J0LmgiCisjaW5jbHVkZSAiV2ViS2l0U3lzdGVtSW50ZXJmYWNl
LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oIgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgQ2h1bmtlZFVwZGF0ZURy
YXdpbmdBcmVhOjpwYWludEludG9VcGRhdGVDaHVuayhVcGRhdGVDaHVuayogdXBkYXRlQ2h1bmsp
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBXZWJQcm9jZXNzUHJveHk6
OnNldHVwQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCiB7Ci0gICAgUmV0YWluUHRyPENHQ29sb3JT
cGFjZVJlZj4gY29sb3JTcGFjZShBZG9wdENGLCBDR0NvbG9yU3BhY2VDcmVhdGVEZXZpY2VSR0Io
KSk7Ci0gICAgUmV0YWluUHRyPENHQ29udGV4dFJlZj4gYml0bWFwQ29udGV4dChBZG9wdENGLCBD
R0JpdG1hcENvbnRleHRDcmVhdGUodXBkYXRlQ2h1bmstPmRhdGEoKSwgdXBkYXRlQ2h1bmstPnJl
Y3QoKS53aWR0aCgpLCB1cGRhdGVDaHVuay0+cmVjdCgpLmhlaWdodCgpLCA4LCB1cGRhdGVDaHVu
ay0+cmVjdCgpLndpZHRoKCkgKiA0LCBjb2xvclNwYWNlLmdldCgpLCBrQ0dJbWFnZUFscGhhUHJl
bXVsdGlwbGllZExhc3QpKTsKLQotICAgIC8vIFdlYkNvcmUgZXhwZWN0cyBhIGZsaXBwZWQgY29v
cmRpbmF0ZSBzeXN0ZW0uCi0gICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGJpdG1hcENvbnRleHQu
Z2V0KCksIDAuMCwgdXBkYXRlQ2h1bmstPnJlY3QoKS5oZWlnaHQoKSk7Ci0gICAgQ0dDb250ZXh0
U2NhbGVDVE0oYml0bWFwQ29udGV4dC5nZXQoKSwgMS4wLCAtMS4wKTsKLQotICAgIC8vIE5vdyBw
YWludCBpbnRvIHRoZSBiYWNraW5nIHN0b3JlLgotICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGlj
c0NvbnRleHQoYml0bWFwQ29udGV4dC5nZXQoKSk7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5z
bGF0ZSgtdXBkYXRlQ2h1bmstPnJlY3QoKS54KCksIC11cGRhdGVDaHVuay0+cmVjdCgpLnkoKSk7
Ci0gICAgCi0gICAgbV93ZWJQYWdlLT5kcmF3UmVjdChncmFwaGljc0NvbnRleHQsIHVwZGF0ZUNo
dW5rLT5yZWN0KCkpOworICAgIG1hY2hfcG9ydF90IHJlbmRlclNlcnZlclBvcnQgPSBXS0luaXRp
YWxpemVSZW5kZXJTZXJ2ZXIoKTsKKyAgICBpZiAocmVuZGVyU2VydmVyUG9ydCAhPSBNQUNIX1BP
UlRfTlVMTCkKKyAgICAgICAgY29ubmVjdGlvbigpLT5zZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpT
ZXR1cEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdQb3J0LCAwLCBDb3JlSVBDOjpJbihDb3JlSVBDOjpN
YWNoUG9ydChyZW5kZXJTZXJ2ZXJQb3J0LCBNQUNIX01TR19UWVBFX0NPUFlfU0VORCkpKTsKIH0K
KyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTJhNmUwYmUyNTZiYTM4YzFiNWQ5YjYyOGY3ZGFmYjkw
NGIyMmE0Yy4uMTYxMWI0NzU4NjBlOTI0ZWVjMTQxMDNkZTVlM2MzNjE0MWY4MmQ5YiAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzLDYgKzIzLDcgQEAK
IC8qIEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLworCQkwRkY0NDk4NzExRDE3OTFBMDAyMTNGQjggLyogV2ViUHJvY2Vz
c1Byb3h5TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZGNDQ5ODYxMUQxNzkxQTAwMjEzRkI4IC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSAqLzsg
fTsKIAkJMUExMDQ3NUExMTBBNUFENTAwQTQzRUNEIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTFD
N0RFMTAwRTg0NkUwMDc4REVCQyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07CiAJ
CTFBMUM0RUM4MTBEMDYwOTkwMDVFNjdFNyAvKiBXZWJDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTFDNzlBMTAwRTdGQzUw
MDc4REVCQyAvKiBXZWJDb3JlLmZyYW1ld29yayAqLzsgfTsKIAkJMUEzMDA2NkUxMTEwRjRGNzAw
MzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25z
aXZlbmVzc1RpbWVyLmggKi87IH07CkBAIC0xMzIsNyArMTMzLDcgQEAKIAkJQkM1OTcwNzUxMTY1
OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NNb2RlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nlc3NN
b2RlbC5oICovOyB9OwogCQlCQzVGN0JCNDExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNUY3QkIyMTE4MjM3NkMwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0Fy
ZWEuY3BwICovOyB9OwogCQlCQzVGN0JCNTExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzVGN0JCMzExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
LmggKi87IH07Ci0JCUJDNUY3QkI5MTE4MjM3OTkwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJh
d2luZ0FyZWFNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM1RjdCQjgxMTgyMzc5OTAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YU1hYy5jcHAgKi87IH07CisJCUJDNUY3QkI5MTE4MjM3OTkwMDUyQzAyQyAvKiBDaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWFNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzVGN0JCODExODIzNzk5MDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdp
bmdBcmVhTWFjLm1tICovOyB9OwogCQlCQzYxN0VFODEwNENCMzQ3MDBGQjNGRTEgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBMUM3REUxMDBFODQ2RTAwNzhERUJDIC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayAqLzsgfTsKIAkJQkM2RURBQTYxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNkVEQUE1
MTExMjcxQzYwMEU3Njc4QiAvKiBQYWdlQ2xpZW50LmggKi87IH07CiAJCUJDODQ1MkE3MTE2MkM4
MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg0NTJBNTExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0Fy
ZWEuY3BwICovOyB9OwpAQCAtMjM4LDYgKzIzOSw3IEBACiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJl
bmNlIHNlY3Rpb24gKi8KIAkJMDg2N0Q2QTVGRTg0MDMwN0MwMkFBQzA3IC8qIEFwcEtpdC5mcmFt
ZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3
cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNv
bHV0ZT4iOyB9OwogCQkwODlDMTY2N0ZFODQxMTU4QzAyQUFDMDcgLyogRW5nbGlzaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQucGxpc3Quc3RyaW5nczsgbmFtZSA9IEVuZ2xpc2g7IHBhdGggPSBFbmdsaXNoLmxw
cm9qL0luZm9QbGlzdC5zdHJpbmdzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0
NDk4NjExRDE3OTFBMDAyMTNGQjggLyogV2ViUHJvY2Vzc1Byb3h5TWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHJvY2Vzc1Byb3h5TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMDU4QzdCMUZFQTU1ODVFMTFDQTJDQkIgLyogQ29j
b2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAi
PGFic29sdXRlPiI7IH07CiAJCTFBMzAwNjZDMTExMEY0RjcwMDMxOTM3QyAvKiBSZXNwb25zaXZl
bmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc3BvbnNpdmVu
ZXNzVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUEzMEVBQzUxMTVEN0RB
MzAwNTNFOTM3IC8qIENvbm5lY3Rpb25NYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29ubmVjdGlvbk1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0zNTMsNyArMzU1LDcgQEAKIAkJQkM1OTcwNzQxMTY1OTFEMDAwNTUxRkNBIC8qIFByb2Nl
c3NNb2RlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9jZXNzTW9kZWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1RjdCQjIxMTgyMzc2QzAwNTJDMDJD
IC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzVGN0JCMzExODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENodW5rZWRV
cGRhdGVEcmF3aW5nQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzVGN0JC
ODExODIzNzk5MDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhTWFjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YU1hYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNUY3QkI4MTE4MjM3OTkw
MDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNkVEQUE1MTExMjcxQzYwMEU3Njc4QiAv
KiBQYWdlQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VDbGll
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUyQTUxMTYyQzgwOTAwQ0FC
OUI1IC8qIERyYXdpbmdBcmVhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERyYXdpbmdBcmVhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4NDUy
QTYxMTYyQzgwOTAwQ0FCOUI1IC8qIERyYXdpbmdBcmVhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC05MTksNyArOTIxLDcgQEAKIAkJQkM5NjNENkMxMTNERDE5NTAwNTc0QkUyIC8qIG1hYyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJQkM1RjdCQjgxMTgy
Mzc5OTAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5jcHAgKi8sCisJCQkJ
QkM1RjdCQjgxMTgyMzc5OTAwNTJDMDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5t
bSAqLywKIAkJCQlCQzk2M0Q2RDExM0REMUE1MDA1NzRCRTIgLyogV2ViUGFnZU1hYy5tbSAqLywK
IAkJCSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtOTM4LDYgKzk0MCw3IEBACiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDMjY1MUY1MTE4MjVFRjgwMDI0M0UxMiAvKiBD
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eU1hYy5tbSAqLywKKwkJCQkwRkY0NDk4NjExRDE3
OTFBMDAyMTNGQjggLyogV2ViUHJvY2Vzc1Byb3h5TWFjLm1tICovLAogCQkJKTsKIAkJCXBhdGgg
PSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTE4Nyw3ICsxMTkwLDcgQEAK
IAkJCQlCQ0Y2OUZBMzExNzZEMDE0MDA0NzFBNTIgLyogV2ViTmF2aWdhdGlvbkRhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNGNjlGQUExMTc2RDFDQjAwNDcxQTUyIC8qIFdLTmF2aWdhdGlv
bkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RjdCQjQxMTgyMzc2QzAwNTJDMDJDIC8q
IENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlCQzVGN0JC
OTExODIzNzk5MDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhTWFjLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUJDNUY3QkI5MTE4MjM3OTkwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRl
RHJhd2luZ0FyZWFNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzI2NTFGNjExODI1RUY4MDAy
NDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHlNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQlCQzI2NTIxNjExODI2MDgxMDAyNDNFMTIgLyogRHJhd2luZ0FyZWFQcm94eS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzI2NTIxODExODI2MDgxMDAyNDNFMTIgLyogQ2h1bmtlZFVw
ZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMjAwLDYgKzEyMDMs
NyBAQAogCQkJCTFBRUZDQzEzMTFEMDFGOTYwMDgyMTlEMyAvKiBQbHVnaW5JbmZvU3RvcmUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNERTA1OUMxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRl
eHRJbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUVGQ0NCRDEx
RDAyQzVFMDA4MjE5RDMgLyogUGx1Z2luSW5mb1N0b3JlTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEZGNDQ5ODcxMUQxNzkxQTAwMjEzRkI4IC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBlNDQzNTMwZGFhY2M1OGY1YzE4MjgxYzBhMWZmN2Y0
MGU1NmNkMzQ2Li41N2UzNGFiZTkzYjI4MGE2ZjRhNDZmOTM0MzMxYWUzNTk4YzI3ZmE5IDEwMDY0
NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcApAQCAtNDM5LDkgKzQzOSwxMiBAQCBQYXNzT3duUHRyPEhUTUxQYXJzZXJRdWlya3M+
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlSFRNTFBhcnNlclF1aXJrcygpCiB9CiAKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6YXR0YWNoUm9v
dEdyYXBoaWNzTGF5ZXIoRnJhbWUqLCBHcmFwaGljc0xheWVyKikKK3ZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSosIEdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKGxheWVyKQorICAgICAgICBtX3Bh
Z2UtPmRyYXdpbmdBcmVhKCktPmF0dGFjaENvbXBvc2l0aW5nQ29udGV4dChsYXllcik7CisgICAg
ZWxzZQorICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPmRldGFjaENvbXBvc2l0aW5nQ29u
dGV4dCgpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0TmVlZHNPbmVTaG90RHJhd2lu
Z1N5bmNocm9uaXphdGlvbigpCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcAppbmRleCA5NTllNzAyZjNhYjI4N2VhODI1
YTE2MmJkODQ3OTJmMjA1YWI0MTIyLi44MjQwMTMxYTI3NjM1OTQwMGZkOGMxZjgzZmZhN2FhMjVi
ODMxYzhjIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9DaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWEuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAKQEAgLTE5NSw0ICsxOTUsMTYgQEAgdm9pZCBDaHVua2Vk
VXBkYXRlRHJhd2luZ0FyZWE6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjoKICAgICB9CiB9CiAKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykgJiYgIVBMQVRGT1JNKE1BQykKK3ZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhOjphdHRh
Y2hDb21wb3NpdGluZ0NvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopCit7Cit9CisKK3Zv
aWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhOjpkZXRhY2hDb21wb3NpdGluZ0NvbnRleHQoKQor
eworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaCBiL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oCmluZGV4IGJj
MDBmMDFhYjc2ZTE4MDM0NmYxZmJkZWI5OWRlNDVjODA0ZWE2NDIuLjNiM2NhMjhlMjQ2NjEzNjU4
MTMyMTY5YTJlMTM5YjYzODU3ZTQyNGQgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oCkBAIC00Niw2ICs0NiwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoKTsKIAorI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoQ29tcG9zaXRpbmdDb250
ZXh0KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoQ29t
cG9zaXRpbmdDb250ZXh0KCk7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXImKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5oCmluZGV4IDJkZWEzMjAwZmFhNmZiMWFjYTk3MmVhMTBlNmJjNjQ1ZWMw
N2VlODcuLmYyN2M4ZmY4NWEwMDQyZDdhNjM2ZDNlZjQ3N2NlYjczODk4OTIwNmIgMTAwNjQ0Ci0t
LSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMzEsNiArMzEsOSBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEludFJlY3Q7CiAgICAgY2xhc3MgSW50U2l6ZTsK
KyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgY2xhc3MgR3JhcGhpY3NMYXll
cjsKKyNlbmRpZgogfQogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC02MSw2ICs2NCwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5KCkgPSAwOwogCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hDb21wb3Np
dGluZ0NvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkgPSAwOworI2VuZGlmCisKICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJikgPSAwOwogCiAgICAgLy8gVGhlIERy
YXdpbmdBcmVhIHNob3VsZCBuZXZlciBiZSBlbmNvZGVkIGl0c2VsZi4gSW5zdGVhZCwgdGhlIERy
YXdpbmdBcmVhUHJveHkgc2hvdWxkIGJlIGVuY29kZWQuCmRpZmYgLS1naXQgYS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhTWFjLmNwcCBiL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMu
bW0Kc2ltaWxhcml0eSBpbmRleCA3MCUKcmVuYW1lIGZyb20gV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5jcHAKcmVuYW1lIHRvIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMubW0K
aW5kZXggZGVjMDFiZmRiMjU2NDczNDExYjRlZmM5ZTVkZWRiZjY1MDBjYzdiYy4uZWE4NDdlNTM0
YTYxZDMwZDU2OTZiMDM0YjZlMjFlZWVkMTgzZmNmOCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1hYy5jcHAKKysrIGIv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYU1h
Yy5tbQpAQCAtMjUsOSArMjUsMTUgQEAKIAogI2luY2x1ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5n
QXJlYS5oIgogCisjaW5jbHVkZSA8UXVhcnR6Q29yZS9RdWFydHpDb3JlLmg+CisKKyNpbmNsdWRl
ICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiVXBkYXRlQ2h1bmsu
aCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyLmg+CisjaW5jbHVkZSAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTUwLDQgKzU2
LDI1IEBAIHZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhOjpwYWludEludG9VcGRhdGVDaHVu
ayhVcGRhdGVDaHVuayogdXBkYXRlQ2h1bmspCiAgICAgbV93ZWJQYWdlLT5kcmF3UmVjdChncmFw
aGljc0NvbnRleHQsIHVwZGF0ZUNodW5rLT5yZWN0KCkpOwogfQogCisjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQordm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWE6OmF0dGFjaENv
bXBvc2l0aW5nQ29udGV4dChHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBDQUxheWVyKiBj
YUxheWVyID0gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKKyAgICBpZiAoIWNhTGF5ZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIFdLQ0FSZW1vdGVMYXllckNsaWVudFJlZiByZW1vdGVMYXllckNs
aWVudCA9IFdLQ0FSZW1vdGVMYXllckNsaWVudE1ha2VXaXRoU2VydmVyUG9ydChXZWJQcm9jZXNz
OjpzaGFyZWQoKS5jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKSk7CisgICAgV0tDQVJlbW90
ZUxheWVyQ2xpZW50U2V0TGF5ZXIocmVtb3RlTGF5ZXJDbGllbnQsIGNhTGF5ZXIpOworICAgIAor
ICAgIHVpbnQzMl90IGNvbnRleHRJRCA9IFdLQ0FSZW1vdGVMYXllckNsaWVudEdldENsaWVudElk
KHJlbW90ZUxheWVyQ2xpZW50KTsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rp
b24oKS0+c2VuZChEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6QXR0YWNoQ29tcG9zaXRpbmdDb250
ZXh0LCBtX3dlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihjb250ZXh0SUQpKTsKK30KKwor
dm9pZCBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWE6OmRldGFjaENvbXBvc2l0aW5nQ29udGV4dCgp
Cit7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKERyYXdpbmdB
cmVhUHJveHlNZXNzYWdlOjpEZXRhY2hDb21wb3NpdGluZ0NvbnRleHQsIG1fd2ViUGFnZS0+cGFn
ZUlEKCksIENvcmVJUEM6OkluKCkpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IGM5YThhOGNmMmIzMzRkYzRlNTA4NDZh
ZWI2NDE0ZWUwMzA3MTkyOWQuLjVmYTBmMzlmZDA3YTM0NzA1YjczMDJkNTFmMWFkNGM3NzQwMWQ2
MjkgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJXZWJQcm9jZXNzLmgiCiAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1
ZGUgIk1hY2hQb3J0LmgiCiAjaW5jbHVkZSAiUnVuTG9vcC5oIgogI2luY2x1ZGUgIldlYkNvcmVU
eXBlQXJndW1lbnRNYXJzaGFsbGluZy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC01Miw2
ICs1MywxMCBAQCBXZWJQcm9jZXNzJiBXZWJQcm9jZXNzOjpzaGFyZWQoKQogCiBXZWJQcm9jZXNz
OjpXZWJQcm9jZXNzKCkKICAgICA6IG1faW5EaWRDbG9zZShmYWxzZSkKKyAgICAsIG1fcnVuTG9v
cCgwKQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAsIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQ
b3J0KE1BQ0hfUE9SVF9OVUxMKQorI2VuZGlmCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCiAgICAgLy8gSW5pdGlhbGl6ZSBvdXIgcGxhdGZvcm0gc3RyYXRlZ2llcy4KQEAgLTE3Miw2
ICsxNzcsMTYgQEAgdm9pZCBXZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb3JlSVBDOjpNZXMKICAgICAgICAgICAgICAgICBmb3J3
YXJkTWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUobWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgICAgIGNhc2Ug
V2ViUHJvY2Vzc01lc3NhZ2U6OlNldHVwQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQ6IHsKKyAg
ICAgICAgICAgICAgICBDb3JlSVBDOjpNYWNoUG9ydCBwb3J0OworICAgICAgICAgICAgICAgIGlm
ICghYXJndW1lbnRzLT5kZWNvZGUocG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgICAgIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0ID0gcG9ydC5w
b3J0KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorI2VuZGlmCiAg
ICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IGI5ZWI2YTI1NWM5
YWFiZDlmYjBmODhjYjk4YWQzNmViZTExNjI5NjUuLjRjYjNiMjdkMTljYjVhNjdiNWJhMWQ2MmU0
MDhjMTUyYWEwZjhmZmIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtNTcsNiArNTcsMTAg
QEAgcHVibGljOgogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsg
cmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNTZXBhcmF0ZVBy
b2Nlc3MoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBtYWNoX3BvcnRfdCBjb21w
b3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW5nUmVu
ZGVyU2VydmVyUG9ydDsgfQorI2VuZGlmCiAgICAgCiBwcml2YXRlOgogICAgIFdlYlByb2Nlc3Mo
KTsKQEAgLTc3LDYgKzgxLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2luRGlkQ2xvc2U7CiAK
ICAgICBSdW5Mb29wKiBtX3J1bkxvb3A7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgbWFjaF9w
b3J0X3QgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60173</attachid>
            <date>2010-06-30 17:22:55 -0700</date>
            <delta_ts>2010-07-02 03:17:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41084-20100630172254.patch</filename>
            <type>text/plain</type>
            <size>4973</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ODBmZTM5ZjY1Y2IxYWU3Mzk1ODVkOGY3OGE0MTY4ZjU5YjRiZjRiMy4uYmQ5Y2Q1ZTc3ZDQ2M2Fh
OGI4Njc1MWI1ODc1ZTAyZGM1ZmRiYjlmNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNi0zMCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
d29ya2luZyB3aXRoIHdlYmtpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMDg0CisKKyAgICAgICAgU3RlcCAxOiBhZGQgYSBuZXcgLmV4cCBmaWxl
IGZvciBXZWJDb3JlLCB3aGljaCBleHBvcnRzIHN5bWJvbHMgb25seSB3aGVuIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICAgICAgaXMgZGVmaW5lZC4KKyAgICAgICAgCisgICAgICAg
IEFsc28gZXhwb3J0IFdlYkNvcmU6OkZsb2F0U2l6ZTo6RmxvYXRTaXplKFdlYkNvcmU6OkludFNp
emUgY29uc3QmKSBmcm9tIFdlYkNvcmUuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OgorICAgICAgICAqIFdlYkNvcmUuQWNjZWxlcmF0ZWRDb21wb3NpdGluZy5leHA6IEFkZGVkLgor
ICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCiAyMDEwLTA2LTMwICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9n
YUBwYXJvZ2EuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDVhMTA2ZWQ5ZWZmODcwMDBhZjFhZTIwZDk1N2Y4Y2MxMjVmODRjNWIuLmNl
OTViYzQzZTMwOTczMGI4OTE4NGY3NDFiODM1NjBmNDQ4MjY5NjEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTg3Nyw2ICs4NzcsMTAgQEAgaWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV8zRF9SRU5ERVJJ
TkcsJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFXzNEX1JFTkRFUklORykKICAgICBXRUJDT1JF
X0VYUE9SVF9ERVBFTkRFTkNJRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMpIFdl
YkNvcmUuM0RSZW5kZXJpbmcuZXhwCiBlbmRpZgogCitpZmVxICgkKHNoZWxsIGdjYyAtYXJjaCB4
ODZfNjQgLUUgLVAgLWRNICQoRlJBTUVXT1JLX0ZMQUdTKSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL3d0Zi9QbGF0Zm9ybS5oIHwgZ3JlcCBXVEZfVVNFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
IHwgY3V0IC1kJyAnIC1mMyksIDEpCisgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9
ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmcuZXhwCitlbmRpZgorCiBpZmVxICgkKHNoZWxsIGdjYyAtRSAtUCAtZE0gJChGUkFNRVdP
UktfRkxBR1MpIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BsYXRmb3JtLmggfCBncmVw
IEVOQUJMRV9DT05URVhUX01FTlVTIHwgY3V0IC1kJyAnIC1mMyksIDEpCiAgICAgV0VCQ09SRV9F
WFBPUlRfREVQRU5ERU5DSUVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJD
b3JlLkNvbnRleHRNZW51cy5leHAKIGVuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
QWNjZWxlcmF0ZWRDb21wb3NpdGluZy5leHAgYi9XZWJDb3JlL1dlYkNvcmUuQWNjZWxlcmF0ZWRD
b21wb3NpdGluZy5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBhYmM2OWQxZDdlZGI1ZjYyYjFiODIzMDkyYjdm
NTFiZmRmZGVjZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5BY2NlbGVyYXRl
ZENvbXBvc2l0aW5nLmV4cApAQCAtMCwwICsxLDIgQEAKK19fWk43V2ViQ29yZTEzR3JhcGhpY3NM
YXllcjE3cmVtb3ZlQWxsQ2hpbGRyZW5FdgorX19aTjdXZWJDb3JlMTNHcmFwaGljc0xheWVyNmNy
ZWF0ZUVQTlNfMTlHcmFwaGljc0xheWVyQ2xpZW50RQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IGVhMzQ5YjBjNTUx
NzM0MTk0ZjNlYWY5MTJkZGYxM2QzZGY4MThhOWYuLmQ3YmQzZDI2NDEzM2RjZmEyZWY0OGJhMDAz
NmRmODBiNzY1OTNkNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTcwMiw2ICs3MDIsNyBAQCBfX1pON1dlYkNv
cmU4bWFrZVJHQkFFaWlpaQogX19aTjdXZWJDb3JlOURPTVdpbmRvdzMwZGlzcGF0Y2hBbGxQZW5k
aW5nVW5sb2FkRXZlbnRzRXYKIF9fWk43V2ViQ29yZTlET01XaW5kb3czNmRpc3BhdGNoQWxsUGVu
ZGluZ0JlZm9yZVVubG9hZEV2ZW50c0V2CiBfX1pON1dlYkNvcmU5RmxvYXRSZWN0QzFFUks3X05T
UmVjdAorX19aTjdXZWJDb3JlOUZsb2F0U2l6ZUMxRVJLTlNfN0ludFNpemVFCiBfX1pON1dlYkNv
cmU5RmxvYXRSZWN0QzFFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTlGb250Q2FjaGUxM2Zv
bnREYXRhQ291bnRFdgogX19aTjdXZWJDb3JlOUZvbnRDYWNoZTIxaW5hY3RpdmVGb250RGF0YUNv
dW50RXYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmQ5
OTAwOTA4OWI4NjAzZjZlYTdlMzc4ZTYyNmRlZWRlMjMxMTQzNy4uY2NkNjA0MTE4ZWM0MGRlNjEw
YmIxMjFlMTY4NjM4YWIxNGZlZjIyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTU3NjksNiArNTc2OSw3IEBACiAJCTBGMTVEQTg5MEYzQUFFRTcwMDAw
Q0U0NyAvKiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oOyBwYXRoID0gYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNTAwQUFFMEY1NERCMUIwMEVFRjkyOCAvKiBUcmFuc2Zvcm1TdGF0ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1TdGF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjUwMEFCMDBGNTREQjMxMDBFRUY5MjggLyogVHJhbnNmb3Jt
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNmb3Jt
U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjUyNjNFNTExREMxMzZF
MDAwNkQzM0MgLyogV2ViQ29yZS5BY2NlbGVyYXRlZENvbXBvc2l0aW5nLmV4cCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuZXhwb3J0czsgcGF0aCA9IFdlYkNvcmUuQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Zy5leHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTYwMjhEMEU0Qjc2NTgwMDY1
QjAzOCAvKiBSZW5kZXJNYXJxdWVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlck1hcnF1ZWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NjAyOEUw
RTRCNzY1ODAwNjVCMDM4IC8qIFJlbmRlck1hcnF1ZWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyTWFycXVlZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNTgwQjAzMEYxMkEyNTQwMDUxRDY4OSAvKiBHcmFwaGljc0xheWVyQ0EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHcmFwaGljc0xheWVyQ0Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTUyNyw2ICsxMTUyOCw3IEBACiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTBGOUM2RjRCMTA3M0VGMDQw
MERFRDlCRiAvKiBXZWJDb3JlLjNEUmVuZGVyaW5nLmV4cCAqLywKKwkJCQkwRjUyNjNFNTExREMx
MzZFMDAwNkQzM0MgLyogV2ViQ29yZS5BY2NlbGVyYXRlZENvbXBvc2l0aW5nLmV4cCAqLywKIAkJ
CQlGNThFRjU4RTAyREZERkI3MDE4NjM1Q0EgLyogV2ViQ29yZS5iYXNlLmV4cCAqLywKIAkJCQlC
QzU2Q0NERjEwRDcyQkQ4MDBBNzdDNjQgLyogV2ViQ29yZS5DbGllbnRCYXNlZEdlb2xvY2F0aW9u
LmV4cCAqLywKIAkJCQlGRUZEMTAyQzEwNUM0MTQ3MDAwMjg1NUUgLyogV2ViQ29yZS5Db250ZXh0
TWVudXMuZXhwICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60268</attachid>
            <date>2010-07-01 12:05:13 -0700</date>
            <delta_ts>2010-07-02 03:17:11 -0700</delta_ts>
            <desc>GraphicsLayer changes</desc>
            <filename>bug-41084-20100701120512.patch</filename>
            <type>text/plain</type>
            <size>4018</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmQ5Y2Q1ZTc3ZDQ2M2FhOGI4Njc1MWI1ODc1ZTAyZGM1ZmRiYjlmNS4uZTI1M2FhZTNhYjYyYTMx
ZjYwMWYzMzI5MDI3OTgwZWE0YmIxM2M2MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMC0wNy0wMSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
d29ya2luZyB3aXRoIHdlYmtpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMDg0CisKKyAgICAgICAgU3RlcCAyOiBhZGQgYSAgbWV0aG9kIHRvIEdy
YXBoaWNzTGF5ZXIgdG8gY29tbWl0IGJhdGNoZWQgY2hhbmdlcyBub24tcmVjdXJzaXZlbHksIHJl
bmFtaW5nIHRoZSBjdXJyZW50CisgICAgICAgIHN5bmNDb21wb3NpdGluZ1N0YXRlKCkgdG8gc3lu
Y0NvbXBvc2l0aW5nU3RhdGVSZWN1cnNpdmUoKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWxs
b3dzIHVzIHRvIHVzZSBHcmFwaGljc0xheWVyIGluIHBsYWNlcyB3aGVyZSB3ZSBkb24ndCB3YW50
IHRvIGtpY2sgb2ZmIGEgcmVjdXJzaXZlIGNvbW1pdAorICAgICAgICBvZiB0aGUgZW50aXJlIHRy
ZWUuCisKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OnN5bmNDb21w
b3NpdGluZ1N0YXRlUmVjdXJzaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMv
R3JhcGhpY3NMYXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzTGF5ZXJDQS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6c3luY0Nv
bXBvc2l0aW5nU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpzeW5j
Q29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSk6CisKIDIwMTAtMDYtMzAgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDg5ZTIzYjVmZmExYmQyMzNlZGRjMmM2ZDVmZWMxNTJi
OGJiYjk5MDIuLmM5ODg3MTI2ZDI4OTFjZDE4NTE2MjMyYjBmN2M4ZmVlNzg4Y2QzMGEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCkBAIC0xOTIwLDcgKzE5MjAsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250
ZW50cyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmICghcC0+cGFpbnRpbmdEaXNhYmxlZCgpKSB7
CiAgICAgICAgIGlmIChHcmFwaGljc0xheWVyKiByb290TGF5ZXIgPSBjb250ZW50UmVuZGVyZXIt
PmNvbXBvc2l0b3IoKS0+cm9vdFBsYXRmb3JtTGF5ZXIoKSkKLSAgICAgICAgICAgIHJvb3RMYXll
ci0+c3luY0NvbXBvc2l0aW5nU3RhdGUoKTsKKyAgICAgICAgICAgIHJvb3RMYXllci0+c3luY0Nv
bXBvc2l0aW5nU3RhdGVSZWN1cnNpdmUoKTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAppbmRleCA0MzM4ZDg5NGQ4OTgyNjFiMjVkNjQ3
NTUxMzBlMGQ2MWFhNGE5NjNiLi4zYzBkZWJlMzczZTVkYjMyMjk0ZjcxN2M4MzNhNjJmNjE2MDc0
MjAyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaApAQCAtMzQz
LDggKzM0MywxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBhY2N1bXVsYXRlZE9wYWNp
dHkoKSBjb25zdDsKIAogICAgIC8vIFNvbWUgY29tcG9zaXRpbmcgc3lzdGVtcyBtYXkgZG8gaW50
ZXJuYWwgYmF0Y2hpbmcgdG8gc3luY2hyb25pemUgY29tcG9zaXRpbmcgdXBkYXRlcwotICAgIC8v
IHdpdGggdXBkYXRlcyBkcmF3biBpbnRvIHRoZSB3aW5kb3cuIFRoaXMgaXMgYSBzaWduYWwgdG8g
Zmx1c2ggYW55IGludGVybmFsIGJhdGNoZWQgc3RhdGUuCisgICAgLy8gd2l0aCB1cGRhdGVzIGRy
YXduIGludG8gdGhlIHdpbmRvdy4gVGhlc2UgbWV0aG9kcyBmbHVzaCBpbnRlcm5hbCBiYXRjaGVk
IHN0YXRlIG9uIHRoaXMgbGF5ZXIKKyAgICAvLyBvbmx5LCBhbmQgdGhpcyBhbmQgZGVzY2VuZGFu
dCBsYXllcnMuCiAgICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlUmVjdXJzaXZlKCkgeyB9CiAgICAg
CiAgICAgLy8gUmV0dXJuIGEgc3RyaW5nIHdpdGggYSBodW1hbiByZWFkYWJsZSBmb3JtIG9mIHRo
ZSBsYXllciB0cmVlLCBJZiBkZWJ1ZyBpcyB0cnVlIAogICAgIC8vIHBvaW50ZXJzIGZvciB0aGUg
bGF5ZXJzIGFuZCB0aW1pbmcgZGF0YSB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZCBz
dHJpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGlj
c0xheWVyQ0EuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJD
QS5oCmluZGV4IGMxNzIwNGZhNDEwOTNmMGUxMjg3ZTA0YjgwYjEwODJjOTZiMGU3YTYuLmRiNjgw
N2IzNDJjMmE1NWQ2Mjc3ODgzNDY0YzZkYjViYmQ0YzJkMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0xMTksNiArMTE5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVjdXJzaXZlQ29tbWl0Q2hhbmdlcygpOwogCiAgICAgdmlydHVh
bCB2b2lkIHN5bmNDb21wb3NpdGluZ1N0YXRlKCk7CisgICAgdmlydHVhbCB2b2lkIHN5bmNDb21w
b3NpdGluZ1N0YXRlUmVjdXJzaXZlKCk7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0T3BhY2l0eUludGVybmFsKGZsb2F0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQppbmRleCAzNTVjMDIzYjE4ZTY0OTE3ZjJhYjM3ODMz
NTkyMzQ4MTA3YmJmZGY2Li44NzRjN2Y4NzM5MzZlZGJmMTI1ZWMyODZiMDAyYjgwNjJkMWE3ZDMy
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVy
Q0EubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NMYXllckNB
Lm1tCkBAIC04NjUsNiArODY1LDEyIEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpkaWREaXNwbGF5
KFBsYXRmb3JtTGF5ZXIqIGxheWVyKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6c3luY0NvbXBv
c2l0aW5nU3RhdGUoKQogeworICAgIGNvbW1pdExheWVyQ2hhbmdlc0JlZm9yZVN1YmxheWVycygp
OworICAgIGNvbW1pdExheWVyQ2hhbmdlc0FmdGVyU3VibGF5ZXJzKCk7Cit9CisKK3ZvaWQgR3Jh
cGhpY3NMYXllckNBOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZVJlY3Vyc2l2ZSgpCit7CiAgICAgcmVj
dXJzaXZlQ29tbWl0Q2hhbmdlcygpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60284</attachid>
            <date>2010-07-01 14:12:50 -0700</date>
            <delta_ts>2010-07-02 03:17:15 -0700</delta_ts>
            <desc>Add layer-backed drawing area</desc>
            <filename>bug-41084-20100701141249.patch</filename>
            <type>text/plain</type>
            <size>47596</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
OWIyMWM4MWZjZTdlZjM2NDA1OGYwOWVkNDdiMzYwNTljYzMwMDUzNy4uZjkzNTZiZTgyNjgyN2Q3
NWEyOTg3ZmZjMDM2NWFlYWUxNTc5OWE4NCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMC0wNy0wMSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
d29ya2luZyB3aXRoIHdlYmtpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMDg0CisgICAgICAgIAorICAgICAgICBBZGQgYSBuZXcga2luZCBvZiBE
cmF3aW5nQXJlYSwgd2hpY2ggaXMgYSBMYXllckJhY2tlZERyYXdpbmdBcmVhLCB3aGljaCB3aWxs
IGJlIHVzZWQKKyAgICAgICAgd2hlbiB0aGUgcGFnZSBnb2VzIGludG8gYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgbW9kZS4gSXQgaXMgbm90IHdpcmVkIHVwIHlldC4KKworICAgICAgICAqIFNoYXJl
ZC9Db3JlSVBDU3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmg6IE5ldyAnYXR0
YWNoJyBhbmQgJ2RldGFjaCcgbWVzc2FnZXMKKyAgICAgICAgcmVsYXRlZCB0byBhY2NlbGVyYXRl
ZCBjb21wb3NpdGluZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbToK
KyAgICAgICAgKC1bV0tWaWV3IF9zdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmc6XSk6CisgICAg
ICAgICgtW1dLVmlldyBfc3RvcEFjY2VsZXJhdGVkQ29tcG9zaXRpbmddKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oOgorICAgICAgICBBZGQgYSBzdWJ2aWV3
IG9mIHRoZSBXS1ZpZXcgd2hpY2ggaGFzIGxheWVyLWJhY2tpbmcgZW5hYmxlZCwgYW5kIHB1dCB0
aGUgZHJhd2luZyBhcmVhJ3MKKyAgICAgICAgbGF5ZXIgaW5zaWRlIG9mIHRoYXQuCisgICAgICAg
IAorICAgICAgICAqIFVJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oOgor
ICAgICAgICAoV2ViS2l0OjpDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eTo6YXR0YWNoQ29t
cG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Q2h1bmtlZFVwZGF0ZURyYXdpbmdB
cmVhUHJveHk6OmRldGFjaENvbXBvc2l0aW5nQ29udGV4dCk6IFRoZXNlIG1ldGhvZHMgd2lsbCBu
ZXZlciBiZSBjYWxsZWQKKyAgICAgICAgb24gdGhlIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS4g
U3R1YiB0aGVtIG91dC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5Lmg6
CisgICAgICAgIEFkZCBhdHRhY2hDb21wb3NpdGluZ0NvbnRleHQoKSBhbmQgZGV0YWNoQ29tcG9z
aXRpbmdDb250ZXh0KCkgbWV0aG9kcywgYW5kIGEgbmV3IGRyYXdpbmcgYXJlYQorICAgICAgICB0
eXBlIHRvIHRoZSBlbnVtLgorCisgICAgICAgICogVUlQcm9jZXNzL0xheWVyQmFja2VkRHJhd2lu
Z0FyZWFQcm94eS5jcHA6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXllckJhY2tlZERy
YXdpbmdBcmVhUHJveHkuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL21hYy9MYXllckJh
Y2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW06IEFkZGVkLgorCisgICAgICAgICogV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYSBmaWxl
cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9DaHVua2VkVXBkYXRlRHJhd2luZ0Fy
ZWEuaDogQWRkIHZpcnR1YWwgbWV0aG9kcyBzdHVicy4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpj
cmVhdGUpOiBDcmVhdGUgYSBMYXllckJhY2tlZERyYXdpbmdBcmVhIGlmIGFza2VkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oOiBOZXcgTGF5ZXJCYWNrZWREcmF3
aW5nQXJlYVR5cGUgdHlwZSwgYW5kIG5ldyB2aXJ0dWFsCisgICAgICAgIG1ldGhvZHMgcmVsYXRl
ZCB0byBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9MYXllckJhY2tlZERyYXdpbmdBcmVhLmNwcDogQWRkZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2luZ0FyZWEuaDogQWRkZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllckJhY2tlZERyYXdpbmdBcmVhTWFjLm1tOiBBZGRl
ZC4KKwogMjAxMC0wNy0wMSAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBbmRlcnMgQ2FybHNzb24uCmRpZmYgLS1naXQgYS9X
ZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRz
LmggYi9XZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZUtpbmRzLmgKaW5kZXggOTQyYTI4MDYxZmMwNjVhOTYzZjk4ZjViMzU2ZTA0NTdkYjU3YzJmYS4u
ZWIxNzA0MzNmMzE1OGRhMGFjZDczY2YxZWFjNjE1NmZkY2IxMzJjOCAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5o
CisrKyBiL1dlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L0RyYXdpbmdBcmVhUHJveHlNZXNz
YWdlS2luZHMuaApAQCAtMzQsNyArMzQsMTEgQEAgbmFtZXNwYWNlIERyYXdpbmdBcmVhUHJveHlN
ZXNzYWdlIHsKIAogZW51bSBLaW5kIHsKICAgICBVcGRhdGUsCi0gICAgRGlkU2V0U2l6ZQorICAg
IERpZFNldFNpemUsCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIEF0dGFj
aENvbXBvc2l0aW5nQ29udGV4dCwKKyAgICBEZXRhY2hDb21wb3NpdGluZ0NvbnRleHQsCisjZW5k
aWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3
Lm1tIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KaW5kZXggNjE0YjgwOGUw
ZjMzMDE0NjM1MzZmYjc1NDA5ZTIxYWI2MmVmNzc5OC4uNjBhYjI0OGU0YmYyMDIyNDY5NGQxMTA3
ZjRjNmQ2ZThiY2QxODgzNiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW0KKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0KQEAgLTMw
LDYgKzMwLDcgQEAKIAogLy8gSW1wbGVtZW50YXRpb24KICNpbXBvcnQgIkNodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5LmgiCisjaW1wb3J0ICJMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHku
aCIKICNpbXBvcnQgIlBhZ2VDbGllbnRJbXBsLmgiCiAjaW1wb3J0ICJSdW5Mb29wLmgiCiAjaW1w
b3J0ICJXZWJDb250ZXh0LmgiCkBAIC01NCw2ICs1NSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKICAgICBOU1Rvb2xUaXBUYWcgX2xhc3RUb29sVGlwVGFnOwogICAgIGlkIF90cmFja2lu
Z1JlY3RPd25lcjsKICAgICB2b2lkKiBfdHJhY2tpbmdSZWN0VXNlckRhdGE7CisKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgTlNWaWV3KiBfbGF5ZXJIb3N0aW5nVmlldzsK
KyNlbmRpZgogfQogQGVuZAogCkBAIC00MjcsNCArNDMyLDY0IEBAIHN0YXRpYyBib29sIGlzVmll
d1Zpc2libGUoTlNWaWV3ICp2aWV3KQogICAgIH0KIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykKKy0gKHZvaWQpX3N0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZzooQ0FMYXll
ciopcm9vdExheWVyCit7CisgICAgaWYgKCFfZGF0YS0+X2xheWVySG9zdGluZ1ZpZXcpIHsKKyAg
ICAgICAgTlNWaWV3KiBob3N0aW5nVmlldyA9IFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OltzZWxmIGJvdW5kc11dOworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAg
ICAgIFtob3N0aW5nVmlldyBzZXRBdXRvcmVzaXppbmdNYXNrOihOU1ZpZXdXaWR0aFNpemFibGUg
fCBOU1ZpZXdIZWlnaHRTaXphYmxlKV07CisjZW5kaWYKKyAgICAgICAgCisgICAgICAgIFtzZWxm
IGFkZFN1YnZpZXc6aG9zdGluZ1ZpZXddOworICAgICAgICBbaG9zdGluZ1ZpZXcgcmVsZWFzZV07
CisgICAgICAgIC8vIGhvc3RpbmdWaWV3IGlzIG93bmVkIGJ5IGJlaW5nIGEgc3VidmlldyBvZiBz
ZWxmCisgICAgICAgIF9kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldyA9IGhvc3RpbmdWaWV3OworICAg
IH0KKworICAgIC8vIE1ha2UgYSBjb250YWluZXIgbGF5ZXIsIHdoaWNoIHdpbGwgZ2V0IHNpemVk
L3Bvc2l0aW9uZWQgYnkgQXBwS2l0IGFuZCBDQS4KKyAgICBDQUxheWVyKiB2aWV3TGF5ZXIgPSBb
Q0FMYXllciBsYXllcl07CisKKyNpZiBkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisgICAg
Ly8gVHVybiBvZmYgZGVmYXVsdCBhbmltYXRpb25zLgorICAgIE5TTnVsbCAqbnVsbFZhbHVlID0g
W05TTnVsbCBudWxsXTsKKyAgICBOU0RpY3Rpb25hcnkgKmFjdGlvbnMgPSBbTlNEaWN0aW9uYXJ5
IGRpY3Rpb25hcnlXaXRoT2JqZWN0c0FuZEtleXM6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxWYWx1ZSwgQCJhbmNob3JQb2ludCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxWYWx1ZSwgQCJib3VuZHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxsVmFsdWUsIEAiY29udGVudHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
VmFsdWUsIEAiY29udGVudHNSZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bFZhbHVlLCBAIm9wYWNpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFs
dWUsIEAicG9zaXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUs
IEAic3VibGF5ZXJUcmFuc2Zvcm0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
VmFsdWUsIEAic3VibGF5ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbFZh
bHVlLCBAInRyYW5zZm9ybSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Cisg
ICAgW3ZpZXdMYXllciBzZXRTdHlsZTpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
OmFjdGlvbnMgZm9yS2V5OkAiYWN0aW9ucyJdXTsKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkKKyAgICAvLyBJZiB3ZSBhcmVuJ3QgaW4gdGhlIHdpbmRvdyB5ZXQs
IHdlJ2xsIHVzZSB0aGUgc2NyZWVuJ3Mgc2NhbGUgZmFjdG9yIG5vdywgYW5kIHJlc2V0IHRoZSBz
Y2FsZSAKKyAgICAvLyB2aWEgLXZpZXdEaWRNb3ZlVG9XaW5kb3cuCisgICAgQ0dGbG9hdCBzY2Fs
ZUZhY3RvciA9IFtzZWxmIHdpbmRvd10gPyBbW3NlbGYgd2luZG93XSB1c2VyU3BhY2VTY2FsZUZh
Y3Rvcl0gOiBbW05TU2NyZWVuIG1haW5TY3JlZW5dIHVzZXJTcGFjZVNjYWxlRmFjdG9yXTsKKyAg
ICBbdmlld0xheWVyIHNldFRyYW5zZm9ybTpDQVRyYW5zZm9ybTNETWFrZVNjYWxlKHNjYWxlRmFj
dG9yLCBzY2FsZUZhY3RvciwgMSldOworI2VuZGlmCisKKyAgICBbX2RhdGEtPl9sYXllckhvc3Rp
bmdWaWV3IHNldExheWVyOnZpZXdMYXllcl07CisgICAgW19kYXRhLT5fbGF5ZXJIb3N0aW5nVmll
dyBzZXRXYW50c0xheWVyOllFU107CisgICAgCisgICAgLy8gUGFyZW50IG91ciByb290IGxheWVy
IGluIHRoZSBjb250YWluZXIgbGF5ZXIKKyAgICBbdmlld0xheWVyIGFkZFN1YmxheWVyOnJvb3RM
YXllcl07Cit9CisKKy0gKHZvaWQpX3N0b3BBY2NlbGVyYXRlZENvbXBvc2l0aW5nCit7CisgICAg
aWYgKF9kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldykgeworICAgICAgICBbX2RhdGEtPl9sYXllckhv
c3RpbmdWaWV3IHNldExheWVyOm5pbF07CisgICAgICAgIFtfZGF0YS0+X2xheWVySG9zdGluZ1Zp
ZXcgc2V0V2FudHNMYXllcjpOT107CisgICAgICAgIFtfZGF0YS0+X2xheWVySG9zdGluZ1ZpZXcg
cmVtb3ZlRnJvbVN1cGVydmlld107CisgICAgICAgIF9kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldyA9
IG5pbDsKKyAgICB9Cit9CisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
CiBAZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVy
bmFsLmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKaW5kZXgg
MzljNGNjMjhkZDBiZWNjOGUyZTdmMzJiZDVlYjljMWFhYmJjNjgzMi4uYzcyODcyZGRkMjlkYjJj
MGUyNTBjNzY1M2I4ZTJkYTk2ZmEwYWRkMiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMv
V0tWaWV3SW50ZXJuYWwuaApAQCAtMzAsNCArMzAsOSBAQAogLSAodm9pZClfcHJvY2Vzc0RpZFJl
dml2ZTsKIC0gKHZvaWQpX3Rha2VGb2N1czooQk9PTClkaXJlY3Rpb247CiAtICh2b2lkKV90b29s
VGlwQ2hhbmdlZEZyb206KE5TU3RyaW5nICopb2xkVG9vbFRpcCB0bzooTlNTdHJpbmcgKiluZXdU
b29sVGlwOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorLSAodm9pZClfc3Rh
cnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nOihDQUxheWVyKilyb290TGF5ZXI7CistICh2b2lkKV9z
dG9wQWNjZWxlcmF0ZWRDb21wb3NpdGluZzsKKyNlbmRpZgogQGVuZApkaWZmIC0tZ2l0IGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaCBiL1dlYktpdDIv
VUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmgKaW5kZXggNjRhYzNjMjZh
NTRlOWMwZjkzYWRhZmMxYmE1MTg0M2YyY2FkZDA3MC4uNTM3YTE2YTU1ZGFhNDQ3OTk3NGU4ZGE2
MDAwYzM2ZjhiOTQ2M2IxZiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQ2h1bmtlZFVw
ZGF0ZURyYXdpbmdBcmVhUHJveHkuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWFQcm94eS5oCkBAIC03Nyw2ICs3NywxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkU2V0U2l6ZShVcGRhdGVDaHVuayopOwogICAgIHZvaWQgdXBkYXRlKFVwZGF0ZUNodW5r
Kik7CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lk
IGF0dGFjaENvbXBvc2l0aW5nQ29udGV4dCh1aW50MzJfdCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRldGFjaENvbXBvc2l0aW5nQ29udGV4dCgpIHsgfQorI2VuZGlmCisKICAgICBib29sIG1faXNX
YWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb247CiAgICAgYm9vbCBtX2lzVmlzaWJsZTsK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oIGIvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCmluZGV4IGY0NzVhNjc5MmUyYTA5YzFk
NTQ4ODkxY2IyYTI5MGVhNTA2ODg2MmUuLjYyYjFiYTBhMThkZjZkODU4N2IwZDkyNDc2NDdmZDg0
YzcxNWUwNjAgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHku
aAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmgKQEAgLTUwLDcgKzUw
LDEwIEBAIHR5cGVkZWYgSERDIFBsYXRmb3JtRHJhd2luZ0NvbnRleHQ7CiBjbGFzcyBEcmF3aW5n
QXJlYVByb3h5IHsKIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgewotICAgICAgICBDaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWFUeXBlCisgICAgICAgIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVR5cGUs
CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICBMYXllckJhY2tlZERy
YXdpbmdBcmVhVHlwZSwKKyNlbmRpZgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5EcmF3aW5nQXJl
YVByb3h5KCk7CkBAIC02OCw2ICs3MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGVuY29kZXIuZW5j
b2RlKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpKTsKICAgICB9CiAKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaENvbXBvc2l0aW5n
Q29udGV4dCh1aW50MzJfdCBjb250ZXh0SUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
Q29tcG9zaXRpbmdDb250ZXh0KCkgPSAwOworI2VuZGlmCisKIHByb3RlY3RlZDoKICAgICBEcmF3
aW5nQXJlYVByb3h5KFR5cGUpOwogCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXll
ckJhY2tlZERyYXdpbmdBcmVhUHJveHkuY3BwIGIvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNr
ZWREcmF3aW5nQXJlYVByb3h5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjg3ZjM5OTNmMTM1ZTcwNjI4M2Zh
ZWJmNDg0MWU1YWYwNzRhMWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJMYXll
ckJhY2tlZERyYXdpbmdBcmVhUHJveHkuaCIKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhTWVzc2Fn
ZUtpbmRzLmgiCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6TGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYVByb3h5KFBsYXRmb3JtV2ViVmlldyogd2ViVmlldykKKyAgICA6IERyYXdpbmdB
cmVhUHJveHkoTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVR5cGUpCisgICAgLCBtX2lzV2FpdGluZ0Zv
ckRpZFNldEZyYW1lTm90aWZpY2F0aW9uKGZhbHNlKQorICAgICwgbV9pc1Zpc2libGUodHJ1ZSkK
KyAgICAsIG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCitMYXllckJhY2tlZERyYXdpbmdBcmVh
UHJveHk6On5MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkoKQoreworfQorCit2b2lkIExheWVy
QmFja2VkRHJhd2luZ0FyZWFQcm94eTo6cGFpbnQoY29uc3QgSW50UmVjdCYgcmVjdCwgUGxhdGZv
cm1EcmF3aW5nQ29udGV4dCBjb250ZXh0KQoreworfQorCit2b2lkIExheWVyQmFja2VkRHJhd2lu
Z0FyZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3U2l6ZSkKK3sKKyAgICBXZWJQ
YWdlUHJveHkqIHBhZ2UgPSB0aGlzLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlLT5pc1ZhbGlkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2aWV3U2l6ZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fdmlld1NpemUgPSB2aWV3U2l6ZTsKKyAgICBtX2xhc3RTZXRWaWV3
U2l6ZSA9IHZpZXdTaXplOworCisgICAgcGxhdGZvcm1TZXRTaXplKCk7CisKKyAgICBpZiAobV9p
c1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAg
IG1faXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24gPSB0cnVlOworCisgICAgcGFn
ZS0+cHJvY2VzcygpLT5yZXNwb25zaXZlbmVzc1RpbWVyKCktPnN0YXJ0KCk7CisgICAgcGFnZS0+
cHJvY2VzcygpLT5jb25uZWN0aW9uKCktPnNlbmQoRHJhd2luZ0FyZWFNZXNzYWdlOjpTZXRTaXpl
LCBwYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4odmlld1NpemUpKTsKK30KKworI2lmICFQTEFU
Rk9STShNQUMpCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6cGxhdGZvcm1TZXRT
aXplKCkKK3sKK30KKyNlbmRpZgorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6
c2V0UGFnZUlzVmlzaWJsZShib29sIGlzVmlzaWJsZSkKK3sKKyAgICBXZWJQYWdlUHJveHkqIHBh
Z2UgPSB0aGlzLT5wYWdlKCk7CisKKyAgICBpZiAoaXNWaXNpYmxlID09IG1faXNWaXNpYmxlKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9pc1Zpc2libGUgPSBpc1Zpc2libGU7CisgICAg
aWYgKCFwYWdlLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9pc1Zp
c2libGUpIHsKKyAgICAgICAgLy8gVGVsbCB0aGUgd2ViIHByb2Nlc3MgdGhhdCBpdCBkb2Vzbid0
IG5lZWQgdG8gcGFpbnQgYW55dGhpbmcgZm9yIG5vdy4KKyAgICAgICAgcGFnZS0+cHJvY2Vzcygp
LT5jb25uZWN0aW9uKCktPnNlbmQoRHJhd2luZ0FyZWFNZXNzYWdlOjpTdXNwZW5kUGFpbnRpbmcs
IHBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbigpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICAvLyBUaGUgcGFnZSBpcyBub3cgdmlzaWJsZS4KKyAgICBwYWdlLT5wcm9jZXNz
KCktPmNvbm5lY3Rpb24oKS0+c2VuZChEcmF3aW5nQXJlYU1lc3NhZ2U6OlJlc3VtZVBhaW50aW5n
LCBwYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4oKSk7CisgICAgCisgICAgLy8gRklYTUU6IFdl
IHNob3VsZCByZXF1ZXN0IGEgZnVsbCByZXBhaW50IGhlcmUgaWYgbmVlZGVkLgorfQorICAgIAor
dm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk6OmRpZFNldFNpemUoKQoreworICAgIG1f
aXNXYWl0aW5nRm9yRGlkU2V0RnJhbWVOb3RpZmljYXRpb24gPSBmYWxzZTsKK30KKwordm9pZCBM
YXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk6OnVwZGF0ZSgpCit7CisgICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIHBhZ2UtPnByb2Nlc3MoKS0+Y29ubmVjdGlvbigp
LT5zZW5kKERyYXdpbmdBcmVhTWVzc2FnZTo6RGlkVXBkYXRlLCBwYWdlLT5wYWdlSUQoKSwgQ29y
ZUlQQzo6SW4oKSk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5OjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBhcmd1bWVudHMpCit7CisgICAgc3dp
dGNoIChtZXNzYWdlSUQuZ2V0PERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpLaW5kPigpKSB7Cisg
ICAgICAgIGNhc2UgRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6OlVwZGF0ZTogeworICAgICAgICAg
ICAgdXBkYXRlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpEaWRTZXRTaXplOiB7CisgICAgICAgICAgICBkaWRT
ZXRTaXplKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyAgICAgICAgY2FzZSBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6
QXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0OiB7CisgICAgICAgICAgICB1aW50MzJfdCBjb250ZXh0
SUQ7CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy5kZWNvZGUoQ29yZUlQQzo6T3V0KGNvbnRl
eHRJRCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGF0dGFjaENvbXBv
c2l0aW5nQ29udGV4dChjb250ZXh0SUQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6RGV0YWNoQ29tcG9zaXRpbmdD
b250ZXh0OiB7CisgICAgICAgICAgICBkZXRhY2hDb21wb3NpdGluZ0NvbnRleHQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1n
aXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuaCBiL1dl
YktpdDIvVUlQcm9jZXNzL0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmM1ZmU2N2FkMDE0NTUxNDkxYTVhNTQ5YmQxOTg5ODhjNDMzNzE0MDcKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuaApAQCAt
MCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YVByb3h5X2gKKyNkZWZpbmUgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5X2gKKworI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHku
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBDQUxheWVy
OworQGNsYXNzIFdLVmlldzsKKyNlbHNlCitjbGFzcyBDQUxheWVyOworY2xhc3MgV0tWaWV3Owor
I2VuZGlmCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94
eTsKKworI2lmIFBMQVRGT1JNKE1BQykKK3R5cGVkZWYgV0tWaWV3IFBsYXRmb3JtV2ViVmlldzsK
KyNlbGlmIFBMQVRGT1JNKFdJTikKK2NsYXNzIFdlYlZpZXc7Cit0eXBlZGVmIFdlYlZpZXcgUGxh
dGZvcm1XZWJWaWV3OworI2VuZGlmCisKK2NsYXNzIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94
eSA6IHB1YmxpYyBEcmF3aW5nQXJlYVByb3h5IHsKK3B1YmxpYzoKKyAgICBMYXllckJhY2tlZERy
YXdpbmdBcmVhUHJveHkoUGxhdGZvcm1XZWJWaWV3Kik7CisgICAgdmlydHVhbCB+TGF5ZXJCYWNr
ZWREcmF3aW5nQXJlYVByb3h5KCk7CisKKyAgICAvLyBUaGUgRHJhd2luZ0FyZWFQcm94eSBzaG91
bGQgbmV2ZXIgYmUgZGVjb2RlZCBpdHNlbGYuIEluc3RlYWQsIHRoZSBEcmF3aW5nQXJlYSBzaG91
bGQgYmUgZGVjb2RlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIERyYXdpbmdBcmVhUHJveHk6
OmVuY29kZShlbmNvZGVyKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgV2ViUGFnZVByb3h5KiBw
YWdlKCk7CisKKyAgICAvLyBEcmF3aW5nQXJlYVByb3h5CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiwgUGxhdGZvcm1EcmF3aW5nQ29udGV4dCk7CisgICAgdmlydHVhbCB2
b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQYWdlSXNWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKTsKKworICAgIHZpcnR1YWwgdm9pZCBhdHRh
Y2hDb21wb3NpdGluZ0NvbnRleHQodWludDMyX3QgY29udGV4dElEKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCk7CisgICAgCisgICAgdm9pZCBkaWRTZXRTaXpl
KCk7CisgICAgdm9pZCB1cGRhdGUoKTsKKyAgICAKKyAgICB2b2lkIHBsYXRmb3JtU2V0U2l6ZSgp
OworCisgICAgYm9vbCBtX2lzV2FpdGluZ0ZvckRpZFNldEZyYW1lTm90aWZpY2F0aW9uOworICAg
IGJvb2wgbV9pc1Zpc2libGU7CisKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld1NpemU7IC8v
IFNpemUgb2YgdGhlIEJhY2tpbmdTdG9yZSBhcyB3ZWxsLgorICAgIFdlYkNvcmU6OkludFNpemUg
bV9sYXN0U2V0Vmlld1NpemU7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPENB
TGF5ZXI+IG1fY29tcG9zaXRpbmdSb290TGF5ZXI7CisjZW5kaWYKKworICAgIFBsYXRmb3JtV2Vi
VmlldyogbV93ZWJWaWV3OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5k
aWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorCisjZW5kaWYgLy8gTGF5ZXJCYWNr
ZWREcmF3aW5nQXJlYVByb3h5X2gKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL21hYy9M
YXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0gYi9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5TWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYTQyZDhmMTY4
ZTBkOTAyYzYxYjUyMTFiZjZlNzcwOTg2ZjkxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5TWFjLm1tCkBAIC0wLDAg
KzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVBy
b3h5LmgiCisKKyNpbmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KKworI2luY2x1ZGUg
IkRyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eU1l
c3NhZ2VLaW5kcy5oIgorI2luY2x1ZGUgIlVwZGF0ZUNodW5rLmgiCisjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCisjaW5jbHVkZSAiV0tWaWV3LmgiCisjaW5jbHVkZSAiV0tWaWV3SW50ZXJuYWwuaCIK
KyNpbmNsdWRlICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJQYWdlUHJveHkqIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6cGFnZSgpCit7Cisg
ICAgcmV0dXJuIHRvV0soW21fd2ViVmlldyBwYWdlUmVmXSk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNr
ZWREcmF3aW5nQXJlYVByb3h5OjpwbGF0Zm9ybVNldFNpemUoKQoreworICAgIFttX2NvbXBvc2l0
aW5nUm9vdExheWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIG1fdmlld1NpemUu
d2lkdGgoKSwgbV92aWV3U2l6ZS5oZWlnaHQoKSldOworfQorCit2b2lkIExheWVyQmFja2VkRHJh
d2luZ0FyZWFQcm94eTo6YXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KHVpbnQzMl90IGNvbnRleHRJ
RCkKK3sKKyAgICBtX2NvbXBvc2l0aW5nUm9vdExheWVyID0gV0tNYWtlUmVuZGVyTGF5ZXIoY29u
dGV4dElEKTsKKworICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQgYW5pbWF0aW9ucy4KKyAgICBOU051
bGwgKm51bGxWYWx1ZSA9IFtOU051bGwgbnVsbF07CisgICAgTlNEaWN0aW9uYXJ5ICphY3Rpb25z
ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiYW5jaG9yUG9pbnQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxsVmFsdWUsIEAiYm91bmRzIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRzIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbFZhbHVlLCBAImNvbnRlbnRzUmVjdCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxWYWx1ZSwgQCJvcGFjaXR5IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbFZhbHVlLCBAInBvc2l0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVyVHJhbnNmb3JtIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbFZhbHVlLCBAInN1YmxheWVycyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxWYWx1ZSwgQCJ0cmFuc2Zvcm0iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuaWxdOworICAgIFttX2NvbXBvc2l0aW5nUm9vdExheWVyLmdldCgpIHNldFN0eWxl
OltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6YWN0aW9ucyBmb3JLZXk6QCJhY3Rp
b25zIl1dOworICAgIAorICAgIFttX2NvbXBvc2l0aW5nUm9vdExheWVyLmdldCgpIHNldEFuY2hv
clBvaW50OkNHUG9pbnRaZXJvXTsKKyAgICBbbV9jb21wb3NpdGluZ1Jvb3RMYXllci5nZXQoKSBz
ZXRCb3VuZHM6Q0dSZWN0TWFrZSgwLCAwLCBtX3ZpZXdTaXplLndpZHRoKCksIG1fdmlld1NpemUu
aGVpZ2h0KCkpXTsKKyAgICAKKyAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIHRvIGFuY2hvciB0aGUg
bGF5ZXIgYXQgdGhlIHRvcCwgdG8gYXZvaWQgamlnZ2xlIGR1cmluZyB3aW5kb3cgcmVzaXplLgor
ICAgIFttX2NvbXBvc2l0aW5nUm9vdExheWVyLmdldCgpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNd
OworCisgICAgW21fd2ViVmlldyBfc3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nOm1fY29tcG9z
aXRpbmdSb290TGF5ZXIuZ2V0KCldOworfQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWFQ
cm94eTo6ZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkKK3sKKyAgICBbbV93ZWJWaWV3IF9zdG9w
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ107CisgICAgbV9jb21wb3NpdGluZ1Jvb3RMYXllciA9IDA7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCAzZGY0MjhlYjg5ZTAyMzM1MTAzNmQyOGQ1YWVmM2NlY2M0MTJm
MzQxLi5kMDIzOTA0YTRjMjkwZDUwMDJmMGVlNDllOTQ1ODNjNmRiNDkwMjljIDEwMDY0NAotLS0g
YS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjMsNiArMjMsMTIgQEAKIC8q
IEVuZCBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLworCQkwRjUyNjVCMzExREQzNzY4MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjUyNjVCMTExREQzNzY4MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5j
cHAgKi87IH07CisJCTBGNTI2NUI0MTFERDM3NjgwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdp
bmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjUyNjVCMjExREQzNzY4MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5oICovOyB9
OworCQkwRjUyNjVCNjExREQzNzcwMDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTI2
NUI1MTFERDM3NzAwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhTWFjLm1tICovOyB9
OworCQkwRjUyNjVCOTExREQzNzdGMDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVBy
b3h5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NTI2NUI3MTFERDM3N0YwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuY3Bw
ICovOyB9OworCQkwRjUyNjVCQTExREQzNzdGMDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5n
QXJlYVByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjUyNjVCODExREQzNzdGMDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5
LmggKi87IH07CisJCTBGNTI2NUJDMTFERDM3ODYwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdp
bmdBcmVhUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjUyNjVCQjExREQzNzg2MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YVByb3h5TWFjLm1tICovOyB9OwogCQkxQTEwNDc1QTExMEE1QUQ1MDBBNDNFQ0QgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUFBMUM3REUxMDBFODQ2RTAwNzhERUJDIC8qIEphdmFTY3JpcHRDb3JlLmZy
YW1ld29yayAqLzsgfTsKIAkJMUExQzRFQzgxMEQwNjA5OTAwNUU2N0U3IC8qIFdlYkNvcmUuZnJh
bWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUFBMUM3OUExMDBFN0ZDNTAwNzhERUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQkx
QTMwMDY2RTExMTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMDA2NkMxMTEwRjRGNzAw
MzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKQEAgLTI0Nyw2ICsyNTMsMTIg
QEAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCQkwODY3RDZBNUZFODQw
MzA3QzAyQUFDMDcgLyogQXBwS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQXBwS2l0
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0FwcEtpdC5mcmFt
ZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTA4OUMxNjY3RkU4NDExNThD
MDJBQUMwNyAvKiBFbmdsaXNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5zdHJpbmdzOyBuYW1lID0g
RW5nbGlzaDsgcGF0aCA9IEVuZ2xpc2gubHByb2ovSW5mb1BsaXN0LnN0cmluZ3M7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTI2NUIxMTFERDM3NjgwMDA2RDMzQyAvKiBMYXllckJh
Y2tlZERyYXdpbmdBcmVhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExheWVyQmFja2VkRHJhd2luZ0FyZWEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjUyNjVCMjExREQzNzY4MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXllckJhY2tlZERyYXdpbmdBcmVhLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTI2NUI1MTFERDM3NzAwMDA2RDMzQyAv
KiBMYXllckJhY2tlZERyYXdpbmdBcmVhTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gTGF5ZXJCYWNrZWREcmF3aW5nQXJlYU1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY1MjY1QjcxMUREMzc3RjAwMDZEMzNDIC8qIExheWVyQmFja2Vk
RHJhd2luZ0FyZWFQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjUyNjVCODExREQzNzdGMDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExheWVyQmFja2VkRHJh
d2luZ0FyZWFQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjUyNjVCQjEx
REQzNzg2MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5TWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YVByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxMDU4QzdCMUZFQTU1
ODVFMTFDQTJDQkIgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5m
cmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db2NvYS5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAJCTFBMzAwNjZDMTExMEY0RjcwMDMx
OTM3QyAvKiBSZXNwb25zaXZlbmVzc1RpbWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUEzMEVBQzUxMTVEN0RBMzAwNTNFOTM3IC8qIENvbm5lY3Rpb25NYWMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29ubmVjdGlvbk1hYy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NjksNiArNjgxLDggQEAKIAkJCQlCQzg0NTJBNjExNjJD
ODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuaCAqLywKIAkJCQlCQzVGN0JCMjExODIzNzZDMDA1
MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCAqLywKIAkJCQlCQzVGN0JCMzEx
ODIzNzZDMDA1MkMwMkMgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmggKi8sCisJCQkJMEY1
MjY1QjExMUREMzc2ODAwMDZEMzNDIC8qIExheWVyQmFja2VkRHJhd2luZ0FyZWEuY3BwICovLAor
CQkJCTBGNTI2NUIyMTFERDM3NjgwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhLmgg
Ki8sCiAJCQkJQkMxMTFBREMxMTJGNUI5MzAwMzM3QkFCIC8qIFdlYkZyYW1lLmNwcCAqLywKIAkJ
CQlCQzAzMkQ4OTEwRjQzN0EwMDA1OEMxNUEgLyogV2ViRnJhbWUuaCAqLywKIAkJCQlCQzk2M0Q2
QTExM0REMTkyMDA1NzRCRTIgLyogV2ViUGFnZS5jcHAgKi8sCkBAIC02ODksNiArNzAzLDggQEAK
IAkJCQlCQzI2NTIxNDExODI2MDgxMDAyNDNFMTIgLyogQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVh
UHJveHkuY3BwICovLAogCQkJCUJDMjY1MjE1MTE4MjYwODEwMDI0M0UxMiAvKiBDaHVua2VkVXBk
YXRlRHJhd2luZ0FyZWFQcm94eS5oICovLAogCQkJCUJDMTc3NTNFMTE4QkFCRjAwMDdEOUU5QSAv
KiBHZW5lcmljQ2FsbGJhY2suaCAqLywKKwkJCQkwRjUyNjVCNzExREQzNzdGMDAwNkQzM0MgLyog
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmNwcCAqLywKKwkJCQkwRjUyNjVCODExREQzNzdG
MDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmggKi8sCiAJCQkJQkM2RURB
QTUxMTEyNzFDNjAwRTc2NzhCIC8qIFBhZ2VDbGllbnQuaCAqLywKIAkJCQlCQzU5NzA3NDExNjU5
MUQwMDA1NTFGQ0EgLyogUHJvY2Vzc01vZGVsLmggKi8sCiAJCQkJQkMxMTFCMDgxMTJGNUUzQzAw
MzM3QkFCIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuY3BwICovLApAQCAtOTQ3LDYgKzk2Myw3IEBA
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDNUY3QkI4MTE4MjM3
OTkwMDUyQzAyQyAvKiBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFNYWMuY3BwICovLAorCQkJCTBG
NTI2NUI1MTFERDM3NzAwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhTWFjLm1tICov
LAogCQkJCUJDOTYzRDZEMTEzREQxQTUwMDU3NEJFMiAvKiBXZWJQYWdlTWFjLm1tICovLAogCQkJ
KTsKIAkJCXBhdGggPSBtYWM7CkBAIC05NjUsNiArOTgyLDcgQEAKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIENodW5r
ZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5TWFjLm1tICovLAorCQkJCTBGNTI2NUJCMTFERDM3ODYw
MDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCiAJCQkpOwog
CQkJcGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMDcxLDYgKzEw
ODksOCBAQAogCQkJCUJDRDI1RjE3MTFENkJERTEwMDE2OUIwRSAvKiBXS0J1bmRsZUZyYW1lLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzY0NjgwMzExREJCQTczMDA2NDU1QjAgLyogV0tBcnJheS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY5NzAxMURCRTYwMzAwNjQ1NUIwIC8qIEltbXV0YWJs
ZUFycmF5LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjUyNjVCNDExREQzNzY4MDAwNkQzM0MgLyog
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1MjY1QkExMURE
Mzc3RjAwMDZEMzNDIC8qIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0xMjM2LDYgKzEyNTYsMTAgQEAKIAkJCQlCQ0QyNUYxODExRDZCREUxMDAxNjlCMEUg
LyogV0tCdW5kbGVGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0NjgwQjExREJCRDY5
MDA2NDU1QjAgLyogV0tBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY0Njk2RjExREJF
NjAzMDA2NDU1QjAgLyogSW1tdXRhYmxlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY1
MjY1QjMxMUREMzc2ODAwMDZEMzNDIC8qIExheWVyQmFja2VkRHJhd2luZ0FyZWEuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY1MjY1QjYxMUREMzc3MDAwMDZEMzNDIC8qIExheWVyQmFja2VkRHJh
d2luZ0FyZWFNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQkwRjUyNjVCOTExREQzNzdGMDAwNkQz
M0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGNTI2NUJDMTFERDM3ODYwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmgKaW5kZXggYmMwMGYwMWFiNzZlMTgwMzQ2ZjFm
YmRlYjk5ZGU0NWM4MDRlYTY0Mi4uMTNhZTNmYWZhMDFhZTFjNjEyMGNlNzM0NTJiNDczZmFkOTNi
YmE0NyAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhLmgKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVw
ZGF0ZURyYXdpbmdBcmVhLmgKQEAgLTQ2LDYgKzQ2LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGxheSgpOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
ICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hDb21wb3NpdGluZ0NvbnRleHQoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllciopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hDb21wb3NpdGluZ0NvbnRleHQo
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29tcG9zaXRpbmdMYXllcnMoKSB7IH0KKyNlbmRpZgor
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYpOwogCiBwcml2
YXRlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
Y3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmluZGV4IDRl
YjA0ZGM5NmYzYzFmNGVlYTQ5MzQ0YmRlMmQ4MTU0MmYxNzY3ZDkuLjE2YTY5MTQ4NWFhODExYjUy
MzIwZDBjYTE3NjgyMjJmYmViZjUyYTcgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5jcHAKQEAgLTI3LDYgKzI3LDkgQEAKIAogLy8gU3ViY2xhc3NlcwogI2luY2x1
ZGUgIkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oIgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKKyNpbmNsdWRlICJMYXllckJhY2tlZERyYXdpbmdBcmVhLmgiCisjZW5kaWYKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM3LDYgKzQwLDExIEBAIERyYXdpbmdBcmVhKiBEcmF3
aW5nQXJlYTo6Y3JlYXRlKFR5cGUgdHlwZSwgV2ViUGFnZSogd2ViUGFnZSkKICAgICAgICAgY2Fz
ZSBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFUeXBlOgogICAgICAgICAgICAgZHJhd2luZ0FyZWEg
PSBuZXcgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhKHdlYlBhZ2UpOwogICAgICAgICAgICAgYnJl
YWs7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICBjYXNlIExheWVy
QmFja2VkRHJhd2luZ0FyZWFUeXBlOgorICAgICAgICAgICAgZHJhd2luZ0FyZWEgPSBuZXcgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYSh3ZWJQYWdlKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlm
CiAgICAgfQogCiAgICAgcmV0dXJuIGRyYXdpbmdBcmVhOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggMmRlYTMyMDBmYWE2ZmIxYWNhOTcyZWExMGU2YmM2NDVl
YzA3ZWU4Ny4uOTQ5NDI0OTAzOTE3YmEzZmQ2ZGYwOTg4YzBjOTFmNDNmYzhmYmY0NSAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0zMSw2ICszMSw5IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsKICAgICBjbGFzcyBJbnRTaXpl
OworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBjbGFzcyBHcmFwaGljc0xh
eWVyOworI2VuZGlmCiB9CiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKQEAgLTQ2LDcgKzQ5LDEwIEBA
IGNsYXNzIFdlYlBhZ2U7CiBjbGFzcyBEcmF3aW5nQXJlYSB7CiBwdWJsaWM6CiAgICAgZW51bSBU
eXBlIHsKLSAgICAgICAgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhVHlwZQorICAgICAgICBDaHVu
a2VkVXBkYXRlRHJhd2luZ0FyZWFUeXBlLAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyAgICAgICAgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVR5cGUsCisjZW5kaWYKICAgICB9Owog
CiAgICAgLy8gRklYTUU6IEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gbW92ZSB0aGlzIGNyZWF0ZSBm
dW5jdGlvbiBpbnRvIGEgZmFjdG9yeSBzdHlsZSBjbGFzcy4gCkBAIC02MSw2ICs2NywxMyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5KCkgPSAwOwogCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hDb21wb3Np
dGluZ0NvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2hl
ZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzeW5jQ29t
cG9zaXRpbmdMYXllcnMoKSA9IDA7CisjZW5kaWYKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXImKSA9IDA7CiAKICAgICAvLyBUaGUgRHJhd2luZ0FyZWEgc2hv
dWxkIG5ldmVyIGJlIGVuY29kZWQgaXRzZWxmLiBJbnN0ZWFkLCB0aGUgRHJhd2luZ0FyZWFQcm94
eSBzaG91bGQgYmUgZW5jb2RlZC4KZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0xheWVyQmFja2VkRHJhd2luZ0FyZWEuY3BwIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGM4ZGE3YzY5NTEzYzVl
ZGM3MTU0NzAzMjZlODMzMTI4MTlmOGUyZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2luZ0FyZWEuY3BwCkBAIC0wLDAgKzEsMjI2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2lu
Y2x1ZGUgIkxheWVyQmFja2VkRHJhd2luZ0FyZWEuaCIKKworI2luY2x1ZGUgIkRyYXdpbmdBcmVh
TWVzc2FnZUtpbmRzLmgiCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VJRC5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2luY2x1ZGUgIldlYlBhZ2UuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6TGF5ZXJC
YWNrZWREcmF3aW5nQXJlYShXZWJQYWdlKiB3ZWJQYWdlKQorICAgIDogRHJhd2luZ0FyZWEoTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYVR5cGUsIHdlYlBhZ2UpCisgICAgLCBtX3N5bmNUaW1lcihXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29wKCksIHRoaXMsICZMYXllckJhY2tlZERyYXdpbmdBcmVh
OjpzeW5jQ29tcG9zaXRpbmdMYXllcnMpCisjaWYgUExBVEZPUk0oTUFDKQorICAgICwgbV9yZW1v
dGVMYXllclJlZigwKQorI2VuZGlmCisgICAgLCBtX2F0dGFjaGVkKGZhbHNlKQorICAgICwgbV9z
aG91bGRQYWludCh0cnVlKQoreworICAgIG1fYmFja2luZ0xheWVyID0gR3JhcGhpY3NMYXllcjo6
Y3JlYXRlKHRoaXMpOworICAgIG1fYmFja2luZ0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7
CisjaWZuZGVmIE5ERUJVRworICAgIG1fYmFja2luZ0xheWVyLT5zZXROYW1lKCJEcmF3aW5nQXJl
YSBiYWNraW5nIGxheWVyIik7CisjZW5kaWYKKyAgICBtX2JhY2tpbmdMYXllci0+c3luY0NvbXBv
c2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisgICAgCisgICAgcGxhdGZvcm1Jbml0KCk7
Cit9CisKK0xheWVyQmFja2VkRHJhd2luZ0FyZWE6On5MYXllckJhY2tlZERyYXdpbmdBcmVhKCkK
K3sKKyAgICBwbGF0Zm9ybUNsZWFyKCk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YTo6aW52YWxpZGF0ZVdpbmRvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIGltbWVkaWF0ZSkK
K3sKKworfQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OmludmFsaWRhdGVDb250ZW50
c0FuZFdpbmRvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBib29sIGltbWVkaWF0ZSkKK3sKKyAgICBz
ZXROZWVkc0Rpc3BsYXkocmVjdCk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6
aW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9sbChjb25zdCBJbnRSZWN0JiByZWN0LCBib29s
IGltbWVkaWF0ZSkKK3sKKyAgICBzZXROZWVkc0Rpc3BsYXkocmVjdCk7Cit9CisKK3ZvaWQgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2Nyb2xsKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBj
b25zdCBJbnRSZWN0JiByZWN0VG9TY3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQorewor
ICAgIC8vIEZJWE1FOiBEbyBzb21ldGhpbmcgbXVjaCBzbWFydGVyLgorICAgIHNldE5lZWRzRGlz
cGxheShyZWN0VG9TY3JvbGwpOworfQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnNl
dE5lZWRzRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQoreworICAgIGlmICghbV9yZW1vdGVM
YXllclJlZikKKyAgICAgICAgYXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KDApOworCisgICAgbV9i
YWNraW5nTGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChyZWN0KTsKKyAgICBtX2JhY2tpbmdM
YXllci0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgc2NoZWR1bGVVcGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIoKTsKKyNl
bmRpZgorfQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OmRpc3BsYXkoKQoreworICAg
IC8vIExheW91dCBpZiBuZWNlc3NhcnkuCisgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5lZWRlZCgp
OworfQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnNjaGVkdWxlRGlzcGxheSgpCit7
Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2V0U2l6ZShjb25zdCBJbnRTaXpl
JiB2aWV3U2l6ZSkKK3sKKyAgICBBU1NFUlQobV9zaG91bGRQYWludCk7CisgICAgQVNTRVJUX0FS
Ryh2aWV3U2l6ZSwgIXZpZXdTaXplLmlzRW1wdHkoKSk7CisKKyAgICBtX2JhY2tpbmdMYXllci0+
c2V0U2l6ZSh2aWV3U2l6ZSk7CisgICAgbV9iYWNraW5nTGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0
YXRlRm9yVGhpc0xheWVyT25seSgpOworICAgIAorICAgIG1fd2ViUGFnZS0+c2V0U2l6ZSh2aWV3
U2l6ZSk7CisKKyAgICAvLyBMYXlvdXQgaWYgbmVjZXNzYXJ5LgorICAgIG1fd2ViUGFnZS0+bGF5
b3V0SWZOZWVkZWQoKTsKKworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+
c2VuZChEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6RGlkU2V0U2l6ZSwgbV93ZWJQYWdlLT5wYWdl
SUQoKSwgQ29yZUlQQzo6SW4oMCkpOworfQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6
OnN1c3BlbmRQYWludGluZygpCit7CisgICAgQVNTRVJUKG1fc2hvdWxkUGFpbnQpOworICAgIAor
ICAgIG1fc2hvdWxkUGFpbnQgPSBmYWxzZTsKK30KKwordm9pZCBMYXllckJhY2tlZERyYXdpbmdB
cmVhOjpyZXN1bWVQYWludGluZygpCit7CisgICAgQVNTRVJUKCFtX3Nob3VsZFBhaW50KTsKKyAg
ICAKKyAgICBtX3Nob3VsZFBhaW50ID0gdHJ1ZTsKKyAgICAKKyAgICAvLyBEaXNwbGF5IGlmIG5l
ZWRlZC4KKyAgICBkaXNwbGF5KCk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6
ZGlkVXBkYXRlKCkKK3sKKworICAgIC8vIERpc3BsYXkgaWYgbmVlZGVkLgorICAgIGRpc3BsYXko
KTsKK30KKwordm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhOjpkaWRSZWNlaXZlTWVzc2FnZShD
b3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyJiBhcmd1bWVudHMpCit7CisgICAgc3dpdGNoIChtZXNzYWdlSUQu
Z2V0PERyYXdpbmdBcmVhTWVzc2FnZTo6S2luZD4oKSkgeworICAgICAgICBjYXNlIERyYXdpbmdB
cmVhTWVzc2FnZTo6U2V0U2l6ZTogeworICAgICAgICAgICAgSW50U2l6ZSBzaXplOworICAgICAg
ICAgICAgaWYgKCFhcmd1bWVudHMuZGVjb2RlKENvcmVJUEM6Ok91dChzaXplKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBzZXRTaXplKHNpemUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNhc2UgRHJhd2luZ0FyZWFN
ZXNzYWdlOjpTdXNwZW5kUGFpbnRpbmc6CisgICAgICAgICAgICBzdXNwZW5kUGFpbnRpbmcoKTsK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRHJhd2luZ0FyZWFNZXNzYWdlOjpS
ZXN1bWVQYWludGluZzoKKyAgICAgICAgICAgIHJlc3VtZVBhaW50aW5nKCk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIERyYXdpbmdBcmVhTWVzc2FnZTo6RGlkVXBkYXRlOgor
ICAgICAgICAgICAgZGlkVXBkYXRlKCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICB9Cit9CisKKy8vIEdyYXBoaWNzTGF5ZXJDbGllbnQgbWV0aG9kcwordm9pZCBM
YXllckJhY2tlZERyYXdpbmdBcmVhOjpwYWludENvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5ZXIq
LCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXllclBhaW50aW5n
UGhhc2UsIGNvbnN0IEludFJlY3QmIGluQ2xpcCkKK3sKKyAgICBtX3dlYlBhZ2UtPmRyYXdSZWN0
KGdyYXBoaWNzQ29udGV4dCwgaW5DbGlwKTsKK30KKworYm9vbCBMYXllckJhY2tlZERyYXdpbmdB
cmVhOjpzaG93RGVidWdCb3JkZXJzKCkgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogZ2V0IGZyb20g
c2V0dGluZ3M7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIExheWVyQmFja2VkRHJhd2lu
Z0FyZWE6OnNob3dSZXBhaW50Q291bnRlcigpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGdldCBm
cm9tIHNldHRpbmdzOworICAgIHJldHVybiBmYWxzZTsKK30KKworI2lmICFQTEFURk9STShNQUMp
Cit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OmF0dGFjaENvbXBvc2l0aW5nQ29udGV4dChH
cmFwaGljc0xheWVyKikKK3sKK30KKwordm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhOjpkZXRh
Y2hDb21wb3NpdGluZ0NvbnRleHQoKQoreworfQorCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0Fy
ZWE6OnNjaGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMoKQoreworfQorCit2b2lkIExheWVyQmFj
a2VkRHJhd2luZ0FyZWE6OnN5bmNDb21wb3NpdGluZ0xheWVycygpCit7Cit9CisKK3ZvaWQgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYTo6cGxhdGZvcm1Jbml0KCkKK3sKK30KKwordm9pZCBMYXllckJh
Y2tlZERyYXdpbmdBcmVhOjpwbGF0Zm9ybUNsZWFyKCkKK3sKK30KKyNlbmRpZgorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2lu
Z0FyZWEuaCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2luZ0Fy
ZWEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hYmFhMzMzMDk4ODBjODVmODliNTMxZThhN2IyODZjZmUyYWY0M2Nh
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJCYWNr
ZWREcmF3aW5nQXJlYS5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBM
YXllckJhY2tlZERyYXdpbmdBcmVhX2gKKyNkZWZpbmUgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYV9o
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJEcmF3aW5n
QXJlYS5oIgorI2luY2x1ZGUgIlJ1bkxvb3AuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+CisKKyNpZiBQTEFU
Rk9STShNQUMpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2lmZGVmIF9fT0JKQ19fCitA
Y2xhc3MgQ0FMYXllcjsKKyNlbHNlCitjbGFzcyBDQUxheWVyOworI2VuZGlmCit0eXBlZGVmIHN0
cnVjdCBfX1dLQ0FSZW1vdGVMYXllckNsaWVudFJlZiAqV0tDQVJlbW90ZUxheWVyQ2xpZW50UmVm
OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBHcmFwaGljc0NvbnRl
eHQ7CisgICAgY2xhc3MgR3JhcGhpY3NMYXllcjsKKyAgICBjbGFzcyBJbnRSZWN0OworfQorCitu
YW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYSA6IHB1Ymxp
YyBEcmF3aW5nQXJlYSwgcHJpdmF0ZSBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBMYXllckJhY2tlZERyYXdpbmdBcmVhKFdlYlBhZ2UqKTsKKyAgICB2aXJ0dWFs
IH5MYXllckJhY2tlZERyYXdpbmdBcmVhKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZVdpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBib29sIGltbWVkaWF0ZSk7Cisg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVDb250ZW50c0FuZFdpbmRvdyhjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0LCBib29sIGltbWVkaWF0ZSk7CisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGVDb250ZW50c0ZvclNsb3dTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwg
Ym9vbCBpbW1lZGlhdGUpOworICAgIHZpcnR1YWwgdm9pZCBzY3JvbGwoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3RUb1Njcm9s
bCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9p
ZCBkaXNwbGF5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoQ29tcG9z
aXRpbmdDb250ZXh0KCk7CisgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ29tcG9zaXRpbmdMYXll
clN5bmMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nTGF5ZXJzKCk7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJik7CisKK3ByaXZhdGU6
CisKKyAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIGRvdWJsZSAvKnRp
bWUqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBXZWJD
b3JlOjpHcmFwaGljc0xheWVyKikgeyB9CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NMYXllciosIFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dCYsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBpbkNsaXApOworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgc2hvd0Rl
YnVnQm9yZGVycygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIo
KSBjb25zdDsKKworICAgIHZvaWQgc2NoZWR1bGVEaXNwbGF5KCk7CisgICAgCisgICAgLy8gQ29y
ZUlQQyBtZXNzYWdlIGhhbmRsZXJzLgorICAgIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJiB2aWV3U2l6ZSk7CisgICAgdm9pZCBzdXNwZW5kUGFpbnRpbmcoKTsKKyAgICB2b2lk
IHJlc3VtZVBhaW50aW5nKCk7CisgICAgdm9pZCBkaWRVcGRhdGUoKTsKKyAgICAKKyAgICB2b2lk
IHBsYXRmb3JtSW5pdCgpOworICAgIHZvaWQgcGxhdGZvcm1DbGVhcigpOworCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIHZvaWQgc2V0VXBVcGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIoKTsKKyAg
ICB2b2lkIHNjaGVkdWxlVXBkYXRlTGF5b3V0UnVuTG9vcE9ic2VydmVyKCk7CisgICAgdm9pZCBy
ZW1vdmVVcGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIoKTsKKworICAgIHN0YXRpYyB2b2lkIHVw
ZGF0ZUxheW91dFJ1bkxvb3BPYnNlcnZlckNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVmLCBD
RlJ1bkxvb3BBY3Rpdml0eSwgdm9pZCopOworICAgIHZvaWQgdXBkYXRlTGF5b3V0UnVuTG9vcE9i
c2VydmVyRmlyZWQoKTsKKyNlbmRpZgorCisgICAgUnVuTG9vcDo6VGltZXI8TGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYT4gbV9zeW5jVGltZXI7CisKKyAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NM
YXllcj4gbV9iYWNraW5nTGF5ZXI7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFJldGFpblB0cjxX
S0NBUmVtb3RlTGF5ZXJDbGllbnRSZWY+IG1fcmVtb3RlTGF5ZXJSZWY7CisgICAgUmV0YWluUHRy
PENGUnVuTG9vcE9ic2VydmVyUmVmPiBtX3VwZGF0ZUxheW91dFJ1bkxvb3BPYnNlcnZlcjsKKyNl
bmRpZgorCisgICAgYm9vbCBtX2F0dGFjaGVkOworICAgIGJvb2wgbV9zaG91bGRQYWludDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQorCisjZW5kaWYgLy8gTGF5ZXJCYWNrZWREcmF3aW5nQXJlYV9oCmRpZmYgLS1n
aXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YU1hYy5tbSBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllckJhY2tlZERyYXdp
bmdBcmVhTWFjLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNjNjUzZTQwOTZhYWI4MDI1ZTJlZTRlMWYzMmEwN2I0
NmE5ZjMwZTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYU1hYy5tbQpAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKKyNpbmNsdWRlICJMYXll
ckJhY2tlZERyYXdpbmdBcmVhLmgiCisKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2Fn
ZUtpbmRzLmgiCisjaW5jbHVkZSAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
V2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0dyYXBoaWNzTGF5ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIExheWVyQmFja2Vk
RHJhd2luZ0FyZWE6OnBsYXRmb3JtSW5pdCgpCit7CisgICAgc2V0VXBVcGRhdGVMYXlvdXRSdW5M
b29wT2JzZXJ2ZXIoKTsKK30KKwordm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhOjpwbGF0Zm9y
bUNsZWFyKCkKK3sKKyAgICBpZiAobV91cGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIpIHsKKyAg
ICAgICAgQ0ZSdW5Mb29wT2JzZXJ2ZXJJbnZhbGlkYXRlKG1fdXBkYXRlTGF5b3V0UnVuTG9vcE9i
c2VydmVyLmdldCgpKTsKKyAgICAgICAgbV91cGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIgPSAw
OworICAgIH0KKworICAgIFdLQ0FSZW1vdGVMYXllckNsaWVudEludmFsaWRhdGUobV9yZW1vdGVM
YXllclJlZi5nZXQoKSk7CisgICAgbV9yZW1vdGVMYXllclJlZiA9IDA7Cit9CisKK3ZvaWQgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYTo6YXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KEdyYXBoaWNzTGF5
ZXIqIGxheWVyKQoreworICAgIG1fYmFja2luZ0xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwor
ICAgIGlmIChsYXllcikgeworICAgICAgICBtX2JhY2tpbmdMYXllci0+YWRkQ2hpbGQobGF5ZXIp
OworICAgIH0KKworICAgIG1fYmFja2luZ0xheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZSgpOyAg
ICAgLy8gRklYTUU6IGhhY2sKKyAgICAKKyAgICBtX2JhY2tpbmdMYXllci0+c2V0RGVidWdCb3Jk
ZXIoQ29sb3IoMCwgMCwgMjU1LCAwLjYpLCA0KTsKKyAgICAKKyAgICBpZiAobV9hdHRhY2hlZCkK
KyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2F0dGFjaGVkID0gdHJ1ZTsKKworICAg
IG1hY2hfcG9ydF90IHNlcnZlclBvcnQgPSAwOyAvLyBGSVhNRTogd2lsbCB1c2UgV2ViUHJvY2Vz
czo6c2hhcmVkKCkuY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCk7CisgICAgbV9yZW1vdGVM
YXllclJlZiA9IFdLQ0FSZW1vdGVMYXllckNsaWVudE1ha2VXaXRoU2VydmVyUG9ydChzZXJ2ZXJQ
b3J0KTsKKyAgICBXS0NBUmVtb3RlTGF5ZXJDbGllbnRTZXRMYXllcihtX3JlbW90ZUxheWVyUmVm
LmdldCgpLCBtX2JhY2tpbmdMYXllci0+cGxhdGZvcm1MYXllcigpKTsKKyAgICAKKyAgICB1aW50
MzJfdCBjb250ZXh0SUQgPSBXS0NBUmVtb3RlTGF5ZXJDbGllbnRHZXRDbGllbnRJZChtX3JlbW90
ZUxheWVyUmVmLmdldCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCkt
PnNlbmQoRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6OkF0dGFjaENvbXBvc2l0aW5nQ29udGV4dCwg
bV93ZWJQYWdlLT5wYWdlSUQoKSwgQ29yZUlQQzo6SW4oY29udGV4dElEKSk7Cit9CisKK3ZvaWQg
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6ZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkKK3sKKyAg
ICBtX2JhY2tpbmdMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICBtX2JhY2tpbmdMYXll
ci0+c3luY0NvbXBvc2l0aW5nU3RhdGUoKTsgICAgIC8vIEZJWE1FOiBoYWNrCit9CisKK3ZvaWQg
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpCit7
CisvLyAgICBpZiAobV9zeW5jVGltZXIuaXNBY3RpdmUoKSkKKy8vICAgICAgICByZXR1cm47Cisv
LworLy8gICAgbV9zeW5jVGltZXIuc3RhcnRPbmVTaG90KDApOworCisgICAgc2NoZWR1bGVVcGRh
dGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIoKTsKK30KKwordm9pZCBMYXllckJhY2tlZERyYXdpbmdB
cmVhOjpzeW5jQ29tcG9zaXRpbmdMYXllcnMoKQoreworICAgIGJvb2wgZGlkU3luYyA9IG1fd2Vi
UGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+c3luY0NvbXBvc2l0aW5nU3Rh
dGVSZWN1cnNpdmUoKTsKKyAgICBpZiAoIWRpZFN5bmMpIHsKKyAgICAKKyAgICB9Cit9CisKK3Zv
aWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2V0VXBVcGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2
ZXIoKQoreworICAgIGlmIChtX3VwZGF0ZUxheW91dFJ1bkxvb3BPYnNlcnZlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gUnVuIGJlZm9yZSBDb3JlIEFuaW1hdGlvbnMgY29tbWl0IG9ic2Vy
dmVyLCB3aGljaCBoYXMgb3JkZXIgMjAwMDAwMC4KKyAgICBjb25zdCBDRkluZGV4IHJ1bkxvb3BP
cmRlciA9IDIwMDAwMDAgLSAxOworICAgIENGUnVuTG9vcE9ic2VydmVyQ29udGV4dCBjb250ZXh0
ID0geyAwLCB0aGlzLCAwLCAwLCAwIH07CisgICAgbV91cGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2
ZXIuYWRvcHRDRihDRlJ1bkxvb3BPYnNlcnZlckNyZWF0ZSgwLAorICAgICAgICBrQ0ZSdW5Mb29w
QmVmb3JlV2FpdGluZyB8IGtDRlJ1bkxvb3BFeGl0LCB0cnVlIC8qIHJlcGVhdHMgKi8sCisgICAg
ICAgIHJ1bkxvb3BPcmRlciwgdXBkYXRlTGF5b3V0UnVuTG9vcE9ic2VydmVyQ2FsbGJhY2ssICZj
b250ZXh0KSk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2NoZWR1bGVVcGRh
dGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIoKQoreworICAgIENGUnVuTG9vcFJlZiBjdXJyZW50UnVu
TG9vcCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKKyAgICBpZiAoQ0ZSdW5Mb29wQ29udGFpbnNP
YnNlcnZlcihjdXJyZW50UnVuTG9vcCwgbV91cGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIuZ2V0
KCksIGtDRlJ1bkxvb3BDb21tb25Nb2RlcykpCisgICAgICAgIHJldHVybjsKKworICAgIENGUnVu
TG9vcEFkZE9ic2VydmVyKGN1cnJlbnRSdW5Mb29wLCBtX3VwZGF0ZUxheW91dFJ1bkxvb3BPYnNl
cnZlci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKK30KKwordm9pZCBMYXllckJhY2tl
ZERyYXdpbmdBcmVhOjpyZW1vdmVVcGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2ZXIoKQoreworICAg
IC8vIEZJWE1FOiBjYWNoZSB0aGUgcnVuIGxvb3AgcmVmPworICAgIENGUnVuTG9vcFJlbW92ZU9i
c2VydmVyKENGUnVuTG9vcEdldEN1cnJlbnQoKSwgbV91cGRhdGVMYXlvdXRSdW5Mb29wT2JzZXJ2
ZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYTo6dXBkYXRlTGF5b3V0UnVuTG9vcE9ic2VydmVyQ2FsbGJhY2soQ0ZSdW5Mb29w
T2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5LCB2b2lkKiBpbmZvKQoreworICAgIExheWVy
QmFja2VkRHJhd2luZ0FyZWEqIGRyYXdpbmdBcmVhID0gcmVpbnRlcnByZXRfY2FzdDxMYXllckJh
Y2tlZERyYXdpbmdBcmVhKj4oaW5mbyk7CisgICAgZHJhd2luZ0FyZWEtPnVwZGF0ZUxheW91dFJ1
bkxvb3BPYnNlcnZlckZpcmVkKCk7Cit9CisKK3ZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6
dXBkYXRlTGF5b3V0UnVuTG9vcE9ic2VydmVyRmlyZWQoKQoreworICAgIG1fd2ViUGFnZS0+bGF5
b3V0SWZOZWVkZWQoKTsKKyAgICBzeW5jQ29tcG9zaXRpbmdMYXllcnMoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60301</attachid>
            <date>2010-07-01 15:36:46 -0700</date>
            <delta_ts>2010-07-20 14:16:11 -0700</delta_ts>
            <desc>Render server setup, and style fixes</desc>
            <filename>bug-41084-20100701153645.patch</filename>
            <type>text/plain</type>
            <size>16910</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
YjU0MzI1ODhjZTIyZDhhNzUxNTI2NmJjNGE4YWIyZjE0OWU0Y2NkNC4uZmJhZTNiNDJiZDJhYzNl
Y2JkZmY5YTIxYTA3NzUwNDllMTM0ZjY1MCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MyBAQAogMjAxMC0wNy0wMSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
d29ya2luZyB3aXRoIHdlYmtpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMDg0CisgICAgICAgIAorICAgICAgICBTdGFydCB1cCB0aGUgQ0EgcmVu
ZGVyIHNlcnZlciBpbiB0aGUgVUkgcHJvY2VzcyAoY3VycmVudGx5LCBhdCBsYXVuY2ggdGltZSks
IGFuZAorICAgICAgICBwYXNzIHRoZSBzZXJ2ZXIgcG9ydCBvdmVyIHRvIHRoZSB3ZWIgcHJvY2Vz
cyBmb3IgdXNlIGJ5IHRoZSBsYXllci1iYWNrZWQgZHJhd2luZyBhcmVhLgorICAgICAgICAKKyAg
ICAgICAgRml4IHNvbWUgc3R5bGUgaXNzdWVzIHBvaW50ZWQgb3V0IGJ5IERhbiBCZXJuc3RlaW4u
CisgICAgICAgIAorICAgICAgICBJbXBsZW1lbnQgdGhlIFdlYkNocm9tZUNsaWVudCBtZXRob2Rz
IHRoYXQgcGFzcyB0aGUgYXR0YWNoL2RldGFjaCBjYWxscyB0aHJvdWdoCisgICAgICAgIHRvIHRo
ZSBkcmF3aW5nIGFyZWEuCisKKyAgICAgICAgKiBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJv
Y2Vzc01lc3NhZ2VLaW5kcy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bToKKyAgICAgICAgKC1bV0tWaWV3IF9zdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmc6XSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
c1Byb3h5OjpXZWJQcm9jZXNzUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnNldFVwQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvTGF5ZXJCYWNrZWREcmF3
aW5nQXJlYVByb3h5TWFjLm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc1By
b3h5TWFjLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpzZXRV
cEFjY2VsZXJhdGVkQ29tcG9zaXRpbmcpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6YXR0YWNo
Um9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnNj
aGVkdWxlQ29tcG9zaXRpbmdMYXllclN5bmMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJCYWNrZWREcmF3aW5nQXJlYTo6YXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
OjpXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1l
c3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpjb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQpOgorCisyMDEwLTA3
LTAxICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFJl
dmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KIAogICAgICAgICBHZXQgYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgd29ya2luZyB3aXRoIHdlYmtpdDIKZGlmZiAtLWdpdCBhL1dlYktpdDIvU2hhcmVk
L0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaCBiL1dlYktpdDIvU2hhcmVk
L0NvcmVJUENTdXBwb3J0L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaAppbmRleCA0ZDc2NjEwODQx
OTA5ZDc1ZjkyNTM0NDU5MGI0NWViYmU2ZWU4ZWMzLi4wZTRjZjQ0ZmNmNWNkZjBlMjEzOTU3Mjc2
Y2ViZWY1NzFkMDVhMmNkIDEwMDY0NAotLS0gYS9XZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9y
dC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgKKysrIGIvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1
cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oCkBAIC0zNSw3ICszNSwxMCBAQCBuYW1lc3Bh
Y2UgV2ViUHJvY2Vzc01lc3NhZ2UgewogZW51bSBLaW5kIHsKICAgICBMb2FkSW5qZWN0ZWRCdW5k
bGUsCiAgICAgQ3JlYXRlLAotICAgIFBvc3RNZXNzYWdlCisgICAgUG9zdE1lc3NhZ2UsCisjaWYg
UExBVEZPUk0oTUFDKQorICAgIFNldHVwQWNjZWxlcmF0ZWRDb21wb3NpdGluZ1BvcnQKKyNlbmRp
ZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcu
bW0gYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCA2MGFiMjQ4ZTRi
ZjIwMjI0Njk0ZDExMDdmNGM2ZDZlOGJjZDE4ODM2Li5lZWNhYTFjNjFkNmViNDY4YjljMTlkNjYz
M2UwNGFlMDA5NGZkYjgwIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dL
Vmlldy5tbQorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtNTcs
NyArNTcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICB2b2lkKiBfdHJhY2tpbmdS
ZWN0VXNlckRhdGE7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgTlNW
aWV3KiBfbGF5ZXJIb3N0aW5nVmlldzsKKyAgICBOU1ZpZXcgKl9sYXllckhvc3RpbmdWaWV3Owog
I2VuZGlmCiB9CiBAZW5kCkBAIC00MzMsMjIgKzQzMywyMSBAQCBzdGF0aWMgYm9vbCBpc1ZpZXdW
aXNpYmxlKE5TVmlldyAqdmlldykKIH0KIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLS0gKHZvaWQpX3N0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZzooQ0FMYXllciopcm9vdExh
eWVyCistICh2b2lkKV9zdGFydEFjY2VsZXJhdGVkQ29tcG9zaXRpbmc6KENBTGF5ZXIgKilyb290
TGF5ZXIKIHsKICAgICBpZiAoIV9kYXRhLT5fbGF5ZXJIb3N0aW5nVmlldykgewotICAgICAgICBO
U1ZpZXcqIGhvc3RpbmdWaWV3ID0gW1tOU1ZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W3NlbGYg
Ym91bmRzXV07CisgICAgICAgIE5TVmlldyAqaG9zdGluZ1ZpZXcgPSBbW05TVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpbc2VsZiBib3VuZHNdXTsKICNpZiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQogICAgICAgICBbaG9zdGluZ1ZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFzazooTlNWaWV3
V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSldOwogI2VuZGlmCiAgICAgICAgIAog
ICAgICAgICBbc2VsZiBhZGRTdWJ2aWV3Omhvc3RpbmdWaWV3XTsKICAgICAgICAgW2hvc3RpbmdW
aWV3IHJlbGVhc2VdOwotICAgICAgICAvLyBob3N0aW5nVmlldyBpcyBvd25lZCBieSBiZWluZyBh
IHN1YnZpZXcgb2Ygc2VsZgogICAgICAgICBfZGF0YS0+X2xheWVySG9zdGluZ1ZpZXcgPSBob3N0
aW5nVmlldzsKICAgICB9CiAKICAgICAvLyBNYWtlIGEgY29udGFpbmVyIGxheWVyLCB3aGljaCB3
aWxsIGdldCBzaXplZC9wb3NpdGlvbmVkIGJ5IEFwcEtpdCBhbmQgQ0EuCi0gICAgQ0FMYXllciog
dmlld0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOworICAgIENBTGF5ZXIgKnZpZXdMYXllciA9IFtD
QUxheWVyIGxheWVyXTsKIAogI2lmIGRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKICAgICAv
LyBUdXJuIG9mZiBkZWZhdWx0IGFuaW1hdGlvbnMuCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFj
L1dLVmlld0ludGVybmFsLmgKaW5kZXggYzcyODcyZGRkMjlkYjJjMGUyNTBjNzY1M2I4ZTJkYTk2
ZmEwYWRkMi4uNDA2N2NkY2ZiMWRjZDQ3MDA2NDY0ZmE5MTM2M2EzMzI2ZDdkNmEyOSAxMDA2NDQK
LS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJbnRlcm5hbC5oCisrKyBiL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaApAQCAtMzIsNyArMzIsNyBA
QAogLSAodm9pZClfdG9vbFRpcENoYW5nZWRGcm9tOihOU1N0cmluZyAqKW9sZFRvb2xUaXAgdG86
KE5TU3RyaW5nICopbmV3VG9vbFRpcDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLS0gKHZvaWQpX3N0YXJ0QWNjZWxlcmF0ZWRDb21wb3NpdGluZzooQ0FMYXllciopcm9vdExh
eWVyOworLSAodm9pZClfc3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nOihDQUxheWVyICopcm9v
dExheWVyOwogLSAodm9pZClfc3RvcEFjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAjZW5kaWYKIEBl
bmQKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGQ1NGZkNWMyZTBiMGJj
ODQxYzAyYTIwY2FhYzYwY2ZiZDZmODlkYzYuLmVmZDU5MDljZWE2MWQxMDQ5Nzc1NmIyMTk5NTAw
YWRhZDUyZDdlNGIgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjAs
NiArNjAsMTAgQEAgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQcm9jZXNzUHJveHkoV2ViQ29udGV4dCog
Y29udGV4dCkKICAgICAvLyBXb3VsZCB0aGF0IGJlIGJldHRlciB0aGFuIHNlbmRpbmcgYSBjb25u
ZWN0aW9uPwogICAgIGlmICghY29udGV4dC0+aW5qZWN0ZWRCdW5kbGVQYXRoKCkuaXNFbXB0eSgp
KQogICAgICAgICBzZW5kKFdlYlByb2Nlc3NNZXNzYWdlOjpMb2FkSW5qZWN0ZWRCdW5kbGUsIDAs
IENvcmVJUEM6OkluKGNvbnRleHQtPmluamVjdGVkQnVuZGxlUGF0aCgpKSk7CisKKyNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgc2V0VXBBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KCk7CisjZW5kaWYKIH0KIAogV2ViUHJvY2Vzc1Byb3h5Ojp+V2ViUHJvY2Vzc1Byb3h5KCkKQEAg
LTk0LDYgKzk4LDEyIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0ZXJtaW5hdGUoKQogI2VuZGlm
CiB9CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmICFQTEFURk9STShNQUMp
Cit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkKK3sK
K30KKyNlbmRpZgorCiBXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKS5n
ZXQoKTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggM2YxYjRjZTAyNzEwMGM3
MjYwZjQyNGExNmJhY2U4OTFlMWEwNDIxMy4uZGQxZjI5NDY4YjA1YmNmODRlMDJlMjQ3MjZiZGM2
OGQ2ZjMyNTgzOSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKKysrIGIvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTgyLDYgKzgy
LDEwIEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViUHJvY2Vzc1Byb3h5KFdlYkNvbnRleHQq
KTsKIAogICAgIHZvaWQgY29ubmVjdCgpOworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKKyAgICB2b2lkIHNldFVwQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOworI2VuZGlmCisKICAg
ICBib29sIHNlbmRNZXNzYWdlKENvcmVJUEM6Ok1lc3NhZ2VJRCwgc3RkOjphdXRvX3B0cjxDb3Jl
SVBDOjpBcmd1bWVudEVuY29kZXI+KTsKIAogICAgIHZvaWQgZm9yd2FyZE1lc3NhZ2VUb1dlYkNv
bnRleHQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5TWFjLm1tIGIvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eU1hYy5tbQppbmRleCAyZmE0MmQ4
ZjE2OGUwZDkwMmM2MWI1MjExYmY2ZTc3MDk4NmY5MTUyLi44Nzc1YmM1YTJlMzJlNjlhZDM0Yzk1
YWUxOTM1YmRlZmQwNDYxOTA0IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5TWFjLm1tCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0KQEAgLTI1LDExICsyNSw5IEBACiAK
ICNpbmNsdWRlICJMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuaCIKIAotI2luY2x1ZGUgPFF1
YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFNZXNzYWdlS2lu
ZHMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgiCi0jaW5jbHVk
ZSAiVXBkYXRlQ2h1bmsuaCIKKyNpbmNsdWRlIDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXS1ZpZXcuaCIKICNpbmNsdWRlICJXS1Zp
ZXdJbnRlcm5hbC5oIgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlByb2Nl
c3NQcm94eU1hYy5tbSBiL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlNYWMu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmE4NWZjNDM0M2I0Njk2ZWNlODUyZWNjNDUxZTgyNDViNTI2YWE2Ywot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XZWJQcm9jZXNzUHJveHlN
YWMubW0KQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKKworI2luY2x1ZGUgIk1hY2hQb3J0LmgiCisjaW5jbHVkZSAiV2ViS2l0U3lzdGVt
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VXBBY2NlbGVy
YXRlZENvbXBvc2l0aW5nKCkKK3sKKyAgICBtYWNoX3BvcnRfdCByZW5kZXJTZXJ2ZXJQb3J0ID0g
V0tJbml0aWFsaXplUmVuZGVyU2VydmVyKCk7CisgICAgaWYgKHJlbmRlclNlcnZlclBvcnQgIT0g
TUFDSF9QT1JUX05VTEwpCisgICAgICAgIGNvbm5lY3Rpb24oKS0+c2VuZChXZWJQcm9jZXNzTWVz
c2FnZTo6U2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0aW5nUG9ydCwgMCwgQ29yZUlQQzo6SW4oQ29y
ZUlQQzo6TWFjaFBvcnQocmVuZGVyU2VydmVyUG9ydCwgTUFDSF9NU0dfVFlQRV9DT1BZX1NFTkQp
KSk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJL
aXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQwMjM5MDRhNGMyOTBkNTAwMmYwZWU0OWU5
NDU4M2M2ZGI0OTAyOWMuLjhlMTViNWVlN2RkYTViOWUyODgwMGE1YjMyYzlkOWQwY2NkYzE3ZTUg
MTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOSw2ICsy
OSw3IEBACiAJCTBGNTI2NUI5MTFERDM3N0YwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdB
cmVhUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1MjY1QjcxMUREMzc3RjAwMDZEMzNDIC8qIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94
eS5jcHAgKi87IH07CiAJCTBGNTI2NUJBMTFERDM3N0YwMDA2RDMzQyAvKiBMYXllckJhY2tlZERy
YXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNTI2NUI4MTFERDM3N0YwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVh
UHJveHkuaCAqLzsgfTsKIAkJMEY1MjY1QkMxMUREMzc4NjAwMDZEMzNDIC8qIExheWVyQmFja2Vk
RHJhd2luZ0FyZWFQcm94eU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNTI2NUJCMTFERDM3ODYwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdp
bmdBcmVhUHJveHlNYWMubW0gKi87IH07CisJCTBGNTI2Njc0MTFERDRBNDkwMDA2RDMzQyAvKiBX
ZWJQcm9jZXNzUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjUyNjY3MzExREQ0QTQ5MDAwNkQzM0MgLyogV2ViUHJvY2Vzc1Byb3h5TWFj
Lm1tICovOyB9OwogCQkxQTEwNDc1QTExMEE1QUQ1MDBBNDNFQ0QgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUFBMUM3REUxMDBFODQ2RTAwNzhERUJDIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAq
LzsgfTsKIAkJMUExQzRFQzgxMEQwNjA5OTAwNUU2N0U3IC8qIFdlYkNvcmUuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBMUM3OUEx
MDBFN0ZDNTAwNzhERUJDIC8qIFdlYkNvcmUuZnJhbWV3b3JrICovOyB9OwogCQkxQTMwMDY2RTEx
MTBGNEY3MDAzMTkzN0MgLyogUmVzcG9uc2l2ZW5lc3NUaW1lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzMDA2NkMxMTEwRjRGNzAwMzE5MzdDIC8q
IFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLzsgfTsKQEAgLTI1OSw2ICsyNjAsNyBAQAogCQkwRjUy
NjVCNzExREQzNzdGMDAwNkQzM0MgLyogTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExheWVyQmFja2VkRHJhd2luZ0Fy
ZWFQcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTI2NUI4MTFERDM3
N0YwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTI2NUJCMTFERDM3ODYwMDA2RDMzQyAvKiBMYXll
ckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNTI2NjczMTFERDRBNDkwMDA2RDMzQyAvKiBXZWJQcm9j
ZXNzUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJQcm9jZXNzUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTEwNThD
N0IxRkVBNTU4NUUxMUNBMkNCQiAvKiBDb2NvYS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IENvY29hLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29h
LmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKIAkJMUEzMDA2NkMxMTEw
RjRGNzAwMzE5MzdDIC8qIFJlc3BvbnNpdmVuZXNzVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVzcG9uc2l2ZW5lc3NUaW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTMwRUFDNTExNUQ3REEzMDA1M0U5MzcgLyogQ29ubmVjdGlvbk1hYy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb25uZWN0aW9uTWFjLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTk4Myw2ICs5ODUsNyBAQAogCQkJY2hpbGRy
ZW4gPSAoCiAJCQkJQkMyNjUxRjUxMTgyNUVGODAwMjQzRTEyIC8qIENodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYVByb3h5TWFjLm1tICovLAogCQkJCTBGNTI2NUJCMTFERDM3ODYwMDA2RDMzQyAvKiBM
YXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0gKi8sCisJCQkJMEY1MjY2NzMxMURENEE0
OTAwMDZEMzNDIC8qIFdlYlByb2Nlc3NQcm94eU1hYy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0g
bWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEyNjAsNiArMTI2Myw3IEBACiAJ
CQkJMEY1MjY1QjYxMUREMzc3MDAwMDZEMzNDIC8qIExheWVyQmFja2VkRHJhd2luZ0FyZWFNYWMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjUyNjVCOTExREQzNzdGMDAwNkQzM0MgLyogTGF5ZXJC
YWNrZWREcmF3aW5nQXJlYVByb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTI2NUJDMTFE
RDM3ODYwMDA2RDMzQyAvKiBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0gaW4gU291
cmNlcyAqLywKKwkJCQkwRjUyNjY3NDExREQ0QTQ5MDAwNkQzM0MgLyogV2ViUHJvY2Vzc1Byb3h5
TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDY2ZGM3MjE0MDg2ODM5NjA1MWEw
M2NhMzA4NDVjM2Y0YzFmNWQxNDUuLjhhZmNlZmYwMDgxMGFhZTgwNzE2ZTAyOGFkNjU2NjJkNjk3
OTY0NWUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCkBAIC00MzksOSArNDM5LDEyIEBAIFBhc3NPd25QdHI8SFRNTFBh
cnNlclF1aXJrcz4gV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkKIH0K
IAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50
OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSosIEdyYXBoaWNzTGF5ZXIqKQordm9pZCBX
ZWJDaHJvbWVDbGllbnQ6OmF0dGFjaFJvb3RHcmFwaGljc0xheWVyKEZyYW1lKiwgR3JhcGhpY3NM
YXllciogbGF5ZXIpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAobGF5ZXIpCisg
ICAgICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+YXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KGxh
eWVyKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+ZGV0YWNoQ29t
cG9zaXRpbmdDb250ZXh0KCk7CiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzZXROZWVkc09u
ZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uKCkKQEAgLTQ1MSw3ICs0NTQsNyBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbigpCiAK
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCkKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2NoZWR1
bGVDb21wb3NpdGluZ0xheWVyU3luYygpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXllckJhY2tlZERyYXdpbmdBcmVhTWFjLm1tIGIv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyQmFja2VkRHJhd2luZ0FyZWFNYWMu
bW0KaW5kZXggY2M2NTNlNDA5NmFhYjgwMjVlMmVlNGUxZjMyYTA3YjQ2YTlmMzBlNy4uZGMyMmFk
ZjkzZjA2ZTE4ZmU5ZTdhNzYzZGIzN2M4NjQ3NzhkNjIyMSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyQmFja2VkRHJhd2luZ0FyZWFNYWMubW0KKysrIGIv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyQmFja2VkRHJhd2luZ0FyZWFNYWMu
bW0KQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhOjphdHRhY2hD
b21wb3NpdGluZ0NvbnRleHQoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgICAgIAogICAgIG1f
YXR0YWNoZWQgPSB0cnVlOwogCi0gICAgbWFjaF9wb3J0X3Qgc2VydmVyUG9ydCA9IDA7IC8vIEZJ
WE1FOiB3aWxsIHVzZSBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb21wb3NpdGluZ1JlbmRlclNlcnZl
clBvcnQoKTsKKyAgICBtYWNoX3BvcnRfdCBzZXJ2ZXJQb3J0ID0gV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KCk7CiAgICAgbV9yZW1vdGVMYXllclJlZiA9
IFdLQ0FSZW1vdGVMYXllckNsaWVudE1ha2VXaXRoU2VydmVyUG9ydChzZXJ2ZXJQb3J0KTsKICAg
ICBXS0NBUmVtb3RlTGF5ZXJDbGllbnRTZXRMYXllcihtX3JlbW90ZUxheWVyUmVmLmdldCgpLCBt
X2JhY2tpbmdMYXllci0+cGxhdGZvcm1MYXllcigpKTsKICAgICAKZGlmZiAtLWdpdCBhL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCA1YTU5ODc3ZDU4ZjUyYzFlODVhNGRjM2IxZGRiMTBiOTc4MjE0MzE4Li5k
OTE0YzJiZjkzN2UyNjg3N2NlOTY2YWRkZTEwNDhkNDk0Yzc0N2I0IDEwMDY0NAotLS0gYS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgog
CiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJNYWNoUG9ydC5oIgogI2lu
Y2x1ZGUgIlJ1bkxvb3AuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtNTIsNiArNTMsOSBAQCBXZWJQcm9jZXNzJiBXZWJQcm9j
ZXNzOjpzaGFyZWQoKQogCiBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICA6IG1faW5EaWRD
bG9zZShmYWxzZSkKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JN
KE1BQykKKyAgICAsIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KE1BQ0hfUE9SVF9OVUxM
KQorI2VuZGlmCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCiAgICAgLy8gSW5pdGlh
bGl6ZSBvdXIgcGxhdGZvcm0gc3RyYXRlZ2llcy4KQEAgLTE3Miw2ICsxNzYsMTYgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0
aW9uLCBDb3JlSVBDOjpNZXMKICAgICAgICAgICAgICAgICBmb3J3YXJkTWVzc2FnZVRvSW5qZWN0
ZWRCdW5kbGUobWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oTUFDKQorICAg
ICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6U2V0dXBBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUG9ydDogeworICAgICAgICAgICAgICAgIENvcmVJUEM6Ok1hY2hQb3J0IHBvcnQ7CisgICAg
ICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShwb3J0KSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZl
clBvcnQgPSBwb3J0LnBvcnQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggYjllYjZhMjU1YzlhYWJkOWZiMGY4OGNiOThhZDM2ZWJlMTE2Mjk2NS4uODUyZDA5YTkxOTRk
NGUwOTQzYzNhYmU3Mjc5NWZjY2I1OTUxNzllZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAorKysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBA
IC01Nyw2ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVu
ZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQogCiAgICAgYm9v
bCBpc1NlcGFyYXRlUHJvY2VzcygpIGNvbnN0OworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKSAmJiBQTEFURk9STShNQUMpCisgICAgbWFjaF9wb3J0X3QgY29tcG9zaXRpbmdSZW5k
ZXJTZXJ2ZXJQb3J0KCkgY29uc3QgeyByZXR1cm4gbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBv
cnQ7IH0KKyNlbmRpZgogICAgIAogcHJpdmF0ZToKICAgICBXZWJQcm9jZXNzKCk7CkBAIC03Nyw2
ICs4MSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pbkRpZENsb3NlOwogCiAgICAgUnVuTG9v
cCogbV9ydW5Mb29wOworCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBQTEFU
Rk9STShNQUMpCisgICAgbWFjaF9wb3J0X3QgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7
CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62110</attachid>
            <date>2010-07-20 14:16:14 -0700</date>
            <delta_ts>2010-07-21 09:25:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41084-20100720141613.patch</filename>
            <type>text/plain</type>
            <size>31021</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
N2Q4ZmFmYjYzYWYwZGVlZDExZDIzNDcxZTNhMDliZDliMjgyNWJkNy4uNzA1MDQyYjVlMjVjNTQ3
MDJkZTU2MDc4NzNhY2RjYjQ3MjkyNDZmNCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxMC0wNy0yMCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZXQgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcg
d29ya2luZyB3aXRoIHdlYmtpdDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMDg0CisgICAgICAgIAorICAgICAgICBIb29rIHVwIGR5bmFtaWMgRHJh
d2luZ0FyZWEgc3dpdGNoaW5nLCBzbyB0aGF0IHdoZW4gdGhlIFdlYlByb2Nlc3MgaGl0cyBhIHBh
Z2UKKyAgICAgICAgdGhhdCByZXF1aXJlcyBhY2NlbGVyYXRlZCBjb21wb3NpdGluZywgd2Ugc3dp
dGNoIHRvIHRoZSBMYXllckJhY2tlZERyYXdpbmdBcmVhLgorICAgICAgICAKKyAgICAgICAgKiBT
aGFyZWQvQ29yZUlQQ1N1cHBvcnQvRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5kcy5oOgorICAg
ICAgICAoRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2U6Oik6CisgICAgICAgICogU2hhcmVkL0NvcmVJ
UENTdXBwb3J0L1dlYlBhZ2VQcm94eU1lc3NhZ2VLaW5kcy5oOgorICAgICAgICAoV2ViUGFnZVBy
b3h5TWVzc2FnZTo6KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1w
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdlRGlkTGVhdmVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW06CisgICAgICAgICgtW1dLVmlldyBfc3RhcnRBY2NlbGVyYXRlZENvbXBvc2l0aW5nOl0p
OgorICAgICAgICAoLVtXS1ZpZXcgX3N3aXRjaFRvRHJhd2luZ0FyZWFUeXBlSWZOZWNlc3Nhcnk6
RHJhd2luZ0FyZWFQcm94eTo6XSk6CisgICAgICAgICgtW1dLVmlldyBfcGFnZURpZEVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ10pOgorICAgICAgICAoLVtXS1ZpZXcgX3BhZ2VEaWRMZWF2ZUFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmddKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0Fy
ZWFQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVBy
b3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9DaHVua2Vk
VXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6Oik6CisgICAgICAg
IChXZWJLaXQ6OkRyYXdpbmdBcmVhUHJveHk6OnR5cGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9M
YXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllckJh
Y2tlZERyYXdpbmdBcmVhUHJveHk6OmRpZFNldFNpemUpOgorICAgICAgICAoV2ViS2l0OjpMYXll
ckJhY2tlZERyYXdpbmdBcmVhUHJveHk6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKFdl
YktpdDo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2Up
OgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvUGFnZUNsaWVudC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldERyYXdpbmdB
cmVhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEVudGVyQWNjZWxlcmF0ZWRD
b21wb3NpdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkTGVhdmVBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMu
bW06CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6YXR0YWNo
Q29tcG9zaXRpbmdDb250ZXh0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6
YXR0YWNoUm9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9D
aHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6Q2h1bmtlZFVwZGF0
ZURyYXdpbmdBcmVhOjphdHRhY2hDb21wb3NpdGluZ0NvbnRleHQpOgorICAgICAgICAoV2ViS2l0
OjpDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEcmF3aW5nQXJlYTo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaDoKKyAgICAgICAgKFdlYktpdDo6RHJhd2luZ0FyZWE6Oik6CisgICAgICAg
IChXZWJLaXQ6OkRyYXdpbmdBcmVhOjp0eXBlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyQmFj
a2VkRHJhd2luZ0FyZWE6OkxheWVyQmFja2VkRHJhd2luZ0FyZWEpOgorICAgICAgICAoV2ViS2l0
OjpMYXllckJhY2tlZERyYXdpbmdBcmVhOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2Vi
S2l0OjpMYXllckJhY2tlZERyYXdpbmdBcmVhOjpzZXRTaXplKToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6ZGlkVXBkYXRlKToKKyAgICAgICAgKFdlYktpdDo6TGF5
ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9MYXllckJhY2tlZERyYXdpbmdBcmVhLmg6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpjaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9MYXllckJhY2tlZERyYXdpbmdBcmVhTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpMYXll
ckJhY2tlZERyYXdpbmdBcmVhOjpwbGF0Zm9ybUluaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXll
ckJhY2tlZERyYXdpbmdBcmVhOjphdHRhY2hDb21wb3NpdGluZ0NvbnRleHQpOgorICAgICAgICAo
V2ViS2l0OjpMYXllckJhY2tlZERyYXdpbmdBcmVhOjpkZXRhY2hDb21wb3NpdGluZ0NvbnRleHQp
OgorICAgICAgICAoV2ViS2l0OjpMYXllckJhY2tlZERyYXdpbmdBcmVhOjpzZXRSb290Q29tcG9z
aXRpbmdMYXllcik6CisKIDIwMTAtMDctMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYktpdDIv
U2hhcmVkL0NvcmVJUENTdXBwb3J0L0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCBiL1dl
YktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L0RyYXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMu
aAppbmRleCBlYjE3MDQzM2YzMTU4ZGEwYWNkNzNjZjFlYWM2MTU2ZmRjYjEzMmM4Li44YjI5ZWQx
NjY3OGM4Y2Y2YmY2ODAwNThmZDVjN2EwY2Y5YzBhMTQwIDEwMDY0NAotLS0gYS9XZWJLaXQyL1No
YXJlZC9Db3JlSVBDU3VwcG9ydC9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZUtpbmRzLmgKKysrIGIv
V2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VLaW5k
cy5oCkBAIC0zNyw3ICszNyw2IEBAIGVudW0gS2luZCB7CiAgICAgRGlkU2V0U2l6ZSwKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgQXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0
LAotICAgIERldGFjaENvbXBvc2l0aW5nQ29udGV4dCwKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRz
LmggYi9XZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlUHJveHlNZXNzYWdlS2lu
ZHMuaAppbmRleCAyYzk1NjI0ODdiZjYyZmY2N2ViNWEzYzgzN2UxZGNiOTk2NzFmM2E4Li44YWNl
ZDRkZGM4MjIwOWM1ZjAzZWM4M2E3NDIwZTg5MTJjZTk2MmYzIDEwMDY0NAotLS0gYS9XZWJLaXQy
L1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlUHJveHlNZXNzYWdlS2luZHMuaAorKysgYi9X
ZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdlUHJveHlNZXNzYWdlS2luZHMuaApA
QCAtNzMsNiArNzMsMTAgQEAgZW51bSBLaW5kIHsKICAgICBCYWNrRm9yd2FyZEl0ZW1BdEluZGV4
LAogICAgIEJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCwKICAgICBCYWNrRm9yd2FyZEZvcndhcmRM
aXN0Q291bnQsCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgRGlkQ2hh
bmdlQWNjZWxlcmF0ZWRDb21wb3NpdGluZywKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oIGIvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDY1YmEwZGY1MjhjZTdiMWE4ODQ0
MDEyZmZmODNlMzEyMzQ4NTVjNDIuLjkxMGEwZThjZjM5OWU4Mjk0N2JjNjRhMjRmNTFiY2MyNDQz
ZGI4YzUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudElt
cGwuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAg
LTQ4LDYgKzQ4LDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHRvb2xUaXBDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgb2xkVG9vbFRpcCwgY29uc3QgV2ViQ29yZTo6U3RyaW5n
JiBuZXdUb29sVGlwKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6
OkN1cnNvciYpOwogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIHZvaWQg
cGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOworICAgIHZvaWQgcGFnZURpZExl
YXZlQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOworI2VuZGlmCisKICAgICBXS1ZpZXcqIG1fd2tW
aWV3OwogfTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9QYWdlQ2xp
ZW50SW1wbC5tbSBiL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvUGFnZUNsaWVudEltcGwubW0K
aW5kZXggMjRjYjcyMWFiNTE4YzMzZjE4ODM2MjZkMGMzZmNmZjA1NDUxZGI4MS4uNzY2NGEwNDg0
MmU3MjkyOTQ0ZGQ4N2M2ZjljZThiZjlkZTkyMTQyMSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL21hYy9QYWdlQ2xpZW50SW1wbC5tbQorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCkBAIC03NSw0ICs3NSwxNiBAQCB2b2lkIFBhZ2VDbGll
bnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCiAgICAgW21f
d2tWaWV3IF9zZXRDdXJzb3I6Y3Vyc29yLnBsYXRmb3JtQ3Vyc29yKCldOwogfQogCisjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZURpZEVu
dGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCit7CisgICAgW21fd2tWaWV3IF9wYWdlRGlkRW50
ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFn
ZURpZExlYXZlQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCit7CisgICAgW21fd2tWaWV3IF9wYWdl
RGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nXTsKK30KKyNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0gYi9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvbWFjL1dLVmlldy5tbQppbmRleCAyYTllMGNkYjRiMmIyZWNiYmEwMWU3MDVkMWM3ZTlmOWMy
YzdlZDM4Li41YjcyZTVmYTA4MmY5OGQzNWJlNmZkZmIwYjNmN2FjNDlmNzMzYTM3IDEwMDY0NAot
LS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQorKysgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQpAQCAtNDU3LDYgKzQ1NywxMCBAQCBzdGF0aWMgYm9v
bCBpc1ZpZXdWaXNpYmxlKE5TVmlldyAqdmlldykKICAgICAvLyBNYWtlIGEgY29udGFpbmVyIGxh
eWVyLCB3aGljaCB3aWxsIGdldCBzaXplZC9wb3NpdGlvbmVkIGJ5IEFwcEtpdCBhbmQgQ0EuCiAg
ICAgQ0FMYXllciAqdmlld0xheWVyID0gW0NBTGF5ZXIgbGF5ZXJdOwogCisjaWZuZGVmIE5ERUJV
RworICAgIFt2aWV3TGF5ZXIgc2V0TmFtZTpAImhvc3RpbmcgbGF5ZXIiXTsKKyNlbmRpZgorCiAj
aWYgZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQogICAgIC8vIFR1cm4gb2ZmIGRlZmF1bHQg
YW5pbWF0aW9ucy4KICAgICBOU051bGwgKm51bGxWYWx1ZSA9IFtOU051bGwgbnVsbF07CkBAIC00
OTcsNiArNTAxLDQzIEBAIHN0YXRpYyBib29sIGlzVmlld1Zpc2libGUoTlNWaWV3ICp2aWV3KQog
ICAgICAgICBfZGF0YS0+X2xheWVySG9zdGluZ1ZpZXcgPSBuaWw7CiAgICAgfQogfQorCistICh2
b2lkKV9zd2l0Y2hUb0RyYXdpbmdBcmVhVHlwZUlmTmVjZXNzYXJ5OihEcmF3aW5nQXJlYVByb3h5
OjpUeXBlKXR5cGUKK3sKKyAgICBEcmF3aW5nQXJlYVByb3h5OjpUeXBlIGV4aXN0aW5nRHJhd2lu
Z0FyZWFUeXBlID0gX2RhdGEtPl9wYWdlLT5kcmF3aW5nQXJlYSgpID8gX2RhdGEtPl9wYWdlLT5k
cmF3aW5nQXJlYSgpLT50eXBlKCkgOiBEcmF3aW5nQXJlYVByb3h5OjpOb25lOworICAgIGlmIChl
eGlzdGluZ0RyYXdpbmdBcmVhVHlwZSA9PSB0eXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBE
cmF3aW5nQXJlYVByb3h5KiBuZXdEcmF3aW5nQXJlYSA9IDA7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgICAgIGNhc2UgRHJhd2luZ0FyZWFQcm94eTo6Tm9uZToKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERyYXdpbmdBcmVhUHJveHk6OkNodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YVR5cGU6IHsKKyAgICAgICAgICAgIG5ld0RyYXdpbmdBcmVhID0gbmV3IENodW5rZWRVcGRhdGVE
cmF3aW5nQXJlYVByb3h5KHNlbGYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEcmF3aW5nQXJlYVByb3h5OjpMYXllckJhY2tlZERyYXdpbmdBcmVhVHlwZTog
eworICAgICAgICAgICAgbmV3RHJhd2luZ0FyZWEgPSBuZXcgTGF5ZXJCYWNrZWREcmF3aW5nQXJl
YVByb3h5KHNlbGYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBuZXdEcmF3aW5nQXJlYS0+c2V0U2l6ZShJbnRTaXplKFtzZWxmIGZyYW1lXS5zaXplKSk7CisK
KyAgICBfZGF0YS0+X3BhZ2UtPmRyYXdpbmdBcmVhKCktPmRldGFjaENvbXBvc2l0aW5nQ29udGV4
dCgpOworICAgIF9kYXRhLT5fcGFnZS0+c2V0RHJhd2luZ0FyZWEobmV3RHJhd2luZ0FyZWEpOwor
fQorCistICh2b2lkKV9wYWdlRGlkRW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nCit7CisgICAg
W3NlbGYgX3N3aXRjaFRvRHJhd2luZ0FyZWFUeXBlSWZOZWNlc3Nhcnk6RHJhd2luZ0FyZWFQcm94
eTo6TGF5ZXJCYWNrZWREcmF3aW5nQXJlYVR5cGVdOworfQorCistICh2b2lkKV9wYWdlRGlkTGVh
dmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nCit7CisgICAgLy8gRklYTUU6IHdlIG1heSB3YW50IHRv
IGF2b2lkIGZsaXBwaW5nIGJhY2sgdG8gdGhlIG5vbi1sYXllci1iYWNrZWQgZHJhd2luZyBhcmVh
IHVudGlsIHRoZSBuZXh0IHBhZ2UgbG9hZCwgdG8gYXZvaWQgdGhyYXNoaW5nLgorICAgIFtzZWxm
IF9zd2l0Y2hUb0RyYXdpbmdBcmVhVHlwZUlmTmVjZXNzYXJ5OkRyYXdpbmdBcmVhUHJveHk6OkNo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYVR5cGVdOworfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKIAogQGVuZApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L21hYy9XS1ZpZXdJbnRlcm5hbC5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXdJ
bnRlcm5hbC5oCmluZGV4IDFlODgyYWYxNGE5NDNlNTdmN2I3NTU1MjVlZjU4NDA0NjRlZWRlOWIu
LjMxNzI3ODhhNjhhMmUwOWFiYzVhZGMzZjQxODQxNDJjZDk0ZTI3MzcgMTAwNjQ0Ci0tLSBhL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3SW50ZXJuYWwuaAorKysgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvbWFjL1dLVmlld0ludGVybmFsLmgKQEAgLTM1LDUgKzM1LDcgQEAKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAtICh2b2lkKV9zdGFydEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmc6KENBTGF5ZXIgKilyb290TGF5ZXI7CiAtICh2b2lkKV9zdG9wQWNjZWxlcmF0ZWRD
b21wb3NpdGluZzsKKy0gKHZvaWQpX3BhZ2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmc7
CistICh2b2lkKV9wYWdlRGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nOwogI2VuZGlmCiBA
ZW5kCmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0Fy
ZWFQcm94eS5jcHAgYi9XZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQ
cm94eS5jcHAKaW5kZXggNzU0ZTRjYTYxMzg0MGMwNzU2NWVjZGVjM2UwZDNiMTRiZDUzYjk4OS4u
Zjg2MWYyNWY4MTA3ZjEyNmQwMDFhZjcyMzAyZGFmMGQzNDk4NWI0MCAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuY3BwCisrKyBiL1dl
YktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtMTU5
LDQgKzE1OSw5IEBAIHZvaWQgQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlCiAgICAgfQogfQogCit2b2lkIENo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoQ29yZUlQ
Qzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyJiwgQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJ
UHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFQcm94eS5oIGIvV2ViS2l0Mi9VSVByb2Nl
c3MvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhUHJveHkuaAppbmRleCAyNjQ0YWJiNDkwN2I2MDgz
NTFhYmFhNWNjYmU1Yzc0ZmZhMzIzZTZkLi4wNTMyM2I0MmY5ZGVjMWMxMTQxYTE3ZDUzY2JiNmZj
NWVmODA0Yzc5IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9DaHVua2VkVXBkYXRlRHJh
d2luZ0FyZWFQcm94eS5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNzL0NodW5rZWRVcGRhdGVEcmF3
aW5nQXJlYVByb3h5LmgKQEAgLTcxLDYgKzcxLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIERyYXdp
bmdBcmVhUHJveHkKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
Jik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25u
ZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXImLCBD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIFBsYXRmb3JtRHJhd2luZ0NvbnRleHQpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UGFnZUlzVmlzaWJsZShib29sIGlzVmlzaWJsZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmgKaW5kZXggMWJkN2RhM2NmMTY5MmQwMTNlZmM4ZDc1YWMwNTcxZTllZDY1YzNjNi4u
MzgxN2ViMWY1NWM3MGZhZGFmYmNiNTgwNDVjYjQ2NGVkY2M2MmQ1OSAxMDA2NDQKLS0tIGEvV2Vi
S2l0Mi9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5oCisrKyBiL1dlYktpdDIvVUlQcm9jZXNz
L0RyYXdpbmdBcmVhUHJveHkuaApAQCAtNTUsNyArNTUsOSBAQCB0eXBlZGVmIFFQYWludGVyKiBQ
bGF0Zm9ybURyYXdpbmdDb250ZXh0OwogCiBjbGFzcyBEcmF3aW5nQXJlYVByb3h5IHsKIHB1Ymxp
YzoKKyAgICAvLyBUaGlzIGhhcyB0byBtYXRjaCBEcmF3aW5nQXJlYTo6VHlwZS4KICAgICBlbnVt
IFR5cGUgeworICAgICAgICBOb25lLAogICAgICAgICBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFU
eXBlLAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgTGF5ZXJCYWNr
ZWREcmF3aW5nQXJlYVR5cGUsCkBAIC02NCw3ICs2NiwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIH5EcmF3aW5nQXJlYVByb3h5KCk7CiAKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXImLCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBsYXRmb3JtRHJhd2luZ0NvbnRleHQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgPSAw
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVBy
b3h5LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eS5j
cHAKaW5kZXggZmI4N2YzOTkzZjEzNWU3MDYyODNmYWViZjQ4NDFlNWFmMDc0YTFkOC4uYWJkMGIy
YmMwMzBhZGEzYWZjNzY1MmU0MjIyNzQ2ZmNmMGE3ZTEzMCAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9V
SVByb2Nlc3MvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9XZWJLaXQyL1VJ
UHJvY2Vzcy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuY3BwCkBAIC0xMDcsNiArMTA3LDkg
QEAgdm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk6OnNldFBhZ2VJc1Zpc2libGUoYm9v
bCBpc1Zpc2libGUpCiB2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6ZGlkU2V0U2l6
ZSgpCiB7CiAgICAgbV9pc1dhaXRpbmdGb3JEaWRTZXRGcmFtZU5vdGlmaWNhdGlvbiA9IGZhbHNl
OworCisgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gdGhpcy0+cGFnZSgpOworICAgIHBhZ2UtPnBy
b2Nlc3MoKS0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7CiB9CiAKIHZvaWQgTGF5ZXJC
YWNrZWREcmF3aW5nQXJlYVByb3h5Ojp1cGRhdGUoKQpAQCAtMTI2LDYgKzEyOSwxNCBAQCB2b2lk
IExheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUAogICAgICAgICAgICAgZGlkU2V0U2l6ZSgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVh
UHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQ
Qzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBhcmd1bWVu
dHMsIENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpCit7CisgICAgc3dpdGNoIChtZXNzYWdlSUQu
Z2V0PERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpLaW5kPigpKSB7CiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgICAgICBjYXNlIERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpB
dHRhY2hDb21wb3NpdGluZ0NvbnRleHQ6IHsKICAgICAgICAgICAgIHVpbnQzMl90IGNvbnRleHRJ
RDsKQEAgLTEzNCwxMCArMTQ1LDYgQEAgdm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk6
OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVAKICAgICAgICAg
ICAgIGF0dGFjaENvbXBvc2l0aW5nQ29udGV4dChjb250ZXh0SUQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6RGV0
YWNoQ29tcG9zaXRpbmdDb250ZXh0OiB7Ci0gICAgICAgICAgICBkZXRhY2hDb21wb3NpdGluZ0Nv
bnRleHQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9VSVByb2Nlc3MvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5LmggYi9XZWJLaXQy
L1VJUHJvY2Vzcy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHkuaAppbmRleCBjNWZlNjdhZDAx
NDU1MTQ5MWE1YTU0OWJkMTk4OTg4YzQzMzcxNDA3Li44MGYzY2FiNTk4ZGUzYjIwN2NiOTk0NjYy
MzM0OGRiYzdjZGY2NTVhIDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllckJhY2tl
ZERyYXdpbmdBcmVhUHJveHkuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9MYXllckJhY2tlZERy
YXdpbmdBcmVhUHJveHkuaApAQCAtNjksNiArNjksOCBAQCBwcml2YXRlOgogCiAgICAgLy8gRHJh
d2luZ0FyZWFQcm94eQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBD
OjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYs
IENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYpOworCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBQbGF0Zm9ybURyYXdpbmdDb250ZXh0KTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAgICAgdmlydHVhbCB2
b2lkIHNldFBhZ2VJc1Zpc2libGUoYm9vbCBpc1Zpc2libGUpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CmluZGV4IDBkYmQyMGVmMGViZGIyNDE4MWUwNTgxZWNiYmI1MzZhOGNiZGFkMTIuLmZjNGJiY2Y1
NTA5OTA0MzE3NDlhMmVkNzliZmFjNmI1ODJlY2FmYzkgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgK
QEAgLTQ0LDYgKzQ0LDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdG9vbFRpcENoYW5n
ZWQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJikgPSAwOwog
CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSA9IDA7
CisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2b2lkIHBh
Z2VEaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHBhZ2VEaWRMZWF2ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSA9IDA7CisjZW5kaWYKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXgg
ZTQ5ZTc2ZWFmZTI0NTJkNmRmNGJlZGIxZWY0ZGFkNjE5ZjMyYmY3OS4uYjFlOTljYmZjMjYyODMy
YWQxOTMwZDhiNTNhYjRjMzk3NzgwZDEwYSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC0xMDQsNiArMTA0LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQ2xpZW50KFBh
Z2VDbGllbnQqIHBhZ2VDbGllbnQpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNl
dERyYXdpbmdBcmVhKERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdBcmVhKQoreworICAgIGlmIChk
cmF3aW5nQXJlYSA9PSBtX2RyYXdpbmdBcmVhKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ry
YXdpbmdBcmVhID0gZHJhd2luZ0FyZWE7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojppbml0aWFs
aXplTG9hZGVyQ2xpZW50KFdLUGFnZUxvYWRlckNsaWVudCogbG9hZENsaWVudCkKIHsKICAgICBt
X2xvYWRlckNsaWVudC5pbml0aWFsaXplKGxvYWRDbGllbnQpOwpAQCAtNjE2LDggKzYyNCwxMyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgQ29yZUlQQzo6TQogICAgIH0KIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVz
c2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBhcmd1bWVudHMsIENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6
Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgYXJndW1lbnRz
LCBDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIHJlcGx5KQogeworICAgIGlmIChtZXNzYWdlSUQu
aXM8Q29yZUlQQzo6TWVzc2FnZUNsYXNzRHJhd2luZ0FyZWFQcm94eT4oKSkgeworICAgICAgICBt
X2RyYXdpbmdBcmVhLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlE
LCBhcmd1bWVudHMsIHJlcGx5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHN3aXRj
aCAobWVzc2FnZUlELmdldDxXZWJQYWdlUHJveHlNZXNzYWdlOjpLaW5kPigpKSB7CiAgICAgICAg
IGNhc2UgV2ViUGFnZVByb3h5TWVzc2FnZTo6Q3JlYXRlTmV3UGFnZTogewogICAgICAgICAgICAg
V2ViUGFnZVByb3h5KiBuZXdQYWdlID0gY3JlYXRlTmV3UGFnZSgpOwpAQCAtNjY3LDYgKzY4MCwy
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKENvcmVJUEM6OkNv
bm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSQogICAgICAgICAgICAgcmVwbHkuZW5jb2RlKENv
cmVJUEM6OkluKGZvcndhcmRMaXN0Q291bnQpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICAgICBjYXNlIFdlYlBh
Z2VQcm94eU1lc3NhZ2U6OkRpZENoYW5nZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmc6IHsKKyAgICAg
ICAgICAgIGJvb2wgY29tcG9zaXRpbmc7CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy5kZWNv
ZGUoQ29yZUlQQzo6T3V0KGNvbXBvc2l0aW5nKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBpZiAoY29tcG9zaXRpbmcpCisgICAgICAgICAgICAgICAgZGlkRW50ZXJB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgZGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CisKKyAgICAgICAgICAgIERyYXdp
bmdBcmVhUHJveHk6OlR5cGUgZHJhd2luZ0FyZWFUeXBlID0gZHJhd2luZ0FyZWEoKS0+dHlwZSgp
OworICAgICAgICAgICAgcmVwbHkuZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQz
Ml90PihkcmF3aW5nQXJlYVR5cGUpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
I2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC05NTcsNCArOTg2LDE2IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkUmV2aXZlKCkKICAgICBtX3BhZ2VDbGllbnQt
PnByb2Nlc3NEaWRSZXZpdmUoKTsKIH0KIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKQor
eworICAgIG1fcGFnZUNsaWVudC0+cGFnZURpZEVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZygp
OworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTGVhdmVBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnBhZ2VEaWRMZWF2ZUFjY2VsZXJhdGVkQ29tcG9zaXRp
bmcoKTsKK30KKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmggYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NTRkMmFjNzlj
NmE3MmZiZWRmNGIyMmJiNmE1NDFkMTA1NzBlYjhkLi45NTU5YWMwMzEwODFlMjI2M2U5MjZkODk1
YTA1MzJjNWQ1YWU2N2M1IDEwMDY0NAotLS0gYS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODQsNiArODQs
NyBAQCBwdWJsaWM6CiAgICAgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KIAogICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdpbmdB
cmVhKCkgeyByZXR1cm4gbV9kcmF3aW5nQXJlYS5nZXQoKTsgfQorICAgIHZvaWQgc2V0RHJhd2lu
Z0FyZWEoRHJhd2luZ0FyZWFQcm94eSopOwogCiAgICAgV2ViQmFja0ZvcndhcmRMaXN0KiBiYWNr
Rm9yd2FyZExpc3QoKSB7IHJldHVybiBtX2JhY2tGb3J3YXJkTGlzdC5nZXQoKTsgfQogCkBAIC0x
NDIsNiArMTQzLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHByb2Nlc3NEaWRFeGl0KCk7CiAgICAg
dm9pZCBwcm9jZXNzRGlkUmV2aXZlKCk7CiAKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgdm9pZCBkaWRFbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKTsKKyAgICB2b2lk
IGRpZExlYXZlQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpOworI2VuZGlmCisKICAgICBXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdDsKICAgICBXZWJQYWdlTmFtZXNwYWNlKiBwYWdlTmFt
ZXNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlTmFtZXNwYWNlLmdldCgpOyB9CiAKZGlmZiAt
LWdpdCBhL1dlYktpdDIvVUlQcm9jZXNzL21hYy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlN
YWMubW0gYi9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYVByb3h5
TWFjLm1tCmluZGV4IDliMDM5YmNlNGU5NzcxYWNmNWYzMmJmMzM0ODFlMjE5MmY0MjE3OWUuLjdm
NzBkZTFlNjkxOTdiNTkxODM3ODMxNmM5NGU3MTcxYzZhMzE4NzAgMTAwNjQ0Ci0tLSBhL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9MYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHlNYWMubW0KKysrIGIv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL0xheWVyQmFja2VkRHJhd2luZ0FyZWFQcm94eU1hYy5tbQpA
QCAtNzEsOCArNzEsMTMgQEAgdm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhUHJveHk6OmF0dGFj
aENvbXBvc2l0aW5nQ29udGV4dCh1aW50MzJfdCBjb250ZXh0SUQpCiAgICAgW21fY29tcG9zaXRp
bmdSb290TGF5ZXIuZ2V0KCkgc2V0QW5jaG9yUG9pbnQ6Q0dQb2ludFplcm9dOwogICAgIFttX2Nv
bXBvc2l0aW5nUm9vdExheWVyLmdldCgpIHNldEJvdW5kczpDR1JlY3RNYWtlKDAsIDAsIG1fdmll
d1NpemUud2lkdGgoKSwgbV92aWV3U2l6ZS5oZWlnaHQoKSldOwogICAgIAotICAgIC8vIFRoaXMg
aXMgcmVxdWlyZWQgdG8gYW5jaG9yIHRoZSBsYXllciBhdCB0aGUgdG9wLCB0byBhdm9pZCBqaWdn
bGUgZHVyaW5nIHdpbmRvdyByZXNpemUuCi0gICAgW21fY29tcG9zaXRpbmdSb290TGF5ZXIuZ2V0
KCkgc2V0R2VvbWV0cnlGbGlwcGVkOllFU107CisgICAgLy8gRklYTUU6IHRoaXMgZml4ZXMgdGhl
IGxheWVyIGppZ2dsZSB3aGVuIHJlc2l6aW5nIHRoZSB3aW5kb3csIGJ1dCBicmVha3MgbGF5ZXIg
ZmxpcHBpbmcgYmVjYXVzZQorICAgIC8vIENBIGRvZXNuJ3QgcHJvcGFnYXRlIHRoZSBrQ0FMYXll
ckZsYWdGbGlwcGVkQWJvdmUgdGhyb3VnaCB0aGUgcmVtb3RlIGxheWVyLgorICAgIC8vIFttX2Nv
bXBvc2l0aW5nUm9vdExheWVyLmdldCgpIHNldEdlb21ldHJ5RmxpcHBlZDpZRVNdOworCisjaWZu
ZGVmIE5ERUJVRworICAgIFttX2NvbXBvc2l0aW5nUm9vdExheWVyLmdldCgpIHNldE5hbWU6QCJD
b21wb3NpdGluZyByb290IGxheWVyIl07CisjZW5kaWYKIAogICAgIFttX3dlYlZpZXcgX3N0YXJ0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZzptX2NvbXBvc2l0aW5nUm9vdExheWVyLmdldCgpXTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcAppbmRleCA4MzI4YTZhNmNmY2M4MTE1ZGQzODU5MGVhMGFiYzRmZDYwNjRl
MzhlLi4wODE2ZGU5N2M3ZGFlZmI1YjQ5YWY5NTQ1YmY4ODFjN2QxM2UzMTI1IDEwMDY0NAotLS0g
YS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAor
KysgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cApAQCAtNDQ5LDkgKzQ0OSw5IEBAIFBhc3NPd25QdHI8SFRNTFBhcnNlclF1aXJrcz4gV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVIVE1MUGFyc2VyUXVpcmtzKCkKIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjphdHRhY2hSb290R3JhcGhpY3NMYXllcihGcmFtZSosIEdyYXBoaWNzTGF5ZXIqIGxheWVyKQog
ewogICAgIGlmIChsYXllcikKLSAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5hdHRhY2hD
b21wb3NpdGluZ0NvbnRleHQobGF5ZXIpOworICAgICAgICBtX3BhZ2UtPmVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUobGF5ZXIpOwogICAgIGVsc2UKLSAgICAgICAgbV9wYWdlLT5kcmF3
aW5nQXJlYSgpLT5kZXRhY2hDb21wb3NpdGluZ0NvbnRleHQoKTsKKyAgICAgICAgbV9wYWdlLT5l
eGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnNldE5lZWRzT25lU2hvdERyYXdpbmdTeW5jaHJvbml6YXRpb24oKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmggYi9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaAppbmRl
eCAxM2FlM2ZhZmEwMWFlMWM2MTIwY2U3MzQ1MmI0NzNmYWQ5M2JiYTQ3Li4zODYyOWZhOWQ2YmU2
ZDA5Y2JiNzI0ZDJlZDJmZTM3OWNiNWQzZjcyIDEwMDY0NAotLS0gYS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaAorKysgYi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9DaHVua2VkVXBkYXRlRHJhd2luZ0FyZWEuaApAQCAtNDcsOCArNDcsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoKTsKIAogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoQ29tcG9zaXRpbmdDb250
ZXh0KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
Q29tcG9zaXRpbmdDb250ZXh0KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRldGFjaENvbXBvc2l0
aW5nQ29udGV4dCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXll
cihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxl
Q29tcG9zaXRpbmdMYXllclN5bmMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3luY0NvbXBvc2l0
aW5nTGF5ZXJzKCkgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmNwcAppbmRleCBjNTUzOTY0M2Y2MGNhZTMzZDkwNmQwZWYxY2E4OWRjZjQzMTU0MGM0
Li45YmU2YjRmMTkyMjVkMTI1NmNiMDU3NjA5NDI5MmNhZTZjMDg3YjU0IDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC0zNyw2ICszNyw5IEBAIERyYXdp
bmdBcmVhKiBEcmF3aW5nQXJlYTo6Y3JlYXRlKFR5cGUgdHlwZSwgV2ViUGFnZSogd2ViUGFnZSkK
IHsKICAgICBEcmF3aW5nQXJlYSogZHJhd2luZ0FyZWEgPSAwOwogICAgIHN3aXRjaCAodHlwZSkg
eworICAgICAgICBjYXNlIE5vbmU6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENodW5rZWRVcGRhdGVEcmF3aW5nQXJl
YVR5cGU6CiAgICAgICAgICAgICBkcmF3aW5nQXJlYSA9IG5ldyBDaHVua2VkVXBkYXRlRHJhd2lu
Z0FyZWEod2ViUGFnZSk7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDk0OTQyNDkwMzkxN2JhM2ZkNmRmMDk4OGMwYzkxZjQz
ZmM4ZmJmNDUuLmNkNDYxODg0ZjMzZDNiYjU4ZWExNTU4NDhhYTdiYTU2OTM5ODQwOTIgMTAwNjQ0
Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtNDgsNyArNDgsOSBAQCBj
bGFzcyBXZWJQYWdlOwogCiBjbGFzcyBEcmF3aW5nQXJlYSB7CiBwdWJsaWM6CisgICAgLy8gVGhp
cyBoYXMgdG8gbWF0Y2ggRHJhd2luZ0FyZWFQcm94eTo6VHlwZS4KICAgICBlbnVtIFR5cGUgewor
ICAgICAgICBOb25lLAogICAgICAgICBDaHVua2VkVXBkYXRlRHJhd2luZ0FyZWFUeXBlLAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAgICAgTGF5ZXJCYWNrZWREcmF3aW5n
QXJlYVR5cGUsCkBAIC01OSw2ICs2MSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRHJhd2luZ0Fy
ZWEqIGNyZWF0ZShUeXBlLCBXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+RHJhd2luZ0FyZWEoKTsK
ICAgICAKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAKICAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVdpbmRvdyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBy
ZWN0LCBib29sIGltbWVkaWF0ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlQ29u
dGVudHNBbmRXaW5kb3coY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgYm9vbCBpbW1lZGlh
dGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUNvbnRlbnRzRm9yU2xvd1Njcm9s
bChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0LCBib29sIGltbWVkaWF0ZSkgPSAwOwpAQCAt
NjgsOCArNzIsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoKSA9IDA7CiAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVhbCB2b2lkIGF0dGFj
aENvbXBvc2l0aW5nQ29udGV4dChXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2hDb21wb3NpdGluZ0NvbnRleHQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGRldGFjaENvbXBvc2l0aW5nQ29udGV4dCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Um9vdENvbXBvc2l0aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc3luY0NvbXBvc2l0aW5nTGF5ZXJzKCkgPSAwOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllckJhY2tlZERyYXdpbmdBcmVhLmNwcCBi
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2luZ0FyZWEuY3BwCmlu
ZGV4IGRmM2RmZjk0NjI2ZjU1NzRiOGVkZmY5YzNiNzcwYWQ2ZWQzMDNjYTYuLmYzZmNkZGFjNGVj
OWQ1OGJmODViYTI4ZGU4ZWUyMTc4YzY3NzQ4NGQgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2luZ0FyZWEuY3BwCisrKyBiL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2luZ0FyZWEuY3BwCkBAIC01NCw2ICs1NCw3
IEBAIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OkxheWVyQmFja2VkRHJhd2luZ0FyZWEoV2ViUGFn
ZSogd2ViUGFnZSkKICAgICBtX2JhY2tpbmdMYXllci0+c2V0TmFtZSgiRHJhd2luZ0FyZWEgYmFj
a2luZyBsYXllciIpOwogI2VuZGlmCiAgICAgbV9iYWNraW5nTGF5ZXItPnN5bmNDb21wb3NpdGlu
Z1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworICAgIG1fYmFja2luZ0xheWVyLT5zZXRDb250ZW50
c09yaWVudGF0aW9uKEdyYXBoaWNzTGF5ZXI6OkNvbXBvc2l0aW5nQ29vcmRpbmF0ZXNCb3R0b21V
cCk7CiAgICAgCiAgICAgcGxhdGZvcm1Jbml0KCk7CiB9CkBAIC04NiwxMSArODcsNiBAQCB2b2lk
IExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnNjcm9sbChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdCYgcgogCiB2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnNldE5l
ZWRzRGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0KQogewotI2lmIFBMQVRGT1JNKE1BQykgJiYg
SEFWRShIT1NURURfQ09SRV9BTklNQVRJT04pCi0gICAgaWYgKCFtX3JlbW90ZUxheWVyUmVmKQot
ICAgICAgICBhdHRhY2hDb21wb3NpdGluZ0NvbnRleHQoMCk7Ci0jZW5kaWYKLQogICAgIG1fYmFj
a2luZ0xheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7CiAgICAgbV9iYWNraW5nTGF5
ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwogCkBAIC0xMjIsNyAr
MTE4LDcgQEAgdm9pZCBMYXllckJhY2tlZERyYXdpbmdBcmVhOjpzZXRTaXplKGNvbnN0IEludFNp
emUmIHZpZXdTaXplKQogICAgIC8vIExheW91dCBpZiBuZWNlc3NhcnkuCiAgICAgbV93ZWJQYWdl
LT5sYXlvdXRJZk5lZWRlZCgpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlv
bigpLT5zZW5kKERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpEaWRTZXRTaXplLCBtX3dlYlBhZ2Ut
PnBhZ2VJRCgpLCBDb3JlSVBDOjpJbigwKSk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29u
bmVjdGlvbigpLT5zZW5kKERyYXdpbmdBcmVhUHJveHlNZXNzYWdlOjpEaWRTZXRTaXplLCBtX3dl
YlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbigpKTsKIH0KIAogdm9pZCBMYXllckJhY2tlZERy
YXdpbmdBcmVhOjpzdXNwZW5kUGFpbnRpbmcoKQpAQCAtMTQ0LDcgKzE0MCw2IEBAIHZvaWQgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYTo6cmVzdW1lUGFpbnRpbmcoKQogCiB2b2lkIExheWVyQmFja2Vk
RHJhd2luZ0FyZWE6OmRpZFVwZGF0ZSgpCiB7Ci0KICAgICAvLyBEaXNwbGF5IGlmIG5lZWRlZC4K
ICAgICBkaXNwbGF5KCk7CiB9CkBAIC0yMDYsNiArMjAxLDEyIEBAIHZvaWQgTGF5ZXJCYWNrZWRE
cmF3aW5nQXJlYTo6ZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkKIHsKIH0KIAorI2lmICFQTEFU
Rk9STShNQUMpCit2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGlu
Z0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKQoreworfQorI2VuZGlmCisKIHZvaWQgTGF5
ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpCiB7CiB9
CmRpZmYgLS1naXQgYS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllckJhY2tlZERyYXdp
bmdBcmVhLmggYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllckJhY2tlZERyYXdpbmdB
cmVhLmgKaW5kZXggMzgxZjVmMWM0Zjc1ZjJjY2MzYzJlNDU0ZDVkZTFjY2MwOTFlN2JmOC4uYjQ0
Njc0MTU1ZGMwM2U5N2I1MmZkNjI0MWRjZjgwNmE4MmQ4ZDk2OSAxMDA2NDQKLS0tIGEvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJCYWNrZWREcmF3aW5nQXJlYS5oCisrKyBiL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyQmFja2VkRHJhd2luZ0FyZWEuaApAQCAtNjMsOCAr
NjMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE5lZWRzRGlzcGxheShjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BsYXkoKTsKIAotICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2hDb21wb3NpdGluZ0NvbnRleHQoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ciopOworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hDb21wb3NpdGluZ0NvbnRleHQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCk7CisgICAgdmlydHVhbCB2b2lk
IHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2NoZWR1bGVDb21wb3NpdGluZ0xheWVyU3luYygpOwogICAgIHZpcnR1YWwg
dm9pZCBzeW5jQ29tcG9zaXRpbmdMYXllcnMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAppbmRleCAzZTI2ZmMzZGU1ZjkyZTZjM2VjODdjMmFiY2Y4ZDNlOTIyZGZkMjM3
Li5jMWM0MDJlMDQ5NjdlYWZlZTgwYmZkOWZlY2MwMGRjZDZlZGJlNzQxIDEwMDY0NAotLS0gYS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMTM4LDYgKzEzOCw0MSBAQCBTdHJpbmcgV2Vi
UGFnZTo6cmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSBjb25zdAogICAgIHJldHVy
biBleHRlcm5hbFJlcHJlc2VudGF0aW9uKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgUmVuZGVy
QXNUZXh0QmVoYXZpb3JOb3JtYWwpOwogfQogCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQordm9pZCBXZWJQYWdlOjpjaGFuZ2VBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShXZWJD
b3JlOjpHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICBib29sIGNvbXBvc2l0aW5nID0gbGF5
ZXI7CisgICAgCisgICAgLy8gVGVsbCB0aGUgVUkgcHJvY2VzcyB0aGF0IGFjY2VsZXJhdGVkIGNv
bXBvc2l0aW5nIGNoYW5nZWQuIEl0IG1heSByZXNwb25kIGJ5IGNoYW5naW5nCisgICAgLy8gZHJh
d2luZyBhcmVhIHR5cGVzLgorICAgIHVpbnQzMl90IG5ld0RyYXdpbmdBcmVhVHlwZTsKKyAgICBX
ZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKFdlYlBhZ2VQcm94eU1l
c3NhZ2U6OkRpZENoYW5nZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2VJRCwgQ29yZUlQQzo6SW4oY29t
cG9zaXRpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ29yZUlQQzo6T3V0KG5ld0RyYXdpbmdBcmVhVHlwZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBDOjpDb25uZWN0aW9uOjpOb1RpbWVv
dXQpOworICAgIAorICAgIERyYXdpbmdBcmVhOjpUeXBlIG5ld1R5cGUgPSBzdGF0aWNfY2FzdDxE
cmF3aW5nQXJlYTo6VHlwZT4obmV3RHJhd2luZ0FyZWFUeXBlKTsKKyAgICBpZiAobmV3VHlwZSAh
PSBkcmF3aW5nQXJlYSgpLT50eXBlKCkpIHsKKyAgICAgICAgbV9kcmF3aW5nQXJlYSA9IERyYXdp
bmdBcmVhOjpjcmVhdGUobmV3VHlwZSwgdGhpcyk7CisgICAgICAgIG1fZHJhd2luZ0FyZWEtPnNl
dE5lZWRzRGlzcGxheShJbnRSZWN0KEludFBvaW50KDAsIDApLCBtX3ZpZXdTaXplKSk7CisgICAg
fQorfQorCit2b2lkIFdlYlBhZ2U6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgY2hhbmdlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUobGF5ZXIpOworICAgIAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICBt
X2RyYXdpbmdBcmVhLT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihsYXllcik7CisjZW5kaWYKK30K
Kwordm9pZCBXZWJQYWdlOjpleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQoreworICAg
IGNoYW5nZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKDApOworfQorI2VuZGlmCisKIFdlYkZy
YW1lKiBXZWJQYWdlOjp3ZWJGcmFtZSh1aW50NjRfdCBmcmFtZUlEKSBjb25zdAogewogICAgIHJl
dHVybiBtX2ZyYW1lTWFwLmdldChmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBjYWZlZjM5N2JiYTg0YzEyY2Y2ZmFiZGM4ZDRjYjQwMTU5MjUxODdiLi5hOGRm
MWU1MWQxZDYzNDU3ZjYxMGRkMzJhNGMxYTlkYmY3YzY0YjU5IDEwMDY0NAotLS0gYS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oCkBAIC0xMDAsNiArMTAwLDEyIEBAIHB1YmxpYzoKICAgICBXZWJGcmFt
ZSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KICAgICBX
ZWJDb3JlOjpTdHJpbmcgcmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oKSBjb25zdDsK
IAorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICB2b2lkIGNoYW5nZUFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2b2lk
IGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoV2ViQ29yZTo6R3JhcGhpY3NMYXllciop
OworICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCk7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgdmlld1NpemUsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBEcmF3aW5nQXJlYTo6
VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9MYXll
ckJhY2tlZERyYXdpbmdBcmVhTWFjLm1tIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0xheWVyQmFja2VkRHJhd2luZ0FyZWFNYWMubW0KaW5kZXggNzIwODhjNjkxNWU3MzcyMGFkYmU0
MzA1MzZhZTQyMDdiYThiM2Q4Yi4uY2E5OTM3NzY5ZDM5NjYwZTlkYmRmOTI1MzUxNjdjYzhjOWVl
OTM0OSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0xheWVyQmFj
a2VkRHJhd2luZ0FyZWFNYWMubW0KKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0xheWVyQmFja2VkRHJhd2luZ0FyZWFNYWMubW0KQEAgLTQyLDYgKzQyLDEwIEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB2b2lkIExheWVyQmFja2VkRHJhd2luZ0FyZWE6OnBsYXRmb3JtSW5pdCgp
CiB7CisjaWYgSEFWRShIT1NURURfQ09SRV9BTklNQVRJT04pCisgICAgYXR0YWNoQ29tcG9zaXRp
bmdDb250ZXh0KCk7CisjZW5kaWYKKwogICAgIHNldFVwVXBkYXRlTGF5b3V0UnVuTG9vcE9ic2Vy
dmVyKCk7CiB9CiAKQEAgLTU4LDE4ICs2MiwxMiBAQCB2b2lkIExheWVyQmFja2VkRHJhd2luZ0Fy
ZWE6OnBsYXRmb3JtQ2xlYXIoKQogI2VuZGlmCiB9CiAKLXZvaWQgTGF5ZXJCYWNrZWREcmF3aW5n
QXJlYTo6YXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQordm9p
ZCBMYXllckJhY2tlZERyYXdpbmdBcmVhOjphdHRhY2hDb21wb3NpdGluZ0NvbnRleHQoKQogewot
ICAgIG1fYmFja2luZ0xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgIGlmIChsYXllcikK
LSAgICAgICAgbV9iYWNraW5nTGF5ZXItPmFkZENoaWxkKGxheWVyKTsKLQotICAgIG1fYmFja2lu
Z0xheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZSgpOyAgICAgLy8gRklYTUU6IGhhY2sKLSAgICAK
LSAgICBtX2JhY2tpbmdMYXllci0+c2V0RGVidWdCb3JkZXIoQ29sb3IoMCwgMCwgMjU1LCAwLjYp
LCA0KTsKLSAgICAKICAgICBpZiAobV9hdHRhY2hlZCkKICAgICAgICAgcmV0dXJuOworCisgICAg
bV9iYWNraW5nTGF5ZXItPnN5bmNDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOwog
ICAgICAgICAKICAgICBtX2F0dGFjaGVkID0gdHJ1ZTsKIApAQCAtNzksMTQgKzc3LDIyIEBAIHZv
aWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6YXR0YWNoQ29tcG9zaXRpbmdDb250ZXh0KEdyYXBo
aWNzTGF5ZXIqIGxheWVyKQogICAgIFdLQ0FSZW1vdGVMYXllckNsaWVudFNldExheWVyKG1fcmVt
b3RlTGF5ZXJSZWYuZ2V0KCksIG1fYmFja2luZ0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwogICAg
IAogICAgIHVpbnQzMl90IGNvbnRleHRJRCA9IFdLQ0FSZW1vdGVMYXllckNsaWVudEdldENsaWVu
dElkKG1fcmVtb3RlTGF5ZXJSZWYuZ2V0KCkpOwotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNv
bm5lY3Rpb24oKS0+c2VuZChEcmF3aW5nQXJlYVByb3h5TWVzc2FnZTo6QXR0YWNoQ29tcG9zaXRp
bmdDb250ZXh0LCBtX3dlYlBhZ2UtPnBhZ2VJRCgpLCBDb3JlSVBDOjpJbihjb250ZXh0SUQpKTsK
KyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKERyYXdpbmdB
cmVhUHJveHlNZXNzYWdlOjpBdHRhY2hDb21wb3NpdGluZ0NvbnRleHQsIG1fd2ViUGFnZS0+cGFn
ZUlEKCksIENvcmVJUEM6OkluKGNvbnRleHRJRCksIENvcmVJUEM6Ok91dCgpLCBDb3JlSVBDOjpD
b25uZWN0aW9uOjpOb1RpbWVvdXQpOwogI2VuZGlmCiB9CiAKIHZvaWQgTGF5ZXJCYWNrZWREcmF3
aW5nQXJlYTo6ZGV0YWNoQ29tcG9zaXRpbmdDb250ZXh0KCkKIHsKICAgICBtX2JhY2tpbmdMYXll
ci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICBtX2JhY2tpbmdMYXllci0+c3luY0NvbXBvc2l0
aW5nU3RhdGUoKTsgICAgIC8vIEZJWE1FOiBoYWNrCisgICAgbV9iYWNraW5nTGF5ZXItPnN5bmND
b21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpOworfQorCit2b2lkIExheWVyQmFja2Vk
RHJhd2luZ0FyZWE6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqIGxheWVyKQoreworICAgIG1fYmFja2luZ0xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwor
ICAgIGlmIChsYXllcikKKyAgICAgICAgbV9iYWNraW5nTGF5ZXItPmFkZENoaWxkKGxheWVyKTsK
KyAgICBtX2JhY2tpbmdMYXllci0+c3luY0NvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5
KCk7CiB9CiAKIHZvaWQgTGF5ZXJCYWNrZWREcmF3aW5nQXJlYTo6c2NoZWR1bGVDb21wb3NpdGlu
Z0xheWVyU3luYygpCg==
</data>
<flag name="review"
          id="50243"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>