<?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>72192</bug_id>
          
          <creation_ts>2011-11-11 15:20:13 -0800</creation_ts>
          <short_desc>[Chromium] Initialize compositor resources prior to painting.</short_desc>
          <delta_ts>2013-04-12 07:23:11 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71388</dependson>
    
    <dependson>72752</dependson>
          <blocked>73285</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>levin+threading</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>schenney</cc>
    
    <cc>sky</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>501157</commentid>
    <comment_count>0</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-11 15:20:13 -0800</bug_when>
    <thetext>Split layer updates into two steps. Step one calculates transforms and visible layer areas. Step two paints layer contents. This allows us to perform a compositor resource preparation step after visible layer areas have been computed but before any painting has occurred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501161</commentid>
    <comment_count>1</comment_count>
      <attachid>114786</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-11 15:24:00 -0800</bug_when>
    <thetext>Created attachment 114786
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501183</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2011-11-11 15:51:17 -0800</bug_when>
    <thetext>Consider updating the patch to apply cleanly to get the benefit of the ews bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501189</commentid>
    <comment_count>3</comment_count>
      <attachid>114791</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-11 15:58:02 -0800</bug_when>
    <thetext>Created attachment 114791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501250</commentid>
    <comment_count>4</comment_count>
      <attachid>114804</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-11 17:19:23 -0800</bug_when>
    <thetext>Created attachment 114804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501543</commentid>
    <comment_count>5</comment_count>
      <attachid>114863</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-13 14:26:16 -0800</bug_when>
    <thetext>Created attachment 114863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502560</commentid>
    <comment_count>6</comment_count>
      <attachid>115078</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-14 18:05:05 -0800</bug_when>
    <thetext>Created attachment 115078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502561</commentid>
    <comment_count>7</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-14 18:10:32 -0800</bug_when>
    <thetext>I intend to split this up into two different patches:

1. Re-factoring with ability to initialize compositor resources prior to painting.
2. Start texture updates as soon as contents required for update has been painted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>502640</commentid>
    <comment_count>8</comment_count>
      <attachid>115097</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-14 22:20:21 -0800</bug_when>
    <thetext>Created attachment 115097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503156</commentid>
    <comment_count>9</comment_count>
      <attachid>115220</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-15 12:35:20 -0800</bug_when>
    <thetext>Created attachment 115220
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504263</commentid>
    <comment_count>10</comment_count>
      <attachid>115220</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-11-16 14:32:28 -0800</bug_when>
    <thetext>Comment on attachment 115220
Patch

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

Aside: You&apos;re probably going to conflict with http://trac.webkit.org/changeset/100388, which cleans up some of the setVisibleLayerRect code.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.cpp:71
&gt; +    m_proxy-&gt;update(texture, sourceRect, destRect);

A task gets posted for every single texture update? I&apos;m a little confused by this.  Is the goal to decrease latency by starting on texture uploads (in the single-threaded case) in the middle of painting? The threaded compositor won&apos;t start uploading until the commit begins, so isn&apos;t helped by any of this.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHost.h:239
&gt; +    LayerList m_renderSurfaceUpdateList;
&gt;      LayerList m_updateList;

Can m_updateList maybe be named m_layerUpdateList to differentiate what it is? Maybe a comment here would help too to explain what these lists do.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:456
&gt; +void CCThreadProxy::beginFrameCompleteOnImplThread(CCCompletionEvent* completion)

During the meeting yesterday, there was some talk on not requiring this begin frame synchronization if we weren&apos;t painting to shared memory.  Is that something that&apos;d be easyu to address in this patch?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:342
&gt; +                GLC(context, context-&gt;texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_MIN_FILTER, filter));
&gt; +                GLC(context, context-&gt;texParameteri(GraphicsContext3D::TEXTURE_2D, GraphicsContext3D::TEXTURE_MAG_FILTER, filter));

Oh, excellent.  This code should have been moved a while ago.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504326</commentid>
    <comment_count>11</comment_count>
      <attachid>115220</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-16 15:30:39 -0800</bug_when>
    <thetext>Comment on attachment 115220
Patch

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

Tests?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCProxy.h:76
&gt; +    virtual void update(LayerTextureUpdater::Texture*, const IntRect&amp; sourceRect, const IntRect&amp; destRect) = 0;

name this so its obvious its asynchronous [potentially]

add comment what it does

&gt; Source/WebCore/platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:220
&gt; +}

What are the merits of doing this immediately versus posting a task to the main thread to do the update?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:401
&gt; +        s_ccThread-&gt;postTask(createCCThreadTask(this, &amp;CCThreadProxy::beginFrameOnImplThread, AllowCrossThreadAccess(&amp;completion)));

This isn&apos;t really quite the right naming. prepareToUpdateOnImplThread?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:435
&gt; +    m_layerTreeHost-&gt;prepareCompositorResources(m_layerTreeHostImpl-&gt;context(), m_layerTreeHostImpl-&gt;contentsTextureAllocator());

This runs on the impl thread, yes? Then it should be named prepareCompositorResourcesOnImplThread

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:443
&gt; +void CCThreadProxy::updateTextureOnImplThread(UpdateEntry* entry)

PassOwnPtr?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:452
&gt; +    m_currentTextureUpdaterOnImplThread-&gt;append(entry-&gt;m_texture, entry-&gt;m_sourceRect, entry-&gt;m_destRect);

I&apos;m confused about the interaction between this patch and the COMMIT state works. When do we transition from FrameInProgress to UpdatingResources in this model?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506010</commentid>
    <comment_count>12</comment_count>
      <attachid>115859</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 13:30:51 -0800</bug_when>
    <thetext>Created attachment 115859
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506095</commentid>
    <comment_count>13</comment_count>
      <attachid>115881</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 15:02:34 -0800</bug_when>
    <thetext>Created attachment 115881
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506113</commentid>
    <comment_count>14</comment_count>
      <attachid>115884</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-18 15:17:25 -0800</bug_when>
    <thetext>Created attachment 115884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506605</commentid>
    <comment_count>15</comment_count>
      <attachid>116003</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-20 15:48:10 -0800</bug_when>
    <thetext>Created attachment 116003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507125</commentid>
    <comment_count>16</comment_count>
      <attachid>116116</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-21 12:24:57 -0800</bug_when>
    <thetext>Created attachment 116116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507869</commentid>
    <comment_count>17</comment_count>
      <attachid>116293</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-22 16:52:08 -0800</bug_when>
    <thetext>Created attachment 116293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510242</commentid>
    <comment_count>18</comment_count>
      <attachid>116293</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-28 15:08:04 -0800</bug_when>
    <thetext>Comment on attachment 116293
Patch

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

I&apos;m not a huge fan of doing a pass through all layers just to check if we need to do a prepare before painting. Can we make that a global (per-compositor) setting now? It looks like in this patch it only changes behavior for video layers by moving the map() earlier.

&gt; Source/WebCore/platform/graphics/chromium/CanvasLayerTextureUpdater.cpp:54
&gt; +    m_texture-&gt;allocateTexture(context, allocator);

not sure i understand this - why do we need to allocate the texture before painting?

&gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:52
&gt; +        virtual bool needPrepareRect() { return false; }

this name isn&apos;t terribly illuminating - what does it mean to &apos;prepare a rect&apos;? none of the implementations of this seem to use the rect part at all

&gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:53
&gt; +        virtual void prepareRect(GraphicsContext3D*, TextureAllocator*, const IntRect&amp; /* sourceRect */, const IntRect&amp; /* destRect */) { }

nobody seems to be using the sourceRect or destRect parameters. why are they here?

&gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:55
&gt; +        virtual void updateRect(GraphicsContext3D*, const IntRect&amp; sourceRect, const IntRect&amp; destRect) = 0;

i think at this point you should document the order and thread requirements of each of these calls since there are so many

&gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:60
&gt; +        virtual ~Handler() { };

don&apos;t need a trailing ; here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510532</commentid>
    <comment_count>19</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-28 23:33:31 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 116293 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=116293&amp;action=review
&gt; 
&gt; I&apos;m not a huge fan of doing a pass through all layers just to check if we need to do a prepare before painting. Can we make that a global (per-compositor) setting now? It looks like in this patch it only changes behavior for video layers by moving the map() earlier.

This patch is mostly re-factoring. I&apos;ve tried to keep as much as possible in follow up patches (See the chain of bugs that depend on this bug).

I&apos;m not a huge fan of the needPrepare pass myself. I&apos;m planning to get rid of it when serializing the prepare and commit steps. Though, that will have to wait until after async commit support has landed.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/CanvasLayerTextureUpdater.cpp:54
&gt; &gt; +    m_texture-&gt;allocateTexture(context, allocator);
&gt; 
&gt; not sure i understand this - why do we need to allocate the texture before painting?

Sorry, this must be confusing without some insight into the follow up patch. https://bugs.webkit.org/show_bug.cgi?id=72752 adds support for performing texture uploads in parallel with contents painting. This puts certain thread requirements on the texture upload part (updateRect()). E.g. we have to avoid access to the texture manager among other things. Hence, textures need to be allocated prior to painting. We should be able to improve this later by re-factoring texture allocation.

FYI, what&apos;s currently running on the main thread vs the impl thread is not obvious. I&apos;ve uploaded my current async commit patch here: https://bugs.webkit.org/show_bug.cgi?id=73279 it&apos;s work in progress but will make this much more clear.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:52
&gt; &gt; +        virtual bool needPrepareRect() { return false; }
&gt; 
&gt; this name isn&apos;t terribly illuminating - what does it mean to &apos;prepare a rect&apos;? none of the implementations of this seem to use the rect part at all

Yea, the &apos;Rect&apos; suffix doesn&apos;t make a whole lot of sense here. I kept it to be consistent with prepareRect. I&apos;d prefer to keep the suffixes here until the async commit patch which removes the rect parameters.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:53
&gt; &gt; +        virtual void prepareRect(GraphicsContext3D*, TextureAllocator*, const IntRect&amp; /* sourceRect */, const IntRect&amp; /* destRect */) { }
&gt; 
&gt; nobody seems to be using the sourceRect or destRect parameters. why are they here?

They are used by follow up patches like the shared memory painting patch that needs them to map an appropriately sized buffer. Like I mentioned above, mostly re-factoring in this patch.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:55
&gt; &gt; +        virtual void updateRect(GraphicsContext3D*, const IntRect&amp; sourceRect, const IntRect&amp; destRect) = 0;
&gt; 
&gt; i think at this point you should document the order and thread requirements of each of these calls since there are so many

I&apos;ll definitely do that. FYI, this will become much better when async commit and a more serialized version of the prepare step lands.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/chromium/LayerTextureUpdater.h:60
&gt; &gt; +        virtual ~Handler() { };
&gt; 
&gt; don&apos;t need a trailing ; here

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511019</commentid>
    <comment_count>20</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-29 12:43:52 -0800</bug_when>
    <thetext>Let&apos;s only leave stuff in this patch that makes sense by itself. We can add more functionality later.  We need to keep the codebase in a good state at all times whenever possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511168</commentid>
    <comment_count>21</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-29 15:49:42 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Let&apos;s only leave stuff in this patch that makes sense by itself. We can add more functionality later.  We need to keep the codebase in a good state at all times whenever possible.

There shouldn&apos;t be anything in here that puts the codebase in a worse state than before. Considering this is a re-factoring patch that is supposed to change the structure of things such that planned alternative texture uploaders can be implemented, it&apos;s hard for me to draw the line between what&apos;s useful by itself and what&apos;s not. I guess one could make the case that none of it is useful by itself as it&apos;s just re-factoring.

Would you prefer if the texture allocation changes were pushed to the follow up patch? Should I remove some of the currently unused function arguments from this patch and have them be added by the patches that require them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511229</commentid>
    <comment_count>22</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-29 17:03:46 -0800</bug_when>
    <thetext>These changes have been folded into the latest patch attached to: https://bugs.webkit.org/show_bug.cgi?id=72752

I&apos;ll mark this bug as a duplicate if this is indeed the preferred way to land these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516630</commentid>
    <comment_count>23</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-07 07:31:28 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 72752 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518923</commentid>
    <comment_count>24</comment_count>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-11 13:43:31 -0800</bug_when>
    <thetext>72752 makes sense without these changes. This bug now depends 72752 instead of the other way around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518924</commentid>
    <comment_count>25</comment_count>
      <attachid>118711</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-11 13:43:56 -0800</bug_when>
    <thetext>Created attachment 118711
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527719</commentid>
    <comment_count>26</comment_count>
      <attachid>120686</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-28 11:33:09 -0800</bug_when>
    <thetext>Created attachment 120686
Patch

Rebase on latest version of https://bugs.webkit.org/show_bug.cgi?id=72752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527923</commentid>
    <comment_count>27</comment_count>
      <attachid>120745</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-12-29 07:24:12 -0800</bug_when>
    <thetext>Created attachment 120745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529821</commentid>
    <comment_count>28</comment_count>
      <attachid>121173</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2012-01-04 15:24:00 -0800</bug_when>
    <thetext>Created attachment 121173
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114786</attachid>
            <date>2011-11-11 15:24:00 -0800</date>
            <delta_ts>2011-11-11 15:57:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72192-20111111152359.patch</filename>
            <type>text/plain</type>
            <size>42816</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4OTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNjRmOWYyNjhhZTBkOTVm
NDU4ZDk1YjViMTQwMjE3ZWM0MmU4NDViLi40MDExYWQ4N2ZlOGM3ZjViMDVkNTc1NDdhNTMwN2Yx
ZDU1YmE2Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMTEtMTEgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIElu
aXRpYWxpemUgY29tcG9zaXRvciByZXNvdXJjZXMgcHJpb3IgdG8gcGFpbnRpbmcuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjE5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IGxheWVyIHVwZGF0
ZXMgaW50byB0d28gc3RlcHMuIFN0ZXAgb25lIGNhbGN1bGF0ZXMgdHJhbnNmb3JtcworICAgICAg
ICBhbmQgdmlzaWJsZSBsYXllciBhcmVhcy4gU3RlcCB0d28gcGFpbnRzIGxheWVyIGNvbnRlbnRz
LiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIGEgY29tcG9zaXRvciByZXNvdXJj
ZSBwcmVwYXJhdGlvbiBzdGVwIGFmdGVyCisgICAgICAgIHZpc2libGUgbGF5ZXIgYXJlYXMgaGF2
ZSBiZWVuIGNvbXB1dGVkIGJ1dCBiZWZvcmUgYW55IHBhaW50aW5nCisgICAgICAgIGhhcyBvY2N1
cnJlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50
c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBl
bmRWaXNpYmxlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBl
bmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplRnJhbWVSZXNvdXJj
ZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rp
bGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMpOgorCiAyMDExLTExLTEwICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEbyBub3Qgc2hhcmUgQ1NTIHN0eWxl
IGZvciBNZWRpYUVsZW1lbnQgYmFja2VkIGJ5IGEgcGx1Z2luCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDA3MWRlNjQ4NDM4YWQz
MmMwYzRlNmVjODljMzhmNjVhYTgxMzU0OTUuLmYxMTJlYzFiOTliMDk4ODFjNTE2OWI4ZjQxMmQ5
MWExZmVjNzUwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNh
bXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVk
CiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JB
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9p
ZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzKQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IGJvcmRlclRleGVscykKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0
aWxlU2l6ZSk7CiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAg
ICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0KICAgICAg
ICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQg
OiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2Fu
dmFzOjpQYWludGVyIGNhbnZhc1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBw
YWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QpOworICAg
IHBhaW50KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QpOwogfQogCiB2b2lk
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAppbmRleCA2NzVkZGRkNWI0OWIyMWMwZjc1YjhmYTQyMjg5Y2MyZjEwZTU0YTQ0
Li42OGZiNWFhOGFiOGRlMTJkMzFlYmRhZDliYTY0NjBmZDg3MTJlMDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0
b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxl
ZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGludCBib3JkZXJUZXhlbHMpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGEzZThmN2I3
YmYzZDYwMDhkZWIwYzYzOGFhMzcxMTVmOTdhMmE2YmEuLjMxZTg3MzQxOWRlZmViZmI4MGExMmEw
Mjc5NGNkZjNjM2Y0OTBiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QpCit2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiB7CiAgICAgY29udGV4dC50cmFuc2xhdGUoLWNvbnRlbnRSZWN0LngoKSwgLWNvbnRlbnRSZWN0
LnkoKSk7CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IGZkNzlhMDRkMGEzNmQ3OTZhNGU3ZjMzNDMzMTcyYTgyMDRiYzE0OWUuLjg4OGEyZmE4ZDg1
YmRjM2Y0OWE1Y2U0OWVmZDE5OGUzOWVlZWI3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBh
aW50ZXJDaHJvbWl1bT4pOwogCi0gICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKICAgICBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFJlY3Q7IH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCBkYjBhZTQ2OTllNzg5
NjkyZjUxYzQwYjhjZGU3NjQ4NGZkMWM0YWE4Li43MGI1ZjgyYTIwNTMyMzU0OWU2ZTA2Njk4NjMw
OWNmMmI5YzkwZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05
Myw3ICs5Myw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMo
KQogICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpOwogfQogCi12b2lk
IENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBBU1NFUlQo
ZHJhd3NDb250ZW50KCkpOwogCkBAIC0xMTQsNiArMTE0LDIwIEBAIHZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICByZXNldE5lZWRzRGlzcGxheSgp
OwogfQogCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgp
Cit7CisgICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcGFpbnRDb250ZW50cyhsYXllclJlY3QpOworfQorCiBib29sIENvbnRl
bnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2Rl
bGVnYXRlICYmIG1fZGVsZWdhdGUtPmRyYXdzQ29udGVudCgpICYmIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6ZHJhd3NDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBi
ODM0ZTY3NmJkNjM0NDVhYTQ1M2IzNjVlZWUyODAyNDBmMzgwOWMxLi5jNWU5ZmNjZWJmNDc2ZWI3
ZDAyYmM5ODIyMTcwYjY2NTNhNTEzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q29udGVudExheWVy
Q2hyb21pdW0oKTsKIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDBiZDgyYWUxYTE4YTI1MzBmODc0
MjBlNDgxZDBkNWNhMjMwYjkwMTIuLmMwZDY1ZmMxMTZkNTI3ZWViMDA4MGI0ZDczOTljMDE2MGZk
ODQ5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMp
CiAgICAgc2V0T3BhcXVlKCFtX2NvbnRlbnRzLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKIH0K
IAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQg
SW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAo
IW1fZGlydHlSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRh
dGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFhZmNjZmUyZmRjZTY0NDc1YTc0YWIyYzky
NmQwNDJjYjVmMzc2NzQuLjhiYjlhMWRmYjM1NGE2ZjhhOTlmNGY5OTA0MmMxYzA5N2U3ZTZmOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBk
cmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogCiAgICAg
dm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXgg
MzM0NmRkODU4YmVjYmYwY2Y1ZTZkNWQ3NWU4ZDU5NWM1NjYxMWUxMi4uZjNhOTI5NTk1ZGU5ZDU0
YjViMmRiMTY3MDU0N2FlYjU3NjUxZGMwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTU4LDgg
KzE1OCw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQg
dG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBk
cmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVu
cmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVu
dHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNDUyNWNl
N2ViMTFjOWM1NmVlMWQyNzg1MmYwNzJmMzk1NWM4MTFlZC4uZDExZDc3YmRiZDIyNWU2MWZjM2E1
MWU3OTY5Nzg0ZGU0NTdmMWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAt
NDksNyArNDksOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAog
ICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQo
KTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyog
c291cmNlUmVjdCAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0
ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpID0gMDsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0
IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUo
dGV4dHVyZSkgeyB9CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZvcm1h
dCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhlbC4KICAg
ICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5k
IHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJ
bnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLykgeyB9CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3Qg
Ki8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
KSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZGNmZDYzZTcx
OTM0MmFlNzUwYmRmZWFhOGNhYjMyZjFjZmZjODJjMi4uM2E1YTRkZjM3NjczODgxZjlhODdkMTkz
ODY2ODU1ZjQwNTcxYTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcigpCiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXpl
JiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLykKK3ZvaWQgU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJU
ZXhlbHMgKi8pCiB7CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29y
ZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxh
dGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBHcmFwaGljc0Nv
bnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwotICAgIHBhaW50Q29udGVu
dHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCk7CisgICAgcGFpbnQoZ3JhcGhpY3NDb250
ZXh0LCBjb250ZW50UmVjdCk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggODkxYTZkM2M5ZjEyMjAxY2E0YjE4MTc0MGJmMGZiYTQ3ZTAxZGI1NC4uYTk0ZTY0NjFh
ZGZmZTdkYWIwOGFiYThmOTE5NzY1YzEwOWZiZDA0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscyk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKICAgICB2b2lkIGRyYXdQaWN0dXJlKFNrQ2Fu
dmFzKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAppbmRleCBi
ZDFmMzY2NzcxNzNkMmRjOWVkNGQ3OWIwMzZkYjdiNzg0YTYyMTIyLi5kYzIyOTkxN2RjOTUyZjY0
NWU0MDU3ZDU0MjgwYTlkMDM3ZmQ4NGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAKQEAgLTE1NCwxMCArMTU0LDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRMYXll
clRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICAgICAgaXNOb25Db21wb3NpdGVk
Q29udGVudCgpID8gQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxzIDogQ0NMYXllclRp
bGluZ0RhdGE6Okhhc0JvcmRlclRleGVscyk7CiB9CiAKLXZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBD
Q1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAgICAv
LyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hp
Y2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4K
LSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8
fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0
ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50
UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJp
Z2h0LCBib3R0b207CkBAIC0xNjUsMTAgKzE2NSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBD
CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3Ig
KGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFibGVU
aWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwotICAgICAgICAgICAgaWYgKCF0aWxlKQotICAgICAg
ICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwotICAgICAgICAgICAgZWxzZSBpZiAo
IXRpbGUtPmRpcnR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBB
U1NFUlQodGlsZSk7CiAKICAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IHRpbGUtPm1f
dXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmICh0aWxlLT5tX3VwZGF0ZVJlY3QuaXNFbXB0eSgp
KQpAQCAtMTk1LDEzICsxOTIsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICAg
ICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4gbV9wYWludFJlY3Qu
aGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgdGlsZS0+
bWFuYWdlZFRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3Io
KSk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRl
clRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNE
OjpORUFSRVNUOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRl
cmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRl
eHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwotCiAgICAgICAgICAgICB1
cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKLSAg
ICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzYz
LDIzICszNTQsMTggQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QgPSBj
b250ZW50UmVjdDsKIAogICAgIG1fcGFpbnRSZWN0ID0gbV90aWxlci0+bGF5ZXJSZWN0VG9Db250
ZW50UmVjdChkaXJ0eUxheWVyUmVjdCk7Ci0gICAgaWYgKGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHko
KSkKKyAgICBpZiAobV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50
LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29t
cG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0
ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1v
cnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywK
LSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBk
YXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgotICAgIFJlZlB0cjxMYXllclRl
eHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0gICAgdGV4dHVyZVVw
ZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgp
LCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSk7Ci0KICAgICBtX3RpbGVyLT5jb250ZW50UmVj
dFRvVGlsZUluZGljZXMobV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b20pOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAg
ICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBk
YXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAgICAgICAgIGlmICghdGlsZSkK
ICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKLSAgICAgICAgICAgIGVs
c2UgaWYgKCF0aWxlLT5kaXJ0eSgpKQorCisgICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3Qg
PSBJbnRSZWN0KCk7CisgICAgICAgICAgICBpZiAoIXRpbGUtPmRpcnR5KCkpCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBjb250ZW50LXNwYWNl
IHJlY3RhbmdsZSB0byBjb3B5IGZyb20uCkBAIC0zOTEsMTMgKzM3NywzOSBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQogICAgICAgICAgICAgc291cmNlUmVjdC5pbnRlcnNlY3QobV9wYWludFJlY3QpOwogCiAgICAg
ICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwotICAgICAgICAgICAgaWYg
KHNvdXJjZVJlY3QuaXNFbXB0eSgpKQorCisgICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5KCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQoreworICAgIGlmIChtX3NraXBzRHJh
dyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxl
cygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
Q2FsbGluZyBwYWludENvbnRlbnRzKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNo
IG1heSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGlu
Zywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBi
ZSBkZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNr
aW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAorICAgIC8v
IHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFs
aXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisgICAgUmVmUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKKyAgICB0ZXh0dXJlVXBkYXRlcigp
LT5wYWludENvbnRlbnRzKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVy
LT5oYXNCb3JkZXJUZXhlbHMoKSk7CisKKyAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9t
OworICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhtX3JlcXVlc3RlZFVwZGF0
ZVJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisgICAgZm9yIChpbnQgaiA9IHRvcDsg
aiA8PSBib3R0b207ICsraikgeworICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdo
dDsgKytpKSB7CisgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGop
OworICAgICAgICAgICAgQVNTRVJUKHRpbGUpOworCisgICAgICAgICAgICBpZiAodGlsZS0+bV91
cGRhdGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKKyAgICAgICAg
ICAgIHRpbGUtPnRleHR1cmUoKS0+cGFpbnRDb250ZW50c1JlY3QodGlsZS0+bV91cGRhdGVSZWN0
KTsKICAgICAgICAgfQogICAgIH0KIH0KIAorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA1ZGFmMGYwMTk0
N2E5OTQ3Y2QyMzVmNTVmYjczOTU5ZTQ0N2IxZjU2Li45N2NjMzkyMzE2NjE3NTZjMjEzMTVmMDNm
NmUwNDI5Nzc4MTdjMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNDMsNyAr
NDMsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW0oKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKENDVGV4dHVyZVVwZGF0ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNN
YXNrKGJvb2wpOwogCiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllcklt
cGwqKTsKQEAgLTY1LDggKzY1LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFNldCBpbnZhbGlk
YXRpb25zIHRvIGJlIHBvdGVudGlhbGx5IHJlcGFpbnRlZCBkdXJpbmcgdXBkYXRlKCkuCiAgICAg
dm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7Ci0gICAgLy8g
UHJlcGFyZSBkYXRhIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0
aCBjb250ZW50UmVjdC4KKyAgICAvLyBQcmVwYXJlIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGlu
dGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKKyAgICAvLyBQYWludCBjb250ZW50cyBuZWVkZWQgdG8g
dXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCisgICAgdm9p
ZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKIAogICAgIHZpcnR1
YWwgdm9pZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcAppbmRleCBjMWFkMzliYTk2MDllYzQzMmQ3MGEzNjRhOThkNTExZjE2ZTYx
NzlmLi44MGJjM2NiNTFlYTEzZjU3NWQ4Y2E0YjZiY2E0ZDYzNGVjODExMzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI5Nyw3ICsyOTcsNyBAQCB2b2lkIENDTGF5ZXJU
cmVlSG9zdDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRocmVhZFByb3h5
Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBh
cmVUb1VwZGF0ZSgpCiB7CiAgICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMzA1LDEyICszMDUsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygp
CiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKKyAgICBwcmVwYXJlVG9VcGRhdGUocm9vdExh
eWVyKCkpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hy
b21pdW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUo
TGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVy
VHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSIsIHRoaXMsIDApOwogCiAgICAgaWYgKCFyb290TGF5
ZXItPnJlbmRlclN1cmZhY2UoKSkKICAgICAgICAgcm9vdExheWVyLT5jcmVhdGVSZW5kZXJTdXJm
YWNlKCk7CkBAIC0zMTksMzEgKzMxOSw1NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRl
TGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICBJbnRSZWN0IHJvb3RDbGlwUmVj
dChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSk7CiAgICAgcm9vdExheWVyLT5zZXRDbGlwUmVj
dChyb290Q2xpcFJlY3QpOwogCi0gICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyB3YXNuJ3QgY2FsbGVkIGFmdGVyCi0gICAgLy8gdXBkYXRlTGF5ZXJz
LiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCi0gICAg
QVNTRVJUKCFtX3VwZGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBtX3VwZGF0ZUxpc3QuYXBwZW5kKHJv
b3RMYXllcik7CisgICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgY29tbWl0Q29tcGxldGUgd2Fz
bid0IGNhbGxlZCBhZnRlcgorICAgIC8vIHByZXBhcmVUb1VwZGF0ZS4gT25seSBvbmUgdXBkYXRl
IGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgorICAgIEFTU0VSVCghbV9yZW5kZXJT
dXJmYWNlVXBkYXRlTGlzdC5zaXplKCkgJiYgIW1fdXBkYXRlTGlzdC5zaXplKCkpOworICAgIG1f
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5kZXJTdXJm
YWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAKICAgICB7
Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2Fs
Y0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIG1f
em9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pvb21BbmltYXRvclRyYW5zZm9ybSwgbV91cGRhdGVM
aXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJl
ZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAg
Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxp
dHkocm9vdExheWVyLCByb290TGF5ZXIsIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pvb21B
bmltYXRvclRyYW5zZm9ybSwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1
cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVy
ZVNpemUpOwogICAgIH0KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QpOwor
ICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV91cGRh
dGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgp
IC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hy
b21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBs
YXllci0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIH0KIH0KIAotc3RhdGljIHZvaWQg
cGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IEludFJlY3Qm
IHZpc2libGVMYXllclJlY3QpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cygp
Cit7CisgICAgaWYgKCFyb290TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZp
ZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFpbnRDb250
ZW50cyhyb290TGF5ZXIoKSk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRl
bnRzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0OjpwYWludENvbnRlbnRzIiwgdGhpcywgMCk7CisKKyAgICBmb3IgKGludCBsYXll
ckluZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5
ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFts
YXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7
CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKExh
eWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0LCBMYXll
ckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgaWYgKGxheWVyLT5kcmF3c0NvbnRlbnQoKSkgewog
ICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsKLSAg
ICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIHVwZGF0ZUxpc3Qu
YXBwZW5kKGxheWVyKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1h
c2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNl
TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1
cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0
IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBv
aW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRo
aW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM1
MSw3ICszNzcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZv
clJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwogCiAgICAgaWYgKHJlbmRlclN1
cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5t
YXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRDb250ZW50
c0lmRGlydHkocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVjdChJbnRQb2lu
dCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOworICAgICAgICBhcHBl
bmRWaXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVjdChJ
bnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSksIHVwZGF0ZUxp
c3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9IHJlbmRlclN1
cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CkBAIC0zNjAsMTkgKzM4NiwxOSBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJD
aHJvbWl1bSogcmVuZGVyUwogICAgICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBDQ0xh
eWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3Q8TGF5ZXJDaHJvbWl1
bT4ocmVuZGVyU3VyZmFjZUxheWVyKTsKIAogICAgICAgICByZXBsaWNhTGF5ZXItPnNldExheWVy
VHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXll
ciwgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZXBsaWNh
TGF5ZXIsIHZpc2libGVMYXllclJlY3QsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGlmIChyZXBs
aWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tM
YXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICAgICAgcGFpbnRDb250ZW50
c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVjdChJbnRQb2ludCgpLCBy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKKyAgICAgICAgICAg
IGFwcGVuZFZpc2libGVMYXllcihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBJbnRSZWN0KElu
dFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMoKSksIHVw
ZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsK
LSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUo
KSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5
ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtz
dXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1
cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNl
SW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVy
U3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5k
ZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKIApAQCAtMzg1LDcg
KzQxMSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3Qg
TGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0g
ICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VM
YXllcik7CisgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShyZW5k
ZXJTdXJmYWNlTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGNvbnN0IExheWVyTGlzdCYg
bGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7CiAgICAgICAgIEFTU0VSVChs
YXllckxpc3Quc2l6ZSgpKTsKQEAgLTQwNCw2MSArNDMwLDM5IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZUxheWVyUmVj
dCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdDxMYXll
ckNocm9taXVtPihsYXllcik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHBhaW50Q29udGVu
dHNJZkRpcnR5KGxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICAgICAgICAgIGFwcGVuZFZp
c2libGVMYXllcihsYXllciwgdmlzaWJsZUxheWVyUmVjdCwgdXBkYXRlTGlzdCk7CiAgICAgICAg
IH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRh
dGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBt
X3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRl
eCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSBtX3VwZGF0
ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVt
KiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7Ci0g
ICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKLQotICAgICAgICBpZiAoIXJlbmRlclN1cmZh
Y2UtPmxheWVyTGlzdCgpLnNpemUoKSB8fCAhcmVuZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHkoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXIt
Pm1hc2tMYXllcigpKQotICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBjb250ZXh0LCB1cGRhdGVyKTsKLQotICAgICAg
ICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgewotICAgICAgICAgICAg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXll
cigpLCBjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHJl
bmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpKQotICAgICAgICAg
ICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBs
aWNhTGF5ZXIoKS0+bWFza0xheWVyKCksIGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZh
Y2UtPmxheWVyTGlzdCgpOwotICAgICAgICBBU1NFUlQobGF5ZXJMaXN0LnNpemUoKSk7Ci0gICAg
ICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXggPCBsYXllckxpc3Qu
c2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVy
ID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOwotICAgICAgICAgICAgaWYgKGxheWVyLT5y
ZW5kZXJTdXJmYWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZhY2UoKSAhPSByZW5kZXJTdXJmYWNl
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKGxheWVyLCBjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgfQorICAgIGZv
ciAoaW50IGxheWVySW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+
PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91
cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGxheWVyLCB1cGRhdGVyKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qIGxheWVyLCBHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qIGxh
eWVyLCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIC8vIEZvciBub3JtYWwgbGF5
ZXJzLCB0aGVzZSBjb25kaXRpb25zIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdo
aWxlIGNyZWF0aW5nIHRoZSByZW5kZXIgc3VyZmFjZSBsYXllciBsaXN0cy4KICAgICAvLyBGb3Ig
bWFza3MgYW5kIHJlcGxpY2FzIGhvd2V2ZXIsIHdlIG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRo
ZW0gaGVyZS4KICAgICBpZiAobGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9w
YWNpdHkoKSB8fCAhbGF5ZXItPmRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAg
ICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyh1cGRhdGVyKTsKIH0KIAogdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qg
c3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytz
dXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxp
c3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKKworICAg
IGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fcmVuZGVyU3Vy
ZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNo
cm9taXVtKiBsYXllciA9IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5n
ZXQoKTsKICAgICAgICAgQVNTRVJUKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICBs
YXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiAgICAgfQotICAgIG1fdXBkYXRlTGlzdC5jbGVh
cigpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDZkNDVjODU1OWI2ODhhNTU4YzRm
NzIwZTFiOGQ1OGFkNjllNzY0MWIuLjVlYzRjMGRkZWY2ZTQ1YzM0NDIyODU0OWNjNzZmNDBkY2Q5
MzgwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0xNzEsOSArMTcxLDEwIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAot
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKTsKKyAg
ICB2b2lkIHBhaW50Q29udGVudHMoKTsKIAotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoQ0NUZXh0dXJlVXBkYXRlciYpOwogICAgIHZvaWQgc3Rh
cnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVMaW1p
dGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAKQEAgLTE4NCwxMSArMTg1LDEzIEBAIHByb3RlY3Rl
ZDoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4g
TGF5ZXJMaXN0OwogCi0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0
Jik7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNo
cm9taXVtKik7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSosIGNv
bnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QsIExheWVyTGlzdCYpOworICAgIHZvaWQgYXBw
ZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBMYXllckxp
c3QmIHVwZGF0ZUxpc3QpOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXll
ckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOwog
Ci0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOwotICAgIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiwgR3JhcGhpY3NDb250ZXh0M0QqLCBD
Q1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1
bSopOworICAgIHZvaWQgcGFpbnRDb250ZW50cyhMYXllckNocm9taXVtKik7CisgICAgdm9pZCB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qLCBDQ1RleHR1cmVVcGRhdGVy
Jik7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdVcGRhdGUoKTsKIAogICAgIGludCBtX2NvbXBvc2l0
b3JJZGVudGlmaWVyOwpAQCAtMjA0LDYgKzIwNyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9j
b250ZW50c1RleHR1cmVNYW5hZ2VyOwogCisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVw
ZGF0ZUxpc3Q7CiAgICAgTGF5ZXJMaXN0IG1fdXBkYXRlTGlzdDsKIAogICAgIENDU2V0dGluZ3Mg
bV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXgg
NjI5MWRiNTdhMTFhMzU0YmIwNWNlZDcyYWQyZTFhMWVjNzM3ODUwYi4uYWU0Yzg5ZmNiOWJkMzhk
OGY5Y2NmOGU0NTBkZjU4OTIyZGIzZjJmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5jcHAKQEAgLTE0OSwxNCArMTQ5LDIwIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94
eTo6c2V0TmVlZHNBbmltYXRlKCkKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQo
KQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcmVw
YXJlIGNvbXBvc2l0b3IgcmVzb3VyY2VzCisgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXModXBkYXRlcik7CisgICAgdXBk
YXRlci5wcmVwYXJlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSk7CisKKyAgICBtX2xh
eWVyVHJlZUhvc3QtPnBhaW50Q29udGVudHMoKTsKKwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVs
eQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAg
IG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgp
KTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
dXBkYXRlcik7CiAgICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0
VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkp
OwpAQCAtMjc0LDcgKzI4MCw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZO
ZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAKLSAgICBt
X2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJl
cGFyZVRvVXBkYXRlKCk7CiAKICAgICBkb0NvbW1pdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUxODIwZjMxNGZkYjhjYzg3
MmFiLi44MjkyZjdjNzU5NmVjZDhjMjg4ZTdmYjA5OGMxMmE3MTMwNjVkMzgxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtNTksNiArNTksMTQgQEAgdm9pZCBDQ1RleHR1
cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmUKICAgICBtX2VudHJpZXMuYXBwZW5kKGVudHJ5KTsKIH0KIAordm9pZCBDQ1Rl
eHR1cmVVcGRhdGVyOjpwcmVwYXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQoreworICAg
IGZvciAoc2l6ZV90IGVudHJ5SW5kZXggPSAwOyBlbnRyeUluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KTsgKytlbnRyeUluZGV4KSB7CisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmll
c1tlbnRyeUluZGV4XTsKKyAgICAgICAgZW50cnkubV90ZXh0dXJlLT5wcmVwYXJlUmVjdChjb250
ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsK
KyAgICB9Cit9CisKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMoKSBjb25z
dAogewogICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5oCmluZGV4IGJmNzlhYzljMmUyMmVmYzVlZGE5YTY0ODI5ZTJlZmNjZWMxNWJiMzAuLjA1
ODVjMDc5MDEwOGQyOTcxZTBlYjUwNWMzMGU0NDgwNzUyOWQxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgKQEAgLTQyLDYgKzQyLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBl
bmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAorICAgIC8vIFByZXBhcmUgYWxsIHRleHR1
cmVzLgorICAgIHZvaWQgcHJlcGFyZShHcmFwaGljc0NvbnRleHQzRCopOworCiAgICAgYm9vbCBo
YXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCiAgICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVyZXMuIFJl
dHVybnMgdHJ1ZSBpZiBtb3JlIHRleHR1cmVzIGxlZnQgdG8gcHJvY2Vzcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggMDYzZDBhZWFkMTFmMWVkMzAzNjA0ZTAzNDkyMGE4MTUwNmY5
N2ZiYS4uZmI2YzJhMmFkODgzYmQ0MmI0MTY4OTYyYTk3MmIyZmM2YWViNmE3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM3Nyw3ICszNzcsMTcgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1l
QmVnaW5UaW0KICAgICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBm
YWxzZTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXll
clRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKKworICAgIHsKKyAgICAgICAgLy8gSW5pdGlh
bGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJB
Q0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50
IGNvbXBsZXRpb247CisgICAgICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFk
VGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUZyYW1lUmVzb3VyY2VzT25JbXBs
VGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOworICAgICAgICBj
b21wbGV0aW9uLndhaXQoKTsKKyAgICB9CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29u
dGVudHMoKTsKIAogICAgIHsKICAgICAgICAgLy8gTm90aWZ5IHRoZSBpbXBsIHRocmVhZCB0aGF0
IHRoZSBiZWdpbkZyYW1lIGhhcyBjb21wbGV0ZWQuIFRoaXMgd2lsbApAQCAtMzk1LDYgKzQwNSwy
NiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNl
TnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xhc3RFeGVjdXRlZEJl
Z2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9CiAK
K3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1Ro
cmVhZFByb3h5Ojppbml0aWFsaXplRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQiLCB0aGlzLCAw
KTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAg
ICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRo
cmVhZCk7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQZW5kaW5n
KCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBjb21wbGV0aW9u
LT5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIG1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKm1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkKTsKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+
cHJlcGFyZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCkpOworCisgICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBQYXNzT3duUHRyPEND
U2Nyb2xsQW5kU2NhbGVTZXQ+IHNjcm9sbEluZm8pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAt
NDA5LDkgKzQzOSw3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAKICAgICBtX2NvbW1pdENv
bXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CiAKLSAgICBBU1NFUlQoIW1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7Ci0gICAgbV9sYXll
clRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKKyAgICBB
U1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwogICAgIENDTGF5ZXJU
cmVlSG9zdENvbW1vbjo6YXBwbHlTY3JvbGxBbmRTY2FsZShtX2xheWVyVHJlZUhvc3RJbXBsLT5y
b290TGF5ZXIoKSwgKnNjcm9sbEluZm8pOwogCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmJlZ2luRnJhbWVDb21wbGV0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDA0NWRh
NzQ2ODA2NTc5MzA4ZTE2ZmRiZWNmMTAyZGVlNzg5Mjk5OTMuLjRhNDU5MDk2NzU4MWVkYmExMDg3
ZGEwNTQ5NWQ4NTIyYTI5YTM1NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTkzLDYg
KzkzLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpU
YXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZv
aWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqLCBDQ01haW5UaHJlYWQ6OlRhc2sqKik7CisgICAgdm9pZCBpbml0aWFsaXplRnJhbWVS
ZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIFBhc3NPd25QdHI8
Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhy
ZWFkKFJlYWRiYWNrUmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwCmluZGV4IDRlNmVmOTdiZGI3MmFhY2UzMWQ2NGIzODliNDY2MTdmZDMwNzI5NjEuLjhhMmQ2
ZmVmNjRkZjc3ZWQxZTVkMDJjM2QwZGMzMjRjOTc4ZTdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwCkBAIC0yMTMsNiArMjEzLDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBs
OjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJ
bnQKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMoY29udGVudFJlY3QsIGxl
ZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBtX3RpbGVy
LT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICBmbG9hdCBzaWduID0g
RmxvYXRRdWFkKGNvbnRlbnRSZWN0KS5pc0NvdW50ZXJjbG9ja3dpc2UoKSA/IC0xIDogMTsKKyAg
ICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3Jh
cGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwogICAg
IGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgQ0NMYXllclF1
YWQ6OkVkZ2UgcHJldkVkZ2VYID0gY29udGVudFF1YWQubGVmdCgpOwogCkBAIC0zMzcsNiArMzM4
LDkgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQKIAogICAgICAgICAgICAgaWYgKHRpbGUgJiYg
dGlsZS0+dGV4dHVyZUlkKCkpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGlsZS0+dGV4dHVyZUlkKCkpOworICAg
ICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklM
VEVSLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7CisKICAgICAgICAgICAgICAgICBsYXll
clJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGdsb2JhbFRyYW5zZm9ybSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRp
bGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBxdWFkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9j
YXRpb24oKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114791</attachid>
            <date>2011-11-11 15:58:02 -0800</date>
            <delta_ts>2011-11-11 17:19:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72192-20111111155801.patch</filename>
            <type>text/plain</type>
            <size>42055</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4OTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNjRmOWYyNjhhZTBkOTVm
NDU4ZDk1YjViMTQwMjE3ZWM0MmU4NDViLi40MDExYWQ4N2ZlOGM3ZjViMDVkNTc1NDdhNTMwN2Yx
ZDU1YmE2Y2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTEtMTEtMTEgIERhdmlk
IFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIElu
aXRpYWxpemUgY29tcG9zaXRvciByZXNvdXJjZXMgcHJpb3IgdG8gcGFpbnRpbmcuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjE5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwbGl0IGxheWVyIHVwZGF0
ZXMgaW50byB0d28gc3RlcHMuIFN0ZXAgb25lIGNhbGN1bGF0ZXMgdHJhbnNmb3JtcworICAgICAg
ICBhbmQgdmlzaWJsZSBsYXllciBhcmVhcy4gU3RlcCB0d28gcGFpbnRzIGxheWVyIGNvbnRlbnRz
LiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIGEgY29tcG9zaXRvciByZXNvdXJj
ZSBwcmVwYXJhdGlvbiBzdGVwIGFmdGVyCisgICAgICAgIHZpc2libGUgbGF5ZXIgYXJlYXMgaGF2
ZSBiZWVuIGNvbXB1dGVkIGJ1dCBiZWZvcmUgYW55IHBhaW50aW5nCisgICAgICAgIGhhcyBvY2N1
cnJlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50
c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhv
c3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBl
bmRWaXNpYmxlTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjphcHBl
bmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdCk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplRnJhbWVSZXNvdXJj
ZXNPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1Rp
bGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMpOgorCiAyMDExLTExLTEwICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBEbyBub3Qgc2hhcmUgQ1NTIHN0eWxl
IGZvciBNZWRpYUVsZW1lbnQgYmFja2VkIGJ5IGEgcGx1Z2luCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDA3MWRlNjQ4NDM4YWQz
MmMwYzRlNmVjODljMzhmNjVhYTgxMzU0OTUuLmYxMTJlYzFiOTliMDk4ODFjNTE2OWI4ZjQxMmQ5
MWExZmVjNzUwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNh
bXBsZWRUZXhlbEZvcm1hdCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVk
CiAgICAgICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JB
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKIH0KIAotdm9p
ZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzKQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
aW50IGJvcmRlclRleGVscykKIHsKICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0
aWxlU2l6ZSk7CiAKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAg
ICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0KICAgICAg
ICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQg
OiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2Fu
dmFzOjpQYWludGVyIGNhbnZhc1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBw
YWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QpOworICAg
IHBhaW50KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QpOwogfQogCiB2b2lk
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAppbmRleCA2NzVkZGRkNWI0OWIyMWMwZjc1YjhmYTQyMjg5Y2MyZjEwZTU0YTQ0
Li42OGZiNWFhOGFiOGRlMTJkMzFlYmRhZDliYTY0NjBmZDg3MTJlMDM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC01OSw3ICs1OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3Jp
ZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0
b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxl
ZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUm
IHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGludCBib3JkZXJUZXhlbHMpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGEzZThmN2I3
YmYzZDYwMDhkZWIwYzYzOGFhMzcxMTVmOTdhMmE2YmEuLjMxZTg3MzQxOWRlZmViZmI4MGExMmEw
Mjc5NGNkZjNjM2Y0OTBiNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QpCit2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiB7CiAgICAgY29udGV4dC50cmFuc2xhdGUoLWNvbnRlbnRSZWN0LngoKSwgLWNvbnRlbnRSZWN0
LnkoKSk7CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IGZkNzlhMDRkMGEzNmQ3OTZhNGU3ZjMzNDMzMTcyYTgyMDRiYzE0OWUuLjg4OGEyZmE4ZDg1
YmRjM2Y0OWE1Y2U0OWVmZDE5OGUzOWVlZWI3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgog
ICAgIGV4cGxpY2l0IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBh
aW50ZXJDaHJvbWl1bT4pOwogCi0gICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKICAgICBjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFJlY3Q7IH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCBkYjBhZTQ2OTllNzg5
NjkyZjUxYzQwYjhjZGU3NjQ4NGZkMWM0YWE4Li43MGI1ZjgyYTIwNTMyMzU0OWU2ZTA2Njk4NjMw
OWNmMmI5YzkwZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05
Myw3ICs5Myw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMo
KQogICAgIFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpOwogfQogCi12b2lk
IENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBBU1NFUlQo
ZHJhd3NDb250ZW50KCkpOwogCkBAIC0xMTQsNiArMTE0LDIwIEBAIHZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICByZXNldE5lZWRzRGlzcGxheSgp
OwogfQogCit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgp
Cit7CisgICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgcGFpbnRDb250ZW50cyhsYXllclJlY3QpOworfQorCiBib29sIENvbnRl
bnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2Rl
bGVnYXRlICYmIG1fZGVsZWdhdGUtPmRyYXdzQ29udGVudCgpICYmIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6ZHJhd3NDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBi
ODM0ZTY3NmJkNjM0NDVhYTQ1M2IzNjVlZWUyODAyNDBmMzgwOWMxLi5jNWU5ZmNjZWJmNDc2ZWI3
ZDAyYmM5ODIyMTcwYjY2NTNhNTEzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmgKQEAgLTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q29udGVudExheWVy
Q2hyb21pdW0oKTsKIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IDBiZDgyYWUxYTE4YTI1MzBmODc0
MjBlNDgxZDBkNWNhMjMwYjkwMTIuLmMwZDY1ZmMxMTZkNTI3ZWViMDA4MGI0ZDczOTljMDE2MGZk
ODQ5M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtMTY4LDcgKzE2OCw3
IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMp
CiAgICAgc2V0T3BhcXVlKCFtX2NvbnRlbnRzLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKIH0K
IAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQg
SW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAo
IW1fZGlydHlSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRh
dGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFn
ZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFhZmNjZmUyZmRjZTY0NDc1YTc0YWIyYzky
NmQwNDJjYjVmMzc2NzQuLjhiYjlhMWRmYjM1NGE2ZjhhOTlmNGY5OTA0MmMxYzA5N2U3ZTZmOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0lt
YWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBk
cmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogCiAgICAg
dm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXgg
MzM0NmRkODU4YmVjYmYwY2Y1ZTZkNWQ3NWU4ZDU5NWM1NjYxMWUxMi4uMmQ3OTQ4MmY0YTM1NDQ4
ODlkZTFiNTkxNzY3YzVmYTliNTFiNTViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMTU4LDYg
KzE1OCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQg
dG8gYmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBk
cmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApp
bmRleCA0NTI1Y2U3ZWIxMWM5YzU2ZWUxZDI3ODUyZjA3MmYzOTU1YzgxMWVkLi5kMTFkNzdiZGJk
MjI1ZTYxZmMzYTUxZTc5Njk3ODRkZTQ1N2YxYjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCkBAIC00OSw3ICs0OSw4IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVy
ZSgpIHsgfQogCiAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90
ZXh0dXJlLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKSB7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIC8q
IHNvdXJjZVJlY3QgKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6
IG1fdGV4dHVyZSh0ZXh0dXJlKSB7IH0KQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogICAgIC8v
IFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVk
IHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0Lngg
aXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1h
dCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3Qg
Ki8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBj
b250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3Jk
ZXJUZXhlbHMgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRl
eCBkY2ZkNjNlNzE5MzQyYWU3NTBiZGZlYWE4Y2FiMzJmMWNmZmM4MmMyLi4zYTVhNGRmMzc2NzM4
ODFmOWE4N2QxOTM4NjY4NTVmNDA1NzFhNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBA
IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKQordm9p
ZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50
IC8qIGJvcmRlclRleGVscyAqLykKIHsKICAgICBTa0NhbnZhcyogY2FudmFzID0gbV9waWN0dXJl
LmJlZ2luUmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgp
KTsKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChjYW52YXMpOwogICAg
IEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAg
cGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0KTsKKyAgICBwYWludChn
cmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0KTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAppbmRleCA4OTFhNmQzYzlmMTIyMDFjYTRiMTgxNzQwYmYwZmJhNDdlMDFkYjU0
Li5hOTRlNjQ2MWFkZmZlN2RhYjA4YWJhOGY5MTk3NjVjMTA5ZmJkMDRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Niw3
ICs0Niw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsK
IAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29u
c3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwogICAgIHZvaWQgZHJhd1Bp
Y3R1cmUoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IGJkMWYzNjY3NzE3M2QyZGM5ZWQ0ZDc5YjAzNmRiN2I3ODRhNjIxMjIuLmJmMTNh
MzQ0OTZkODA4NDg3YjkxZjZmNGZkMGU5OTcxODQ3MmVjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmNwcApAQCAtMTU0LDEwICsxNTQsMTAgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAgICAgICBpc05v
bkNvbXBvc2l0ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMg
OiBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKIH0KIAotdm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29t
cG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8g
YmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1f
cmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpCisg
ICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwg
IW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tOwpAQCAtMTY1LDEwICsx
NjUsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgIGZvciAoaW50IGogPSB0b3A7IGog
PD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7
ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsK
LSAgICAgICAgICAgIGlmICghdGlsZSkKLSAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGls
ZShpLCBqKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0aWxlLT5kaXJ0eSgpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgQVNTRVJUKHRpbGUpOwogCiAgICAgICAgICAg
ICBJbnRSZWN0IHNvdXJjZVJlY3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7CiAgICAgICAgICAgICBp
ZiAodGlsZS0+bV91cGRhdGVSZWN0LmlzRW1wdHkoKSkKQEAgLTE5NSwxMyArMTkyLDcgQEAgdm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBk
ZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAg
IENSQVNIKCk7CiAKLSAgICAgICAgICAgIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmJpbmRUZXh0
dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCkpOwotICAgICAgICAgICAgY29uc3QgR0Mz
RGludCBmaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4
dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAgICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsK
LSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklM
VEVSLCBmaWx0ZXIpKTsKLQogICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4dHVy
ZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Ci0gICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5
KCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM2MywyMyArMzU0LDE4IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0ID0gY29udGVudFJlY3Q7CiAKICAgICBtX3BhaW50
UmVjdCA9IG1fdGlsZXItPmxheWVyUmVjdFRvQ29udGVudFJlY3QoZGlydHlMYXllclJlY3QpOwot
ICAgIGlmIChkaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fcGFpbnRSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRh
dGUoKSBjYWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUK
LSAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3Vy
IHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCi0gICAgLy8g
SG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29u
dGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCi0gICAgLy8gc28gd2UgZ3JhYiBhIGxvY2Fs
IHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50
IGNvbXBsZXRlcy4KLSAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRl
eHR1cmVVcGRhdGVyKCkpOwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZSht
X3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxz
KCkpOwotCiAgICAgbV90aWxlci0+Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKG1fcmVxdWVzdGVk
VXBkYXRlUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBmb3IgKGludCBqID0g
dG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9
IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQo
aSwgaik7CiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNy
ZWF0ZVRpbGUoaSwgaik7Ci0gICAgICAgICAgICBlbHNlIGlmICghdGlsZS0+ZGlydHkoKSkKKwor
ICAgICAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gSW50UmVjdCgpOworICAgICAgICAgICAg
aWYgKCF0aWxlLT5kaXJ0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
ICAgICAvLyBDYWxjdWxhdGUgY29udGVudC1zcGFjZSByZWN0YW5nbGUgdG8gY29weSBmcm9tLgpA
QCAtMzkxLDEzICszNzcsMzkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICAgICAgICAgIHNvdXJjZVJlY3Qu
aW50ZXJzZWN0KG1fcGFpbnRSZWN0KTsKIAogICAgICAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0
ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0LmlzRW1wdHkoKSkKKwor
ICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOworICAgICAgICB9CisgICAgfQorfQorCit2
b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCkKK3sKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0
LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGxpbmcgcGFpbnRDb250ZW50cygpIGNh
bGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQorICAgIC8v
IGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJl
bmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KKyAgICAvLyBIb3dldmVy
LCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVu
dGlsIHRoZSBwYWludCBmaW5pc2hlcywKKyAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJl
bmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxl
dGVzLgorICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVw
ZGF0ZXIoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50cyhtX3BhaW50UmVj
dCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkpOworCisg
ICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKKyAgICBtX3RpbGVyLT5jb250ZW50UmVj
dFRvVGlsZUluZGljZXMobV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b20pOworICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKKyAgICAg
ICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgeworICAgICAgICAgICAgVXBk
YXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKKyAgICAgICAgICAgIEFTU0VSVCh0aWxl
KTsKKworICAgICAgICAgICAgaWYgKHRpbGUtPm1fdXBkYXRlUmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJl
cGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnBhaW50
Q29udGVudHNSZWN0KHRpbGUtPm1fdXBkYXRlUmVjdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAK
KwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmgKaW5kZXggNWRhZjBmMDE5NDdhOTk0N2NkMjM1ZjU1ZmI3Mzk1OWU0NDdi
MWY1Ni4uZDRjMmJlM2I4ODdkOGQ0NjVkZWY2NzdjNjQyMjI0NjViMTcyZWM3MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmgKQEAgLTY1LDggKzY1LDEwIEBAIHByb3RlY3RlZDoKIAogICAg
IC8vIFNldCBpbnZhbGlkYXRpb25zIHRvIGJlIHBvdGVudGlhbGx5IHJlcGFpbnRlZCBkdXJpbmcg
dXBkYXRlKCkuCiAgICAgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCk7Ci0gICAgLy8gUHJlcGFyZSBkYXRhIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhh
dCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICAvLyBQcmVwYXJlIHRvIHVwZGF0ZSB0
ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgogICAgIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKKyAgICAvLyBQYWludCBjb250
ZW50cyBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVu
dFJlY3QuCisgICAgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCkBA
IC04Myw3ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1h
bmFnZXIoKSBjb25zdDsKIAotICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJl
cGFyZVRvVXBkYXRlKCkgYW5kIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBU
ZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwYWludENv
bnRlbnRzKCkuCiAgICAgSW50UmVjdCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3Q7CiAgICAgLy8gU3Rh
dGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCku
IFRoaXMgcmVwcmVzZW50cyB0aGUgYXJlYQogICAgIC8vIG9mIHRoZSBsYXllciB0aGF0IGlzIGFj
dHVhbGx5IHJlLXBhaW50ZWQgYnkgV2ViS2l0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5j
cHAKaW5kZXggYzFhZDM5YmE5NjA5ZWM0MzJkNzBhMzY0YTk4ZDUxMWYxNmU2MTc5Zi4uMmM2NmZh
YjQ1ZGIwMzE0NzU1NzEzNGI1OGQzNjc0NDI4NGQxYzUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3QuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNv
bXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHku
Z2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUo
KQogewogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTMwNSwxMiAr
MzA1LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2
aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUxh
eWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RMYXllcigpKTsKIH0K
IAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290
TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21p
dW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojpw
cmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExheWVyLT5yZW5kZXJT
dXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAt
MzE5LDMxICszMTksNTcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXll
ckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQo
KSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBS
ZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUg
dXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91
cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwor
ICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdhc24ndCBjYWxsZWQg
YWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVu
ZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3Quc2l6ZSgpICYmICFtX3VwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRlclN1cmZh
Y2VVcGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9t
aXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAg
IHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgewotICAgICAgICBU
UkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwg
dGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBtX3pvb21BbmltYXRv
clRyYW5zZm9ybSwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fdXBkYXRlTGlzdCwgcm9vdFJl
bmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4
VGV4dHVyZVNpemUpOworICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVw
YXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXll
ciwgcm9vdExheWVyLCBtX3pvb21BbmltYXRvclRyYW5zZm9ybSwgbV96b29tQW5pbWF0b3JUcmFu
c2Zvcm0sIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXll
ckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAg
ICB9CiAKLSAgICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0KTsKKyAgICBhcHBlbmRW
aXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1fdXBkYXRlTGlzdCk7CisK
KyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVy
SW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXll
ciA9IG1fdXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBh
cmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB9CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50Q29udGVu
dHNJZkRpcnR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5
ZXJSZWN0KQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoKQoreworICAgIGlm
ICghcm9vdExheWVyKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICh2aWV3cG9ydFNpemUo
KS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMocm9vdExh
eWVyKCkpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyhMYXllckNo
cm9taXVtKiByb290TGF5ZXIpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRDb250ZW50cyIsIHRoaXMsIDApOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1f
dXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsK
KyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3RbbGF5ZXJJbmRleF0u
Z2V0KCk7CisgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIH0KK30K
Kwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVt
KiBsYXllciwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCwgTGF5ZXJMaXN0JiB1cGRh
dGVMaXN0KQogewogICAgIGlmIChsYXllci0+ZHJhd3NDb250ZW50KCkpIHsKICAgICAgICAgbGF5
ZXItPnNldFZpc2libGVMYXllclJlY3QodmlzaWJsZUxheWVyUmVjdCk7Ci0gICAgICAgIGxheWVy
LT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICB1cGRhdGVMaXN0LmFwcGVuZChsYXll
cik7CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGlj
YUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyKQordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShM
YXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkK
IHsKICAgICAvLyBOb3RlOiBNYXNrcyBhbmQgcmVwbGljYXMgb25seSBleGlzdCBmb3IgbGF5ZXJz
IHRoYXQgb3duIHJlbmRlciBzdXJmYWNlcy4gSWYgd2UgcmVhY2ggdGhpcyBwb2ludAogICAgIC8v
IGluIGNvZGUsIHdlIGFscmVhZHkga25vdyB0aGF0IGF0IGxlYXN0IHNvbWV0aGluZyB3aWxsIGJl
IGRyYXduIGludG8gdGhpcyByZW5kZXIgc3VyZmFjZSwgc28gdGhlCkBAIC0zNTEsNyArMzc3LDcg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKIAogICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXIt
Pm1hc2tMYXllcigpKSB7CiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkt
PnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJl
bmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIEludFJlY3QoSW50UG9pbnQoKSwgcmVuZGVy
U3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxh
eWVyKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIEludFJlY3QoSW50UG9pbnQoKSwg
cmVuZGVyU3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpLCB1cGRhdGVMaXN0KTsKICAgICB9
CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlcGxpY2FMYXllcigpOwpAQCAtMzYwLDE5ICszODYsMTkgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJl
bmRlclMKICAgICAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0ID0gQ0NMYXllclRyZWVIb3N0
Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0PExheWVyQ2hyb21pdW0+KHJlbmRlclN1
cmZhY2VMYXllcik7CiAKICAgICAgICAgcmVwbGljYUxheWVyLT5zZXRMYXllclRyZWVIb3N0KHRo
aXMpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXIsIHZpc2libGVM
YXllclJlY3QpOworICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLCB2aXNp
YmxlTGF5ZXJSZWN0LCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBpZiAocmVwbGljYUxheWVyLT5t
YXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0
TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJl
cGxpY2FMYXllci0+bWFza0xheWVyKCksIEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVy
LT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7CisgICAgICAgICAgICBhcHBlbmRWaXNp
YmxlTGF5ZXIocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVjdChJbnRQb2ludCgpLCBy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpLCB1cGRhdGVMaXN0KTsK
ICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJD
b250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRl
clN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7Ci0gICAgZm9yIChp
bnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJm
YWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0q
IHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rbc3VyZmFjZUluZGV4
XS5nZXQoKTsKKyAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Cisg
ICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VV
cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgp
OwogICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7CiAKQEAgLTM4NSw3ICs0MTEsNyBAQCB2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
cmVuZGVyU3VyZmFjZUxheWVyLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICBwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIpOworICAg
ICAgICBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxh
eWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVyTGlzdCA9
IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwogICAgICAgICBBU1NFUlQobGF5ZXJMaXN0LnNp
emUoKSk7CkBAIC00MDQsNDAgKzQzMCwxNiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRM
YXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdAogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBDQ0xheWVy
VHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3Q8TGF5ZXJDaHJvbWl1bT4o
bGF5ZXIpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShs
YXllciwgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIo
bGF5ZXIsIHZpc2libGVMYXllclJlY3QsIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQog
fQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKLSAg
ICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFj
ZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiBy
ZW5kZXJTdXJmYWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAg
ICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFj
ZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsK
LQotICAgICAgICBpZiAoIXJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKSB8fCAhcmVu
ZGVyU3VyZmFjZS0+ZHJhd09wYWNpdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICAgICAgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBj
b250ZXh0LCB1cGRhdGVyKTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBs
aWNhTGF5ZXIoKSkgewotICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5k
ZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLCBjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVy
KCktPm1hc2tMYXllcigpKQotICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCksIGNvbnRl
eHQsIHVwZGF0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBMYXllckxp
c3QmIGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwotICAgICAgICBBU1NF
UlQobGF5ZXJMaXN0LnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9
IDA7IGxheWVySW5kZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAg
ICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgp
OwotICAgICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgJiYgbGF5ZXItPnJlbmRl
clN1cmZhY2UoKSAhPSByZW5kZXJTdXJmYWNlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLCBjb250ZXh0LCB1
cGRhdGVyKTsKLSAgICAgICAgfQorICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX3VwZGF0ZUxp
c3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAg
IExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOwor
ICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLCBjb250ZXh0LCB1cGRhdGVy
KTsKICAgICB9CiB9CiAKQEAgLTQ1MywxMiArNDU1LDE0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qIGxheWVyLCBHcmFwaGlj
c0NvCiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUoKQogewotICAg
IGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fdXBkYXRlTGlz
dC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVy
ID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgbV91cGRhdGVMaXN0LmNs
ZWFyKCk7CisKKyAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXgg
PCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKKyAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0W3N1
cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgp
KTsKICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KLSAgICBtX3Vw
ZGF0ZUxpc3QuY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmNsZWFyKCk7
CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA2ZDQ1Yzg1
NTliNjg4YTU1OGM0ZjcyMGUxYjhkNThhZDY5ZTc2NDFiLi5lYWRiNTBlMjM0MmYzNmFkMWEyNmE4
MzIwODliODY1MDJiNmZiZmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTcx
LDcgKzE3MSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cyhib29sKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CisgICAgdm9pZCBwcmVwYXJlVG9V
cGRhdGUoKTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoKTsKIAogICAgIHZvaWQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsK
ICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsKQEAgLTE4NCwx
MCArMTg1LDEyIEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVm
UHRyPExheWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0OwogCi0gICAgdm9pZCBwYWludExheWVyQ29u
dGVudHMoY29uc3QgTGF5ZXJMaXN0Jik7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9y
UmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5
ZXIoTGF5ZXJDaHJvbWl1bSosIGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QsIExheWVy
TGlzdCYpOworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExh
eWVyQ2hyb21pdW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZvaWQgYXBwZW5kVmlz
aWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXll
ckxpc3QmIHVwZGF0ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1
bSopOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lk
IHBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhMYXllckNocm9taXVtKiwgR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVV
cGRhdGVyJik7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdVcGRhdGUoKTsKIApAQCAtMjA0LDYgKzIw
Nyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwog
ICAgIE93blB0cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwogCisg
ICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Q7CiAgICAgTGF5ZXJMaXN0IG1f
dXBkYXRlTGlzdDsKIAogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggNjI5MWRiNTdhMTFhMzU0YmIwNWNlZDcyYWQy
ZTFhMWVjNzM3ODUwYi4uZThlMTIyMDBlNGExYTEwMDE5MzBmMTgxY2NiNTkxMTAzZWUzNzY2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0OSwxNCArMTQ5
LDIwIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKIHZvaWQg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojpp
c01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3IgcmVzb3VyY2VzCisg
ICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAg
ICB1cGRhdGVyLnByZXBhcmUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpKTsKKworICAg
IG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygpOworCiAgICAgLy8gQ29tbWl0IGltbWVk
aWF0ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAg
ICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAogICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwu
Z2V0KCkpOwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4
dCgpLCB1cGRhdGVyKTsKICAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBs
LT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5n
ZXQoKSk7CkBAIC0yNzQsNyArMjgwLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21t
aXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAot
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0
LT5wcmVwYXJlVG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0ZmRi
OGNjODcyYWIuLjgyOTJmN2M3NTk2ZWNkOGMyODhlN2ZiMDk4YzEyYTcxMzA2NWQzODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC01OSw2ICs1OSwxNCBAQCB2b2lkIEND
VGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0
dXJlLCBjb25zdCBJbnRSZQogICAgIG1fZW50cmllcy5hcHBlbmQoZW50cnkpOwogfQogCit2b2lk
IENDVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCit7
CisgICAgZm9yIChzaXplX3QgZW50cnlJbmRleCA9IDA7IGVudHJ5SW5kZXggPCBtX2VudHJpZXMu
c2l6ZSgpOyArK2VudHJ5SW5kZXgpIHsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9l
bnRyaWVzW2VudHJ5SW5kZXhdOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnByZXBhcmVSZWN0
KGNvbnRleHQsIG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJl
Y3QpOworICAgIH0KK30KKwogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmgKaW5kZXggYmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4MjllMmVmY2NlYzE1YmIz
MC4uMDU4NWMwNzkwMTA4ZDI5NzFlMGViNTA1YzMwZTQ0ODA3NTI5ZDEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDIsNiArNDIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCisgICAgLy8gUHJlcGFyZSBhbGwg
dGV4dHVyZXMuCisgICAgdm9pZCBwcmVwYXJlKEdyYXBoaWNzQ29udGV4dDNEKik7CisKICAgICBi
b29sIGhhc01vcmVVcGRhdGVzKCkgY29uc3Q7CiAKICAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJl
cy4gUmV0dXJucyB0cnVlIGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0byBwcm9jZXNzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcAppbmRleCAwNjNkMGFlYWQxMWYxZWQzMDM2MDRlMDM0OTIwYTgx
NTA2Zjk3ZmJhLi44NWE4MmFlODQ0MGQ5ZTk4ZGJkZWFkNDg2NDJhNGNmMDNmMWMwMGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMzc3LDcgKzM3NywxNyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3Rl
ZCA9IGZhbHNlOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBt
X2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOworCisgICAgeworICAgICAgICAvLyBJ
bml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHJlcXVpcmUgZm9yIGZyYW1lLgorICAgICAg
ICBUUkFDRV9FVkVOVCgiYWxsb2NhdGUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NDb21wbGV0aW9u
RXZlbnQgY29tcGxldGlvbjsKKyAgICAgICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NU
aHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplRnJhbWVSZXNvdXJjZXNP
bkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAg
ICAgIGNvbXBsZXRpb24ud2FpdCgpOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFp
bnRDb250ZW50cygpOwogCiAgICAgewogICAgICAgICAvLyBOb3RpZnkgdGhlIGltcGwgdGhyZWFk
IHRoYXQgdGhlIGJlZ2luRnJhbWUgaGFzIGNvbXBsZXRlZC4gVGhpcyB3aWxsCkBAIC0zOTUsNiAr
NDA1LDI2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2Vx
dWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1
dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsK
IH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplRnJhbWVSZXNvdXJjZXNPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCit7CisgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OmluaXRpYWxpemVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZCIsIHRo
aXMsIDApOworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQp
OworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25J
bXBsVGhyZWFkKTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBl
bmRpbmcoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGNvbXBs
ZXRpb24tPnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOworICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAg
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnByZXBhcmUobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpKTsKKworICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworfQorCiB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbiwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0PiBz
Y3JvbGxJbmZvKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
Q29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKQEAgLTQwOSw5ICs0MzksNyBAQCB2b2lk
IENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCogY29tcGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxU
aHJlYWQgPSBjb21wbGV0aW9uOwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQg
PSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmFwcGx5
U2Nyb2xsQW5kU2NhbGUobV9sYXllclRyZWVIb3N0SW1wbC0+cm9vdExheWVyKCksICpzY3JvbGxJ
bmZvKTsKIAogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxldGUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAwNDVkYTc0NjgwNjU3OTMwOGUxNmZkYmVj
ZjEwMmRlZTc4OTI5OTkzLi40YTQ1OTA5Njc1ODFlZGJhMTA4N2RhMDU0OTVkODUyMmEyOWEzNTUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC05Myw2ICs5Myw3IEBAIHByaXZhdGU6CiAg
ICAgfTsKICAgICBQYXNzT3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFt
ZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVB
bmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NNYWluVGhyZWFk
OjpUYXNrKiopOworICAgIHZvaWQgaW5pdGlhbGl6ZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+
KTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3Qq
KTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA0ZTZlZjk3YmRi
NzJhYWNlMzFkNjRiMzg5YjQ2NjE3ZmQzMDcyOTYxLi44YTJkNmZlZjY0ZGY3N2VkMWU1ZDAyYzNk
MGRjMzI0Yzk3OGU3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAt
MjEzLDYgKzIxMyw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAgICAgbV90aWxlci0+Y29u
dGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0
b20pOwogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxlci0+Y29udGVudFJlY3RUb0xheWVy
UmVjdChjb250ZW50UmVjdCk7CiAgICAgZmxvYXQgc2lnbiA9IEZsb2F0UXVhZChjb250ZW50UmVj
dCkuaXNDb3VudGVyY2xvY2t3aXNlKCkgPyAtMSA6IDE7CisgICAgY29uc3QgR0MzRGludCBmaWx0
ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5F
QVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICBmb3IgKGludCBqID0gdG9wOyBq
IDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHByZXZFZGdlWCA9
IGNvbnRlbnRRdWFkLmxlZnQoKTsKIApAQCAtMzM3LDYgKzMzOCw5IEBAIHZvaWQgQ0NUaWxlZExh
eWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwg
Y29uc3QgSW50CiAKICAgICAgICAgICAgIGlmICh0aWxlICYmIHRpbGUtPnRleHR1cmVJZCgpKSB7
CiAgICAgICAgICAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRpbGUtPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgICAgICBHTEMoY29u
dGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7CisgICAg
ICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxU
RVIsIGZpbHRlcikpOworCiAgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1
cmVkUXVhZChnbG9iYWxUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3Bh
Y2l0eSwgcXVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114804</attachid>
            <date>2011-11-11 17:19:23 -0800</date>
            <delta_ts>2011-11-13 14:26:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72192-20111111171922.patch</filename>
            <type>text/plain</type>
            <size>42058</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDE1YWI5MTEzY2M5MDUw
YTNhMDJiYjU1YTU1Nzc4NDEzODJhZDFiYS4uZTQ3OGNiOWZlYWNiNzJmYjdiNjVlY2VlMTIzNmE2
OGQxYzFhMGI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTExLTExICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJ
bml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHByaW9yIHRvIHBhaW50aW5nLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxOTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBsYXllciB1cGRh
dGVzIGludG8gdHdvIHN0ZXBzLiBTdGVwIG9uZSBjYWxjdWxhdGVzIHRyYW5zZm9ybXMKKyAgICAg
ICAgYW5kIHZpc2libGUgbGF5ZXIgYXJlYXMuIFN0ZXAgdHdvIHBhaW50cyBsYXllciBjb250ZW50
cy4gVGhpcworICAgICAgICBhbGxvd3MgdXMgdG8gcGVyZm9ybSBhIGNvbXBvc2l0b3IgcmVzb3Vy
Y2UgcHJlcGFyYXRpb24gc3RlcCBhZnRlcgorICAgICAgICB2aXNpYmxlIGxheWVyIGFyZWFzIGhh
dmUgYmVlbiBjb21wdXRlZCBidXQgYmVmb3JlIGFueSBwYWludGluZworICAgICAgICBoYXMgb2Nj
dXJyZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnBhaW50Q29udGVu
dHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29u
dGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBw
ZW5kVmlzaWJsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBw
ZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUZyYW1lUmVzb3Vy
Y2VzT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKToKKwogMjAxMS0xMS0xMSAgQW50b2luZSBMYWJvdXIg
IDxwaW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgdHJhbnNsYXRp
b24vc2NhbGluZyB0byBXZWJFeHRlcm5hbFRleHR1cmVMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAwNzFkZTY0ODQzOGFk
MzJjMGM0ZTZlYzg5YzM4ZjY1YWE4MTM1NDk1Li5mMTEyZWMxYjk5YjA5ODgxYzUxNjliOGY0MTJk
OTFhMWZlYzc1MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcApAQCAtNzcsNyArNzcsNyBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpT
YW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxl
ZAogICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdC
QSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZv
aWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRl
clRleGVscykKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGludCBib3JkZXJUZXhlbHMpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUo
dGlsZVNpemUpOwogCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAg
ICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAg
ICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0
IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAg
cGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0KTsKKyAg
ICBwYWludCgqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0KTsKIH0KIAogdm9p
ZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKaW5kZXggNjc1ZGRkZDViNDliMjFjMGY3NWI4ZmE0MjI4OWNjMmYxMGU1NGE0
NC4uNjhmYjVhYThhYjhkZTEyZDMxZWJkYWQ5YmE2NDYwZmQ4NzEyZTAzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNTksNyArNTks
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90
dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBs
ZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXpl
JiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscyk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgYm9yZGVyVGV4ZWxzKTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBhM2U4Zjdi
N2JmM2Q2MDA4ZGViMGM2MzhhYTM3MTE1Zjk3YTJhNmJhLi4zMWU4NzM0MTlkZWZlYmZiODBhMTJh
MDI3OTRjZGYzYzNmNDkwYjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcApAQCAtNDUsNyArNDUsNyBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0KQordm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQogewogICAgIGNvbnRleHQudHJhbnNsYXRlKC1jb250ZW50UmVjdC54KCksIC1jb250ZW50UmVj
dC55KCkpOwogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApp
bmRleCBmZDc5YTA0ZDBhMzZkNzk2YTRlN2YzMzQzMzE3MmE4MjA0YmMxNDllLi44ODhhMmZhOGQ4
NWJkYzNmNDlhNWNlNDllZmQxOThlMzllZWViNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQ
YWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAgICAgY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZGIwYWU0Njk5ZTc4
OTY5MmY1MWM0MGI4Y2RlNzY0ODRmZDFjNGFhOC4uNzBiNWY4MmEyMDUzMjM1NDllNmUwNjY5ODYz
MDljZjJiOWM5MGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAt
OTMsNyArOTMsNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2Vz
KCkKICAgICBUaWxlZExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgQVNTRVJU
KGRyYXdzQ29udGVudCgpKTsKIApAQCAtMTE0LDYgKzExNCwyMCBAQCB2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgcmVzZXROZWVkc0Rpc3BsYXko
KTsKIH0KIAordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHko
KQoreworICAgIEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBs
YXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9k
ZWxlZ2F0ZSAmJiBtX2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXgg
YjgzNGU2NzZiZDYzNDQ1YWE0NTNiMzY1ZWVlMjgwMjQwZjM4MDljMS4uYzVlOWZjY2ViZjQ3NmVi
N2QwMmJjOTgyMjE3MGI2NjUzYTUxM2JiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1
bS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXll
ckNocm9taXVtKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAwYmQ4MmFlMWExOGEyNTMwZjg3
NDIwZTQ4MWQwZDVjYTIzMGI5MDEyLi5jMGQ2NWZjMTE2ZDUyN2VlYjAwODBiNGQ3Mzk5YzAxNjBm
ZDg0OTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE2OCw3ICsxNjgs
NyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRz
KQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50cy0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7CiB9
CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lk
IEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYg
KCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBk
YXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCAxYWZjY2ZlMmZkY2U2NDQ3NWE3NGFiMmM5
MjZkMDQyY2I1ZjM3Njc0Li44YmI5YTFkZmIzNTRhNmY4YTk5ZjRmOTkwNDJjMWMwOTdlN2U2Zjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRp
cnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKIAogICAg
IHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDMzNDZkZDg1OGJlY2JmMGNmNWU2ZDVkNzVlOGQ1OTVjNTY2MTFlMTIuLjJkNzk0ODJmNGEzNTQ0
ODg5ZGUxYjU5MTc2N2M1ZmE5YjUxYjU1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTE1OCw2
ICsxNTgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBUaGVzZSBtZXRob2RzIHR5cGljYWxseSBuZWVk
IHRvIGJlIG92ZXJ3cml0dGVuIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzSWZEaXJ0eSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggNDUyNWNlN2ViMTFjOWM1NmVlMWQyNzg1MmYwNzJmMzk1NWM4MTFlZC4uZDExZDc3YmRi
ZDIyNWU2MWZjM2E1MWU3OTY5Nzg0ZGU0NTdmMWI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaApAQCAtNDksNyArNDksOCBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRleHR1
cmUoKSB7IH0KIAogICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1f
dGV4dHVyZS5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3Qg
SW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRS
ZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovKSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkg
OiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKICAgICAv
LyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxl
ZCB0ZXhlbC4KICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54
IGlzIGJsdWUgYW5kIHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3Jt
YXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0
ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAq
LykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyog
Y29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9y
ZGVyVGV4ZWxzICovKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5k
ZXggZGNmZDYzZTcxOTM0MmFlNzUwYmRmZWFhOGNhYjMyZjFjZmZjODJjMi4uM2E1YTRkZjM3Njcz
ODgxZjlhODdkMTkzODY2ODU1ZjQwNTcxYTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ4LDEyICs0OCwxMiBA
QCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBj
b25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLykKK3Zv
aWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGlu
dCAvKiBib3JkZXJUZXhlbHMgKi8pCiB7CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGljdHVy
ZS5iZWdpblJlY29yZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWlnaHQo
KSk7CiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsKICAg
ICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwotICAg
IHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCk7CisgICAgcGFpbnQo
Z3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29yZGlu
ZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKaW5kZXggODkxYTZkM2M5ZjEyMjAxY2E0YjE4MTc0MGJmMGZiYTQ3ZTAxZGI1
NC4uYTk0ZTY0NjFhZGZmZTdkYWIwOGFiYThmOTE5NzY1YzEwOWZiZDA0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscyk7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNv
bnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKICAgICB2b2lkIGRyYXdQ
aWN0dXJlKFNrQ2FudmFzKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAppbmRleCBiZDFmMzY2NzcxNzNkMmRjOWVkNGQ3OWIwMzZkYjdiNzg0YTYyMTIyLi5iZjEz
YTM0NDk2ZDgwODQ4N2I5MWY2ZjRmZDBlOTk3MTg0NzJlY2I4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTE1NCwxMCArMTU0LDEwIEBAIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICAgICAgaXNO
b25Db21wb3NpdGVkQ29udGVudCgpID8gQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4ZWxz
IDogQ0NMYXllclRpbGluZ0RhdGE6Okhhc0JvcmRlclRleGVscyk7CiB9CiAKLXZvaWQgVGlsZWRM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNv
bXBvc2l0aW5nIHRvIGdldCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRv
IGJlY29tZSBpbnZhbGlkYXRlZCBtaWQtdXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJhdyB8fCBt
X3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpKQor
ICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8
ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKQEAgLTE2NSwxMCAr
MTY1LDcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICBmb3IgKGludCBqID0gdG9wOyBq
IDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0
OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7
Ci0gICAgICAgICAgICBpZiAoIXRpbGUpCi0gICAgICAgICAgICAgICAgdGlsZSA9IGNyZWF0ZVRp
bGUoaSwgaik7Ci0gICAgICAgICAgICBlbHNlIGlmICghdGlsZS0+ZGlydHkoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIEFTU0VSVCh0aWxlKTsKIAogICAgICAgICAg
ICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0OwogICAgICAgICAgICAg
aWYgKHRpbGUtPm1fdXBkYXRlUmVjdC5pc0VtcHR5KCkpCkBAIC0xOTUsMTMgKzE5Miw3IEBAIHZv
aWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBDCiAgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsg
ZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5oZWlnaHQoKSkKICAgICAgICAgICAgICAg
ICBDUkFTSCgpOwogCi0gICAgICAgICAgICB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5iaW5kVGV4
dHVyZShjb250ZXh0LCB1cGRhdGVyLmFsbG9jYXRvcigpKTsKLSAgICAgICAgICAgIGNvbnN0IEdD
M0RpbnQgZmlsdGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRl
eHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7
Ci0gICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJ
TFRFUiwgZmlsdGVyKSk7Ci0KICAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1
cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwotICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0
eSgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zNjMsMjMgKzM1NCwxOCBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQogICAgIG1fcmVxdWVzdGVkVXBkYXRlUmVjdCA9IGNvbnRlbnRSZWN0OwogCiAgICAgbV9wYWlu
dFJlY3QgPSBtX3RpbGVyLT5sYXllclJlY3RUb0NvbnRlbnRSZWN0KGRpcnR5TGF5ZXJSZWN0KTsK
LSAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChtX3BhaW50UmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIENhbGxpbmcgcHJlcGFyZVRvVXBk
YXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRl
Ci0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91
ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgotICAgIC8v
IEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0Nv
bnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAgIC8vIHNvIHdlIGdyYWIgYSBsb2Nh
bCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWlu
dCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0
ZXh0dXJlVXBkYXRlcigpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUo
bV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVs
cygpKTsKLQogICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhtX3JlcXVlc3Rl
ZFVwZGF0ZVJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAgZm9yIChpbnQgaiA9
IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8
PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0
KGksIGopOwogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAgICAgIHRpbGUgPSBj
cmVhdGVUaWxlKGksIGopOwotICAgICAgICAgICAgZWxzZSBpZiAoIXRpbGUtPmRpcnR5KCkpCisK
KyAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICAgICAgICAg
IGlmICghdGlsZS0+ZGlydHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgLy8gQ2FsY3VsYXRlIGNvbnRlbnQtc3BhY2UgcmVjdGFuZ2xlIHRvIGNvcHkgZnJvbS4K
QEAgLTM5MSwxMyArMzc3LDM5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9V
cGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgICAgICAgICBzb3VyY2VSZWN0
LmludGVyc2VjdChtX3BhaW50UmVjdCk7CiAKICAgICAgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVj
dCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBpZiAoc291cmNlUmVjdC5pc0VtcHR5KCkpCisK
KyAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwor
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVj
dC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDYWxsaW5nIHBhaW50Q29udGVudHMoKSBj
YWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAv
LyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVy
ZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZl
ciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1
bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVy
ZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBs
ZXRlcy4KKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVV
cGRhdGVyKCkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJl
Y3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpKTsKKwor
ICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CisgICAgbV90aWxlci0+Y29udGVudFJl
Y3RUb1RpbGVJbmRpY2VzKG1fcmVxdWVzdGVkVXBkYXRlUmVjdCwgbGVmdCwgdG9wLCByaWdodCwg
Ym90dG9tKTsKKyAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CisgICAg
ICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKKyAgICAgICAgICAgIFVw
ZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CisgICAgICAgICAgICBBU1NFUlQodGls
ZSk7CisKKyAgICAgICAgICAgIGlmICh0aWxlLT5tX3VwZGF0ZVJlY3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB0aWxlLT50ZXh0dXJlKCktPnBy
ZXBhcmVSZWN0KHNvdXJjZVJlY3QpOworICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5wYWlu
dENvbnRlbnRzUmVjdCh0aWxlLT5tX3VwZGF0ZVJlY3QpOwogICAgICAgICB9CiAgICAgfQogfQog
CisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVkYWYwZjAxOTQ3YTk5NDdjZDIzNWY1NWZiNzM5NTllNDQ3
YjFmNTYuLmQ0YzJiZTNiODg3ZDhkNDY1ZGVmNjc3YzY0MjIyNDY1YjE3MmVjNzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC02NSw4ICs2NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAg
ICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5n
IHVwZGF0ZSgpLgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QpOwotICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRo
YXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUg
dGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KICAgICB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgLy8gUGFpbnQgY29u
dGVudHMgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRl
bnRSZWN0LgorICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIApA
QCAtODMsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVN
YW5hZ2VyKCkgY29uc3Q7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHBy
ZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8g
VGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRD
b250ZW50cygpLgogICAgIEludFJlY3QgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0OwogICAgIC8vIFN0
YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygp
LiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEKICAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBh
Y3R1YWxseSByZS1wYWludGVkIGJ5IFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCmluZGV4IGMxYWQzOWJhOTYwOWVjNDMyZDcwYTM2NGE5OGQ1MTFmMTZlNjE3OWYuLjJjNjZm
YWI0NWRiMDMxNDc1NTcxMzRiNThkMzY3NDQyODRkMWM1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmNwcApAQCAtMjk3LDcgKzI5Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpj
b21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5
LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRl
KCkKIHsKICAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47CkBAIC0zMDUsMTIg
KzMwNSwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAo
dmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVM
YXllcnMocm9vdExheWVyKCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9
CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9v
dExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6
cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVy
U3VyZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAg
LTMxOSwzMSArMzE5LDU3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50
KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlw
UmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25l
IHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1f
dXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsK
KyAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVk
IGFmdGVyCisgICAgLy8gcHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBl
bmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LnNpemUoKSAmJiAhbV91cGRhdGVMaXN0LnNpemUoKSk7CisgICAgbV9yZW5kZXJTdXJm
YWNlVXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKIAogICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogcm9vdFJlbmRlclN1cmZhY2UgPSByb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAg
ICByb290UmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgIHsKLSAgICAgICAg
VFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIs
IHRoaXMsIDApOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXllciwgbV96b29tQW5pbWF0
b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3VwZGF0ZUxpc3QsIHJvb3RS
ZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1h
eFRleHR1cmVTaXplKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJl
cGFyZVRvVXBkYXRlOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOworICAgICAgICBDQ0xheWVyVHJl
ZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5
ZXIsIHJvb3RMYXllciwgbV96b29tQW5pbWF0b3JUcmFuc2Zvcm0sIG1fem9vbUFuaW1hdG9yVHJh
bnNmb3JtLCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5
ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAg
ICAgfQogCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1fdXBkYXRlTGlzdCk7CisgICAgYXBwZW5k
VmlzaWJsZUxheWVycyhtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBtX3VwZGF0ZUxpc3QpOwor
CisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXll
ckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5
ZXIgPSBtX3VwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5wcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgfQogfQogCi1zdGF0aWMgdm9pZCBwYWludENvbnRl
bnRzSWZEaXJ0eShMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxh
eWVyUmVjdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKCkKK3sKKyAgICBp
ZiAoIXJvb3RMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmlld3BvcnRTaXpl
KCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RM
YXllcigpKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJD
aHJvbWl1bSogcm9vdExheWVyKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OnBhaW50Q29udGVudHMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBt
X3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7
CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W2xheWVySW5kZXhd
LmdldCgpOworICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB9Cit9
CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1
bSogbGF5ZXIsIGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QsIExheWVyTGlzdCYgdXBk
YXRlTGlzdCkKIHsKICAgICBpZiAobGF5ZXItPmRyYXdzQ29udGVudCgpKSB7CiAgICAgICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVMYXllclJlY3QpOwotICAgICAgICBsYXll
ci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgdXBkYXRlTGlzdC5hcHBlbmQobGF5
ZXIpOwogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxp
Y2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllcikKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Uo
TGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3Qp
CiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkgZXhpc3QgZm9yIGxheWVy
cyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRoaXMgcG9pbnQKICAgICAv
LyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBzb21ldGhpbmcgd2lsbCBi
ZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpAQCAtMzUxLDcgKzM3Nyw3
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3Vy
ZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAKICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVy
LT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigp
LT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShy
ZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBJbnRSZWN0KEludFBvaW50KCksIHJlbmRl
clN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7CisgICAgICAgIGFwcGVuZFZpc2libGVM
YXllcihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBJbnRSZWN0KEludFBvaW50KCks
IHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSwgdXBkYXRlTGlzdCk7CiAgICAg
fQogCiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVy
LT5yZXBsaWNhTGF5ZXIoKTsKQEAgLTM2MCwxOSArMzg2LDE5IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiBy
ZW5kZXJTCiAgICAgICAgIEludFJlY3QgdmlzaWJsZUxheWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdDxMYXllckNocm9taXVtPihyZW5kZXJT
dXJmYWNlTGF5ZXIpOwogCiAgICAgICAgIHJlcGxpY2FMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0
aGlzKTsKLSAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLCB2aXNpYmxl
TGF5ZXJSZWN0KTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgdmlz
aWJsZUxheWVyUmVjdCwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+
bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNl
dExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBJbnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXll
ci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMoKSkpOworICAgICAgICAgICAgYXBwZW5kVmlz
aWJsZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIEludFJlY3QoSW50UG9pbnQoKSwg
cmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSwgdXBkYXRlTGlzdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVy
Q29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQordm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5k
ZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewotICAgIGZvciAo
aW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3Vy
ZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVt
KiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRl
eF0uZ2V0KCk7CisgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewor
ICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNl
VXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2Uo
KTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogCkBAIC0zODUsNyArNDExLDcgQEAg
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3Qm
IHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IHJlbmRlclN1cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFp
bnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyKTsKKyAg
ICAgICAgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VM
YXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3Qg
PSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKICAgICAgICAgQVNTRVJUKGxheWVyTGlzdC5z
aXplKCkpOwpAQCAtNDA0LDQwICs0MzAsMTYgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgSW50UmVjdCB2aXNpYmxlTGF5ZXJSZWN0ID0gQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0PExheWVyQ2hyb21pdW0+
KGxheWVyKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgcGFpbnRDb250ZW50c0lmRGlydHko
bGF5ZXIsIHZpc2libGVMYXllclJlY3QpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVy
KGxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0LCB1cGRhdGVMaXN0KTsKICAgICAgICAgfQogICAgIH0K
IH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCiB7Ci0g
ICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZh
Y2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSog
cmVuZGVyU3VyZmFjZUxheWVyID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Ci0g
ICAgICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZh
Y2VMYXllci0+cmVuZGVyU3VyZmFjZSgpOwotICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7
Ci0KLSAgICAgICAgaWYgKCFyZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKS5zaXplKCkgfHwgIXJl
bmRlclN1cmZhY2UtPmRyYXdPcGFjaXR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAg
ICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwg
Y29udGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVw
bGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMocmVu
ZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKSwgY29udGV4dCwgdXBkYXRlcik7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXll
cigpLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigpLCBjb250
ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3QgTGF5ZXJM
aXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKLSAgICAgICAgQVNT
RVJUKGxheWVyTGlzdC5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXgg
PSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7Ci0gICAg
ICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQo
KTsKLSAgICAgICAgICAgIGlmIChsYXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxheWVyLT5yZW5k
ZXJTdXJmYWNlKCkgIT0gcmVuZGVyU3VyZmFjZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LQotICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhsYXllciwgY29udGV4dCwg
dXBkYXRlcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV91cGRhdGVM
aXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAg
ICBMYXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsK
KyAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhsYXllciwgY29udGV4dCwgdXBkYXRl
cik7CiAgICAgfQogfQogCkBAIC00NTMsMTIgKzQ1NSwxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhMYXllckNocm9taXVtKiBsYXllciwgR3JhcGhp
Y3NDbwogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKIHsKLSAg
ICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxp
c3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiBsYXll
ciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIG1fdXBkYXRlTGlzdC5j
bGVhcigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4
IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7Cisg
ICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtz
dXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91
cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigp
OwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6c3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNmQ0NWM4
NTU5YjY4OGE1NThjNGY3MjBlMWI4ZDU4YWQ2OWU3NjQxYi4uZWFkYjUwZTIzNDJmMzZhZDFhMjZh
ODMyMDg5Yjg2NTAyYjZmYmZmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE3
MSw3ICsxNzEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxl
cnMoYm9vbCk7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycygpOworICAgIHZvaWQgcHJlcGFyZVRv
VXBkYXRlKCk7CisgICAgdm9pZCBwYWludENvbnRlbnRzKCk7CiAKICAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7
CiAgICAgdm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0xODQs
MTAgKzE4NSwxMiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHR5cGVkZWYgVmVjdG9yPFJl
ZlB0cjxMYXllckNocm9taXVtPiA+IExheWVyTGlzdDsKIAotICAgIHZvaWQgcGFpbnRMYXllckNv
bnRlbnRzKGNvbnN0IExheWVyTGlzdCYpOwotICAgIHZvaWQgcGFpbnRNYXNrQW5kUmVwbGljYUZv
clJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxh
eWVyKExheWVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0LCBMYXll
ckxpc3QmKTsKKyAgICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShM
YXllckNocm9taXVtKiwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIGFwcGVuZFZp
c2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5
ZXJMaXN0JiB1cGRhdGVMaXN0KTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21p
dW0qKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7CisgICAgdm9p
ZCBwYWludENvbnRlbnRzKExheWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoTGF5ZXJDaHJvbWl1bSosIEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYpOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKQEAgLTIwNCw2ICsy
MDcsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsK
ICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAor
ICAgIExheWVyTGlzdCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0OwogICAgIExheWVyTGlzdCBt
X3VwZGF0ZUxpc3Q7CiAKICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCmluZGV4IDYyOTFkYjU3YTExYTM1NGJiMDVjZWQ3MmFk
MmUxYTFlYzczNzg1MGIuLmU4ZTEyMjAwZTRhMWExMDAxOTMwZjE4MWNjYjU5MTEwM2VlMzc2Njcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xNDksMTQgKzE0
OSwyMCBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCiB2b2lk
IENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6
aXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gUHJlcGFyZSBjb21wb3NpdG9yIHJlc291cmNlcwor
ICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSk7CisgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Cisg
ICAgdXBkYXRlci5wcmVwYXJlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSk7CisKKyAg
ICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29udGVudHMoKTsKKwogICAgIC8vIENvbW1pdCBpbW1l
ZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAg
ICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKICAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgdXBkYXRlcik7CiAgICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwu
Z2V0KCkpOwpAQCAtMjc0LDcgKzI4MCw3IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29t
bWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAK
LSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9z
dC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAKICAgICBkb0NvbW1pdCgpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUxODIwZjMxNGZk
YjhjYzg3MmFiLi44MjkyZjdjNzU5NmVjZDhjMjg4ZTdmYjA5OGMxMmE3MTMwNjVkMzgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtNTksNiArNTksMTQgQEAgdm9pZCBD
Q1RleHR1cmVVcGRhdGVyOjphcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmUKICAgICBtX2VudHJpZXMuYXBwZW5kKGVudHJ5KTsKIH0KIAordm9p
ZCBDQ1RleHR1cmVVcGRhdGVyOjpwcmVwYXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQor
eworICAgIGZvciAoc2l6ZV90IGVudHJ5SW5kZXggPSAwOyBlbnRyeUluZGV4IDwgbV9lbnRyaWVz
LnNpemUoKTsgKytlbnRyeUluZGV4KSB7CisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1f
ZW50cmllc1tlbnRyeUluZGV4XTsKKyAgICAgICAgZW50cnkubV90ZXh0dXJlLT5wcmVwYXJlUmVj
dChjb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RS
ZWN0KTsKKyAgICB9Cit9CisKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9yZVVwZGF0ZXMo
KSBjb25zdAogewogICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oCmluZGV4IGJmNzlhYzljMmUyMmVmYzVlZGE5YTY0ODI5ZTJlZmNjZWMxNWJi
MzAuLjA1ODVjMDc5MDEwOGQyOTcxZTBlYjUwNWMzMGU0NDgwNzUyOWQxMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTQyLDYgKzQyLDkgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAorICAgIC8vIFByZXBhcmUgYWxs
IHRleHR1cmVzLgorICAgIHZvaWQgcHJlcGFyZShHcmFwaGljc0NvbnRleHQzRCopOworCiAgICAg
Ym9vbCBoYXNNb3JlVXBkYXRlcygpIGNvbnN0OwogCiAgICAgLy8gVXBkYXRlIHNvbWUgdGV4dHVy
ZXMuIFJldHVybnMgdHJ1ZSBpZiBtb3JlIHRleHR1cmVzIGxlZnQgdG8gcHJvY2Vzcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggYTk5NGNmZjc1OTAwYzY5YTljMDgzNDc2NGFhODNl
OGQ1MDRlNGYxMi4uMzQyYzU0YTA1ZGRjY2I2ZjMxMDQxYTcxNDkzZWJlNWE3ZWJjNTNhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM3Nyw3ICszNzcsMTcgQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91Ymxl
IGZyYW1lQmVnaW5UaW0KICAgICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRSZXF1ZXN0
ZWQgPSBmYWxzZTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAg
bV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKKworICAgIHsKKyAgICAgICAgLy8g
SW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZvciBmcmFtZS4KKyAgICAg
ICAgVFJBQ0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAgICAgIENDQ29tcGxldGlv
bkV2ZW50IGNvbXBsZXRpb247CisgICAgICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUND
VGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUZyYW1lUmVzb3VyY2Vz
T25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOworICAg
ICAgICBjb21wbGV0aW9uLndhaXQoKTsKKyAgICB9CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBh
aW50Q29udGVudHMoKTsKIAogICAgIHsKICAgICAgICAgLy8gTm90aWZ5IHRoZSBpbXBsIHRocmVh
ZCB0aGF0IHRoZSBiZWdpbkZyYW1lIGhhcyBjb21wbGV0ZWQuIFRoaXMgd2lsbApAQCAtMzk1LDYg
KzQwNSwyNiBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNl
cXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xhc3RFeGVj
dXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7
CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUZyYW1lUmVzb3VyY2VzT25JbXBs
VGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQoreworICAgIFRSQUNFX0VWRU5U
KCJDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQiLCB0
aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
KTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3NjaGVkdWxlck9u
SW1wbFRocmVhZCk7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQ
ZW5kaW5nKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBjb21w
bGV0aW9uLT5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCgh
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKKyAgICBtX2xh
eWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAg
IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5wcmVwYXJlKG1fbGF5ZXJUcmVl
SG9zdEltcGwtPmNvbnRleHQoKSk7CisKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwog
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqIGNvbXBsZXRpb24sIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4g
c2Nyb2xsSW5mbykKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC00MDksOSArNDM5LDcgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBs
VGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
ID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjphcHBs
eVNjcm9sbEFuZFNjYWxlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNjcm9sbExheWVyKCksICpzY3Jv
bGxJbmZvKTsKIAogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxl
dGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAwNDVkYTc0NjgwNjU3OTMwOGUxNmZk
YmVjZjEwMmRlZTc4OTI5OTkzLi40YTQ1OTA5Njc1ODFlZGJhMTA4N2RhMDU0OTVkODUyMmEyOWEz
NTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC05Myw2ICs5Myw3IEBAIHByaXZhdGU6
CiAgICAgfTsKICAgICBQYXNzT3duUHRyPENDTWFpblRocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5G
cmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJh
bWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NNYWluVGhy
ZWFkOjpUYXNrKiopOworICAgIHZvaWQgaW5pdGlhbGl6ZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhy
ZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVT
ZXQ+KTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVl
c3QqKTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA0ZTZlZjk3
YmRiNzJhYWNlMzFkNjRiMzg5YjQ2NjE3ZmQzMDcyOTYxLi44YTJkNmZlZjY0ZGY3N2VkMWU1ZDAy
YzNkMGRjMzI0Yzk3OGU3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApA
QCAtMjEzLDYgKzIxMyw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAgICAgbV90aWxlci0+
Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b20pOwogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxlci0+Y29udGVudFJlY3RUb0xh
eWVyUmVjdChjb250ZW50UmVjdCk7CiAgICAgZmxvYXQgc2lnbiA9IEZsb2F0UXVhZChjb250ZW50
UmVjdCkuaXNDb3VudGVyY2xvY2t3aXNlKCkgPyAtMSA6IDE7CisgICAgY29uc3QgR0MzRGludCBm
aWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpM
SU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICBmb3IgKGludCBqID0gdG9w
OyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHByZXZFZGdl
WCA9IGNvbnRlbnRRdWFkLmxlZnQoKTsKIApAQCAtMzM3LDYgKzMzOCw5IEBAIHZvaWQgQ0NUaWxl
ZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJl
ciwgY29uc3QgSW50CiAKICAgICAgICAgICAgIGlmICh0aWxlICYmIHRpbGUtPnRleHR1cmVJZCgp
KSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIHRpbGUtPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgICAgICBHTEMo
Y29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVS
RV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7Cisg
ICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19G
SUxURVIsIGZpbHRlcikpOworCiAgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1Rl
eHR1cmVkUXVhZChnbG9iYWxUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwg
b3BhY2l0eSwgcXVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114863</attachid>
            <date>2011-11-13 14:26:16 -0800</date>
            <delta_ts>2011-11-14 18:05:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72192-20111113142615.patch</filename>
            <type>text/plain</type>
            <size>41933</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMDkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWY3Y2U5MjA1YTVkNTYz
MjBjZTM2ZTU0NDViYmRlOTA2YWUxYThhMy4uNTU4Nzc4Y2Y2YzljMjI2NjEwZDNlZGFhMjFlMmEx
NzcxODdlMTk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDExLTExLTEzICBEYXZp
ZCBSZXZlbWFuICA8cmV2ZW1hbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBJ
bml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHByaW9yIHRvIHBhaW50aW5nLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxOTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTcGxpdCBsYXllciB1cGRh
dGVzIGludG8gdHdvIHN0ZXBzLiBTdGVwIG9uZSBjYWxjdWxhdGVzIHRyYW5zZm9ybXMKKyAgICAg
ICAgYW5kIHZpc2libGUgbGF5ZXIgYXJlYXMuIFN0ZXAgdHdvIHBhaW50cyBsYXllciBjb250ZW50
cy4gVGhpcworICAgICAgICBhbGxvd3MgdXMgdG8gcGVyZm9ybSBhIGNvbXBvc2l0b3IgcmVzb3Vy
Y2UgcHJlcGFyYXRpb24gc3RlcCBhZnRlcgorICAgICAgICB2aXNpYmxlIGxheWVyIGFyZWFzIGhh
dmUgYmVlbiBjb21wdXRlZCBidXQgYmVmb3JlIGFueSBwYWludGluZworICAgICAgICBoYXMgb2Nj
dXJyZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRM
YXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnBhaW50Q29udGVu
dHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29u
dGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9U
aWxlZExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVI
b3N0OjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBw
ZW5kVmlzaWJsZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6YXBw
ZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkND
TGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRpbmdVcGRhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aW5pdGlhbGl6ZUZyYW1lUmVzb3Vy
Y2VzT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NU
aWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKToKKwogMjAxMS0xMS0xMyAgSnVsaWVuIENoYWZmcmFp
eCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKDk5ODQ5KTog
TlVMTC1kZXJlZiBpbiB1cGRhdGVMYXN0TWVkaWFMaW5lIHdoZW4gcGFyc2luZyBzb21lIG1lZGlh
LXF1ZXJpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKaW5kZXggMDcxZGU2NDg0MzhhZDMyYzBjNGU2ZWM4OWMzOGY2NWFhODEzNTQ5NS4u
ZjExMmVjMWI5OWIwOTg4MWM1MTY5YjhmNDEyZDkxYTFmZWM3NTA3OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTc3LDcgKzc3
LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpCit2b2lkIEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQogewogICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsNyArODgsNyBA
QCB2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpU
ZXh0T3B0aW9uIHRleHRPcHRpb24gPQogICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNh
bnZhczo6UGFpbnRlcjo6R3JheXNjYWxlVGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpT
dWJwaXhlbFRleHQ7CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigm
bV9jYW52YXMsIHRleHRPcHRpb24pOwotICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIu
Y29udGV4dCgpLCBjb250ZW50UmVjdCk7CisgICAgcGFpbnQoKmNhbnZhc1BhaW50ZXIuY29udGV4
dCgpLCBjb250ZW50UmVjdCk7CiB9CiAKIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDY3NWRkZGQ1YjQ5
YjIxYzBmNzViOGZhNDIyODljYzJmMTBlNTRhNDQuLjY4ZmI1YWE4YWI4ZGUxMmQzMWViZGFkOWJh
NjQ2MGZkODcxMmUwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKQEAgLTU5LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1
cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0
dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KICAgICB2aXJ0
dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVy
ZUZvcm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMp
OworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscyk7CiAgICAgdm9p
ZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKaW5kZXggYTNlOGY3YjdiZjNkNjAwOGRlYjBjNjM4YWEzNzExNWY5N2Ey
YTZiYS4uMzFlODczNDE5ZGVmZWJmYjgwYTEyYTAyNzk0Y2RmM2MzZjQ5MGI2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQog
ewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3ZvaWQg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgt
Y29udGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggZmQ3OWEwNGQwYTM2ZDc5NmE0ZTdmMzM0
MzMxNzJhODIwNGJjMTQ5ZS4uODg4YTJmYThkODViZGMzZjQ5YTVjZTQ5ZWZkMTk4ZTM5ZWVlYjcy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2b2lk
IHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QpOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uY3BwCmluZGV4IGRiMGFlNDY5OWU3ODk2OTJmNTFjNDBiOGNkZTc2NDg0ZmQxYzRhYTgu
LjcwYjVmODJhMjA1MzIzNTQ5ZTZlMDY2OTg2MzA5Y2YyYjljOTBkMTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDb250ZW50TGF5
ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgVGlsZWRMYXllckNocm9taXVtOjpj
bGVhbnVwUmVzb3VyY2VzKCk7CiB9CiAKLXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkoKQogewogICAgIEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7CiAKQEAgLTExNCw2
ICsxMTQsMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGly
dHkoKQogICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKK3ZvaWQgQ29udGVudExheWVyQ2hy
b21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3sKKyAgICBBU1NFUlQoZHJhd3NDb250ZW50
KCkpOworCisgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgp
OworICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIWRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRz
KGxheWVyUmVjdCk7Cit9CisKIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVu
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+ZHJhd3ND
b250ZW50KCkgJiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
b250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGI4MzRlNjc2YmQ2MzQ0NWFhNDUzYjM2NWVlZTI4
MDI0MGYzODA5YzEuLmM1ZTlmY2NlYmY0NzZlYjdkMDJiYzk4MjIxNzBiNjY1M2E1MTNiYjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6
CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1bSgpOwogCisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggMGJkODJhZTFhMThhMjUzMGY4NzQyMGU0ODFkMGQ1Y2EyMzBiOTAxMi4uYzBkNjVm
YzExNmQ1MjdlZWIwMDgwYjRkNzM5OWMwMTYwZmQ4NDkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06
OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50cykKICAgICBzZXRPcGFxdWUoIW1fY29udGVudHMt
PmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOwogfQogCi12b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKQogewogICAgIGlmICghbV9kaXJ0eVJlY3QuaXNFbXB0eSgpKSB7CiAg
ICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPnVwZGF0ZUZyb21JbWFnZShtX2NvbnRlbnRzLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5k
ZXggMWFmY2NmZTJmZGNlNjQ0NzVhNzRhYjJjOTI2ZDA0MmNiNWYzNzY3NC4uOGJiOWExZGZiMzU0
YTZmOGE5OWY0Zjk5MDQyYzFjMDk3ZTdlNmY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJv
bWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAKICAgICB2b2lkIHNldENvbnRlbnRzKEltYWdlKiBpbWFn
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaAppbmRleCA3NDdkYzk4NjljZjEwYjYyZjMwZTliZjA5YWYy
Mjc5ODY2NGQzNDI0Li4xNDUzZTZiZDczZGViZGY1YWM1NzA4YTcyOTk5M2Y3ZmY5NTY0NzJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCkBAIC0xNTcsNiArMTU3LDcgQEAgcHVibGljOgogCiAgICAgLy8g
VGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVk
IGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ1MjVjZTdlYjExYzljNTZlZTFkMjc4
NTJmMDcyZjM5NTVjODExZWQuLmQxMWQ3N2JkYmQyMjVlNjFmYzNhNTFlNzk2OTc4NGRlNDU3ZjFi
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ5LDcgKzQ5LDggQEAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKICAgICAgICAgTWFuYWdlZFRl
eHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3Qg
SW50UmVjdCYgLyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KSA9IDA7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQpAQCAt
NzgsNyArNzksNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBj
b21wb25lbnQgb3JkZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1h
dCBpcyBUZXhlbEZvcm1hdEJHUkEsIHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgog
ICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51
bSB0ZXh0dXJlRm9ybWF0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNp
emUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXpl
JiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLykgeyB9CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGRjZmQ2M2U3MTkzNDJhZTc1MGJkZmVhYThj
YWIzMmYxY2ZmYzgyYzIuLjNhNWE0ZGYzNzY3Mzg4MWY5YTg3ZDE5Mzg2Njg1NWY0MDU3MWE1MGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Nr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC00OCwxMiArNDgsMTIgQEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12
b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8pCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKQogewogICAg
IFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qu
d2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRmb3JtQ29udGV4dFNraWEg
cGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29u
dGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBwYWludENvbnRlbnRzKGdyYXBoaWNzQ29udGV4
dCwgY29udGVudFJlY3QpOworICAgIHBhaW50KGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3Qp
OwogICAgIG1fcGljdHVyZS5lbmRSZWNvcmRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDg5MWE2ZDNjOWYx
MjIwMWNhNGIxODE3NDBiZjBmYmE0N2UwMWRiNTQuLmE5NGU2NDYxYWRmZmU3ZGFiMDhhYmE4Zjkx
OTc2NWMxMDlmYmQwNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJvdGVjdGVk
OgogICAgIGV4cGxpY2l0IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNp
emUsIGludCBib3JkZXJUZXhlbHMpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscyk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShTa0NhbnZhcyopOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjYwYTE3NWM0MjhjMTU5YTYz
OGUwMjQ3NWE0YjVkZTQyMWQyZWE0YS4uMzhmYjA5MmEyYWUzODc0MTQ5NWJmY2UzNWM5OTMzOTZi
YzEyMzljNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0xNTQsMTAgKzE1
NCwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChDQ0xheWVy
VHJlZUhvc3QqIGhvc3QpCiAgICAgICAgIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQoKSA/IENDTGF5
ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdEYXRhOjpIYXNCb3Jk
ZXJUZXhlbHMpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYg
dXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKIHsKICAg
ICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwg
d2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0
ZS4KLSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHko
KSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1
ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3Bh
aW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGludCBsZWZ0LCB0b3As
IHJpZ2h0LCBib3R0b207CkBAIC0xNjUsMTAgKzE2NSw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9t
aXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBDCiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBm
b3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFi
bGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGopOwotICAgICAgICAgICAgaWYgKCF0aWxlKQotICAg
ICAgICAgICAgICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwotICAgICAgICAgICAgZWxzZSBp
ZiAoIXRpbGUtPmRpcnR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBBU1NFUlQodGlsZSk7CiAKICAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IHRpbGUt
Pm1fdXBkYXRlUmVjdDsKICAgICAgICAgICAgIGlmICh0aWxlLT5tX3VwZGF0ZVJlY3QuaXNFbXB0
eSgpKQpAQCAtMTk1LDEzICsxOTIsNyBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAg
ICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4gbV9wYWludFJl
Y3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgdGls
ZS0+bWFuYWdlZFRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwgdXBkYXRlci5hbGxvY2F0
b3IoKSk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0Jv
cmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4
dDNEOjpORUFSRVNUOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFt
ZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwotCiAgICAgICAgICAg
ICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
LSAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MzYzLDIzICszNTQsMTggQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVJlY3Qg
PSBjb250ZW50UmVjdDsKIAogICAgIG1fcGFpbnRSZWN0ID0gbV90aWxlci0+bGF5ZXJSZWN0VG9D
b250ZW50UmVjdChkaXJ0eUxheWVyUmVjdCk7Ci0gICAgaWYgKGRpcnR5TGF5ZXJSZWN0LmlzRW1w
dHkoKSkKKyAgICBpZiAobV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBh
aW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcg
Y29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVw
ZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBt
ZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hl
cywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUg
dXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgotICAgIFJlZlB0cjxMYXll
clRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0gICAgdGV4dHVy
ZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6
ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSk7Ci0KICAgICBtX3RpbGVyLT5jb250ZW50
UmVjdFRvVGlsZUluZGljZXMobV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0
LCBib3R0b20pOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAg
ICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAg
VXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKICAgICAgICAgICAgIGlmICghdGls
ZSkKICAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKCF0aWxlLT5kaXJ0eSgpKQorCisgICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJl
Y3QgPSBJbnRSZWN0KCk7CisgICAgICAgICAgICBpZiAoIXRpbGUtPmRpcnR5KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBjb250ZW50LXNw
YWNlIHJlY3RhbmdsZSB0byBjb3B5IGZyb20uCkBAIC0zOTAsMTMgKzM3NiwzOSBAQCB2b2lkIFRp
bGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KQogICAgICAgICAgICAgc291cmNlUmVjdC5pbnRlcnNlY3QobV9wYWludFJlY3QpOwogCiAg
ICAgICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwotICAgICAgICAgICAg
aWYgKHNvdXJjZVJlY3QuaXNFbXB0eSgpKQorCisgICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5
KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwYWlu
dENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQoreworICAgIGlmIChtX3NraXBz
RHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1U
aWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gQ2FsbGluZyBwYWludENvbnRlbnRzKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdo
aWNoIG1heSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3Np
dGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0
byBiZSBkZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBi
YWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAorICAg
IC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVy
IGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisgICAgUmVmUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKKyAgICB0ZXh0dXJlVXBkYXRl
cigpLT5wYWludENvbnRlbnRzKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3Rp
bGVyLT5oYXNCb3JkZXJUZXhlbHMoKSk7CisKKyAgICBpbnQgbGVmdCwgdG9wLCByaWdodCwgYm90
dG9tOworICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5kaWNlcyhtX3JlcXVlc3RlZFVw
ZGF0ZVJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisgICAgZm9yIChpbnQgaiA9IHRv
cDsgaiA8PSBib3R0b207ICsraikgeworICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSBy
aWdodDsgKytpKSB7CisgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGks
IGopOworICAgICAgICAgICAgQVNTRVJUKHRpbGUpOworCisgICAgICAgICAgICBpZiAodGlsZS0+
bV91cGRhdGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKKyAgICAg
ICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cGFpbnRDb250ZW50c1JlY3QodGlsZS0+bV91cGRhdGVS
ZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA1ZGFmMGYw
MTk0N2E5OTQ3Y2QyMzVmNTVmYjczOTU5ZTQ0N2IxZjU2Li5kNGMyYmUzYjg4N2Q4ZDQ2NWRlZjY3
N2M2NDIyMjQ2NWIxNzJlYzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNjUs
OCArNjUsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU2V0IGludmFsaWRhdGlvbnMgdG8gYmUg
cG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4KICAgICB2b2lkIGludmFsaWRh
dGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKLSAgICAvLyBQcmVwYXJlIGRhdGEg
bmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0
LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGgg
Y29udGVudFJlY3QuCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QpOworICAgIC8vIFBhaW50IGNvbnRlbnRzIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVy
ZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICB2b2lkIHBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHByb3Rl
Y3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKQEAgLTgzLDcgKzg1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCi0gICAgLy8gVGVt
cG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4g
cHJlcGFyZVRvVXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRSZWN0IG1fcmVx
dWVzdGVkVXBkYXRlUmVjdDsKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBk
YXRlKCkgYW5kIHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCiAg
ICAgLy8gb2YgdGhlIGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBieSBXZWJLaXQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA0ZjJjMWZiNjI2NGVlN2MzYTll
NjE3NTM3YTAyODk4MmY4YWIzM2ZlLi44YTFlMDE2NDcwYWI5N2U5ZTMwM2E0ZmMyYWE3OTQyOGRl
Nzg5MTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTI5Nyw3ICsyOTcs
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxD
Q1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5
KCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSgpCiB7CiAgICAgaWYgKCFyb290TGF5ZXIoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzA1LDEyICszMDUsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKKyAgICBwcmVw
YXJlVG9VcGRhdGUocm9vdExheWVyKCkpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBk
YXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
OjpwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIFRSQUNF
X0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSIsIHRoaXMsIDApOwog
CiAgICAgaWYgKCFyb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKICAgICAgICAgcm9vdExheWVy
LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC0zMTksMzEgKzMxOSw1NyBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICBJ
bnRSZWN0IHJvb3RDbGlwUmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSk7CiAgICAgcm9v
dExheWVyLT5zZXRDbGlwUmVjdChyb290Q2xpcFJlY3QpOwogCi0gICAgLy8gVGhpcyBhc3NlcnQg
ZmlyZXMgaWYgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyB3YXNuJ3QgY2FsbGVkIGFmdGVyCi0g
ICAgLy8gdXBkYXRlTGF5ZXJzLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55
IGdpdmVuIHRpbWUuCi0gICAgQVNTRVJUKCFtX3VwZGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBtX3Vw
ZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CisgICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYg
Y29tbWl0Q29tcGxldGUgd2Fzbid0IGNhbGxlZCBhZnRlcgorICAgIC8vIHByZXBhcmVUb1VwZGF0
ZS4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgorICAg
IEFTU0VSVCghbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCkgJiYgIW1fdXBkYXRlTGlz
dC5zaXplKCkpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXll
cik7CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9v
dExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5
ZXJMaXN0KCk7CiAKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExh
eWVyLCByb290TGF5ZXIsIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pvb21BbmltYXRvclRy
YW5zZm9ybSwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRSQUNF
X0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMiLCB0
aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJh
bnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIG1fem9vbUFuaW1hdG9y
VHJhbnNmb3JtLCBtX3pvb21BbmltYXRvclRyYW5zZm9ybSwgbV9yZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAotICAgIHBhaW50TGF5ZXJDb250ZW50
cyhtX3VwZGF0ZUxpc3QpOworICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNl
VXBkYXRlTGlzdCwgbV91cGRhdGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBt
X3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7
CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W2xheWVySW5kZXhd
LmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIH0K
IH0KIAotc3RhdGljIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5
ZXIsIGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QpCit2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cGFpbnRDb250ZW50cygpCit7CisgICAgaWYgKCFyb290TGF5ZXIoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcGFpbnRDb250ZW50cyhyb290TGF5ZXIoKSk7Cit9CisKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludENvbnRlbnRzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3sKKyAgICBU
UkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzIiwgdGhpcywgMCk7CisK
KyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVy
SW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXll
ciA9IG1fdXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnBhaW50
Q29udGVudHNJZkRpcnR5KCk7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBw
ZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBJbnRSZWN0JiB2aXNp
YmxlTGF5ZXJSZWN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgaWYgKGxheWVyLT5k
cmF3c0NvbnRlbnQoKSkgewogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNp
YmxlTGF5ZXJSZWN0KTsKLSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7Cisg
ICAgICAgIHVwZGF0ZUxpc3QuYXBwZW5kKGxheWVyKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXll
clRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9t
aXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFz
a0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VM
YXllciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCBy
ZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJ
ZiB3ZSByZWFjaCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRo
YXQgYXQgbGVhc3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJm
YWNlLCBzbyB0aGUKQEAgLTM1MSw3ICszNzcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFp
bnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwog
CiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVu
ZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAg
ICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIo
KSwgSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMo
KSkpOworICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNr
TGF5ZXIoKSwgSW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRC
b3VuZHMoKSksIHVwZGF0ZUxpc3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxp
Y2FMYXllciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CkBAIC0zNjAsMTkg
KzM4NiwxOSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJl
bmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwogICAgICAgICBJbnRSZWN0IHZpc2li
bGVMYXllclJlY3QgPSBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVMYXll
clJlY3Q8TGF5ZXJDaHJvbWl1bT4ocmVuZGVyU3VyZmFjZUxheWVyKTsKIAogICAgICAgICByZXBs
aWNhTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJ
ZkRpcnR5KHJlcGxpY2FMYXllciwgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgICAgIGFwcGVuZFZp
c2libGVMYXllcihyZXBsaWNhTGF5ZXIsIHZpc2libGVMYXllclJlY3QsIHVwZGF0ZUxpc3QpOwog
CiAgICAgICAgIGlmIChyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICBy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAg
ICAgICAgcGFpbnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50
UmVjdChJbnRQb2ludCgpLCByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRz
KCkpKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZXBsaWNhTGF5ZXItPm1hc2tM
YXllcigpLCBJbnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNv
bnRlbnRCb3VuZHMoKSksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxl
TGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlz
dCYgdXBkYXRlTGlzdCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5k
ZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVy
U3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZh
Y2VJbmRleCA9IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRl
eCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVy
U3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQo
KTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVy
U3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJm
YWNlKTsKIApAQCAtMzg1LDcgKzQxMSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExh
eWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnNldExheWVy
VHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJm
YWNlKHJlbmRlclN1cmZhY2VMYXllcik7CisgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9y
UmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAg
IGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7
CiAgICAgICAgIEFTU0VSVChsYXllckxpc3Quc2l6ZSgpKTsKQEAgLTQwNCw0MCArNDMwLDE2IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0
JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEludFJl
Y3QgdmlzaWJsZUxheWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlz
aWJsZUxheWVyUmVjdDxMYXllckNocm9taXVtPihsYXllcik7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KGxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAg
ICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihsYXllciwgdmlzaWJsZUxheWVyUmVjdCwgdXBk
YXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1Rl
eHR1cmVVcGRhdGVyJiB1cGRhdGVyKQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IG1f
dXBkYXRlTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4
KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciA9IG1fdXBkYXRl
TGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwotICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0q
IHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKLSAg
ICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwotCi0gICAgICAgIGlmICghcmVuZGVyU3VyZmFj
ZS0+bGF5ZXJMaXN0KCkuc2l6ZSgpIHx8ICFyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgpKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+
bWFza0xheWVyKCkpCi0gICAgICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRl
clN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIGNvbnRleHQsIHVwZGF0ZXIpOwotCi0gICAgICAg
IGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICB1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVy
KCksIGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVu
ZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAg
ICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxp
Y2FMYXllcigpLT5tYXNrTGF5ZXIoKSwgY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KLSAg
ICAgICAgCi0gICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFj
ZS0+bGF5ZXJMaXN0KCk7Ci0gICAgICAgIEFTU0VSVChsYXllckxpc3Quc2l6ZSgpKTsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5z
aXplKCk7ICsrbGF5ZXJJbmRleCkgewotICAgICAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIg
PSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAobGF5ZXItPnJl
bmRlclN1cmZhY2UoKSAmJiBsYXllci0+cmVuZGVyU3VyZmFjZSgpICE9IHJlbmRlclN1cmZhY2Up
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobGF5ZXIsIGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICB9CisgICAgZm9y
IChpbnQgbGF5ZXJJbmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49
IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3Vw
ZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMobGF5ZXIsIGNvbnRleHQsIHVwZGF0ZXIpOwogICAgIH0KIH0KIApAQCAtNDUzLDEyICs0
NTUsMTQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIEdyYXBoaWNzQ28KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0g
MDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsK
LSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4
XS5nZXQoKTsKKyAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKKworICAgIGZvciAoc2l6ZV90IHN1
cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Qu
c2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9
IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAg
QVNTRVJUKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICBsYXllci0+Y2xlYXJSZW5k
ZXJTdXJmYWNlKCk7CiAgICAgfQotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworICAgIG1fcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OmFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggNzUxOTU0NWUxNzUwNGI2YTI0Y2MxYTc0Mjg5
NmE2ODFhNzUyNzk0ZS4uNDZkZGFiNTRlODdiMGRlNGE5YzViZWZiZDZhZGVmM2E1ZGJiYmRmNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE3MSw3ICsxNzEsOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKLSAgICB2b2lk
IHVwZGF0ZUxheWVycygpOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CisgICAgdm9pZCBw
YWludENvbnRlbnRzKCk7CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9s
bEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKQEAgLTE4NSwxMCArMTg2LDEy
IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gTGF5ZXJMaXN0OwogCi0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29u
c3QgTGF5ZXJMaXN0Jik7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3Vy
ZmFjZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJD
aHJvbWl1bSosIGNvbnN0IEludFJlY3QmIHZpc2libGVMYXllclJlY3QsIExheWVyTGlzdCYpOwor
ICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21p
dW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVy
cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVw
ZGF0ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOworICAg
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHBhaW50Q29u
dGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhMYXllckNocm9taXVtKiwgR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7
CiAgICAgdm9pZCBjbGVhclBlbmRpbmdVcGRhdGUoKTsKIApAQCAtMjA1LDYgKzIwOCw3IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0
cjxUZXh0dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwogCisgICAgTGF5ZXJM
aXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Q7CiAgICAgTGF5ZXJMaXN0IG1fdXBkYXRlTGlz
dDsKIAogICAgIENDU2V0dGluZ3MgbV9zZXR0aW5nczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggNjI5MWRiNTdhMTFhMzU0YmIwNWNlZDcyYWQyZTFhMWVjNzM3
ODUwYi4uZThlMTIyMDBlNGExYTEwMDE5MzBmMTgxY2NiNTkxMTAzZWUzNzY2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0OSwxNCArMTQ5LDIwIEBAIHZv
aWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkKIHZvaWQgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJl
YWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3IgcmVzb3VyY2VzCisgICAgQ0NUZXh0
dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKKyAgICB1cGRhdGVy
LnByZXBhcmUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpKTsKKworICAgIG1fbGF5ZXJU
cmVlSG9zdC0+cGFpbnRDb250ZW50cygpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAg
ICAgewogICAgICAgICBEZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9s
YXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKIAogICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwot
ICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRh
dGVyKTsKICAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNp
YmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CkBA
IC0yNzQsNyArMjgwLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRl
ZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbGF5
ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJl
VG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3MTBiZGUxOGVkZTE4MjBmMzE0ZmRiOGNjODcyYWIu
LjgyOTJmN2M3NTk2ZWNkOGMyODhlN2ZiMDk4YzEyYTcxMzA2NWQzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC01OSw2ICs1OSwxNCBAQCB2b2lkIENDVGV4dHVyZVVw
ZGF0ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZQogICAgIG1fZW50cmllcy5hcHBlbmQoZW50cnkpOwogfQogCit2b2lkIENDVGV4dHVy
ZVVwZGF0ZXI6OnByZXBhcmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCit7CisgICAgZm9y
IChzaXplX3QgZW50cnlJbmRleCA9IDA7IGVudHJ5SW5kZXggPCBtX2VudHJpZXMuc2l6ZSgpOyAr
K2VudHJ5SW5kZXgpIHsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW2Vu
dHJ5SW5kZXhdOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnByZXBhcmVSZWN0KGNvbnRleHQs
IG1fYWxsb2NhdG9yLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAg
IH0KK30KKwogYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVy
LmgKaW5kZXggYmY3OWFjOWMyZTIyZWZjNWVkYTlhNjQ4MjllMmVmY2NlYzE1YmIzMC4uMDU4NWMw
NzkwMTA4ZDI5NzFlMGViNTA1YzMwZTQ0ODA3NTI5ZDEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZVVwZGF0ZXIuaApAQCAtNDIsNiArNDIsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZChM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCisgICAgLy8gUHJlcGFyZSBhbGwgdGV4dHVyZXMu
CisgICAgdm9pZCBwcmVwYXJlKEdyYXBoaWNzQ29udGV4dDNEKik7CisKICAgICBib29sIGhhc01v
cmVVcGRhdGVzKCkgY29uc3Q7CiAKICAgICAvLyBVcGRhdGUgc29tZSB0ZXh0dXJlcy4gUmV0dXJu
cyB0cnVlIGlmIG1vcmUgdGV4dHVyZXMgbGVmdCB0byBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcAppbmRleCAwZTY0NTIzNGI5MDI5MjdkMWZiMzg4NTYzMDcwMzU2YWFjNmNkY2M1
Li4yZmM2ZmQyZmZjZDMwNjMzNDY1OWE1ZDVmZmQwMmNiN2E2M2FlM2MyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmNwcApAQCAtMzc3LDcgKzM3NywxNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6
OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdp
blRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNl
OwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOworCisgICAgeworICAgICAgICAvLyBJbml0aWFsaXpl
IGNvbXBvc2l0b3IgcmVzb3VyY2VzIHJlcXVpcmUgZm9yIGZyYW1lLgorICAgICAgICBUUkFDRV9F
VkVOVCgiYWxsb2NhdGUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29t
cGxldGlvbjsKKyAgICAgICAgc19jY1RocmVhZC0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNr
KHRoaXMsICZDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJl
YWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNvbXBs
ZXRpb24ud2FpdCgpOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50
cygpOwogCiAgICAgewogICAgICAgICAvLyBOb3RpZnkgdGhlIGltcGwgdGhyZWFkIHRoYXQgdGhl
IGJlZ2luRnJhbWUgaGFzIGNvbXBsZXRlZC4gVGhpcyB3aWxsCkBAIC0zOTUsNiArNDA1LDI2IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1i
ZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5G
cmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIAordm9p
ZCBDQ1RocmVhZFByb3h5Ojppbml0aWFsaXplRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFk
UHJveHk6OmluaXRpYWxpemVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwor
ICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOworICAgIEFT
U0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFk
KTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7
CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGNvbXBsZXRpb24tPnNp
Z25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKCFtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJP
bkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOworICAgIG1fbGF5ZXJUcmVlSG9z
dC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0
KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAgbV9jdXJyZW50
VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnByZXBhcmUobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGV4dCgpKTsKKworICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworfQorCiB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC00MDksOSArNDM5LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAKICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVh
ZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXgg
ZDA2NGM4YTQ5NTRjZGFlMjE2Y2ZjMmE4MjBiYzMyMTk2YjA2ZjBmYy4uZmNkZDYzMjAzNWY5MmYy
ZmZhY2Q0MGNhMjZjMzY0YTU5ZTJjYzY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAt
OTMsNiArOTMsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFzc093blB0cjxDQ01haW5UaHJl
YWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAg
ICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCosIENDTWFpblRocmVhZDo6VGFzayoqKTsKKyAgICB2b2lkIGluaXRpYWxpemVG
cmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQg
YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAg
dm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAg
dm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggNGU2ZWY5N2JkYjcyYWFjZTMx
ZDY0YjM4OWI0NjYxN2ZkMzA3Mjk2MS4uOGEyZDZmZWY2NGRmNzdlZDFlNWQwMmMzZDBkYzMyNGM5
NzhlN2U3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTIxMyw2ICsy
MTMsNyBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmRyYXdUaWxlcyhMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEludAogICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0
VG9UaWxlSW5kaWNlcyhjb250ZW50UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAg
ICBJbnRSZWN0IGxheWVyUmVjdCA9IG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QoY29u
dGVudFJlY3QpOwogICAgIGZsb2F0IHNpZ24gPSBGbG9hdFF1YWQoY29udGVudFJlY3QpLmlzQ291
bnRlcmNsb2Nrd2lzZSgpID8gLTEgOiAxOworICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0gbV90
aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3Jh
cGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0
b207ICsraikgewogICAgICAgICBDQ0xheWVyUXVhZDo6RWRnZSBwcmV2RWRnZVggPSBjb250ZW50
UXVhZC5sZWZ0KCk7CiAKQEAgLTMzNyw2ICszMzgsOSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6
OmRyYXdUaWxlcyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IElu
dAogCiAgICAgICAgICAgICBpZiAodGlsZSAmJiB0aWxlLT50ZXh0dXJlSWQoKSkgewogICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0aWxlLT50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOworICAgICAgICAgICAg
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0
ZXIpKTsKKwogICAgICAgICAgICAgICAgIGxheWVyUmVuZGVyZXItPmRyYXdUZXh0dXJlZFF1YWQo
Z2xvYmFsVHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHksIHF1
YWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9n
cmFtLT52ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115078</attachid>
            <date>2011-11-14 18:05:05 -0800</date>
            <delta_ts>2011-11-14 22:20:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72192-20111114180504.patch</filename>
            <type>text/plain</type>
            <size>70492</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQyNmYyZGU5YTBkZTQ0
MWE2NDI4MTdhYTEyMGY3YmNjZWRiMDNmNC4uYTA0OWVmYjVhNmU4Y2JiZjNmYjVjNjcyNDQ2ZDZi
MGZiNTZkNTAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxMS0xMS0xNCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
SW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyBwcmlvciB0byBwYWludGluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgbGF5ZXIgdXBk
YXRlcyBpbnRvIHR3byBzdGVwcy4gU3RlcCBvbmUgY2FsY3VsYXRlcyB0cmFuc2Zvcm1zCisgICAg
ICAgIGFuZCB2aXNpYmxlIGxheWVyIGFyZWFzLiBTdGVwIHR3byBwYWludHMgbGF5ZXIgY29udGVu
dHMuIFRoaXMKKyAgICAgICAgYWxsb3dzIHVzIHRvIHBlcmZvcm0gYSBjb21wb3NpdG9yIHJlc291
cmNlIHByZXBhcmF0aW9uIHN0ZXAgYWZ0ZXIKKyAgICAgICAgdmlzaWJsZSBsYXllciBhcmVhcyBo
YXZlIGJlZW4gY29tcHV0ZWQgYnV0IGJlZm9yZSBhbnkgcGFpbnRpbmcKKyAgICAgICAgaGFzIG9j
Y3VycmVkLiBMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxh
Y2VkCisgICAgICAgIGJ5IExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ug
d2hpY2ggYWxsb3dzIHVzIHRvIGl0ZXJhdGUKKyAgICAgICAgb3ZlciBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgZWFjaCBjb21wb3Np
dG9yIHJlc291cmNlIGFzIHNvb24gYXMgdGhlIGNvbnRlbnRzIHJlcXVpcmVkIGZvcgorICAgICAg
ICB0aGUgdXBkYXRlIGhhcyBiZWVuIHBhaW50ZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50
c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlcjo6
fkhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVv
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNo
cm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXll
ckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFu
ZGxlcjo6UHJlcGFyZVJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFu
ZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRI
YW5kbGVyOjpQYWludEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpQYWludEhhbmRsZXI6On5QYWludEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpQYWludEhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVPbkltcGxUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJl
c291cmNlVXBkYXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1w
bDo6ZHJhd1RpbGVzKToKKwogMjAxMS0xMS0xNCAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHJpbS5j
b20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5ICNpbmNsdWRlIFNWR1Jlc291cmNlc0Nh
Y2hlLmggaW4gU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmg7IHVzZSBmb3J3YXJkIGRlY2xhcmF0aW9u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CmluZGV4IDA3MWRlNjQ4NDM4YWQzMmMwYzRlNmVjODljMzhmNjVhYTgxMzU0OTUuLmM1MjQyMzQz
YTU0MWE1YTFmNmYyNjFmODZlMjM3YjQ3NzA5ZjIwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OlRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVV
cGRhdGVyKQogewogfQpAQCAtNzcsNyArNzcsNyBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZAog
ICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQg
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscykKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50
cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGlu
dCBib3JkZXJUZXhlbHMpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGls
ZVNpemUpOwogCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAg
UGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAg
IGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDog
UGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZh
czo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFp
bnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0KTsKKyAgICBw
YWludCgqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0KTsKIH0KIAogdm9pZCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmgKaW5kZXggNjc1ZGRkZDViNDliMjFjMGY3NWI4ZmE0MjI4OWNjMmYxMGU1NGE0NC4u
YWE5ZjJjMDQwODJkODdjMzRjYjRkNzQzNWYxMzI2ZWFlOGMyNDQ5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDAsNyArNDAsNyBA
QCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciB3aXRoIGFuIGludGVybmFsIGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6
Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
IHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2
aXJ0dWFsIH5UZXh0dXJlKCk7CkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShU
ZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7
IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAg
dmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRl
eHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4
ZWxzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwogICAg
IHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNo
cm9taXVtLmNwcAppbmRleCA0NDk0NTg2YTU3Y2ExNmJjNGI0ZjIzMjQxMGRiOGY3ZmQ0Y2Q4OGMx
Li4xMjRlZGRiMzQ2ZmUwMzRlOTk2Y2MyY2QxZDIyNTJjNzhhZDRlZDZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ0LDYgKzQ0LDIwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBk
YXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIo
bGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5V
cGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRh
dGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBk
ZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7
Cit9CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hy
b21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShjb250ZXh0KSk7CkBAIC01Miw2ICs2
Niw3IEBAIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52YXMyRExheWVyQ2hy
b21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzCiBDYW52YXMyRExheWVyQ2hyb21pdW06OkNh
bnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IENh
bnZhc0xheWVyQ2hyb21pdW0oMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV91
cGRhdGVyVGV4dHVyZSh0aGlzKQogewogfQogCkBAIC02NSw3ICs4MCw3IEBAIGJvb2wgQ2FudmFz
MkRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAgJiYgKG1f
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0g
R3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSk7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NU
ZXh0dXJlVXBkYXRlciYpCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcygpCiB7CiAgICAgaWYgKG1fZGlydHlSZWN0LmlzRW1wdHkoKSB8fCAhZHJh
d3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg1LDYgKzEwMCwxMSBAQCB2b2lkIENh
bnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCosIENDVGV4dAogICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKK3ZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUoJm1fdXBk
YXRlclRleHR1cmUsIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBpZiAobGF5ZXJUcmVlSG9zdCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA0NTdiZDU2NGQ3NzhkYWI5
NGFjOTkxMTNmODFlYmZlNzVkZWZkZDRmLi41NDk5MWZkN2NiYjljYTBlZWEyMzc5YmQzYTdjYjFj
NWEyOTUwNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDMsMTYg
KzQzLDMwIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8gQSBsYXllciBjb250YWluaW5n
IGFuIGFjY2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDog
cHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJU
ZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgVXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisgICAg
ICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgQ2FudmFzMkRMYXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCopOwogICAgIHZpcnR1YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogICAg
IHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0
ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5k
bGVyJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqKTsK
ICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworCisgICAgVXBkYXRlclRleHR1cmUg
bV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKaW5kZXggYTNlOGY3YjdiZjNkNjAwOGRlYjBjNjM4YWEzNzExNWY5N2Ey
YTZiYS4uZDZlYzY4MmNjMDcwZjcyYmRmMTRhYzJlYmYxMWE0ZGUyN2M1NTNhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDYgKzM2LDE0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4
dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp+VGV4dHVyZSgpCit7Cit9CisKIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRl
cikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpAQCAtNDUsNyArNTMsNyBAQCBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAK
LXZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQordm9pZCBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0KQogewogICAgIGNvbnRleHQudHJhbnNsYXRlKC1jb250ZW50
UmVjdC54KCksIC1jb250ZW50UmVjdC55KCkpOwogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBmZDc5YTA0ZDBhMzZkNzk2YTRlN2YzMzQzMzE3MmE4
MjA0YmMxNDllLi5iOTdlODEyZGNiMzNjZjIwZWVmZmYyNWUyMmNhOTBkZGQ3MGU1NDIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zMCw2ICszMCw3IEBA
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMzksMTIgKzQwLDI1IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVt
OwogLy8gQSBMYXllclRleHR1cmVVcGRhdGVyIHdpdGggYW4gaW50ZXJuYWwgY2FudmFzLgogY2xh
c3MgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
IHsKIHB1YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwor
CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3Rl
eHR1cmUuZ2V0KCk7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgZXhwbGljaXQgVGV4dHVy
ZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBP
d25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICB9OworCiAgICAgdmlydHVhbCB+
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
Pik7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QpOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0JiwgY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogICAgIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGRiMGFlNDY5OWU3ODk2OTJmNTFjNDBiOGNk
ZTc2NDg0ZmQxYzRhYTguLjcwYjVmODJhMjA1MzIzNTQ5ZTZlMDY2OTg2MzA5Y2YyYjljOTBkMTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgVGlsZWRM
YXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7CiB9CiAKLXZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIEFTU0VSVChkcmF3c0NvbnRlbnQo
KSk7CiAKQEAgLTExNCw2ICsxMTQsMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFp
bnRDb250ZW50c0lmRGlydHkoKQogICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKK3ZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3sKKyAgICBBU1NF
UlQoZHJhd3NDb250ZW50KCkpOworCisgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlz
aWJsZUxheWVyUmVjdCgpOworICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBwYWludENvbnRlbnRzKGxheWVyUmVjdCk7Cit9CisKIGJvb2wgQ29udGVudExheWVyQ2hyb21p
dW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVsZWdhdGUgJiYgbV9k
ZWxlZ2F0ZS0+ZHJhd3NDb250ZW50KCkgJiYgVGlsZWRMYXllckNocm9taXVtOjpkcmF3c0NvbnRl
bnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGI4MzRlNjc2YmQ2MzQ0
NWFhNDUzYjM2NWVlZTI4MDI0MGYzODA5YzEuLmM1ZTlmY2NlYmY0NzZlYjdkMDJiYzk4MjIxNzBi
NjY1M2E1MTNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDksNiAr
NDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1bSgpOwog
CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKaW5kZXggZTk0NWUwNjQ5Y2MwZGMyNmI2MjVmYjNlNGY1N2FmZTk4MGQ3
YjZlOC4uOTFmYTFiZDhkM2JkM2I2NDg2ODAwMzI0Mzc4ZDdjODM5ODQ5YzMwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1
ZmZlcjo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvcioKIH0gLy8gbmFtZXNwYWNlCiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0
dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQog
ICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKaW5kZXggOWQzNzY4Y2VkMTg4Mzg0N2MyY2NkMDhjNTFkMGQwNDJiOTliM2Ux
Ni4uMzdhMzZhYWQxNmY1OWNhYjlkNmE5ZDVmNWQ4MzUwOGExOTc0NTAyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJs
aWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xh
c3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBj
bGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUg
ewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAg
ICAgIHZpcnR1YWwgflRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCmlu
ZGV4IDBiZDgyYWUxYTE4YTI1MzBmODc0MjBlNDgxZDBkNWNhMjMwYjkwMTIuLjg0NGE3OTg2MDgy
ZTI0MmVhMzMwNjg5YzFkYWQ5MGFlMjFiY2I3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9t
aXVtLmNwcApAQCAtNDksMTEgKzQ5LDEzIEBAIHB1YmxpYzoKICAgICBjbGFzcyBUZXh0dXJlIDog
cHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgVGV4dHVyZShJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNz
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgICAgICAgICAgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0
dXJlKQogICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogICAg
ICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0
dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKICAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRl
eHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CkBAIC02Miw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBJ
bWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0
dXJlVXBkYXRlcjsgfQogCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJl
OwogICAgICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAg
ICAgfTsKIApAQCAtMTY4LDcgKzE3MSw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRD
b250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0T3BhcXVlKCFtX2NvbnRlbnRzLT5jdXJy
ZW50RnJhbWVIYXNBbHBoYSgpKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50
Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRh
dGVJZkRpcnR5KCkKIHsKICAgICBpZiAoIW1fZGlydHlSZWN0LmlzRW1wdHkoKSkgewogICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDFh
ZmNjZmUyZmRjZTY0NDc1YTc0YWIyYzkyNmQwNDJjYjVmMzc2NzQuLjhiYjlhMWRmYjM1NGE2Zjhh
OTlmNGY5OTA0MmMxYzA5N2U3ZTZmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBA
IC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0o
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpOwogCiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKaW5kZXggNzQ3ZGM5ODY5Y2YxMGI2MmYzMGU5YmYwOWFmMjI3OTg2
NjRkMzQyNC4uZjNkNWE3NmQzY2NkNGMyMmMxMjQ1ZDZlMWRiMzMxYzc1YTAxMzE5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlByb2dyYW1C
aW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCkBAIC01Myw3ICs1
NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBD
Q0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3ND
b250ZXh0M0Q7CiAKIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0xNTcsOCArMTU3LDkgQEAg
cHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVy
d3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVu
dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHko
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJikgeyB9
CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
dW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250
ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0NTI1
Y2U3ZWIxMWM5YzU2ZWUxZDI3ODUyZjA3MmYzOTU1YzgxMWVkLi40MmIzMWY3MjkzMzcxOTY1MjZl
MmM3MjUzZDA1ZGEyNmYxMTMzNDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBA
IC0yOSw3ICsyOSw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNp
bmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0OwogY2xh
c3MgSW50U2l6ZTsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRv
cjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCkBAIC00OCwxNCArNDgsMTcgQEAgcHVibGljOgog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0gICAgICAgIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0
ICovKSB7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0
dXJuIDA7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8s
IGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1
cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkgPSAwOwotICAgIHByb3RlY3RlZDoKLSAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQ
YXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKSB7
IH0KKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIH5IYW5kbGVyKCkgeyB9OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkxheWVy
VGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTc4LDcgKzgxLDcgQEAgcHVibGljOgogICAgIC8vIFRo
aXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVkIHRl
eGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0LnggaXMg
Ymx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBz
YW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8s
IGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250
ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJU
ZXhlbHMgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBk
Y2ZkNjNlNzE5MzQyYWU3NTBiZGZlYWE4Y2FiMzJmMWNmZmM4MmMyLi4zYTVhNGRmMzc2NzM4ODFm
OWE4N2QxOTM4NjY4NTVmNDA1NzFhNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5Ta1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKQordm9pZCBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8q
IGJvcmRlclRleGVscyAqLykKIHsKICAgICBTa0NhbnZhcyogY2FudmFzID0gbV9waWN0dXJlLmJl
Z2luUmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpKTsK
ICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4dChjYW52YXMpOwogICAgIEdy
YXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgcGFp
bnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0KTsKKyAgICBwYWludChncmFw
aGljc0NvbnRleHQsIGNvbnRlbnRSZWN0KTsKICAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCA4OTFhNmQzYzlmMTIyMDFjYTRiMTgxNzQwYmYwZmJhNDdlMDFkYjU0Li5h
OTRlNjQ2MWFkZmZlN2RhYjA4YWJhOGY5MTk3NjVjMTA5ZmJkMDRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
SW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwogICAgIHZvaWQgZHJhd1BpY3R1
cmUoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CmluZGV4IDI2MGExNzVjNDI4YzE1OWE2MzhlMDI0NzVhNGI1ZGU0MjFkMmVhNGEuLmVlODQyMTc4
YmVmNjFkMjE4MmYxODAyMmI1NGM3ZjRhMmI3Y2ViZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcApAQCAtMTU0LDEwICsxNTQsMTAgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAgICAgICBpc05vbkNv
bXBvc2l0ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMgOiBD
Q0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKIH0KIAotdm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVy
JiBoYW5kbGVyKQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRv
IGdldCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZh
bGlkYXRlZCBtaWQtdXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVw
ZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpKQorICAgIGlmIChtX3Nr
aXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5u
dW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKQEAgLTE2Niw4ICsxNjYsNiBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgQwogICAgICAgICBmb3IgKGludCBpID0gbGVmdDsgaSA8PSByaWdo
dDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gdGlsZUF0KGksIGop
OwogICAgICAgICAgICAgaWYgKCF0aWxlKQotICAgICAgICAgICAgICAgIHRpbGUgPSBjcmVhdGVU
aWxlKGksIGopOwotICAgICAgICAgICAgZWxzZSBpZiAoIXRpbGUtPmRpcnR5KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEludFJlY3Qgc291cmNlUmVjdCA9IHRp
bGUtPm1fdXBkYXRlUmVjdDsKQEAgLTE5NSwxNyArMTkzLDkgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEMKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkgKyBkZXN0UmVjdC5oZWlnaHQo
KSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAgICAgIENSQVNIKCk7CiAKLSAg
ICAgICAgICAgIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmJpbmRUZXh0dXJlKGNvbnRleHQsIHVw
ZGF0ZXIuYWxsb2NhdG9yKCkpOwotICAgICAgICAgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBt
X3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBH
cmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKLSAgICAgICAgICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpKTsK
LQotICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7Ci0gICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5KCk7CisgICAgICAgICAg
ICBoYW5kbGVyLmhhbmRsZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
ICAgICAgICAgfQogICAgIH0KLQotICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3RpbGVy
LT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KG1fcGFpbnRSZWN0KSk7CiB9CiAKIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uIHRpbGluZ09wdGlvbikK
QEAgLTMyMSw2ICszMTEsMTEgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIAogICAgIG1fc2tpcHNEcmF3ID0gZmFs
c2U7CiAKKyAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxlTWFwOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVyICE9IG1fdGlsZXItPnRpbGVz
KCkuZW5kKCk7ICsraXRlcikgeworICAgICAgICBVcGRhdGFibGVUaWxlKiB0aWxlID0gc3RhdGlj
X2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7CisgICAgICAgIHRpbGUt
Pm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICB9CisKICAgICBpZiAoY29udGVudFJlY3Qu
aXNFbXB0eSgpKSB7CiAgICAgICAgIG1fcmVxdWVzdGVkVXBkYXRlUmVjdCA9IEludFJlY3QoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzYzLDIzICszNTgsMTQgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBt
X3JlcXVlc3RlZFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKIAogICAgIG1fcGFpbnRSZWN0ID0g
bV90aWxlci0+bGF5ZXJSZWN0VG9Db250ZW50UmVjdChkaXJ0eUxheWVyUmVjdCk7Ci0gICAgaWYg
KGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9wYWludFJlY3QuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDYWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNh
bGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8v
IGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJl
bmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVy
LCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVu
dGlsIHRoZSBwYWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJl
bmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxl
dGVzLgotICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVw
ZGF0ZXIoKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRS
ZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSk7Ci0K
ICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMobV9yZXF1ZXN0ZWRVcGRhdGVS
ZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZvciAoaW50IGogPSB0b3A7IGog
PD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7
ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsK
LSAgICAgICAgICAgIGlmICghdGlsZSkKLSAgICAgICAgICAgICAgICB0aWxlID0gY3JlYXRlVGls
ZShpLCBqKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0aWxlLT5kaXJ0eSgpKQorICAgICAgICAg
ICAgaWYgKCF0aWxlIHx8ICF0aWxlLT5kaXJ0eSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgY29udGVudC1zcGFjZSByZWN0YW5nbGUgdG8g
Y29weSBmcm9tLgpAQCAtMzkwLDEzICszNzYsMjcgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICAgICAgICAg
IHNvdXJjZVJlY3QuaW50ZXJzZWN0KG1fcGFpbnRSZWN0KTsKIAogICAgICAgICAgICAgdGlsZS0+
bV91cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3VyY2VSZWN0Lmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgdGlsZS0+
dGV4dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKKyAgICAgICAgICAgIHRpbGUtPmNs
ZWFyRGlydHkoKTsKICAgICAgICAgfQogICAgIH0KIH0KIAordm9pZCBUaWxlZExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit7CisgICAgaWYg
KG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGls
ZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBDYWxsaW5nIHBhaW50Q29udGVudHMoKSBjYWxscyBpbnRvIFdlYktpdCB0byBw
YWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5n
IGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1
cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUg
bWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNo
ZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhl
IHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KKyAgICBSZWZQdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOworICAgIHRleHR1
cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXpl
KCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpKTsKKworICAgIG1fdXBkYXRlUmVjdCA9IEZs
b2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KG1fcGFpbnRSZWN0KSk7Cit9
CisKKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmgKaW5kZXggNWRhZjBmMDE5NDdhOTk0N2NkMjM1ZjU1ZmI3Mzk1OWU0
NDdiMWY1Ni4uY2ZkZGZjODZjMGFkY2U0YzI4YTJlM2YzOTlkYWNiZTg2NDI4ODA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXIm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1
cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CkBAIC02
NSw4ICs2NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0byBi
ZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgpLgogICAgIHZvaWQgaW52YWxp
ZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwotICAgIC8vIFByZXBhcmUgZGF0
YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJl
Y3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0
aCBjb250ZW50UmVjdC4KICAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCk7CisgICAgLy8gUGFpbnQgY29udGVudHMgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0
dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgorICAgIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJv
dGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIApAQCAtODMsNyArODUsNyBAQCBwcml2YXRlOgog
CiAgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7CiAKLSAgICAvLyBU
ZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2Vl
biBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRDb250ZW50cygpLgogICAgIEludFJlY3QgbV9y
ZXF1ZXN0ZWRVcGRhdGVSZWN0OwogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9V
cGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEK
ICAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBhY3R1YWxseSByZS1wYWludGVkIGJ5IFdlYktp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDIzOTQ1NjhmMmQ4Mjc4ZjU5
NzlhN2ZlMGM1NjE1ZDlmNzIwOThiNjcuLjM3ODBkMDZkNmZjNjgzZjI3OTU4ZTMzZGEwNWE5NzAx
YzE3NDNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtNDAsMTEgKzQw
LDI0IEBACiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiVmlkZW9G
cmFtZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6OlVwZGF0ZXJUZXh0dXJlKFZpZGVvTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xh
eWVyKGxheWVyKQoreworfQorCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+
VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRl
clRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29u
c3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBQYXNzUmVmUHRyPFZpZGVv
TGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRl
KiBkZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpAQCAtNTcsNiAr
NzAsNyBAQCBWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVs
ZWdhdGUqIGRlbGVnYXRlLCBWaWRlb0ZyYW1lUHJvdgogICAgICwgbV9mcmFtZUZvcm1hdChWaWRl
b0ZyYW1lQ2hyb21pdW06OkludmFsaWQpCiAgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAg
ICwgbV9wbGFuZXMoMCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUodGhpcykKIHsKIH0KIApAQCAt
NzcsNyArOTEsNyBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygp
CiAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLmNsZWFyKCk7CiB9CiAKLXZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBWaWRlb0xheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsKICAgICBpZiAoIW1fZGVsZWdh
dGUgfHwgIW1fcHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKQEAgLTEyOSw3ICsxNDMsNyBAQCB2
b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICBUZXh0dXJlJiB0ZXh0dXJlID0gbV90ZXh0
dXJlc1twbGFuZV07CiAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLm1fdGV4dHVyZSk7CiAgICAgICAg
IEFTU0VSVChmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSkgPT0gdGV4dHVyZS5tX3Rl
eHR1cmUtPnNpemUoKSk7Ci0gICAgICAgIHVwZGF0ZVRleHR1cmUoY29udGV4dCwgdXBkYXRlci5h
bGxvY2F0b3IoKSwgdGV4dHVyZSwgZnJhbWUtPmRhdGEocGxhbmUpKTsKKyAgICAgICAgdXBkYXRl
VGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5lKSk7
CiAgICAgfQogCiAgICAgbV9wbGFuZXMgPSBmcmFtZS0+cGxhbmVzKCk7CkBAIC0xNDEsNiArMTU1
LDExIEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDCiAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVu
dEZyYW1lKGZyYW1lKTsKIH0KIAordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKK3sK
KyAgICBoYW5kbGVyLmhhbmRsZSgmbV91cGRhdGVyVGV4dHVyZSwgSW50UmVjdCgpLCBJbnRSZWN0
KCkpOworfQorCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCiB7CiAgICAgTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhs
YXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDQ5MDU3MjI1ZTQzMGNlOGRk
YjhiNDMwYmZlZmM3NDEyY2I1MjFiMDQuLmZhNjRjYjk4ZGJkZWRiZWU2OWU5ZjM4MTEzZjcwODc3
MzM1Mzg1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw2ICs0MywxNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBIExheWVyIHRoYXQgY29udGFpbnMgYSBWaWRlbyBl
bGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0g
ewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVXBkYXRlclRleHR1cmUo
VmlkZW9MYXllckNocm9taXVtKik7CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgVmlkZW9MYXllckNocm9taXVt
KiBtX2xheWVyOworICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hy
b21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqID0gMCk7CkBA
IC01MCw3ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDQ0xheWVy
SW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOwor
ICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRl
eHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCBib29sIGRy
YXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgcmVsZWFzZVBy
b3ZpZGVyKCk7CkBAIC04NSw2ICs5Niw4IEBAIHByaXZhdGU6CiAgICAgZW51bSB7IE1heFBsYW5l
cyA9IDMgfTsKICAgICBUZXh0dXJlIG1fdGV4dHVyZXNbTWF4UGxhbmVzXTsKICAgICB1bnNpZ25l
ZCBtX3BsYW5lczsKKworICAgIFVwZGF0ZXJUZXh0dXJlIG1fdXBkYXRlclRleHR1cmU7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCBhNGE5YTgwNWJiZWNjNTBk
ZjQ4NGU3ZDYyNDQ3ZmNjMWU2OTFjYTQ5Li43ZThkMDlkOTIxOGFmYjI3NTU2ZTY3MmU2NzNmZWVj
YTE2YmVmYWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5
LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1
bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21p
dW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VS
ZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQpOworfQorCiBQYXNzUmVmUHRyPFdlYkdM
TGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRl
KiBkZWxlZ2F0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdMTGF5ZXJDaHJvbWl1
bShkZWxlZ2F0ZSkpOwpAQCAtNTEsNiArNjYsNyBAQCBXZWJHTExheWVyQ2hyb21pdW06OldlYkdM
TGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogICAgIDogQ2FudmFzTGF5
ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKICAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1ZSkKICAgICAs
IG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2UpCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKHRoaXMpCiB7
CiB9CiAKQEAgLTY1LDE0ICs4MSw4IEBAIGJvb2wgV2ViR0xMYXllckNocm9taXVtOjpkcmF3c0Nv
bnRlbnQoKSBjb25zdAogICAgIHJldHVybiAoY29udGV4dCgpICYmIGNvbnRleHQoKS0+Z2V0RXh0
ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3NDb250ZXh0
M0Q6Ok5PX0VSUk9SKTsKIH0KIAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCwgQ0NUZXh0
dXJlVXBkYXRlciYpCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0KQogewotICAgIGlmICgh
ZHJhd3NDb250ZW50KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX2RpcnR5UmVjdC5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChtX3RleHR1cmVDaGFuZ2VkKSB7
CiAgICAgICAgIHJlbmRlcmVyQ29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIG1fdGV4dHVyZUlkKTsKICAgICAgICAgLy8gU2V0IHRoZSBtaW4tbWFnIGZp
bHRlcnMgdG8gbGluZWFyIGFuZCB3cmFwIG1vZGVzIHRvIEdMX0NMQU1QX1RPX0VER0UKQEAgLTk0
LDYgKzEwNCwxMSBAQCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDbwogICAgIH0KIH0KIAordm9pZCBX
ZWJHTExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKK3sKKyAgICBoYW5kbGVyLmhhbmRsZSgmbV91cGRh
dGVyVGV4dHVyZSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiBib29sIFdlYkdMTGF5ZXJD
aHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VC
dWZmZXIpCiB7CiAgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVyUmVuZGVyZXJDb250
ZXh0KCkgfHwgIWRyYXdzQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRl
eCA2Mzc0YjllZjZiMTE3YWQyMzU1YTFmYWRiNjlkZGI0MTA3YTY5MzEwLi5iOGJkNDE3M2IzZDRl
ODA2MzRhZWFhNDZkMGJkYzA3MjgyM2FhYTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0u
aApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVy
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsMTIgKzQ2LDI0IEBAIGNsYXNzIFdl
YkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAvLyBBIExheWVyIGNvbnRhaW5pbmcgYSBX
ZWJHTCBjYW52YXMKIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXll
ckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFVwZGF0
ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVy
VGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYkdMTGF5
ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
R0xMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogCiAgICAgdmly
dHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250
ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmlydHVhbCB2b2lk
IGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wgcGFpbnRSZW5k
ZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC03MSw2ICs4NCw4IEBAIHBy
aXZhdGU6CiAgICAgLy8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUg
RHJhd2luZ0J1ZmZlciBhbHJlYWR5IGhvbGRzCiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdl
YkdMTGF5ZXJDaHJvbWl1bS4KICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisK
KyAgICBVcGRhdGVyVGV4dHVyZSBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNGYyYzFmYjYyNjRlZTdjM2E5ZTYxNzUzN2EwMjg5
ODJmOGFiMzNmZS4uNGQ3NjVjNzIxNWRhOTY4MzhhODIxZmQ2YTA5MjI4ZWZhNGQxZDEyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNSwxMSArMzUsNDIgQEAKICNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFk
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0ND
VGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNj
L0NDVGhyZWFkUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDQ0xheWVyVHJlZUhv
c3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6
IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQor
CitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3Vy
Y2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJj
ZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAg
ICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChtX2NvbnRleHQsIG1fYWxsb2NhdG9yLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpQYWludEhh
bmRsZXIoQ0NQcm94eSogcHJveHkpCisgICAgOiBtX3Byb3h5KHByb3h5KQoreworfQorCitDQ0xh
eWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6flBhaW50SGFuZGxlcigpCit7Cit9CisKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJlLT5wYWludENvbnRlbnRzUmVjdChzb3VyY2VS
ZWN0KTsKKyAgICBtX3Byb3h5LT51cGRhdGUodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3Qp
OworfQorCiBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVh
dGUoQ0NMYXllclRyZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRp
bmdzKQogewogICAgIFJlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBhZG9w
dFJlZihuZXcgQ0NMYXllclRyZWVIb3N0KGNsaWVudCwgc2V0dGluZ3MpKTsKQEAgLTI5Nyw3ICsz
MjgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2Fz
dDxDQ1NpbmdsZVRocmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0
ZWx5KCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQordm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSgpCiB7CiAgICAgaWYgKCFyb290TGF5ZXIo
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA1LDEyICszMzYsMTIgQEAgdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKKyAgICBw
cmVwYXJlVG9VcGRhdGUocm9vdExheWVyKCkpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworICAg
IFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSIsIHRoaXMsIDAp
OwogCiAgICAgaWYgKCFyb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKICAgICAgICAgcm9vdExh
eWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CkBAIC0zMTksMzEgKzM1MCw2NyBAQCB2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAg
ICBJbnRSZWN0IHJvb3RDbGlwUmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSk7CiAgICAg
cm9vdExheWVyLT5zZXRDbGlwUmVjdChyb290Q2xpcFJlY3QpOwogCi0gICAgLy8gVGhpcyBhc3Nl
cnQgZmlyZXMgaWYgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyB3YXNuJ3QgY2FsbGVkIGFmdGVy
Ci0gICAgLy8gdXBkYXRlTGF5ZXJzLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQg
YW55IGdpdmVuIHRpbWUuCi0gICAgQVNTRVJUKCFtX3VwZGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBt
X3VwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CisgICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMg
aWYgY29tbWl0Q29tcGxldGUgd2Fzbid0IGNhbGxlZCBhZnRlcgorICAgIC8vIHByZXBhcmVUb1Vw
ZGF0ZS4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgor
ICAgIEFTU0VSVCghbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCkgJiYgIW1fdXBkYXRl
TGlzdC5zaXplKCkpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RM
YXllcik7CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0g
cm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFy
TGF5ZXJMaXN0KCk7CiAKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhv
c3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9v
dExheWVyLCByb290TGF5ZXIsIG1fem9vbUFuaW1hdG9yVHJhbnNmb3JtLCBtX3pvb21BbmltYXRv
clRyYW5zZm9ybSwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCks
IGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMi
LCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIG1fem9vbUFuaW1h
dG9yVHJhbnNmb3JtLCBtX3pvb21BbmltYXRvclRyYW5zZm9ybSwgbV9yZW5kZXJTdXJmYWNlVXBk
YXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2Fw
YWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgIH0KKworICAgIGFwcGVuZFZpc2libGVM
YXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV91cGRhdGVMaXN0KTsKKworICAgIGZv
ciAoaW50IGxheWVySW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+
PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91
cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOwogICAgIH0KK30KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0
ZUxpc3QpOwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Ip
Cit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JS
ZXNvdXJjZXMiLCB0aGlzLCAwKTsKKyAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIGhhbmRsZXIo
Y29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRs
ZXIpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVt
KiBsYXllciwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludENvbnRlbnRzKCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RMYXllcigpKTsKK30KKwordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQorewor
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMiLCB0aGlzLCAw
KTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsg
bGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0q
IGxheWVyID0gbV91cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+
cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKworICAgICAgICBQYWludEhhbmRsZXIgaGFuZGxlciht
X3Byb3h5LmdldCgpKTsKKyAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
aGFuZGxlcik7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJs
ZUxheWVyKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJS
ZWN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgaWYgKGxheWVyLT5kcmF3c0NvbnRl
bnQoKSkgewogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlTGF5ZXJS
ZWN0KTsKLSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIHVw
ZGF0ZUxpc3QuYXBwZW5kKGxheWVyKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0
OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5k
ZXJTdXJmYWNlTGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxp
Y2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5
ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBv
bmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFj
aCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVh
c3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0
aGUKQEAgLTM1MSw3ICs0MTgsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5k
UmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwogCiAgICAgaWYg
KHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFj
ZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFp
bnRDb250ZW50c0lmRGlydHkocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVj
dChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOworICAg
ICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwg
SW50UmVjdChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSks
IHVwZGF0ZUxpc3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9
IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CkBAIC0zNjAsMTkgKzQyNywxOSBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZh
Y2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwogICAgICAgICBJbnRSZWN0IHZpc2libGVMYXllclJl
Y3QgPSBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3Q8TGF5
ZXJDaHJvbWl1bT4ocmVuZGVyU3VyZmFjZUxheWVyKTsKIAogICAgICAgICByZXBsaWNhTGF5ZXIt
PnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJl
cGxpY2FMYXllciwgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXll
cihyZXBsaWNhTGF5ZXIsIHZpc2libGVMYXllclJlY3QsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAg
IGlmIChyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5
ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICAgICAgcGFp
bnRDb250ZW50c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVjdChJbnRQ
b2ludCgpLCByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKKyAg
ICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBJ
bnRSZWN0KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3Vu
ZHMoKSksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNv
bnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRl
TGlzdCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9
IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsg
LS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxh
eWVyID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAg
ICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxh
eWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKIApA
QCAtMzg1LDcgKzQ1Miw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnNldExheWVyVHJlZUhvc3Qo
dGhpcyk7Ci0gICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRl
clN1cmZhY2VMYXllcik7CisgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3Vy
ZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGNvbnN0IExh
eWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7CiAgICAgICAg
IEFTU0VSVChsYXllckxpc3Quc2l6ZSgpKTsKQEAgLTQwNCw2MSArNDcxLDM5IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEludFJlY3QgdmlzaWJs
ZUxheWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVy
UmVjdDxMYXllckNocm9taXVtPihsYXllcik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHBh
aW50Q29udGVudHNJZkRpcnR5KGxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICAgICAgICAg
IGFwcGVuZFZpc2libGVMYXllcihsYXllciwgdmlzaWJsZUxheWVyUmVjdCwgdXBkYXRlTGlzdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRh
dGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKLSAgICBmb3Ig
KGludCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4
ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJT
dXJmYWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAgICAgICAg
UmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVy
LT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKLQotICAg
ICAgICBpZiAoIXJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKSB8fCAhcmVuZGVyU3Vy
ZmFjZS0+ZHJhd09wYWNpdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlm
IChyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICAgICAgdXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBjb250ZXh0
LCB1cGRhdGVyKTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5
ZXIoKSkgewotICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJm
YWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLCBjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1h
c2tMYXllcigpKQotICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMocmVu
ZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCksIGNvbnRleHQsIHVw
ZGF0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBMYXllckxpc3QmIGxh
eWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwotICAgICAgICBBU1NFUlQobGF5
ZXJMaXN0LnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxh
eWVySW5kZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAg
IExheWVyQ2hyb21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOwotICAg
ICAgICAgICAgaWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSAhPSByZW5kZXJTdXJmYWNlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLCBjb250ZXh0LCB1cGRhdGVy
KTsKLSAgICAgICAgfQorICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6
ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVy
Q2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAg
ICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGxheWVyLCBoYW5kbGVyKTsKICAgICB9CiB9CiAK
LXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hy
b21pdW0qIGxheWVyLCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRl
ciYgdXBkYXRlcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBo
YW5kbGVyKQogewogICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBjb25kaXRpb25zIHNo
b3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5nIHRoZSByZW5kZXIg
c3VyZmFjZSBsYXllciBsaXN0cy4KICAgICAvLyBGb3IgbWFza3MgYW5kIHJlcGxpY2FzIGhvd2V2
ZXIsIHdlIG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KICAgICBpZiAobGF5ZXIt
PmJvdW5kcygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAhbGF5ZXItPmRyYXdz
Q29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShoYW5kbGVyKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVu
ZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFj
ZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAg
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsK
KyAgICBtX3VwZGF0ZUxpc3QuY2xlYXIoKTsKKworICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRl
eCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpOyAr
K3N1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fcmVuZGVy
U3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgQVNTRVJUKGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNl
KCk7CiAgICAgfQotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworICAgIG1fcmVuZGVyU3VyZmFj
ZVVwZGF0ZUxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGx5U2Ny
b2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKaW5kZXggZDgxNDE0OWM1NGIwNTNlY2VhNmZjYWUwNTYyNDQ0OGRkMzEx
ZDkxMS4uMzViZWVmY2Q3YjA1MTc2NjlhNWU3OWY5ZDc2MGMxNzU2YTBjYzRjYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgR3JDb250ZXh0Owog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3Mg
Q0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJQ
YWludGVyQ2hyb21pdW07CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwpAQCAtMTc1LDkgKzE3NCwx
MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7
CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycygpOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7
CisgICAgdm9pZCBwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoKTsKIAotICAgIHZv
aWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVy
ZVVwZGF0ZXImKTsKKyAgICB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25z
dCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBo
aWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0
M0QqKTsKQEAgLTE4NywxMyArMTg4LDM4IEBAIHByb3RlY3RlZDoKICAgICBib29sIGluaXRpYWxp
emUoKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
UHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqKTsKKyAgICAgICAgdmlydHVhbCB+UHJlcGFyZVJlc291cmNlSGFuZGxlcigpOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgICAg
IFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgIH07CisKKyAgICBjbGFzcyBQYWlu
dEhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVi
bGljOgorICAgICAgICBQYWludEhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2aXJ0dWFsIH5Q
YWludEhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Byb3h5KiBtX3Byb3h5
OworICAgIH07CisKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBM
YXllckxpc3Q7CiAKLSAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3Qm
KTsKLSAgICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hy
b21pdW0qKTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiwgY29u
c3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCwgTGF5ZXJMaXN0Jik7CisgICAgdm9pZCBhcHBl
bmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlz
dCYgdXBkYXRlTGlzdCk7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVy
TGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CiAK
LSAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7Ci0gICAgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qLCBHcmFwaGljc0NvbnRleHQzRCosIEND
VGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVt
Kik7CisgICAgdm9pZCBwYWludENvbnRlbnRzKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIGZv
ckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJDaHJvbWl1bSosIExheWVyVGV4dHVyZVVwZGF0
ZXI6OkhhbmRsZXImKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaW50
IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CkBAIC0yMDksNiArMjM1LDcgQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVN
YW5hZ2VyPiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKKyAgICBMYXllckxpc3QgbV9yZW5k
ZXJTdXJmYWNlVXBkYXRlTGlzdDsKICAgICBMYXllckxpc3QgbV91cGRhdGVMaXN0OwogCiAgICAg
Q0NTZXR0aW5ncyBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDUxNmI2Nzk1NjU1MjljMzkz
NTEzNjNlNWE2ZWZhMTE3YzdhMDEzNTkuLmRjNGRjYTllMThiZTgxYjM2Y2U4OThjOWM3ZjVhOWQ5
ZmViZTUxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NQcm94
eV9oCiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTcyLDYgKzczLDggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVm
b3JlIHVzaW5nIHRoZSBwcm94eS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsgLy8gTXVz
dCBiZSBjYWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBwcm94eS4KIAorICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBEZWJ1ZyBo
b29rcwogI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggYzE2MGUxOThiNGI5NDQ2
NzNkYWMwMTQ1ZGMxMTFjNDViYzY4Y2Q2Yi4uNmU2MTFiMDVkNzhkYjJjOTQ4NjQwNmFmYjY4NWUy
Yzc0NTI4NDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAg
LTE0OSwxNSArMTQ5LDE4IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmlt
YXRlKCkKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VS
VChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3Ig
cmVzb3VyY2VzCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNl
cyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRD
b250ZW50cygpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAgICAgICBE
ZWJ1Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+YmVnaW5Db21taXQoKTsKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0
T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICBDQ1RleHR1
cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICAgICAg
d2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkp
IHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVl
SG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRP
bkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKQEAgLTIxMCw2ICsyMTMs
MTIgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhv
c3QgPSAwOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJl
YWRQcm94eTo6dXBkYXRlIiwgdGhpcywgMCk7CisgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIC8vIENhbGxl
ZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0
IGRvZXMgdGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0
ZUltbWVkaWF0ZWx5KCkKIHsKQEAgLTI3NCw3ICsyODMsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xh
eWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogCiAgICAgZG9Db21taXQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
U2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlZGFiNjFmMmMwMzI3OTZlYzg0
MjM1YjQxYjRlZjc3M2E4MjI5ZjEzLi45NWJlZTBlYmMxYzFhMGJjZjg2MGViZGVlMjVlNzBkOTNj
MjkzZDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC01NCw2ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5
ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25T
d2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRl
MThlZGUxODIwZjMxNGZkYjhjYzg3MmFiLi42NzI4ZThkN2VmN2VjNGIxNjgzY2RlZDcyYzIyMzIy
NTdmNTQ4NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAi
Y2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDZmNGVkOTBkMTBhNjg4NTMwYjQzZWUzMmI5ZGE0
NTYzZGRmNzhiN2UuLmViODk3NThiN2Y5MWM0ZDdjY2Q3ZGQ4ZjNkMTQxZjNjZTViY2MyYWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zMDMsNiArMzAzLDIwIEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NU
aHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorewor
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3N0YXJ0ZWQpOworCisgICAgVXBk
YXRlRW50cnkqIGVudHJ5ID0gbmV3IFVwZGF0ZUVudHJ5OworICAgIGVudHJ5LT5tX3RleHR1cmUg
PSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVu
dHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbklt
cGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZW50cnkpKSk7Cit9CisKIHZvaWQgQ0NU
aHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5p
c2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKQEAgLTM3OCw3ICszOTIsMTcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51
bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9j
b21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5
ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKKworICAgIHsK
KyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZvciBm
cmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAgICAg
IENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CisgICAgICAgIHNfY2NUaHJlYWQtPnBvc3RU
YXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZU9u
SW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAg
ICAgY29tcGxldGlvbi53YWl0KCk7CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWlu
dENvbnRlbnRzKCk7CiAKICAgICB7CiAgICAgICAgIC8vIE5vdGlmeSB0aGUgaW1wbCB0aHJlYWQg
dGhhdCB0aGUgYmVnaW5GcmFtZSBoYXMgY29tcGxldGVkLiBUaGlzIHdpbGwKQEAgLTM5Niw5ICs0
MjAsOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVl
bmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xhc3RFeGVjdXRl
ZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9
CiAKLXZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQordm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewotICAgIFRS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQi
LCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZU9u
T25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25F
dmVudE9uSW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NF
UlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOwpAQCAtNDA4LDExICs0MzIsNDEgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29tbWl0
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkp
OwogCiAgICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAg
ICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NU
ZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0
b3IoKSkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCk7CisKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwordm9pZCBDQ1Ro
cmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5KiBlbnRyeSkK
K3sKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAg
ICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIGlmICgh
bV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBkZWxldGUgZW50cnk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+
YXBwZW5kKGVudHJ5LT5tX3RleHR1cmUsIGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rl
c3RSZWN0KTsKKyAgICBkZWxldGUgZW50cnk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9u
KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2
ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc2No
ZWR1bGVyT25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmNvbW1pdFBlbmRpbmcoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAg
ICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCiAgICAg
bV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQpAQCAtNDIx
LDYgKzQ3NSwxMCBAQCBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMo
KSBjb25zdAogewogICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jb21taXRDb21wbGV0aW9uRXZl
bnRPbkltcGxUaHJlYWQpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgcmV0dXJuIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMDE0MGE3MTVkZWZmMzhiY2QzMDA2NjM3MTc3YmI1
M2ZhNjQ5ZTZiYy4uNTc0NDNhMmM3MjMwMTE2MzU2NGRiYWVkMTQ0ZGYzODZjNWIxZTEzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAg
ICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGlt
cGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1w
bFRocmVhZCgpOwpAQCAtODAsNiArODEsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3RydWN0IFVwZGF0
ZUVudHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJl
OworICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RS
ZWN0OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gQ0NNYWluVGhyZWFkCiAgICAgdm9pZCBi
ZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5U
aW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2b2lkIGRpZENvbW1p
dEFuZERyYXdGcmFtZSgpOwpAQCAtOTQsNiArMTAxLDggQEAgcHJpdmF0ZToKICAgICB9OwogICAg
IFBhc3NPd25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0
VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRh
c2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ01haW5UaHJlYWQ6OlRhc2sqKik7
CisgICAgdm9pZCBiZWdpbkZyYW1lT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7Cisg
ICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5Kik7CiAgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAg
ICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAg
ICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA0ZTZlZjk3YmRiNzJhYWNl
MzFkNjRiMzg5YjQ2NjE3ZmQzMDcyOTYxLi44YTJkNmZlZjY0ZGY3N2VkMWU1ZDAyYzNkMGRjMzI0
Yzk3OGU3ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMjEzLDYg
KzIxMyw3IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAgICAgbV90aWxlci0+Y29udGVudFJl
Y3RUb1RpbGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwog
ICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChj
b250ZW50UmVjdCk7CiAgICAgZmxvYXQgc2lnbiA9IEZsb2F0UXVhZChjb250ZW50UmVjdCkuaXND
b3VudGVyY2xvY2t3aXNlKCkgPyAtMSA6IDE7CisgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBt
X3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBH
cmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJv
dHRvbTsgKytqKSB7CiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHByZXZFZGdlWCA9IGNvbnRl
bnRRdWFkLmxlZnQoKTsKIApAQCAtMzM3LDYgKzMzOCw5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1w
bDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3Qg
SW50CiAKICAgICAgICAgICAgIGlmICh0aWxlICYmIHRpbGUtPnRleHR1cmVJZCgpKSB7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIHRpbGUtPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7CisgICAgICAgICAg
ICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0
M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZp
bHRlcikpOworCiAgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1cmVkUXVh
ZChnbG9iYWxUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwg
cXVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
b2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115097</attachid>
            <date>2011-11-14 22:20:21 -0800</date>
            <delta_ts>2011-11-15 12:35:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72192-20111114222020.patch</filename>
            <type>text/plain</type>
            <size>70212</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE2NTA4YTIxMjBjMTdj
NWU5NzljNGZjZGFjNDdkZmY2YmIxN2E3MS4uNTM4MTI0Njg3MzQ0NGM3ZmE1N2I2Y2JlOTdkNTAx
MjlhYWM1Y2RkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxMS0xMS0xNCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
SW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyBwcmlvciB0byBwYWludGluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgbGF5ZXIgdXBk
YXRlcyBpbnRvIHR3byBzdGVwcy4gU3RlcCBvbmUgY2FsY3VsYXRlcyB0cmFuc2Zvcm1zCisgICAg
ICAgIGFuZCB2aXNpYmxlIGxheWVyIGFyZWFzLiBTdGVwIHR3byBwYWludHMgbGF5ZXIgY29udGVu
dHMuIFRoaXMKKyAgICAgICAgYWxsb3dzIHVzIHRvIHBlcmZvcm0gYSBjb21wb3NpdG9yIHJlc291
cmNlIHByZXBhcmF0aW9uIHN0ZXAgYWZ0ZXIKKyAgICAgICAgdmlzaWJsZSBsYXllciBhcmVhcyBo
YXZlIGJlZW4gY29tcHV0ZWQgYnV0IGJlZm9yZSBhbnkgcGFpbnRpbmcKKyAgICAgICAgaGFzIG9j
Y3VycmVkLiBMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxh
Y2VkCisgICAgICAgIGJ5IExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ug
d2hpY2ggYWxsb3dzIHVzIHRvIGl0ZXJhdGUKKyAgICAgICAgb3ZlciBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgZWFjaCBjb21wb3Np
dG9yIHJlc291cmNlIGFzIHNvb24gYXMgdGhlIGNvbnRlbnRzIHJlcXVpcmVkIGZvcgorICAgICAg
ICB0aGUgdXBkYXRlIGhhcyBiZWVuIHBhaW50ZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50
c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlcjo6
fkhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVv
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNo
cm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXll
ckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFu
ZGxlcjo6UHJlcGFyZVJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFu
ZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRI
YW5kbGVyOjpQYWludEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpQYWludEhhbmRsZXI6On5QYWludEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpQYWludEhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVPbkltcGxUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJl
c291cmNlVXBkYXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1w
bDo6ZHJhd1RpbGVzKToKKwogMjAxMS0xMS0xNCAgQWxleGFuZHJlIEVsaWFzICA8YWVsaWFzQGdv
b2dsZS5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBGaXggc2NhbGVEZWx0YSB6b29tLW91dCB2
aXNpYmlsaXR5IHJlY3QgYnVnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDA3MWRlNjQ4NDM4YWQzMmMwYzRlNmVjODljMzhmNjVh
YTgxMzU0OTUuLmM1MjQyMzQzYTU0MWE1YTFmNmYyNjFmODZlMjM3YjQ3NzA5ZjIwYjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBA
IC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1
cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgOiBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX3RleHR1
cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewogfQpAQCAtNzcsNyArNzcsNyBAQCBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6c2FtcGxlZAogICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dEJHUkE7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFy
ZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxl
U2l6ZSwgaW50IGJvcmRlclRleGVscykKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5z
ZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogCkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlRleHRPcHRpb24gdGV4
dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFzOjpQYWludGVy
OjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBpeGVsVGV4dDsK
ICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2NhbnZhcywgdGV4
dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNv
bnRlbnRSZWN0KTsKKyAgICBwYWludCgqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRS
ZWN0KTsKIH0KIAogdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVU
ZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNjc1ZGRkZDViNDliMjFjMGY3NWI4ZmE0
MjI4OWNjMmYxMGU1NGE0NC4uYWE5ZjJjMDQwODJkODdjMzRjYjRkNzQzNWYxMzI2ZWFlOGMyNDQ5
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8vIEEgQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGJpdG1hcC4KIGNsYXNzIEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVy
ZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CkBAIC01OSw3ICs1OSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9y
aWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVs
Rm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCA0NDk0NTg2YTU3Y2ExNmJjNGI0ZjIz
MjQxMGRiOGY3ZmQ0Y2Q4OGMxLi4xMjRlZGRiMzQ2ZmUwMzRlOTk2Y2MyY2QxZDIyNTJjNzhhZDRl
ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ0LDYgKzQ0
LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXll
cikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2FudmFzMkRM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKCk7Cit9CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVt
PiBDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShjb250
ZXh0KSk7CkBAIC01Miw2ICs2Niw3IEBAIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVt
PiBDYW52YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzCiBDYW52YXMy
RExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCkKICAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0oMCkKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQorICAgICwgbV91cGRhdGVyVGV4dHVyZSh0aGlzKQogewogfQogCkBAIC02NSw3ICs4
MCw3IEBAIGJvb2wgQ2FudmFzMkRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAog
ICAgICAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSk7CiB9CiAKLXZv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpCit2b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiB7CiAgICAgaWYgKG1fZGlydHlSZWN0
LmlzRW1wdHkoKSB8fCAhZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTg1LDYg
KzEwMCwxMSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dAogICAgIHJlc2V0TmVlZHNEaXNwbGF5
KCk7CiB9CiAKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFu
ZGxlci5oYW5kbGUoJm1fdXBkYXRlclRleHR1cmUsIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30K
Kwogdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBp
ZiAobGF5ZXJUcmVlSG9zdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRl
eCA0NTdiZDU2NGQ3NzhkYWI5NGFjOTkxMTNmODFlYmZlNzVkZWZkZDRmLi41NDk5MWZkN2NiYjlj
YTBlZWEyMzc5YmQzYTdjYjFjNWEyOTUwNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uaApAQCAtNDMsMTYgKzQzLDMwIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8g
QSBsYXllciBjb250YWluaW5nIGFuIGFjY2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFz
MkRMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgor
ICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXll
ckNocm9taXVtKik7CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ2FudmFzMkRMYXllckNocm9taXVtKiBtX2xh
eWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21p
dW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1YWwgfkNhbnZhczJETGF5
ZXJDaHJvbWl1bSgpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5n
ZWQoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDYW52YXMyRExheWVyQ2hyb21pdW0oR3Jh
cGhpY3NDb250ZXh0M0QqKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworCisg
ICAgVXBkYXRlclRleHR1cmUgbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYTNlOGY3YjdiZjNkNjAwOGRl
YjBjNjM4YWEzNzExNWY5N2EyYTZiYS4uZDZlYzY4MmNjMDcwZjcyYmRmMTRhYzJlYmYxMWE0ZGUy
N2M1NTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
QEAgLTM2LDYgKzM2LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiB0ZXh0dXJlKSA6IG1fdGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4gcGFpbnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpAQCAtNDUs
NyArNTMsNyBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KQordm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogewogICAgIGNvbnRleHQu
dHJhbnNsYXRlKC1jb250ZW50UmVjdC54KCksIC1jb250ZW50UmVjdC55KCkpOwogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBmZDc5YTA0ZDBhMzZk
Nzk2YTRlN2YzMzQzMzE3MmE4MjA0YmMxNDllLi5iOTdlODEyZGNiMzNjZjIwZWVmZmYyNWUyMmNh
OTBkZGQ3MGU1NDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzksMTIgKzQwLDI1IEBAIGNsYXNzIExh
eWVyUGFpbnRlckNocm9taXVtOwogLy8gQSBMYXllclRleHR1cmVVcGRhdGVyIHdpdGggYW4gaW50
ZXJuYWwgY2FudmFzLgogY2xhc3MgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmly
dHVhbCB+VGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICB9
OworCiAgICAgdmlydHVhbCB+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExh
eWVyUGFpbnRlckNocm9taXVtPik7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogICAgIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UmVjdDsgfQogCiBw
cml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGRiMGFlNDY5
OWU3ODk2OTJmNTFjNDBiOGNkZTc2NDg0ZmQxYzRhYTguLjcwYjVmODJhMjA1MzIzNTQ5ZTZlMDY2
OTg2MzA5Y2YyYjljOTBkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291
cmNlcygpCiAgICAgVGlsZWRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7CiB9CiAK
LXZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIEFT
U0VSVChkcmF3c0NvbnRlbnQoKSk7CiAKQEAgLTExNCw2ICsxMTQsMjAgQEAgdm9pZCBDb250ZW50
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQogICAgIHJlc2V0TmVlZHNEaXNw
bGF5KCk7CiB9CiAKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRp
cnR5KCkKK3sKKyAgICBBU1NFUlQoZHJhd3NDb250ZW50KCkpOworCisgICAgY29uc3QgSW50UmVj
dCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOworICAgIGlmIChsYXllclJlY3QuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKGxheWVyUmVjdCk7Cit9CisKIGJvb2wg
Q29udGVudExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fZGVsZWdhdGUgJiYgbV9kZWxlZ2F0ZS0+ZHJhd3NDb250ZW50KCkgJiYgVGlsZWRMYXllckNo
cm9taXVtOjpkcmF3c0NvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IGI4MzRlNjc2YmQ2MzQ0NWFhNDUzYjM2NWVlZTI4MDI0MGYzODA5YzEuLmM1ZTlmY2NlYmY0
NzZlYjdkMDJiYzk4MjIxNzBiNjY1M2E1MTNiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uaApAQCAtNDksNiArNDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Db250ZW50
TGF5ZXJDaHJvbWl1bSgpOwogCisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGly
dHkoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogcHJvdGVj
dGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZTk0NWUwNjQ5Y2MwZGMyNmI2
MjVmYjNlNGY1N2FmZTk4MGQ3YjZlOC4uOTFmYTFiZDhkM2JkM2I2NDg2ODAwMzI0Mzc4ZDdjODM5
ODQ5YzMwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC05Niw3ICs5Niw3IEBA
IFNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgVGV4dHVyZUFsbG9jYXRvcioKIH0gLy8gbmFtZXNwYWNlCiAKIEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZShGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQ
YXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikK
IHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggOWQzNzY4Y2VkMTg4Mzg0N2MyY2Nk
MDhjNTFkMGQwNDJiOTliM2UxNi4uMzdhMzZhYWQxNmY1OWNhYjlkNmE5ZDVmNWQ4MzUwOGExOTc0
NTAyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7
CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDBiZDgyYWUxYTE4YTI1MzBmODc0MjBlNDgxZDBkNWNhMjMw
YjkwMTIuLjg0NGE3OTg2MDgyZTI0MmVhMzMwNjg5YzFkYWQ5MGFlMjFiY2I3NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtNDksMTEgKzQ5LDEzIEBAIHB1YmxpYzoKICAg
ICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHRl
eHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgICAg
ICAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAg
ICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQogICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRl
eHR1cmVVcGRhdGVyKQogICAgICAgICB7CiAgICAgICAgIH0KIAorICAgICAgICB2aXJ0dWFsIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKICAg
ICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CkBAIC02Miw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBw
cml2YXRlOgogICAgICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVy
KCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQogCisgICAgICAgIE93blB0cjxNYW5hZ2Vk
VGV4dHVyZT4gbV90ZXh0dXJlOwogICAgICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1f
dGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsKIApAQCAtMTY4LDcgKzE3MSw3IEBAIHZvaWQgSW1hZ2VM
YXllckNocm9taXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0T3BhcXVl
KCFtX2NvbnRlbnRzLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKIH0KIAotdm9pZCBJbWFnZUxh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgSW1hZ2VMYXllckNocm9t
aXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAoIW1fZGlydHlSZWN0Lmlz
RW1wdHkoKSkgewogICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9j
b250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5oCmluZGV4IDFhZmNjZmUyZmRjZTY0NDc1YTc0YWIyYzkyNmQwNDJjYjVmMzc2NzQu
LjhiYjlhMWRmYjM1NGE2ZjhhOTlmNGY5OTA0MmMxYzA5N2U3ZTZmOGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5J
bWFnZUxheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogCiAgICAgdm9pZCBzZXRDb250ZW50
cyhJbWFnZSogaW1hZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggYWFiOWQzODg1ODYwN2M4
NDU5ZjFjZGI3MzQ5YjA5ZGQ0YjIzMjVjNy4uZmRmZjBkYTI4YjNhOGY2OTMwMzJjOGMwYTFjOTE4
YTBhNjNhN2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5j
bHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1
ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NM
YXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVy
OwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBA
IC0xNjEsOCArMTYxLDkgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2Fs
bHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVh
bCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCA0NTI1Y2U3ZWIxMWM5YzU2ZWUxZDI3ODUyZjA3MmYzOTU1YzgxMWVkLi40
MmIzMWY3MjkzMzcxOTY1MjZlMmM3MjUzZDA1ZGEyNmYxMTMzNDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDYg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBj
bGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xh
c3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCkBAIC00OCwxNCAr
NDgsMTcgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgp
IHsgfQogCi0gICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0
dXJlLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRS
ZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVy
ZSogdGV4dHVyZSgpIHsgcmV0dXJuIDA7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNv
dXJjZVJlY3QgKi8pIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwotICAgIHByb3RlY3RlZDoKLSAgICAgICAg
ZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKSA6IG1f
dGV4dHVyZSh0ZXh0dXJlKSB7IH0KKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAg
cHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9OwogCi0gICAgcHJpdmF0ZToK
LSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAog
ICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTc4LDcgKzgxLDcgQEAg
cHVibGljOgogICAgIC8vIFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVy
IGluIHRoZSBzYW1wbGVkIHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3Jt
YXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNh
bXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1h
dCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYg
LyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyog
Ym9yZGVyVGV4ZWxzICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25z
dCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUg
Ki8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcAppbmRleCBkY2ZkNjNlNzE5MzQyYWU3NTBiZGZlYWE4Y2FiMzJmMWNmZmM4MmMy
Li4zYTVhNGRmMzc2NzM4ODFmOWE4N2QxOTM4NjY4NTVmNDA1NzFhNTBjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAt
NDgsMTIgKzQ4LDEyIEBAIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVy
VGV4ZWxzICovKQordm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWlu
dENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0
aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLykKIHsKICAgICBTa0NhbnZhcyogY2Fu
dmFzID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRl
bnRSZWN0LmhlaWdodCgpKTsKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3JtQ29udGV4
dChjYW52YXMpOwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBsYXRmb3Jt
Q29udGV4dCk7Ci0gICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0
KTsKKyAgICBwYWludChncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0KTsKICAgICBtX3BpY3R1
cmUuZW5kUmVjb3JkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA4OTFhNmQzYzlmMTIyMDFjYTRiMTgxNzQw
YmYwZmJhNDdlMDFkYjU0Li5hOTRlNjQ2MWFkZmZlN2RhYjA4YWJhOGY5MTk3NjVjMTA5ZmJkMDRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNp
dCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVy
VGV4ZWxzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwog
ICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDI2MGExNzVjNDI4YzE1OWE2MzhlMDI0NzVhNGI1ZGU0
MjFkMmVhNGEuLmVlODQyMTc4YmVmNjFkMjE4MmYxODAyMmI1NGM3ZjRhMmI3Y2ViZmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcApAQCAtMTU0LDEwICsxNTQsMTAgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0
KQogICAgICAgICBpc05vbkNvbXBvc2l0ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6
Tm9Cb3JkZXJUZXhlbHMgOiBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKIH0K
IAotdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1
cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNh
dXNlIGNvbXBvc2l0aW5nIHRvIGdldCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRp
bGVyIHRvIGJlY29tZSBpbnZhbGlkYXRlZCBtaWQtdXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJh
dyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxl
cygpKQorICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0
eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKQEAgLTE2
Niw4ICsxNjYsNiBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICBmb3IgKGludCBp
ID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CiAgICAgICAgICAgICBVcGRhdGFibGVUaWxlKiB0
aWxlID0gdGlsZUF0KGksIGopOwogICAgICAgICAgICAgaWYgKCF0aWxlKQotICAgICAgICAgICAg
ICAgIHRpbGUgPSBjcmVhdGVUaWxlKGksIGopOwotICAgICAgICAgICAgZWxzZSBpZiAoIXRpbGUt
PmRpcnR5KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIEludFJl
Y3Qgc291cmNlUmVjdCA9IHRpbGUtPm1fdXBkYXRlUmVjdDsKQEAgLTE5NSwxNyArMTkzLDkgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55KCkg
KyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAgICAg
ICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmJpbmRU
ZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCkpOwotICAgICAgICAgICAgY29uc3Qg
R0MzRGludCBmaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29u
dGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAgICAg
IEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIp
KTsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdf
RklMVEVSLCBmaWx0ZXIpKTsKLQotICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+dGV4
dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Ci0gICAgICAgICAgICB0aWxlLT5jbGVhckRp
cnR5KCk7CisgICAgICAgICAgICBoYW5kbGVyLmhhbmRsZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogICAgIH0KLQotICAgIG1fdXBkYXRlUmVjdCA9
IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KG1fcGFpbnRSZWN0KSk7
CiB9CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0
aW9uIHRpbGluZ09wdGlvbikKQEAgLTMyMSw2ICszMTEsMTEgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIAogICAg
IG1fc2tpcHNEcmF3ID0gZmFsc2U7CiAKKyAgICBmb3IgKENDTGF5ZXJUaWxpbmdEYXRhOjpUaWxl
TWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbV90aWxlci0+dGlsZXMoKS5iZWdpbigpOyBpdGVy
ICE9IG1fdGlsZXItPnRpbGVzKCkuZW5kKCk7ICsraXRlcikgeworICAgICAgICBVcGRhdGFibGVU
aWxlKiB0aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQo
KSk7CisgICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICB9CisKICAg
ICBpZiAoY29udGVudFJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fcmVxdWVzdGVkVXBkYXRl
UmVjdCA9IEludFJlY3QoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzYzLDIzICszNTgsMTQgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCkKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QgPSBjb250ZW50UmVjdDsKIAog
ICAgIG1fcGFpbnRSZWN0ID0gbV90aWxlci0+bGF5ZXJSZWN0VG9Db250ZW50UmVjdChkaXJ0eUxh
eWVyUmVjdCk7Ci0gICAgaWYgKGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICBpZiAobV9w
YWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDYWxsaW5nIHBy
ZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2
ZSB0aGUgc2lkZQotICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNo
IGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRl
ZC4KLSAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUg
R3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywKLSAgICAvLyBzbyB3ZSBn
cmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRp
bCB0aGUgcGFpbnQgY29tcGxldGVzLgotICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBw
cm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFy
ZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNC
b3JkZXJUZXhlbHMoKSk7Ci0KICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMo
bV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIGZv
ciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9yIChpbnQgaSA9
IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGls
ZSA9IHRpbGVBdChpLCBqKTsKLSAgICAgICAgICAgIGlmICghdGlsZSkKLSAgICAgICAgICAgICAg
ICB0aWxlID0gY3JlYXRlVGlsZShpLCBqKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0aWxlLT5k
aXJ0eSgpKQorICAgICAgICAgICAgaWYgKCF0aWxlIHx8ICF0aWxlLT5kaXJ0eSgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvLyBDYWxjdWxhdGUgY29udGVudC1z
cGFjZSByZWN0YW5nbGUgdG8gY29weSBmcm9tLgpAQCAtMzkwLDEzICszNzYsMjcgQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCkKICAgICAgICAgICAgIHNvdXJjZVJlY3QuaW50ZXJzZWN0KG1fcGFpbnRSZWN0KTsKIAog
ICAgICAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAg
IGlmIChzb3VyY2VSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKKyAg
ICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKICAgICAgICAgfQogICAgIH0KIH0KIAordm9p
ZCBUaWxlZExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QpCit7CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5p
c0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBDYWxsaW5nIHBhaW50Q29udGVudHMoKSBjYWxs
cyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAvLyBl
ZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5j
ZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZlciwg
d2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRp
bCB0aGUgcGFpbnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5j
ZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRl
cy4KKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRh
dGVyKCkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3Qs
IG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpKTsKKworICAg
IG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0
KG1fcGFpbnRSZWN0KSk7Cit9CisKKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNWRhZjBmMDE5NDdhOTk0
N2NkMjM1ZjU1ZmI3Mzk1OWU0NDdiMWY1Ni4uY2ZkZGZjODZjMGFkY2U0YzI4YTJlM2YzOTlkYWNi
ZTg2NDI4ODA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQzLDcgKzQzLDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lk
IHNldElzTWFzayhib29sKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKik7CkBAIC02NSw4ICs2NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBTZXQg
aW52YWxpZGF0aW9ucyB0byBiZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgp
LgogICAgIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwot
ICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJz
ZWN0IHdpdGggY29udGVudFJlY3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUgdGV4dHVyZXMg
dGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KICAgICB2b2lkIHByZXBhcmVUb1VwZGF0
ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgLy8gUGFpbnQgY29udGVudHMgbmVl
ZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0Lgor
ICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIApAQCAtODMsNyAr
ODUsNyBAQCBwcml2YXRlOgogCiAgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkg
Y29uc3Q7CiAKLSAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1Vw
ZGF0ZSgpIGFuZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8gVGVtcG9yYXJ5
IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRDb250ZW50cygp
LgogICAgIEludFJlY3QgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0OwogICAgIC8vIFN0YXRlIGhlbGQg
YmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJl
cHJlc2VudHMgdGhlIGFyZWEKICAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBhY3R1YWxseSBy
ZS1wYWludGVkIGJ5IFdlYktpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4
IDIzOTQ1NjhmMmQ4Mjc4ZjU5NzlhN2ZlMGM1NjE1ZDlmNzIwOThiNjcuLjM3ODBkMDZkNmZjNjgz
ZjI3OTU4ZTMzZGEwNWE5NzAxYzE3NDNhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVt
LmNwcApAQCAtNDAsMTEgKzQwLDI0IEBACiAjaW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgi
CiAjaW5jbHVkZSAiVmlkZW9GcmFtZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllcklt
cGwuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NW
aWRlb0xheWVySW1wbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1ZpZGVvTGF5ZXJDaHJv
bWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKFZpZGVvTGF5ZXJDaHJvbWl1bSog
bGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitWaWRlb0xheWVyQ2hyb21pdW06
OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFZpZGVvTGF5
ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyog
c291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9s
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCBhbGxvY2F0b3IpOworfQor
CiBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVh
dGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3Zp
ZGVyKQogewpAQCAtNTcsNiArNzAsNyBAQCBWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJD
aHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBWaWRlb0ZyYW1lUHJvdgogICAgICwg
bV9mcmFtZUZvcm1hdChWaWRlb0ZyYW1lQ2hyb21pdW06OkludmFsaWQpCiAgICAgLCBtX3Byb3Zp
ZGVyKHByb3ZpZGVyKQogICAgICwgbV9wbGFuZXMoMCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUo
dGhpcykKIHsKIH0KIApAQCAtNzcsNyArOTEsNyBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
Y2xlYW51cFJlc291cmNlcygpCiAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLmNsZWFy
KCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVy
KQordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKIHsK
ICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIpCiAgICAgICAgIHJldHVybjsKQEAg
LTEyOSw3ICsxNDMsNyBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICBUZXh0dXJl
JiB0ZXh0dXJlID0gbV90ZXh0dXJlc1twbGFuZV07CiAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLm1f
dGV4dHVyZSk7CiAgICAgICAgIEFTU0VSVChmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFu
ZSkgPT0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKSk7Ci0gICAgICAgIHVwZGF0ZVRleHR1cmUo
Y29udGV4dCwgdXBkYXRlci5hbGxvY2F0b3IoKSwgdGV4dHVyZSwgZnJhbWUtPmRhdGEocGxhbmUp
KTsKKyAgICAgICAgdXBkYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUsIGZy
YW1lLT5kYXRhKHBsYW5lKSk7CiAgICAgfQogCiAgICAgbV9wbGFuZXMgPSBmcmFtZS0+cGxhbmVz
KCk7CkBAIC0xNDEsNiArMTU1LDExIEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDCiAgICAgbV9w
cm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKIH0KIAordm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciYgaGFuZGxlcikKK3sKKyAgICBoYW5kbGVyLmhhbmRsZSgmbV91cGRhdGVyVGV4dHVyZSwg
SW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVz
aFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiB7CiAgICAgTGF5ZXJDaHJvbWl1bTo6
cHVzaFByb3BlcnRpZXNUbyhsYXllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDQ5MDU3MjI1ZTQzMGNlOGRkYjhiNDMwYmZlZmM3NDEyY2I1MjFiMDQuLmZhNjRjYjk4ZGJkZWRi
ZWU2OWU5ZjM4MTEzZjcwODc3MzM1Mzg1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5o
CkBAIC00Myw2ICs0MywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBBIExheWVyIHRoYXQg
Y29udGFpbnMgYSBWaWRlbyBlbGVtZW50LgogY2xhc3MgVmlkZW9MYXllckNocm9taXVtIDogcHVi
bGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDog
cHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgVXBkYXRlclRleHR1cmUoVmlkZW9MYXllckNocm9taXVtKik7CisgICAgICAgIHZpcnR1YWwg
flVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAg
VmlkZW9MYXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1l
UHJvdmlkZXIqID0gMCk7CkBAIC01MCw3ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDQ0xheWVySW1wbD4gY3JlYXRlQ0NMYXllckltcGwoKTsKIAotICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NU
ZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAg
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIHZvaWQgcmVsZWFzZVByb3ZpZGVyKCk7CkBAIC04NSw2ICs5Niw4IEBAIHByaXZhdGU6CiAg
ICAgZW51bSB7IE1heFBsYW5lcyA9IDMgfTsKICAgICBUZXh0dXJlIG1fdGV4dHVyZXNbTWF4UGxh
bmVzXTsKICAgICB1bnNpZ25lZCBtX3BsYW5lczsKKworICAgIFVwZGF0ZXJUZXh0dXJlIG1fdXBk
YXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRl
eCBhNGE5YTgwNWJiZWNjNTBkZjQ4NGU3ZDYyNDQ3ZmNjMWU2OTFjYTQ5Li45ODUxMWI4ZGYwNTNi
NWI0NjljZmJjNGIzYmJjNjQ2NTE5YWMyOGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIK
ICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50
LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJl
KFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQor
CitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQor
eworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykK
K3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQpOworfQor
CiBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gV2ViR0xMYXllckNocm9taXVtOjpjcmVh
dGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkdMTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkpOwpAQCAtNTEsNiArNjYsNyBAQCBXZWJHTExh
eWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRl
KQogICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKICAgICAsIG1fdGV4dHVyZUNo
YW5nZWQodHJ1ZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZWQoZmFsc2UpCisgICAgLCBtX3VwZGF0
ZXJUZXh0dXJlKHRoaXMpCiB7CiB9CiAKQEAgLTY1LDcgKzgxLDcgQEAgYm9vbCBXZWJHTExheWVy
Q2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChjb250ZXh0KCkgJiYg
Y29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9
PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVy
ZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRl
eHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTQs
NiArMTEwLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKCZtX3VwZGF0
ZXJUZXh0dXJlLCBJbnRSZWN0KCksIEludFJlY3QoKSk7Cit9CisKIGJvb2wgV2ViR0xMYXllckNo
cm9taXVtOjpwYWludFJlbmRlcmVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKiBpbWFnZUJ1
ZmZlcikKIHsKICAgICBpZiAobV90ZXh0dXJlVXBkYXRlZCB8fCAhbGF5ZXJSZW5kZXJlckNvbnRl
eHQoKSB8fCAhZHJhd3NDb250ZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDYzNzRiOWVmNmIxMTdhZDIzNTVhMWZhZGI2OWRkYjQxMDdhNjkzMTAuLmI4YmQ0MTczYjNkNGU4
MDYzNGFlYWE0NmQwYmRjMDcyODIzYWFhNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5o
CkBAIC0zNiw2ICszNiw3IEBACiAKICNpbmNsdWRlICJDYW52YXNMYXllckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiRHJhd2luZ0J1ZmZlci5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSwxMiArNDYsMjQgQEAgY2xhc3MgV2Vi
R0xMYXllckNocm9taXVtUmF0ZUxpbWl0VGFzazsKIC8vIEEgTGF5ZXIgY29udGFpbmluZyBhIFdl
YkdMIGNhbnZhcwogY2xhc3MgV2ViR0xMYXllckNocm9taXVtIDogcHVibGljIENhbnZhc0xheWVy
Q2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVXBkYXRl
clRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKik7CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJU
ZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2ViR0xMYXll
ckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJH
TExheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCk7CiAKICAgICB2aXJ0
dWFsIH5XZWJHTExheWVyQ2hyb21pdW0oKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7
CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgYm9vbCBwYWludFJlbmRl
cmVkUmVzdWx0c1RvQ2FudmFzKEltYWdlQnVmZmVyKik7CiAKQEAgLTcxLDYgKzg0LDggQEAgcHJp
dmF0ZToKICAgICAvLyBBIHJlZmVyZW5jZSBpcyBub3QgaGVsZCBoZXJlLCBiZWNhdXNlIHRoZSBE
cmF3aW5nQnVmZmVyIGFscmVhZHkgaG9sZHMKICAgICAvLyBhIHJlZmVyZW5jZSB0byB0aGUgV2Vi
R0xMYXllckNocm9taXVtLgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKKwor
ICAgIFVwZGF0ZXJUZXh0dXJlIG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBiYTQzMGVjNTE3YjAyN2E3NjZlNjNkYWFlZTA2OGY4
MjkxZjQ0OGYxLi5hMjJhZjE1N2RiZWUxNGI1NmY0YmZkZWE2NzNhMWE2NWEzYWIzMmIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM1LDExICszNSw0MiBAQAogI2luY2x1
ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ01haW5UaHJlYWQu
aCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NUaHJlYWRQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NDTGF5ZXJUcmVlSG9z
dDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6UHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIDog
bV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCit7Cit9CisK
K0NDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6flByZXBhcmVSZXNvdXJj
ZUhhbmRsZXIoKQoreworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNl
SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAg
IHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3Qs
IGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OlBhaW50SGFu
ZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7Cit9CisKK0NDTGF5
ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKK3sKK30KKwordm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNSZWN0KHNvdXJjZVJl
Y3QpOworICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
Cit9CisKIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0
ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGlu
Z3MpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0
UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMjk3LDcgKzMy
OCw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0
PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRl
bHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIXJvb3RMYXllcigp
KQogICAgICAgICByZXR1cm47CkBAIC0zMDUsMTIgKzMzNiwxMiBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOworICAgIHBy
ZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJB
Q0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAg
VFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7
CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICByb290TGF5
ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTMxOSwzMiArMzUwLDY4IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAg
IEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICBy
b290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2Vy
dCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIK
LSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBh
bnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1f
dXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBp
ZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8gcHJlcGFyZVRvVXBk
YXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCisg
ICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAmJiAhbV91cGRhdGVM
aXN0LnNpemUoKSk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5hcHBlbmQocm9vdExh
eWVyKTsKIAogICAgIFJlbmRlclN1cmZhY2VDaHJvbWl1bSogcm9vdFJlbmRlclN1cmZhY2UgPSBy
b290TGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICByb290UmVuZGVyU3VyZmFjZS0+Y2xlYXJM
YXllckxpc3QoKTsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owog
ICAgIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
OjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwotICAgICAgICBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIsIHJvb3RMYXll
ciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3VwZGF0ZUxpc3QsIHJvb3RSZW5k
ZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRl
eHR1cmVTaXplKTsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFy
ZVRvVXBkYXRlOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOworICAgICAgICBDQ0xheWVyVHJlZUhv
c3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShyb290TGF5ZXIs
IHJvb3RMYXllciwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBtX3JlbmRlclN1cmZh
Y2VVcGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVy
ZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CisgICAgfQorCisgICAgYXBwZW5kVmlz
aWJsZUxheWVycyhtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBtX3VwZGF0ZUxpc3QpOworCisg
ICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllcklu
ZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIg
PSBtX3VwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5wcmVwYXJl
VG9VcGRhdGVJZkRpcnR5KCk7CiAgICAgfQorfQogCi0gICAgcGFpbnRMYXllckNvbnRlbnRzKG1f
dXBkYXRlTGlzdCk7Cit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9z
aXRvclJlc291cmNlcyIsIHRoaXMsIDApOworICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgaGFu
ZGxlcihjb250ZXh0LCBhbGxvY2F0b3IpOworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
aGFuZGxlcik7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KExheWVyQ2hy
b21pdW0qIGxheWVyLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0KQordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoKQoreworICAgIGlmICghcm9vdExheWVyKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhaW50Q29udGVudHMocm9vdExheWVyKCkpOworfQorCit2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyhMYXllckNocm9taXVtKiByb290TGF5ZXIp
Cit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyIsIHRo
aXMsIDApOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkg
LSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJv
bWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxh
eWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworCisgICAgICAgIFBhaW50SGFuZGxlciBoYW5k
bGVyKG1fcHJveHkuZ2V0KCkpOworICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShoYW5kbGVyKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRW
aXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IEludFJlY3QmIHZpc2libGVM
YXllclJlY3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKICAgICBpZiAobGF5ZXItPmRyYXdz
Q29udGVudCgpKSB7CiAgICAgICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVM
YXllclJlY3QpOwotICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAg
ICAgdXBkYXRlTGlzdC5hcHBlbmQobGF5ZXIpOwogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0q
IHJlbmRlclN1cmZhY2VMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5k
UmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVy
LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxp
Y2FzIG9ubHkgZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdl
IHJlYWNoIHRoaXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBh
dCBsZWFzdCBzb21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2Us
IHNvIHRoZQpAQCAtMzUyLDcgKzQxOSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1h
c2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAKICAg
ICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5kZXJT
dXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAg
ICBwYWludENvbnRlbnRzSWZEaXJ0eShyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBJ
bnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7
CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXll
cigpLCBJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5k
cygpKSwgdXBkYXRlTGlzdCk7CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxh
eWVyID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKTsKQEAgLTM2MSwxOSArNDI4
LDE5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVy
U3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAgICAgICAgIEludFJlY3QgdmlzaWJsZUxh
eWVyUmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVj
dDxMYXllckNocm9taXVtPihyZW5kZXJTdXJmYWNlTGF5ZXIpOwogCiAgICAgICAgIHJlcGxpY2FM
YXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRDb250ZW50c0lmRGly
dHkocmVwbGljYUxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICAgICAgYXBwZW5kVmlzaWJs
ZUxheWVyKHJlcGxpY2FMYXllciwgdmlzaWJsZUxheWVyUmVjdCwgdXBkYXRlTGlzdCk7CiAKICAg
ICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxp
Y2FMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgICAg
ICBwYWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBJbnRSZWN0
KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMoKSkp
OworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVy
KCksIEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVu
dEJvdW5kcygpKSwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXll
cnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1
cGRhdGVMaXN0KQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VM
YXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkg
ewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgZm9yIChpbnQgc3VyZmFjZUlu
ZGV4ID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49
IDAgOyAtLXN1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJm
YWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwog
ICAgICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJm
YWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2Up
OwogCkBAIC0zODYsNyArNDUzLDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJD
b250ZW50cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+c2V0TGF5ZXJUcmVl
SG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2Uo
cmVuZGVyU3VyZmFjZUxheWVyKTsKKyAgICAgICAgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAgY29u
c3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKICAg
ICAgICAgQVNTRVJUKGxheWVyTGlzdC5zaXplKCkpOwpAQCAtNDA1LDYxICs0NzIsMzkgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmIHJl
bmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIAogICAgICAgICAgICAgSW50UmVjdCB2
aXNpYmxlTGF5ZXJSZWN0ID0gQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxl
TGF5ZXJSZWN0PExheWVyQ2hyb21pdW0+KGxheWVyKTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgcGFpbnRDb250ZW50c0lmRGlydHkobGF5ZXIsIHZpc2libGVMYXllclJlY3QpOworICAgICAg
ICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKGxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0LCB1cGRhdGVM
aXN0KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVy
ZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewotICAg
IGZvciAoaW50IHN1cmZhY2VJbmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNl
SW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIHJl
bmRlclN1cmZhY2VMYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwotICAg
ICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNl
TGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwot
Ci0gICAgICAgIGlmICghcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCkuc2l6ZSgpIHx8ICFyZW5k
ZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAg
ICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCksIGNv
bnRleHQsIHVwZGF0ZXIpOwotCi0gICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxp
Y2FMYXllcigpKSB7Ci0gICAgICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRl
clN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCksIGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIo
KS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSwgY29udGV4
dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IExheWVyTGlz
dCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7Ci0gICAgICAgIEFTU0VS
VChsYXllckxpc3Quc2l6ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0g
MDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5zaXplKCk7ICsrbGF5ZXJJbmRleCkgewotICAgICAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBsYXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7
Ci0gICAgICAgICAgICBpZiAobGF5ZXItPnJlbmRlclN1cmZhY2UoKSAmJiBsYXllci0+cmVuZGVy
U3VyZmFjZSgpICE9IHJlbmRlclN1cmZhY2UpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0K
LSAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobGF5ZXIsIGNvbnRleHQsIHVw
ZGF0ZXIpOwotICAgICAgICB9CisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fdXBkYXRlTGlz
dC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAg
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7Cisg
ICAgICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UobGF5ZXIsIGhhbmRsZXIpOwogICAgIH0K
IH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoTGF5
ZXJDaHJvbWl1bSogbGF5ZXIsIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRs
ZXImIGhhbmRsZXIpCiB7CiAgICAgLy8gRm9yIG5vcm1hbCBsYXllcnMsIHRoZXNlIGNvbmRpdGlv
bnMgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNoZWNrZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJl
bmRlciBzdXJmYWNlIGxheWVyIGxpc3RzLgogICAgIC8vIEZvciBtYXNrcyBhbmQgcmVwbGljYXMg
aG93ZXZlciwgd2UgbWF5IHN0aWxsIG5lZWQgdG8gY2hlY2sgdGhlbSBoZXJlLgogICAgIGlmIChs
YXllci0+Ym91bmRzKCkuaXNFbXB0eSgpIHx8ICFsYXllci0+b3BhY2l0eSgpIHx8ICFsYXllci0+
ZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGxheWVyLT51cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOworICAgIGxheWVyLT5mb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xl
YXJQZW5kaW5nVXBkYXRlKCkKIHsKLSAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBz
dXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAg
ICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdl
dCgpOworICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFj
ZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXpl
KCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9y
ZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NF
UlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1
cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJT
dXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBw
bHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBkODE0MTQ5YzU0YjA1M2VjZWE2ZmNhZTA1NjI0NDQ4
ZGQzMTFkOTExLi4zNWJlZWZjZDdiMDUxNzY2OWE1ZTc5ZjlkNzYwYzE3NTZhMGNjNGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBHckNvbnRl
eHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7Ci1j
bGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBM
YXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC0xNzUsOSAr
MTc0LDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhi
b29sKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoKTsKKyAgICB2b2lkIHByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgcGFpbnRDb250ZW50cygpOwogCi0g
ICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NU
ZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxl
KGNvbnN0IENDU2Nyb2xsQW5kU2NhbGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIo
R3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0Nv
bnRleHQzRCopOwpAQCAtMTg3LDEzICsxODgsMzggQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaW5p
dGlhbGl6ZSgpOwogCiBwcml2YXRlOgorICAgIGNsYXNzIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIg
OiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAg
ICAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciopOworICAgICAgICB2aXJ0dWFsIH5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCk7CisK
KyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKyAg
ICAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgfTsKKworICAgIGNsYXNz
IFBhaW50SGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFBhaW50SGFuZGxlcihDQ1Byb3h5Kik7CisgICAgICAgIHZpcnR1
YWwgflBhaW50SGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIENDUHJveHkqIG1f
cHJveHk7CisgICAgfTsKKwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVt
PiA+IExheWVyTGlzdDsKIAotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVy
TGlzdCYpOwotICAgIHZvaWQgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5
ZXJDaHJvbWl1bSopOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVyKExheWVyQ2hyb21pdW0q
LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0LCBMYXllckxpc3QmKTsKKyAgICB2b2lk
IGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgTGF5
ZXJMaXN0JiB1cGRhdGVMaXN0KTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcnMoY29uc3Qg
TGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0
KTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKLSAgICB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoTGF5ZXJDaHJvbWl1bSosIEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hy
b21pdW0qKTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSopOworICAgIHZv
aWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllckNocm9taXVtKiwgTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKICAg
ICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKQEAgLTIwOSw2ICsyMzUsNyBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8VGV4
dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAorICAgIExheWVyTGlzdCBt
X3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0OwogICAgIExheWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CiAK
ICAgICBDQ1NldHRpbmdzIG1fc2V0dGluZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggNTE2YjY3OTU2NTUy
OWMzOTM1MTM2M2U1YTZlZmExMTdjN2EwMTM1OS4uZGM0ZGNhOWUxOGJlODFiMzZjZTg5OGM5Yzdm
NWE5ZDlmZWJlNTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBD
Q1Byb3h5X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVV
cGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzIsNiArNzMsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxl
ZCBiZWZvcmUgdXNpbmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAv
LyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERl
YnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBjMTYwZTE5OGI0
Yjk0NDY3M2RhYzAxNDVkYzExMWM0NWJjNjhjZDZiLi42ZTYxMWIwNWQ3OGRiMmM5NDg2NDA2YWZi
Njg1ZTJjNzQ1Mjg0NTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cApAQCAtMTQ5LDE1ICsxNDksMTggQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzZXROZWVk
c0FuaW1hdGUoKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCgpCiB7CiAgICAg
QVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKKworICAgIC8vIFByZXBhcmUgY29tcG9z
aXRvciByZXNvdXJjZXMKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVz
b3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgbV9sYXllclRyZWVIb3N0LT5w
YWludENvbnRlbnRzKCk7CisKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKICAgICB7CiAgICAg
ICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3RJbXBsLT5iZWdpbkNvbW1pdCgpOwogCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5D
b21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7Ci0gICAgICAgIEND
VGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IoKSk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIHVwZGF0ZXIpOwotICAg
ICAgICB3aGlsZSAodXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgp
LCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXll
clRyZWVIb3N0LT52aXNpYmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENv
bW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKIApAQCAtMjEwLDYg
KzIxMywxMiBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnN0b3AoKQogICAgIG1fbGF5ZXJU
cmVlSG9zdCA9IDA7CiB9CiAKK3ZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6dXBkYXRlKExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1Npbmds
ZVRocmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICB0ZXh0dXJlLT51cGRhdGVSZWN0
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogLy8g
Q2FsbGVkIGJ5IHRoZSBsZWdhY3kgc2NoZWR1bGluZyBwYXRoIChlLmcuIHdoZXJlIHJlbmRlcl93
aWRnZXQgZG9lcyB0aGUgc2NoZWR1bGluZykKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6Y29t
cG9zaXRlSW1tZWRpYXRlbHkoKQogewpAQCAtMjc0LDcgKzI4Myw3IEBAIHZvaWQgQ0NTaW5nbGVU
aHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01h
aW5UaHJlYWQoKSk7CiAKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAg
IG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CiAKICAgICBkb0NvbW1pdCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4IGVkYWI2MWYyYzAzMjc5
NmVjODQyMzViNDFiNGVmNzczYTgyMjlmMTMuLjk1YmVlMGViYzFjMWEwYmNmODYwZWJkZWUyNWU3
MGQ5M2MyOTNkODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKQEAgLTU0
LDYgKzU0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgLy8g
Q0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9p
ZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7IEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDg3NDVjNGVhMGE3
MTBiZGUxOGVkZTE4MjBmMzE0ZmRiOGNjODcyYWIuLjY3MjhlOGQ3ZWY3ZWM0YjE2ODNjZGVkNzJj
MjIzMjI1N2Y1NDg0YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAKKyNpbmNs
dWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNs
dWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNmY0ZWQ5MGQxMGE2ODg1MzBiNDNlZTMy
YjlkYTQ1NjNkZGY3OGI3ZS4uZWI4OTc1OGI3ZjkxYzRkN2NjZDdkZDhmM2QxNDFmM2NlNWJjYzJh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTMwMyw2ICszMDMsMjAgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKIH0KIAordm9p
ZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4
dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
Cit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZSIsIHRoaXMsIDApOwor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZCk7CisKKyAg
ICBVcGRhdGVFbnRyeSogZW50cnkgPSBuZXcgVXBkYXRlRW50cnk7CisgICAgZW50cnktPm1fdGV4
dHVyZSA9IHRleHR1cmU7CisgICAgZW50cnktPm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7Cisg
ICAgZW50cnktPm1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKworICAgIHNfY2NUaHJlYWQtPnBvc3RU
YXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVy
ZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhlbnRyeSkpKTsKK30KKwogdm9p
ZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzc4LDcgKzM5
MiwxNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVl
bmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAg
ICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRh
dGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOworCisg
ICAgeworICAgICAgICAvLyBJbml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHJlcXVpcmUg
Zm9yIGZyYW1lLgorICAgICAgICBUUkFDRV9FVkVOVCgiYWxsb2NhdGUiLCB0aGlzLCAwKTsKKyAg
ICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICAgICAgc19jY1RocmVhZC0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwor
ICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKKyAgICB9CisKKyAgICBtX2xheWVyVHJlZUhvc3Qt
PnBhaW50Q29udGVudHMoKTsKIAogICAgIHsKICAgICAgICAgLy8gTm90aWZ5IHRoZSBpbXBsIHRo
cmVhZCB0aGF0IHRoZSBiZWdpbkZyYW1lIGhhcyBjb21wbGV0ZWQuIFRoaXMgd2lsbApAQCAtMzk2
LDkgKzQyMCw5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQg
c2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4
ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVy
KTsKIH0KIAotdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCit2b2lkIENDVGhyZWFkUHJveHk6OmJl
Z2luRnJhbWVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7Ci0g
ICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRo
cmVhZCIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZy
YW1lT25PbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAg
IEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZCk7CkBAIC00MDgsMTEgKzQzMiw0MSBAQCB2
b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9j
b21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOworICAgIG1fbGF5
ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0
b3IoKSk7CiAKICAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
KTsKICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5l
dyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFs
bG9jYXRvcigpKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkKTsKKworICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworfQorCit2b2lk
IENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoVXBkYXRlRW50cnkqIGVu
dHJ5KQoreworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQp
OworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CisgICAg
aWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGRlbGV0ZSBlbnRyeTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLT5hcHBlbmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnkt
Pm1fZGVzdFJlY3QpOworICAgIGRlbGV0ZSBlbnRyeTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBs
ZXRpb24pCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21w
bGV0ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0
aW9uRXZlbnRPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ck9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBBU1NFUlQo
bV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRo
cmVhZC0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsK
KyAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CiAK
ICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVnaW5GcmFtZUNvbXBsZXRlKCk7CiB9CkBA
IC00MjEsNiArNDc1LDEwIEBAIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291cmNlVXBk
YXRlcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFtX2NvbW1pdENvbXBsZXRp
b25FdmVudE9uSW1wbFRocmVhZCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKICAgICByZXR1cm4g
bV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCAwMTQwYTcxNWRlZmYzOGJjZDMwMDY2Mzcx
NzdiYjUzZmE2NDllNmJjLi41NzQ0M2EyYzcyMzAxMTYzNTY0ZGJhZWQxNDRkZjM4NmM1YjFlMTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC02NCw2ICs2NCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGll
bnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRl
T25JbXBsVGhyZWFkKCk7CkBAIC04MCw2ICs4MSwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAKKyAgICBzdHJ1Y3Qg
VXBkYXRlRW50cnkgeworICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3Rl
eHR1cmU7CisgICAgICAgIEludFJlY3QgbV9zb3VyY2VSZWN0OworICAgICAgICBJbnRSZWN0IG1f
ZGVzdFJlY3Q7CisgICAgfTsKKwogICAgIC8vIENhbGxlZCBvbiBDQ01haW5UaHJlYWQKICAgICB2
b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVC
ZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZvaWQgZGlk
Q29tbWl0QW5kRHJhd0ZyYW1lKCk7CkBAIC05NCw2ICsxMDEsOCBAQCBwcml2YXRlOgogICAgIH07
CiAgICAgUGFzc093blB0cjxDQ01haW5UaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2luRnJhbWVBbmRD
b21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZyYW1lQW5kQ29t
bWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDTWFpblRocmVhZDo6VGFz
ayoqKTsKKyAgICB2b2lkIGJlZ2luRnJhbWVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoVXBkYXRlRW50cnkqKTsKICAg
ICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCop
OwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNrUmVxdWVzdCop
OwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2
ZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDRlNmVmOTdiZGI3
MmFhY2UzMWQ2NGIzODliNDY2MTdmZDMwNzI5NjEuLjhhMmQ2ZmVmNjRkZjc3ZWQxZTVkMDJjM2Qw
ZGMzMjRjOTc4ZTdlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0y
MTMsNiArMjEzLDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQKICAgICBtX3RpbGVyLT5jb250
ZW50UmVjdFRvVGlsZUluZGljZXMoY29udGVudFJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRv
bSk7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJS
ZWN0KGNvbnRlbnRSZWN0KTsKICAgICBmbG9hdCBzaWduID0gRmxvYXRRdWFkKGNvbnRlbnRSZWN0
KS5pc0NvdW50ZXJjbG9ja3dpc2UoKSA/IC0xIDogMTsKKyAgICBjb25zdCBHQzNEaW50IGZpbHRl
ciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVB
UiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwogICAgIGZvciAoaW50IGogPSB0b3A7IGog
PD0gYm90dG9tOyArK2opIHsKICAgICAgICAgQ0NMYXllclF1YWQ6OkVkZ2UgcHJldkVkZ2VYID0g
Y29udGVudFF1YWQubGVmdCgpOwogCkBAIC0zMzcsNiArMzM4LDkgQEAgdm9pZCBDQ1RpbGVkTGF5
ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBj
b25zdCBJbnQKIAogICAgICAgICAgICAgaWYgKHRpbGUgJiYgdGlsZS0+dGV4dHVyZUlkKCkpIHsK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgdGlsZS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKKyAgICAg
ICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRF
UiwgZmlsdGVyKSk7CisKICAgICAgICAgICAgICAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVy
ZWRRdWFkKGdsb2JhbFRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBvcGFj
aXR5LCBxdWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115220</attachid>
            <date>2011-11-15 12:35:20 -0800</date>
            <delta_ts>2011-11-18 13:30:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72192-20111115123519.patch</filename>
            <type>text/plain</type>
            <size>70201</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMjk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2JhN2I2ZmRhZmVlYzJi
NGNjZTczNjc2NzFkMTk4MzBkMjFiZGExYi4uMGQ5M2YzNTAzNTk5YjNlOWU4ZTY2Y2RjNDJjMmNj
MzM3MWZkNjhjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxMS0xMS0xNCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
SW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyBwcmlvciB0byBwYWludGluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgbGF5ZXIgdXBk
YXRlcyBpbnRvIHR3byBzdGVwcy4gU3RlcCBvbmUgY2FsY3VsYXRlcyB0cmFuc2Zvcm1zCisgICAg
ICAgIGFuZCB2aXNpYmxlIGxheWVyIGFyZWFzLiBTdGVwIHR3byBwYWludHMgbGF5ZXIgY29udGVu
dHMuIFRoaXMKKyAgICAgICAgYWxsb3dzIHVzIHRvIHBlcmZvcm0gYSBjb21wb3NpdG9yIHJlc291
cmNlIHByZXBhcmF0aW9uIHN0ZXAgYWZ0ZXIKKyAgICAgICAgdmlzaWJsZSBsYXllciBhcmVhcyBo
YXZlIGJlZW4gY29tcHV0ZWQgYnV0IGJlZm9yZSBhbnkgcGFpbnRpbmcKKyAgICAgICAgaGFzIG9j
Y3VycmVkLiBMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxh
Y2VkCisgICAgICAgIGJ5IExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ug
d2hpY2ggYWxsb3dzIHVzIHRvIGl0ZXJhdGUKKyAgICAgICAgb3ZlciBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBVcGRhdGUgZWFjaCBjb21wb3Np
dG9yIHJlc291cmNlIGFzIHNvb24gYXMgdGhlIGNvbnRlbnRzIHJlcXVpcmVkIGZvcgorICAgICAg
ICB0aGUgdXBkYXRlIGhhcyBiZWVuIHBhaW50ZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBD
b3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJl
KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
MkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50
c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlcjo6
fkhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRD
b250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVv
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNo
cm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
flVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXll
ckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFu
ZGxlcjo6UHJlcGFyZVJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFu
ZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6UGFpbnRI
YW5kbGVyOjpQYWludEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0
OjpQYWludEhhbmRsZXI6On5QYWludEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
clRyZWVIb3N0OjpQYWludEhhbmRsZXI6OmhhbmRsZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVy
VHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDQ0xh
eWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NTaW5nbGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHku
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVPbkltcGxUaHJlYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVP
bkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6aGFzTW9yZVJl
c291cmNlVXBkYXRlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1w
bDo6ZHJhd1RpbGVzKToKKwogMjAxMS0xMS0xNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1c2VsZXNzIGNvbnN0IG1vZGlmaWVyIGZyb20gS1VS
TDo6aW5pdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCAwNzFkZTY0ODQzOGFkMzJjMGM0ZTZlYzg5YzM4ZjY1YWE4MTM1NDk1Li5j
NTI0MjM0M2E1NDFhNWExZjZmMjYxZjg2ZTIzN2I0NzcwOWYyMGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMzYsNyArMzYs
NyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRl
eHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgIDog
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0
ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTc3LDcgKzc3LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNh
bXBsZWQKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQog
Ci12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50
Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgYm9yZGVyVGV4ZWxzKQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VT
aXplKHRpbGVTaXplKTsKIApAQCAtODgsNyArODgsNyBAQCB2b2lkIEJpdG1hcENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dAogICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpUZXh0T3B0aW9uIHRleHRPcHRpb24gPQog
ICAgICAgICBib3JkZXJUZXhlbHMgPyBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6R3JheXNjYWxl
VGV4dCA6IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpTdWJwaXhlbFRleHQ7CiAgICAgUGxhdGZv
cm1DYW52YXM6OlBhaW50ZXIgY2FudmFzUGFpbnRlcigmbV9jYW52YXMsIHRleHRPcHRpb24pOwot
ICAgIHBhaW50Q29udGVudHMoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCk7
CisgICAgcGFpbnQoKmNhbnZhc1BhaW50ZXIuY29udGV4dCgpLCBjb250ZW50UmVjdCk7CiB9CiAK
IHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCmluZGV4IDY3NWRkZGQ1YjQ5YjIxYzBmNzViOGZhNDIyODljYzJmMTBl
NTRhNDQuLmFhOWYyYzA0MDgyZDg3YzM0Y2I0ZDc0MzVmMTMyNmVhZThjMjQ0OWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDcg
KzQwLDcgQEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBBIENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBiaXRtYXAuCiBjbGFzcyBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewog
cHVibGljOgotICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSB7CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAg
ICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRl
eHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsg
fQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNE
ZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscyk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxz
KTsKICAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJE
TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNDQ5NDU4NmE1N2NhMTZiYzRiNGYyMzI0MTBkYjhmN2Zk
NGNkODhjMS4uMTI0ZWRkYjM0NmZlMDM0ZTk5NmNjMmNkMWQyMjUyYzc4YWQ0ZWQ2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw2ICs0NCwyMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBt
X2xheWVyKGxheWVyKQoreworfQorCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVj
dCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcygpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRM
YXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVyQ2hyb21pdW0oY29udGV4dCkpOwpAQCAt
NTIsNiArNjYsNyBAQCBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRM
YXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0MwogQ2FudmFzMkRMYXllckNocm9t
aXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAg
ICAgOiBDYW52YXNMYXllckNocm9taXVtKDApCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAg
ICAsIG1fdXBkYXRlclRleHR1cmUodGhpcykKIHsKIH0KIApAQCAtNjUsNyArODAsNyBAQCBib29s
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgICAg
ICYmIChtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
QigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwogfQogCi12b2lkIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogewogICAgIGlmIChtX2RpcnR5UmVjdC5pc0VtcHR5KCkg
fHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC04NSw2ICsxMDAsMTEgQEAg
dm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqLCBDQ1RleHQKICAgICByZXNldE5lZWRzRGlzcGxheSgpOwogfQogCit2
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxl
KCZtX3VwZGF0ZXJUZXh0dXJlLCBJbnRSZWN0KCksIEludFJlY3QoKSk7Cit9CisKIHZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjpjb250ZW50Q2hhbmdlZCgpCiB7CiAgICAgaWYgKGxheWVyVHJl
ZUhvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggNDU3YmQ1NjRk
Nzc4ZGFiOTRhYzk5MTEzZjgxZWJmZTc1ZGVmZGQ0Zi4uNTQ5OTFmZDdjYmI5Y2EwZWVhMjM3OWJk
M2E3Y2IxYzVhMjk1MDZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAg
LTQzLDE2ICs0MywzMCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIC8vIEEgbGF5ZXIgY29u
dGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENhbnZhczJETGF5ZXJDaHJv
bWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBV
cGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSop
OworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIENhbnZhczJETGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9
OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUo
R3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0o
KTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1
cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7CisgICAg
dmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAKIHBy
aXZhdGU6CiAgICAgZXhwbGljaXQgQ2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4
dDNEKik7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKworICAgIFVwZGF0ZXJU
ZXh0dXJlIG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGEzZThmN2I3YmYzZDYwMDhkZWIwYzYzOGFhMzcx
MTVmOTdhMmE2YmEuLmQ2ZWM2ODJjYzA3MGY3MmJkZjE0YWMyZWJmMTFhNGRlMjdjNTUzYWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNiw2ICsz
NiwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkg
OiBtX3RleHR1cmUodGV4dHVyZSkKK3sKK30KKworQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+
IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRlcikKIHsKQEAgLTQ1LDcgKzUzLDcgQEAg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQog
ewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3ZvaWQg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgt
Y29udGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggZmQ3OWEwNGQwYTM2ZDc5NmE0ZTdmMzM0
MzMxNzJhODIwNGJjMTQ5ZS4uYjk3ZTgxMmRjYjMzY2YyMGVlZmZmMjVlMjJjYTkwZGRkNzBlNTQy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwyNSBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZh
cy4KIGNsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1
cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIGV4cGxpY2l0
IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgfTsKKwogICAgIHZp
cnR1YWwgfkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKTsKIAogcHJvdGVjdGVkOgogICAgIGV4
cGxpY2l0IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4pOwogCi0gICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKKyAgICB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4
dCYsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKICAgICBjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFJlY3Q7IH0KIAogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCBkYjBhZTQ2OTllNzg5NjkyZjUx
YzQwYjhjZGU3NjQ4NGZkMWM0YWE4Li43MGI1ZjgyYTIwNTMyMzU0OWU2ZTA2Njk4NjMwOWNmMmI5
YzkwZDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBAIC05Myw3ICs5
Myw3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAg
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpOwogfQogCi12b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBBU1NFUlQoZHJhd3ND
b250ZW50KCkpOwogCkBAIC0xMTQsNiArMTE0LDIwIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKICAgICByZXNldE5lZWRzRGlzcGxheSgpOwogfQog
Cit2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7Cisg
ICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVj
dCA9IHZpc2libGVMYXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgcGFpbnRDb250ZW50cyhsYXllclJlY3QpOworfQorCiBib29sIENvbnRlbnRMYXll
ckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdAogewogICAgIHJldHVybiBtX2RlbGVnYXRl
ICYmIG1fZGVsZWdhdGUtPmRyYXdzQ29udGVudCgpICYmIFRpbGVkTGF5ZXJDaHJvbWl1bTo6ZHJh
d3NDb250ZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAppbmRleCBiODM0ZTY3
NmJkNjM0NDVhYTQ1M2IzNjVlZWUyODAyNDBmMzgwOWMxLi5jNWU5ZmNjZWJmNDc2ZWI3ZDAyYmM5
ODIyMTcwYjY2NTNhNTEzYmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAg
LTQ5LDYgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+Q29udGVudExheWVyQ2hyb21p
dW0oKTsKIAorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKIHByb3RlY3RlZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGU5NDVlMDY0OWNjMGRjMjZiNjI1ZmIzZTRmNTdh
ZmU5ODBkN2I2ZTguLjkxZmExYmQ4ZDNiZDNiNjQ4NjgwMDMyNDM3OGQ3YzgzOTg0OWMzMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtOTYsNyArOTYsNyBAQCBTa0NhbnZhcyog
RnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqCiB9IC8vIG5hbWVzcGFjZQogCiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4
dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDlkMzc2OGNlZDE4ODM4NDdjMmNjZDA4YzUxZDBkMDQy
Yjk5YjNlMTYuLjM3YTM2YWFkMTZmNTljYWI5ZDZhOWQ1ZjVkODM1MDhhMTk3NDUwMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zNiw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
IDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgot
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4p
OwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVt
LmNwcAppbmRleCAwYmQ4MmFlMWExOGEyNTMwZjg3NDIwZTQ4MWQwZDVjYTIzMGI5MDEyLi44NDRh
Nzk4NjA4MmUyNDJlYTMzMDY4OWMxZGFkOTBhZTIxYmNiNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTQ5LDExICs0OSwxMyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVGV4
dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIFRleHR1cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
ciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBtX3RleHR1
cmUodGV4dHVyZSkKICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRl
cikKICAgICAgICAgewogICAgICAgICB9CiAKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVy
ZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCiAgICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxs
b2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQogICAgICAgICB7CiAgICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwpAQCAtNjIsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJu
IG1fdGV4dHVyZVVwZGF0ZXI7IH0KIAorICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1f
dGV4dHVyZTsKICAgICAgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRh
dGVyOwogICAgIH07CiAKQEAgLTE2OCw3ICsxNzEsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1
bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50
cy0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5h
dGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApp
bmRleCAxYWZjY2ZlMmZkY2U2NDQ3NWE3NGFiMmM5MjZkMDQyY2I1ZjM3Njc0Li44YmI5YTFkZmIz
NTRhNmY4YTk5ZjRmOTkwNDJjMWMwOTdlN2U2ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNo
cm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKIAogICAgIHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGlt
YWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGFhYjlkMzg4NTg2MDdjODQ1OWYxY2RiNzM0
OWIwOWRkNGIyMzI1YzcuLmZkZmYwZGEyOGIzYThmNjkzMDMyYzhjMGExYzkxOGEwYTYzYTdhZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXllclRl
eHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQ
cm9ncmFtQmluZGluZy5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgpAQCAt
NTMsNyArNTQsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0OwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwogCiBjbGFzcyBDQ0xheWVyRGVsZWdhdGUgewpAQCAtMTYxLDggKzE2
MSw5IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8g
YmUgb3ZlcndyaXR0ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3
c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlVG9VcGRhdGVJZkRpcnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CisgICAgdmlydHVhbCB2
b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxl
ciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBi
aW5kQ29udGVudHNUZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5k
ZXggNDUyNWNlN2ViMTFjOWM1NmVlMWQyNzg1MmYwNzJmMzk1NWM4MTFlZC4uNDJiMzFmNzI5MzM3
MTk2NTI2ZTJjNzI1M2QwNWRhMjZmMTEzMzQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaApAQCAtMjksNyArMjksNiBAQAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogCi0jaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVz
M0QuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0zOCw2ICszNyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgSW50UmVj
dDsKIGNsYXNzIEludFNpemU7CitjbGFzcyBNYW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFRleHR1cmVB
bGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJlTWFuYWdlcjsKIApAQCAtNDgsMTQgKzQ4LDE3IEBAIHB1
YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAotICAg
ICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsg
fQotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUo
KSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VS
ZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
KSB7IH0KICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IFRl
eHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4
dHVyZSkgeyB9CisgICAgfTsKKworICAgIGNsYXNzIEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB+SGFuZGxlcigpIHsgfTsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIE93
blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFs
IH5MYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CkBAIC03OCw3ICs4MSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2Ft
cGxlZCB0ZXhlbC4KICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVj
NC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxG
b3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRS
ZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVs
cyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYg
LyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyog
Ym9yZGVyVGV4ZWxzICovKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZGNmZDYzZTcxOTM0MmFlNzUwYmRmZWFhOGNhYjMyZjFjZmZjODJjMi4uM2E1YTRkZjM3
NjczODgxZjlhODdkMTkzODY2ODU1ZjQwNTcxYTUwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ4LDEyICs0OCwx
MiBAQCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+U2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLykK
K3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8s
IGludCAvKiBib3JkZXJUZXhlbHMgKi8pCiB7CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IG1fcGlj
dHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50UmVjdC53aWR0aCgpLCBjb250ZW50UmVjdC5oZWln
aHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0Zm9ybUNvbnRleHQoY2FudmFzKTsK
ICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZwbGF0Zm9ybUNvbnRleHQpOwot
ICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCk7CisgICAgcGFp
bnQoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCk7CiAgICAgbV9waWN0dXJlLmVuZFJlY29y
ZGluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKaW5kZXggODkxYTZkM2M5ZjEyMjAxY2E0YjE4MTc0MGJmMGZiYTQ3ZTAx
ZGI1NC4uYTk0ZTY0NjFhZGZmZTdkYWIwOGFiYThmOTE5NzY1YzEwOWZiZDA0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAt
NDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
Pik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscyk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qs
IGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsKICAgICB2b2lkIGRy
YXdQaWN0dXJlKFNrQ2FudmFzKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9t
aXVtLmNwcAppbmRleCAyNjBhMTc1YzQyOGMxNTlhNjM4ZTAyNDc1YTRiNWRlNDIxZDJlYTRhLi5l
ZTg0MjE3OGJlZjYxZDIxODJmMTgwMjJiNTRjN2Y0YTJiN2NlYmZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE1NCwxMCArMTU0LDEwIEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICAgICAg
aXNOb25Db21wb3NpdGVkQ29udGVudCgpID8gQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVyVGV4
ZWxzIDogQ0NMYXllclRpbGluZ0RhdGE6Okhhc0JvcmRlclRleGVscyk7CiB9CiAKLXZvaWQgVGls
ZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBUaWxlZExheWVy
Q2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
SGFuZGxlciYgaGFuZGxlcikKIHsKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3Np
dGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNv
bWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KLSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1
ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKKyAgICBp
ZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90
aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CkBAIC0xNjYsOCArMTY2LDYg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkg
PD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVB
dChpLCBqKTsKICAgICAgICAgICAgIGlmICghdGlsZSkKLSAgICAgICAgICAgICAgICB0aWxlID0g
Y3JlYXRlVGlsZShpLCBqKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCF0aWxlLT5kaXJ0eSgpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJl
Y3QgPSB0aWxlLT5tX3VwZGF0ZVJlY3Q7CkBAIC0xOTUsMTcgKzE5Myw5IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBDCiAgICAgICAgICAgICBpZiAocGFpbnRPZmZzZXQueSgpICsgZGVzdFJlY3Qu
aGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5oZWlnaHQoKSkKICAgICAgICAgICAgICAgICBDUkFTSCgp
OwogCi0gICAgICAgICAgICB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250
ZXh0LCB1cGRhdGVyLmFsbG9jYXRvcigpKTsKLSAgICAgICAgICAgIGNvbnN0IEdDM0RpbnQgZmls
dGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElO
RUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAgICAgICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwg
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7Ci0gICAgICAg
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmls
dGVyKSk7Ci0KLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRpbGUtPnRleHR1cmUoKSwgc291
cmNlUmVjdCwgZGVzdFJlY3QpOwotICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOworICAg
ICAgICAgICAgaGFuZGxlci5oYW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3Qo
bV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOwogfQogCiB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdP
cHRpb24pCkBAIC0zMjEsNiArMzExLDExIEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAKICAgICBtX3NraXBzRHJh
dyA9IGZhbHNlOwogCisgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBtX3RpbGVy
LT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9
IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOworICAgICAg
ICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgfQorCiAgICAgaWYgKGNvbnRl
bnRSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QgPSBJbnRS
ZWN0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM2MywyMyArMzU4LDE0IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0ID0gY29udGVudFJlY3Q7CiAKICAgICBtX3BhaW50
UmVjdCA9IG1fdGlsZXItPmxheWVyUmVjdFRvQ29udGVudFJlY3QoZGlydHlMYXllclJlY3QpOwot
ICAgIGlmIChkaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fcGFpbnRSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRh
dGUoKSBjYWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUK
LSAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3Vy
IHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCi0gICAgLy8g
SG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29u
dGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCi0gICAgLy8gc28gd2UgZ3JhYiBhIGxvY2Fs
IHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50
IGNvbXBsZXRlcy4KLSAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRl
eHR1cmVVcGRhdGVyKCkpOwotICAgIHRleHR1cmVVcGRhdGVyKCktPnByZXBhcmVUb1VwZGF0ZSht
X3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxz
KCkpOwotCiAgICAgbV90aWxlci0+Y29udGVudFJlY3RUb1RpbGVJbmRpY2VzKG1fcmVxdWVzdGVk
VXBkYXRlUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBmb3IgKGludCBqID0g
dG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAgIGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9
IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQo
aSwgaik7Ci0gICAgICAgICAgICBpZiAoIXRpbGUpCi0gICAgICAgICAgICAgICAgdGlsZSA9IGNy
ZWF0ZVRpbGUoaSwgaik7Ci0gICAgICAgICAgICBlbHNlIGlmICghdGlsZS0+ZGlydHkoKSkKKyAg
ICAgICAgICAgIGlmICghdGlsZSB8fCAhdGlsZS0+ZGlydHkoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIGNvbnRlbnQtc3BhY2UgcmVjdGFu
Z2xlIHRvIGNvcHkgZnJvbS4KQEAgLTM5MCwxMyArMzc2LDI3IEBAIHZvaWQgVGlsZWRMYXllckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAg
ICAgICAgICBzb3VyY2VSZWN0LmludGVyc2VjdChtX3BhaW50UmVjdCk7CiAKICAgICAgICAgICAg
IHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBpZiAoc291cmNl
UmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAg
IHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgICAgICAgICB0
aWxlLT5jbGVhckRpcnR5KCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK3ZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQorewor
ICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8
ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gQ2FsbGluZyBwYWludENvbnRlbnRzKCkgY2FsbHMgaW50byBXZWJL
aXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0IG9mIGRp
c2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8gdGhlIHRl
eHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNhbid0IGZy
ZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhlIHBhaW50
IGZpbmlzaGVzLAorICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVyZSB0byBo
b2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisgICAgUmVm
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigpKTsKKyAg
ICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50
aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSk7CisKKyAgICBtX3VwZGF0ZVJl
Y3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVj
dCkpOworfQorCisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVkYWYwZjAxOTQ3YTk5NDdjZDIzNWY1NWZi
NzM5NTllNDQ3YjFmNTYuLmNmZGRmYzg2YzBhZGNlNGMyOGEyZTNmMzk5ZGFjYmU4NjQyODgwODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoK
IAogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVV
cGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2so
Ym9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCop
OwpAQCAtNjUsOCArNjUsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU2V0IGludmFsaWRhdGlv
bnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4KICAgICB2b2lk
IGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKLSAgICAvLyBQcmVw
YXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNv
bnRlbnRSZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJz
ZWN0IHdpdGggY29udGVudFJlY3QuCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QpOworICAgIC8vIFBhaW50IGNvbnRlbnRzIG5lZWRlZCB0byB1cGRh
dGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICB2b2lkIHBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCiAgICAgdmlydHVhbCB2
b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKQEAgLTgzLDcgKzg1LDcgQEAgcHJp
dmF0ZToKIAogICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCi0g
ICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxk
IGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRS
ZWN0IG1fcmVxdWVzdGVkVXBkYXRlUmVjdDsKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJl
cGFyZVRvVXBkYXRlKCkgYW5kIHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRo
ZSBhcmVhCiAgICAgLy8gb2YgdGhlIGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBi
eSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCAyMzk0NTY4ZjJk
ODI3OGY1OTc5YTdmZTBjNTYxNWQ5ZjcyMDk4YjY3Li4zNzgwZDA2ZDZmYzY4M2YyNzk1OGUzM2Rh
MDVhOTcwMWMxNzQzYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQw
LDExICs0MCwyNCBAQAogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgogI2luY2x1ZGUg
IlZpZGVvRnJhbWVQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCi0jaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllcklt
cGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0
ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShWaWRlb0xheWVyQ2hyb21pdW0qIGxheWVyKQorICAg
IDogbV9sYXllcihsYXllcikKK3sKK30KKworVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06
OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgYWxsb2NhdG9yKTsKK30KKwogUGFzc1JlZlB0
cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJE
ZWxlZ2F0ZSogZGVsZWdhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKIHsKQEAg
LTU3LDYgKzcwLDcgQEAgVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oQ0NM
YXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3YKICAgICAsIG1fZnJhbWVGb3Jt
YXQoVmlkZW9GcmFtZUNocm9taXVtOjpJbnZhbGlkKQogICAgICwgbV9wcm92aWRlcihwcm92aWRl
cikKICAgICAsIG1fcGxhbmVzKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKHRoaXMpCiB7CiB9
CiAKQEAgLTc3LDcgKzkxLDcgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNv
dXJjZXMoKQogICAgICAgICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS5jbGVhcigpOwogfQogCi12
b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgaWYgKCFt
X2RlbGVnYXRlIHx8ICFtX3Byb3ZpZGVyKQogICAgICAgICByZXR1cm47CkBAIC0xMjksNyArMTQz
LDcgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9
IG1fdGV4dHVyZXNbcGxhbmVdOwogICAgICAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwog
ICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IHRleHR1
cmUubV90ZXh0dXJlLT5zaXplKCkpOwotICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIHVw
ZGF0ZXIuYWxsb2NhdG9yKCksIHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5lKSk7CisgICAgICAg
IHVwZGF0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlLCBmcmFtZS0+ZGF0YShw
bGFuZSkpOwogICAgIH0KIAogICAgIG1fcGxhbmVzID0gZnJhbWUtPnBsYW5lcygpOwpAQCAtMTQx
LDYgKzE1NSwxMSBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgIG1fcHJvdmlkZXItPnB1
dEN1cnJlbnRGcmFtZShmcmFtZSk7CiB9CiAKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpmb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRs
ZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUoJm1fdXBkYXRlclRleHR1cmUsIEludFJlY3QoKSwg
SW50UmVjdCgpKTsKK30KKwogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQogewogICAgIExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8obGF5ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA0OTA1NzIyNWU0
MzBjZThkZGI4YjQzMGJmZWZjNzQxMmNiNTIxYjA0Li5mYTY0Y2I5OGRiZGVkYmVlNjllOWYzODEx
M2Y3MDg3NzMzNTM4NTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDMsNiAr
NDMsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIGEg
VmlkZW8gZWxlbWVudC4KIGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNo
cm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFVwZGF0ZXJU
ZXh0dXJlKFZpZGVvTGF5ZXJDaHJvbWl1bSopOworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4
dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFZpZGVvTGF5ZXJD
aHJvbWl1bSogbV9sYXllcjsKKyAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9M
YXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9
IDApOwpAQCAtNTAsNyArNjAsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0
ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3Np
dG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwg
Ym9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHJl
bGVhc2VQcm92aWRlcigpOwpAQCAtODUsNiArOTYsOCBAQCBwcml2YXRlOgogICAgIGVudW0geyBN
YXhQbGFuZXMgPSAzIH07CiAgICAgVGV4dHVyZSBtX3RleHR1cmVzW01heFBsYW5lc107CiAgICAg
dW5zaWduZWQgbV9wbGFuZXM7CisKKyAgICBVcGRhdGVyVGV4dHVyZSBtX3VwZGF0ZXJUZXh0dXJl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTRhOWE4MDVi
YmVjYzUwZGY0ODRlN2Q2MjQ0N2ZjYzFlNjkxY2E0OS4uOTg1MTFiOGRmMDUzYjViNDY5Y2ZiYzRi
M2JiYzY0NjUxOWFjMjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC0z
OSw5ICszOSwyNCBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
TGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorI2luY2x1
ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitXZWJH
TExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShXZWJHTExheWVy
Q2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikKK3sKK30KKworV2ViR0xMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKK3sKK30KKwordm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyog
c291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9s
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKK30KKwogUGFzc1JlZlB0
cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJE
ZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVy
Q2hyb21pdW0oZGVsZWdhdGUpKTsKQEAgLTUxLDYgKzY2LDcgQEAgV2ViR0xMYXllckNocm9taXVt
OjpXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IENh
bnZhc0xheWVyQ2hyb21pdW0oZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUp
CiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQorICAgICwgbV91cGRhdGVyVGV4dHVyZSh0
aGlzKQogewogfQogCkBAIC02NSw3ICs4MSw3IEBAIGJvb2wgV2ViR0xMYXllckNocm9taXVtOjpk
cmF3c0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiAoY29udGV4dCgpICYmIGNvbnRleHQoKS0+
Z2V0RXh0ZW5zaW9ucygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6Ok5PX0VSUk9SKTsKIH0KIAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCwg
Q0NUZXh0dXJlVXBkYXRlciYpCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0KQogewogICAg
IGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTk0LDYgKzExMCwxMSBA
QCB2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogcmVuZGVyZXJDbwogICAgIH0KIH0KIAordm9pZCBXZWJHTExheWVyQ2hy
b21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciYgaGFuZGxlcikKK3sKKyAgICBoYW5kbGVyLmhhbmRsZSgmbV91cGRhdGVyVGV4dHVyZSwg
SW50UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFp
bnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAg
ICAgaWYgKG1fdGV4dHVyZVVwZGF0ZWQgfHwgIWxheWVyUmVuZGVyZXJDb250ZXh0KCkgfHwgIWRy
YXdzQ29udGVudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA2Mzc0YjllZjZi
MTE3YWQyMzU1YTFmYWRiNjlkZGI0MTA3YTY5MzEwLi5iOGJkNDE3M2IzZDRlODA2MzRhZWFhNDZk
MGJkYzA3MjgyM2FhYTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiAr
MzYsNyBAQAogCiAjaW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRy
YXdpbmdCdWZmZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsMTIgKzQ2LDI0IEBAIGNsYXNzIFdlYkdMTGF5ZXJDaHJv
bWl1bVJhdGVMaW1pdFRhc2s7CiAvLyBBIExheWVyIGNvbnRhaW5pbmcgYSBXZWJHTCBjYW52YXMK
IGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsK
IHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFVwZGF0ZXJUZXh0dXJlKFdl
YkdMTGF5ZXJDaHJvbWl1bSopOworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOwor
CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSog
bV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9t
aXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogCiAgICAgdmlydHVhbCB+V2ViR0xM
YXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1
YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNU
b0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC03MSw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAg
Ly8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZl
ciBhbHJlYWR5IGhvbGRzCiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJv
bWl1bS4KICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7CisKKyAgICBVcGRhdGVy
VGV4dHVyZSBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAKaW5kZXggYmE0MzBlYzUxN2IwMjdhNzY2ZTYzZGFhZWUwNjhmODI5MWY0NDhmMS4u
YTIyYWYxNTdkYmVlMTRiNTZmNGJmZGVhNjczYTFhNjVhM2FiMzJiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNSwxMSArMzUsNDIgQEAKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYWluVGhyZWFkLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJv
eHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVS
ZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJl
ZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkK
K3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6Omhh
bmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICB0ZXh0dXJlLT5w
cmVwYXJlUmVjdChtX2NvbnRleHQsIG1fYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpQYWludEhhbmRsZXIoQ0NQcm94
eSogcHJveHkpCisgICAgOiBtX3Byb3h5KHByb3h5KQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6
OlBhaW50SGFuZGxlcjo6flBhaW50SGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjpQYWludEhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKK3sKKyAgICB0ZXh0dXJlLT5wYWludENvbnRlbnRzUmVjdChzb3VyY2VSZWN0KTsKKyAgICBt
X3Byb3h5LT51cGRhdGUodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiBQYXNz
UmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUoQ0NMYXllclRy
ZWVIb3N0Q2xpZW50KiBjbGllbnQsIGNvbnN0IENDU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAg
IFJlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IGxheWVyVHJlZUhvc3QgPSBhZG9wdFJlZihuZXcgQ0NM
YXllclRyZWVIb3N0KGNsaWVudCwgc2V0dGluZ3MpKTsKQEAgLTI5Nyw3ICszMjgsNyBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6Y29tcG9zaXRlKCkKICAgICBzdGF0aWNfY2FzdDxDQ1NpbmdsZVRo
cmVhZFByb3h5Kj4obV9wcm94eS5nZXQoKSktPmNvbXBvc2l0ZUltbWVkaWF0ZWx5KCk7CiB9CiAK
LXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OnByZXBhcmVUb1VwZGF0ZSgpCiB7CiAgICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzA1LDEyICszMzYsMTIgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKKyAgICBwcmVwYXJlVG9VcGRh
dGUocm9vdExheWVyKCkpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJl
VG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIFRSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5U
KCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSIsIHRoaXMsIDApOwogCiAgICAgaWYg
KCFyb290TGF5ZXItPnJlbmRlclN1cmZhY2UoKSkKICAgICAgICAgcm9vdExheWVyLT5jcmVhdGVS
ZW5kZXJTdXJmYWNlKCk7CkBAIC0zMTksMzIgKzM1MCw2OCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKICAgICBJbnRSZWN0IHJv
b3RDbGlwUmVjdChJbnRQb2ludCgpLCB2aWV3cG9ydFNpemUoKSk7CiAgICAgcm9vdExheWVyLT5z
ZXRDbGlwUmVjdChyb290Q2xpcFJlY3QpOwogCi0gICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyB3YXNuJ3QgY2FsbGVkIGFmdGVyCi0gICAgLy8gdXBk
YXRlTGF5ZXJzLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRp
bWUuCi0gICAgQVNTRVJUKCFtX3VwZGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBtX3VwZGF0ZUxpc3Qu
YXBwZW5kKHJvb3RMYXllcik7CisgICAgLy8gVGhpcyBhc3NlcnQgZmlyZXMgaWYgY29tbWl0Q29t
cGxldGUgd2Fzbid0IGNhbGxlZCBhZnRlcgorICAgIC8vIHByZXBhcmVUb1VwZGF0ZS4gT25seSBv
bmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgorICAgIEFTU0VSVCgh
bV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCkgJiYgIW1fdXBkYXRlTGlzdC5zaXplKCkp
OworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAg
ICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5y
ZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7
CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAg
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdF
dGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVE
cmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5
TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+
bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7
CisgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6
Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIs
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgIH0KKworICAgIGFwcGVuZFZpc2libGVMYXllcnMo
bV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV91cGRhdGVMaXN0KTsKKworICAgIGZvciAoaW50
IGxheWVySW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsg
LS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVM
aXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZE
aXJ0eSgpOwogICAgIH0KK30KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3Qp
Owordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit7Cisg
ICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJj
ZXMiLCB0aGlzLCAwKTsKKyAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIGhhbmRsZXIoY29udGV4
dCwgYWxsb2NhdG9yKTsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwog
fQogCi1zdGF0aWMgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eShMYXllckNocm9taXVtKiBsYXll
ciwgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0
OjpwYWludENvbnRlbnRzKCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RMYXllcigpKTsKK30KKwordm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQoreworICAgIFRS
QUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMiLCB0aGlzLCAwKTsKKwor
ICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJ
bmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVy
ID0gbV91cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cGFpbnRD
b250ZW50c0lmRGlydHkoKTsKKworICAgICAgICBQYWludEhhbmRsZXIgaGFuZGxlcihtX3Byb3h5
LmdldCgpKTsKKyAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxl
cik7CisgICAgfQorfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVy
KExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlTGF5ZXJSZWN0LCBM
YXllckxpc3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgaWYgKGxheWVyLT5kcmF3c0NvbnRlbnQoKSkg
ewogICAgICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlTGF5ZXJSZWN0KTsK
LSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIHVwZGF0ZUxp
c3QuYXBwZW5kKGxheWVyKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWlu
dE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJm
YWNlTGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JS
ZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0
JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4
aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlz
IHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29t
ZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAg
LTM1Miw3ICs0MTksNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGlj
YUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyUwogCiAgICAgaWYgKHJlbmRl
clN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVy
LT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRDb250
ZW50c0lmRGlydHkocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVjdChJbnRQ
b2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOworICAgICAgICBh
cHBlbmRWaXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVj
dChJbnRQb2ludCgpLCByZW5kZXJTdXJmYWNlTGF5ZXItPmNvbnRlbnRCb3VuZHMoKSksIHVwZGF0
ZUxpc3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXllciA9IHJlbmRl
clN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CkBAIC0zNjEsMTkgKzQyOCwxOSBAQCB2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5
ZXJDaHJvbWl1bSogcmVuZGVyUwogICAgICAgICBJbnRSZWN0IHZpc2libGVMYXllclJlY3QgPSBD
Q0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZpc2libGVMYXllclJlY3Q8TGF5ZXJDaHJv
bWl1bT4ocmVuZGVyU3VyZmFjZUxheWVyKTsKIAogICAgICAgICByZXBsaWNhTGF5ZXItPnNldExh
eWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50Q29udGVudHNJZkRpcnR5KHJlcGxpY2FM
YXllciwgdmlzaWJsZUxheWVyUmVjdCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZXBs
aWNhTGF5ZXIsIHZpc2libGVMYXllclJlY3QsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGlmIChy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpKSB7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1h
c2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICAgICAgcGFpbnRDb250
ZW50c0lmRGlydHkocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSwgSW50UmVjdChJbnRQb2ludCgp
LCByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKKyAgICAgICAg
ICAgIGFwcGVuZFZpc2libGVMYXllcihyZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLCBJbnRSZWN0
KEludFBvaW50KCksIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPmNvbnRlbnRCb3VuZHMoKSks
IHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExh
eWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkK
IHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNp
emUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAg
TGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlz
dFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRl
clN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJm
YWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0g
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVu
ZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5y
ZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKIApAQCAtMzg2
LDcgKzQ1Myw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29u
c3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7
Ci0gICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZh
Y2VMYXllcik7CisgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShy
ZW5kZXJTdXJmYWNlTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGNvbnN0IExheWVyTGlz
dCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7CiAgICAgICAgIEFTU0VS
VChsYXllckxpc3Quc2l6ZSgpKTsKQEAgLTQwNSw2MSArNDcyLDM5IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEludFJlY3QgdmlzaWJsZUxheWVy
UmVjdCA9IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdDxM
YXllckNocm9taXVtPihsYXllcik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIHBhaW50Q29u
dGVudHNJZkRpcnR5KGxheWVyLCB2aXNpYmxlTGF5ZXJSZWN0KTsKKyAgICAgICAgICAgIGFwcGVu
ZFZpc2libGVMYXllcihsYXllciwgdmlzaWJsZUxheWVyUmVjdCwgdXBkYXRlTGlzdCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1
cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKLSAgICBmb3IgKGludCBz
dXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAg
OyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNl
TGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAgICAgICAgUmVuZGVy
U3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5k
ZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKLQotICAgICAgICBp
ZiAoIXJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKSB8fCAhcmVuZGVyU3VyZmFjZS0+
ZHJhd09wYWNpdHkoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChyZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCBjb250ZXh0LCB1cGRh
dGVyKTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKSkg
ewotICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5
ZXItPnJlcGxpY2FMYXllcigpLCBjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXll
cigpKQotICAgICAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMocmVuZGVyU3Vy
ZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCksIGNvbnRleHQsIHVwZGF0ZXIp
OwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVyTGlz
dCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwotICAgICAgICBBU1NFUlQobGF5ZXJMaXN0
LnNpemUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5k
ZXggPCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAgIExheWVy
Q2hyb21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOwotICAgICAgICAg
ICAgaWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZhY2UoKSAh
PSByZW5kZXJTdXJmYWNlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAg
ICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGxheWVyLCBjb250ZXh0LCB1cGRhdGVyKTsKLSAg
ICAgICAgfQorICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0g
MTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21p
dW0qIGxheWVyID0gbV91cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBmb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGxheWVyLCBoYW5kbGVyKTsKICAgICB9CiB9CiAKLXZvaWQg
Q0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0q
IGxheWVyLCBHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBk
YXRlcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExh
eWVyQ2hyb21pdW0qIGxheWVyLCBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVy
KQogewogICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBjb25kaXRpb25zIHNob3VsZCBo
YXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5nIHRoZSByZW5kZXIgc3VyZmFj
ZSBsYXllciBsaXN0cy4KICAgICAvLyBGb3IgbWFza3MgYW5kIHJlcGxpY2FzIGhvd2V2ZXIsIHdl
IG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KICAgICBpZiAobGF5ZXItPmJvdW5k
cygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAhbGF5ZXItPmRyYXdzQ29udGVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBsYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKKyAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShoYW5kbGVyKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1Vw
ZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4
IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJD
aHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBt
X3VwZGF0ZUxpc3QuY2xlYXIoKTsKKworICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7
IHN1cmZhY2VJbmRleCA8IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpOyArK3N1cmZh
Y2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fcmVuZGVyU3VyZmFj
ZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgQVNTRVJUKGxheWVyLT5y
ZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJmYWNlKCk7CiAg
ICAgfQotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGx5U2Nyb2xsQW5k
U2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKaW5kZXggZDgxNDE0OWM1NGIwNTNlY2VhNmZjYWUwNTYyNDQ0OGRkMzExZDkxMS4u
MzViZWVmY2Q3YjA1MTc2NjlhNWU3OWY5ZDc2MGMxNzU2YTBjYzRjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgR3JDb250ZXh0OwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xhc3MgQ0NUZXh0
dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5ZXJQYWludGVy
Q2hyb21pdW07CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwpAQCAtMTc1LDkgKzE3NCwxMSBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKLSAg
ICB2b2lkIHVwZGF0ZUxheWVycygpOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7CisgICAg
dm9pZCBwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1
cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoKTsKIAotICAgIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0
ZXImKTsKKyAgICB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Nj
cm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29u
dGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsK
QEAgLTE4NywxMyArMTg4LDM4IEBAIHByb3RlY3RlZDoKICAgICBib29sIGluaXRpYWxpemUoKTsK
IAogcHJpdmF0ZToKKyAgICBjbGFzcyBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIDogcHVibGljIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUHJlcGFy
ZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsK
KyAgICAgICAgdmlydHVhbCB+UHJlcGFyZVJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZh
dGU6CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgICAgIFRleHR1
cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgIH07CisKKyAgICBjbGFzcyBQYWludEhhbmRs
ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgor
ICAgICAgICBQYWludEhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2aXJ0dWFsIH5QYWludEhh
bmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Byb3h5KiBtX3Byb3h5OworICAg
IH07CisKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxp
c3Q7CiAKLSAgICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmKTsKLSAg
ICB2b2lkIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0q
KTsKKyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiwgY29uc3QgSW50
UmVjdCYgdmlzaWJsZUxheWVyUmVjdCwgTGF5ZXJMaXN0Jik7CisgICAgdm9pZCBhcHBlbmRNYXNr
QW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlzdCYgdXBk
YXRlTGlzdCk7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYg
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CiAKLSAgICB2
b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7Ci0gICAgdm9pZCB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qLCBHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVy
ZVVwZGF0ZXImKTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7Cisg
ICAgdm9pZCBwYWludENvbnRlbnRzKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIGZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJDaHJvbWl1bSosIExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXImKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAgaW50IG1fY29t
cG9zaXRvcklkZW50aWZpZXI7CkBAIC0yMDksNiArMjM1LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gbV9yb290TGF5ZXI7CiAgICAgT3duUHRyPFRleHR1cmVNYW5hZ2Vy
PiBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXI7CiAKKyAgICBMYXllckxpc3QgbV9yZW5kZXJTdXJm
YWNlVXBkYXRlTGlzdDsKICAgICBMYXllckxpc3QgbV91cGRhdGVMaXN0OwogCiAgICAgQ0NTZXR0
aW5ncyBtX3NldHRpbmdzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCmluZGV4IDUxNmI2Nzk1NjU1MjljMzkzNTEzNjNl
NWE2ZWZhMTE3YzdhMDEzNTkuLmRjNGRjYTllMThiZTgxYjM2Y2U4OThjOWM3ZjVhOWQ5ZmViZTUx
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgQ0NQcm94eV9oCiAK
ICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTcyLDYgKzczLDggQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpID0gMDsgLy8gTXVzdCBiZSBjYWxsZWQgYmVmb3JlIHVz
aW5nIHRoZSBwcm94eS4KICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpID0gMDsgLy8gTXVzdCBiZSBj
YWxsZWQgYmVmb3JlIGRlbGV0aW5nIHRoZSBwcm94eS4KIAorICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisKICAgICAvLyBEZWJ1ZyBob29rcwog
I2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgYm9vbCBpc01haW5UaHJlYWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggYzE2MGUxOThiNGI5NDQ2NzNkYWMw
MTQ1ZGMxMTFjNDViYzY4Y2Q2Yi4uNmU2MTFiMDVkNzhkYjJjOTQ4NjQwNmFmYjY4NWUyYzc0NTI4
NDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0OSwx
NSArMTQ5LDE4IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkK
IHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3IgcmVzb3Vy
Y2VzCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRz
VGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50
cygpOworCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAgICAgICBEZWJ1Z1Nj
b3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVn
aW5Db21taXQoKTsKIAogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBs
VGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwotICAgICAgICBDQ1RleHR1cmVVcGRh
dGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9y
KCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1cGRhdGVyKTsKLSAgICAgICAgd2hpbGUg
KHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQog
ICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+
dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxU
aHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAKQEAgLTIxMCw2ICsyMTMsMTIgQEAg
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX2xheWVyVHJlZUhvc3QgPSAw
OwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnVwZGF0ZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NTaW5nbGVUaHJlYWRQcm94
eTo6dXBkYXRlIiwgdGhpcywgMCk7CisgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2xheWVyVHJl
ZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvcigpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIC8vIENhbGxlZCBieSB0
aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMg
dGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNvbXBvc2l0ZUltbWVk
aWF0ZWx5KCkKIHsKQEAgLTI3NCw3ICsyODMsNyBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkp
OwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogCiAgICAgZG9Db21taXQoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlZGFiNjFmMmMwMzI3OTZlYzg0MjM1YjQx
YjRlZjc3M2E4MjI5ZjEzLi45NWJlZTBlYmMxYzFhMGJjZjg2MGViZGVlMjVlNzBkOTNjMjkzZDgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC01NCw2ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVl
SG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVm
ZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
ZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlYTBhNzEwYmRlMThlZGUx
ODIwZjMxNGZkYjhjYzg3MmFiLi42NzI4ZThkN2VmN2VjNGIxNjgzY2RlZDcyYzIyMzIyNTdmNTQ4
NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBA
QAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQ
cm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCmluZGV4IDZmNGVkOTBkMTBhNjg4NTMwYjQzZWUzMmI5ZGE0NTYzZGRm
NzhiN2UuLmViODk3NThiN2Y5MWM0ZDdjY2Q3ZGQ4ZjNkMTQxZjNjZTViY2MyYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zMDMsNiArMzAzLDIwIEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQ
cm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRS
QUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3N0YXJ0ZWQpOworCisgICAgVXBkYXRlRW50
cnkqIGVudHJ5ID0gbmV3IFVwZGF0ZUVudHJ5OworICAgIGVudHJ5LT5tX3RleHR1cmUgPSB0ZXh0
dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVudHJ5LT5t
X2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVD
Q1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJl
YWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoZW50cnkpKSk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxS
ZW5kZXJpbmdPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKQEAgLTM3OCw3ICszOTIsMTcgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwg
ZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICAvLyB1cGRhdGVMYXllcnMuCiAgICAgbV9jb21taXRS
ZXF1ZXN0ZWQgPSBmYWxzZTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7
CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKKworICAgIHsKKyAgICAg
ICAgLy8gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZvciBmcmFtZS4K
KyAgICAgICAgVFJBQ0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAgICAgIENDQ29t
cGxldGlvbkV2ZW50IGNvbXBsZXRpb247CisgICAgICAgIHNfY2NUaHJlYWQtPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZU9uSW1wbFRo
cmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29t
cGxldGlvbi53YWl0KCk7CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRl
bnRzKCk7CiAKICAgICB7CiAgICAgICAgIC8vIE5vdGlmeSB0aGUgaW1wbCB0aHJlYWQgdGhhdCB0
aGUgYmVnaW5GcmFtZSBoYXMgY29tcGxldGVkLiBUaGlzIHdpbGwKQEAgLTM5Niw5ICs0MjAsOSBA
QCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVt
YmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xhc3RFeGVjdXRlZEJlZ2lu
RnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9CiAKLXZv
aWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxl
dGlvbkV2ZW50KiBjb21wbGV0aW9uKQordm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewotICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlz
LCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZU9uT25JbXBs
VGhyZWFkIiwgdGhpcywgMCk7CiAgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9u
SW1wbFRocmVhZCk7CiAgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKICAgICBBU1NFUlQobV9z
Y2hlZHVsZXJPbkltcGxUaHJlYWQpOwpAQCAtNDA4LDExICs0MzIsNDEgQEAgdm9pZCBDQ1RocmVh
ZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
IGNvbXBsZXRpb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29tbWl0Q29tcGxl
dGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKKyAgICBtX2xheWVyVHJlZUhvc3Qt
PnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogCiAg
ICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAgICAgbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJl
VXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkp
OwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCk7CisKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwordm9pZCBDQ1RocmVhZFBy
b3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5KiBlbnRyeSkKK3sKKyAg
ICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NF
UlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOworICAgIGlmICghbV9sYXll
clRyZWVIb3N0SW1wbCkgeworICAgICAgICBkZWxldGUgZW50cnk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+YXBwZW5k
KGVudHJ5LT5tX3RleHR1cmUsIGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0
KTsKKyAgICBkZWxldGUgZW50cnk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFt
ZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQorewor
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxU
aHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkKTsKKyAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVy
T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1p
dFBlbmRpbmcoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGNv
bXBsZXRpb24tPnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb21t
aXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBjb21wbGV0aW9uOwogCiAgICAgbV9zY2hl
ZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQpAQCAtNDIxLDYgKzQ3
NSwxMCBAQCBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25z
dAogewogICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbklt
cGxUaHJlYWQpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgcmV0dXJuIG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmgKaW5kZXggMDE0MGE3MTVkZWZmMzhiY2QzMDA2NjM3MTc3YmI1M2ZhNjQ5
ZTZiYy4uNTc0NDNhMmM3MjMwMTE2MzU2NGRiYWVkMTQ0ZGYzODZjNWIxZTEzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaApAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCk7CiAgICAgdmly
dHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IGltcGxlbWVu
dGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnNDb21wbGV0ZU9uSW1wbFRocmVh
ZCgpOwpAQCAtODAsNiArODEsMTIgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBD
Q1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAgc3RydWN0IFVwZGF0ZUVudHJ5
IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOworICAg
ICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0Owor
ICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gQ0NNYWluVGhyZWFkCiAgICAgdm9pZCBiZWdpbkZy
YW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQ
YXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsKICAgICB2b2lkIGRpZENvbW1pdEFuZERy
YXdGcmFtZSgpOwpAQCAtOTQsNiArMTAxLDggQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhc3NP
d25QdHI8Q0NNYWluVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09u
SW1wbFRocmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9t
Q0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ01haW5UaHJlYWQ6OlRhc2sqKik7CisgICAg
dm9pZCBiZWdpbkZyYW1lT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CisgICAgdm9p
ZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5Kik7CiAgICAgdm9pZCBiZWdp
bkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lk
IHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKICAgICB2b2lk
IGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCA0ZTZlZjk3YmRiNzJhYWNlMzFkNjRi
Mzg5YjQ2NjE3ZmQzMDcyOTYxLi44YTJkNmZlZjY0ZGY3N2VkMWU1ZDAyYzNkMGRjMzI0Yzk3OGU3
ZTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMjEzLDYgKzIxMyw3
IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAgICAgbV90aWxlci0+Y29udGVudFJlY3RUb1Rp
bGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50
UmVjdCk7CiAgICAgZmxvYXQgc2lnbiA9IEZsb2F0UXVhZChjb250ZW50UmVjdCkuaXNDb3VudGVy
Y2xvY2t3aXNlKCkgPyAtMSA6IDE7CisgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGVy
LT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGlj
c0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsg
KytqKSB7CiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHByZXZFZGdlWCA9IGNvbnRlbnRRdWFk
LmxlZnQoKTsKIApAQCAtMzM3LDYgKzMzOCw5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJh
d1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAK
ICAgICAgICAgICAgIGlmICh0aWxlICYmIHRpbGUtPnRleHR1cmVJZCgpKSB7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRpbGUtPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7CisgICAgICAgICAgICAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikp
OworCiAgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1cmVkUXVhZChnbG9i
YWxUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgcXVhZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115859</attachid>
            <date>2011-11-18 13:30:51 -0800</date>
            <delta_ts>2011-11-18 15:02:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-72192-20111118133050.patch</filename>
            <type>text/plain</type>
            <size>146432</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjNmODdjNGY4OGZiZTVh
MmI5MTU0NjViMTI4OWM5ZDQ0MjVmOTkxYi4uZDU0ZDNhOGRlYTMzNTVjMDE3NzFkNGJkMDE1NDgy
NDYzZDQ3MTMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5MCBAQAorMjAxMS0xMS0xOCAgRGF2
aWQgUmV2ZW1hbiAgPHJldmVtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtDaHJvbWl1bV0g
SW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyBwcmlvciB0byBwYWludGluZy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcyMTkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU3BsaXQgbGF5ZXIgdXBk
YXRlcyBpbnRvIHR3byBzdGVwcy4gU3RlcCBvbmUgY2FsY3VsYXRlcyB0cmFuc2Zvcm1zCisgICAg
ICAgIGFuZCB2aXNpYmxlIGxheWVyIGFyZWFzLiBTdGVwIHR3byBwYWludHMgbGF5ZXIgY29udGVu
dHMuIFRoaXMKKyAgICAgICAgYWxsb3dzIHVzIHRvIHBlcmZvcm0gYSBjb21wb3NpdG9yIHJlc291
cmNlIHByZXBhcmF0aW9uIHN0ZXAgYWZ0ZXIKKyAgICAgICAgdmlzaWJsZSBsYXllciBhcmVhcyBo
YXZlIGJlZW4gY29tcHV0ZWQgYnV0IGJlZm9yZSBhbnkgcGFpbnRpbmcKKyAgICAgICAgaGFzIG9j
Y3VycmVkLiBMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxh
Y2VkCisgICAgICAgIGJ5IExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ug
d2hpY2ggYWxsb3dzIHVzIHRvIGl0ZXJhdGUKKyAgICAgICAgb3ZlciBjb21wb3NpdG9yIHJlc291
cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KKworICAgICAgICBObyBuZXcgdGVzdHMuIENvdmVy
ZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVy
ZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpvcmllbnRhdGlv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBk
YXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRM
YXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFy
ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmguCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp0ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNvbnRlbnRSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVV
cGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXI6OkZyYW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlcjo6RnJhbWVCdWZmZXI6On5GcmFtZUJ1ZmZlcik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlcjo6RnJhbWVCdWZmZXI6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6fkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4
dHVyZVVwZGF0ZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZVVwZGF0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpvcmllbnRhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1h
Z2VMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp0ZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVy
VGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VM
YXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6flRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlcjo6fkhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlVXBkYXRlckNhbnZhcy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmguCisgICAgICAgIChXZWJDb3JlOjpTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5Ta1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6ZHJhd1BpY3R1cmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpVcGRhdGFibGVUaWxlOjpVcGRhdGFibGVUaWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlVw
ZGF0YWJsZVRpbGU6OnRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRhYmxlVGlsZTo6
bWFuYWdlZFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9taXVtOjpm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVy
Q2hyb21pdW06OmNyZWF0ZVRpbGUpOgorICAgICAgICAoV2ViQ29yZTo6VGlsZWRMYXllckNocm9t
aXVtOjpwcm90ZWN0VGlsZVRleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlZpZGVv
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4
dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjpuZWVkUHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6cHJlcGFyZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bSk6CisgICAgICAg
IChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkpOgor
ICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpuZWVkUHJlcGFyZUNvbXBvc2l0
b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpwcmVw
YXJlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpWaWRlb0xheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6Vmlk
ZW9MYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6YWxsb2NhdGVUZXh0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmg6CisgICAgICAgIChX
ZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpV
cGRhdGVyVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTExheWVyQ2hyb21pdW06OldlYkdMTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVy
Q2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRl
clRleHR1cmU6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9z
dDo6TmVlZFJlc291cmNlSGFuZGxlcjo6TmVlZFJlc291cmNlSGFuZGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6On5OZWVkUmVzb3Vy
Y2VIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291
cmNlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6UHJlcGFyZVJlc291cmNlSGFuZGxlcik6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVw
YXJlUmVzb3VyY2VIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6
UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6aGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpQYWludEhhbmRsZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6On5QYWludEhhbmRsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OmhhbmRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzQ29tcG9zaXRvclJlc291cmNlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3Vy
Y2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZE1hc2tBbmRSZXBsaWNh
Rm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3Q6OmFw
cGVuZFZpc2libGVMYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Ojpm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVl
SG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJU
cmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6cmVzb3VyY2VzKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1NpbmdsZVRocmVhZFByb3h5Ojpkb0NvbW1pdCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaW5n
bGVUaHJlYWRQcm94eTo6Y29tbWl0SWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q0NUZXh0dXJlVXBkYXRlcjo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGV4
dHVyZVVwZGF0ZXI6OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVy
OjpjbGVhcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0
dXJlVXBkYXRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6dXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQp
OgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2Vz
T25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnVwZGF0ZVRl
eHR1cmVPbkltcGxUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFk
UHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OmRyYXdUaWxlcyk6CisKIDIwMTEtMTEt
MTcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDA2NTIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDM2MDUwZjY5YWFkZTMxZDJjYzUwZDg1YzhmY2YwNmY1MWI3MjU5YzkuLjdmMGQ3YzY0
YjJlN2JkNmE2NmFkYWE0MTllYWQxOGEwMGMxOWZjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMTEtMTggIERhdmlkIFJldmVtYW4gIDxyZXZlbWFu
QGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIEluaXRpYWxpemUgY29tcG9zaXRv
ciByZXNvdXJjZXMgcHJpb3IgdG8gcGFpbnRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MjE5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRyYWNrIHRleHR1cmUgdXBkYXRlciBjaGFuZ2VzLgorCisg
ICAgICAgICogdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHA6CisgICAgICAgIChXVEY6OkND
TGF5ZXJUcmVlSG9zdFRlc3Q6OmxheWVyVHJlZUhvc3QpOgorICAgICAgICAoV1RGOjpNb2NrTGF5
ZXJEZWxlZ2F0ZTo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXVEY6Ok1vY2tMYXllckRlbGVn
YXRlOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6cHJl
c2VydmVzM0QpOgorICAgICAgICAoV1RGOjpNb2NrTGF5ZXJEZWxlZ2F0ZTo6bm90aWZ5U3luY1Jl
cXVpcmVkKToKKyAgICAgICAgKFdURjo6VGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlOjpU
ZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUpOgorICAgICAgICAoV1RGOjpUZXN0T3BhY2l0
eUNoYW5nZUxheWVyRGVsZWdhdGU6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV1RGOjpUZXN0
T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGU6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChXVEY6
OlRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZTo6cHJlc2VydmVzM0QpOgorICAgICAgICAo
V1RGOjpUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGU6Om5vdGlmeVN5bmNSZXF1aXJlZCk6
CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpD
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6dGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjpwcmVwYXJlUmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6
cGFpbnRDb250ZW50c1JlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVw
ZGF0ZVJlY3QpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6
b3JpZW50YXRpb24pOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZvcm1h
dCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
OjpDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChX
VEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6bGF5ZXIpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI6OkNvbnRlbnRM
YXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAgICAg
IChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjp0ZXh0dXJlVXBk
YXRlcik6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHNDb3VudCk6CisgICAgICAgIChXVEY6OkNv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJlUmVjdCk6CisgICAg
ICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpwcmVwYXJl
UmVjdENvdW50KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OnBhaW50Q29udGVudHNSZWN0KToKKyAgICAgICAgKFdURjo6Q29udGVudExheWVy
Q2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OnBhaW50Q29udGVudHNSZWN0Q291bnQpOgorICAg
ICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6dXBkYXRl
UmVjdCk6CisgICAgICAgIChXVEY6OkNvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nOjp1cGRhdGVSZWN0Q291bnQpOgorICAgICAgICAoV1RGOjpDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6bmVlZFByZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OkNvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE9w
YWNpdHlDaGFuZ2U6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlKToKKyAgICAgICAg
KFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2U6OmJlZ2luVGVzdCk6CisgICAg
ICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlOjpjb21taXRDb21wbGV0
ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNo
YW5nZTo6YWZ0ZXJUZXN0KToKKyAgICAgICAgKFdURjo6VEVTVF9GKToKKyAgICAgICAgKFdURjo6
Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3Q6OkNDTGF5ZXJUcmVlSG9zdFRlc3ROb1By
ZXBhcmVSZWN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJl
Y3Q6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OkNDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBh
cmVSZWN0Ojpjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQpOgorICAgICAgICAoV1RGOjpDQ0xheWVy
VHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdDo6YWZ0ZXJUZXN0KToKKwogMjAxMS0xMS0xNyAgQWRy
aWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW1w
bGljaXRseSBza2lwIHJlbmRlciBzdXJmYWNlcyB0aGF0IHdvbid0IGJlIGRyYXduCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggZmE0MzNhOTI3NzI5ZDMzNzlhMjRhNDQ1YjEzNjU2NDIyOTJkNWFkZS4uNGMz
MTFkNjBlMGE1ZWRlYjBmYWEyNmU4NjBhNDdiNzUwMTA4ZTA2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMzQ1MiwxMCArMzQ1MiwxNCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L1BhdGhDRy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5D
Ry5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2NnL1RyYW5zZm9ybWF0aW9u
TWF0cml4Q0cuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9C
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcsCisgICAgICAgICAgICAncGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXMyRExheWVyQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzTGF5ZXJDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyQ2hyb21pdW0uaCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29t
cGxleFRleHRDb250cm9sbGVyTGludXguY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db21wbGV4VGV4dENvbnRyb2xsZXJMaW51eC5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAnLApA
QCAtMzQ3Niw2ICszNDgwLDggQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Gb250UmVuZGVyU3R5bGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRm9udFV0aWxzQ2hyb21pdW1XaW4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250VXRpbHNDaHJvbWl1bVdpbi5oJywKKyAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlCaW5kaW5n
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR2VvbWV0cnlC
aW5kaW5nLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dseXBo
UGFnZVRyZWVOb2RlQ2hyb21pdW1XaW4uY3BwJywKQEAgLTM0OTksOCArMzUwNSw2IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlU3ViSW1hZ2Uu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1
cmVTdWJJbWFnZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVVcGRhdGVyLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwJywKLSAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9NZWRpYVBsYXllclByaXZhdGVDaHJvbWl1bS5oJywKQEAgLTM1MjIsNiArMzUyNiw4
IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2hhZGVyQ2hyb21p
dW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2ltcGxlRm9u
dERhdGFDaHJvbWl1bVdpbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1NpbXBsZUZvbnREYXRhTGludXguY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCcs
CisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZjEyYzFlOTAwNjQ0ZTJmMTJhZjg4NmM2ODUzMjJjMDlhMjc3M2IyYwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0wLDAgKzEsMTA0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisKKyNpbmNsdWRlICJCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisK
KyNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29s
b3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitCaXRtYXBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAg
IDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV90
ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKK3sKK30KKworQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCit2b2lkIEJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQoreworICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICB0
ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCksIHNv
dXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJ
bWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIocGFpbnRlciwgdXNlTWFwVGV4U3ViSW1hZ2UpKTsKK30KKworQml0bWFwQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1hcFRleFN1Yklt
YWdlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKQorICAgICwgbV90
ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkKK3sKK30KKworQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6fkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQoreworfQor
CitQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIp
Cit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJl
OjpjcmVhdGUobWFuYWdlcikpKTsKK30KKworTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRl
eGVsRm9ybWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZv
cm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KQoreworICAgIC8vIFRoZSBjb21wb25lbnQgb3Jk
ZXIgbWF5IGJlIGJncmEgaWYgd2UgdXBsb2FkZWQgYmdyYSBwaXhlbHMgdG8gcmdiYSB0ZXh0dXJl
cy4KKyAgICByZXR1cm4gUGxhdGZvcm1Db2xvcjo6c2FtZUNvbXBvbmVudE9yZGVyKHRleHR1cmVG
b3JtYXQpID8KKyAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwor
fQorCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMo
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQg
Ym9yZGVyVGV4ZWxzKQoreworICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVT
aXplKTsKKworICAgIG1fY2FudmFzLnJlc2l6ZShjb250ZW50UmVjdC5zaXplKCkpOworICAgIC8v
IEFzc3VtcHRpb246IGlmIGEgdGlsZXIgaXMgdXNpbmcgYm9yZGVyIHRleGVscywgdGhlbiBpdCBp
cyBiZWNhdXNlIHRoZQorICAgIC8vIGxheWVyIGlzIGxpa2VseSB0byBiZSBmaWx0ZXJlZCBvciB0
cmFuc2Zvcm1lZC4gQmVjYXVzZSBvZiBpdCBtaWdodCBiZQorICAgIC8vIHRyYW5zZm9ybWVkLCBk
cmF3IHRoZSB0ZXh0IGluIGdyYXlzY2FsZSBpbnN0ZWFkIG9mIHN1YnBpeGVsIGFudGlhbGlhc2lu
Zy4KKyAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0K
KyAgICAgICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2Fs
ZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6U3VicGl4ZWxUZXh0OworICAgIFBsYXRm
b3JtQ2FudmFzOjpQYWludGVyIGNhbnZhc1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsK
KyAgICBwYWludCgqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0KTsKK30KKwor
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFBs
YXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOworCisgICAgY29udGV4
dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUtPnRl
eHR1cmVJZCgpKTsKKyAgICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNv
bnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29u
dGV4dCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmZjOGI0YzhjZmZiYTVjMjQzMWM1M2YwMWVhNDk0
OGNmYzczODA1ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMCww
ICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXJfaAorI2RlZmluZSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKKworI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVTdWJJbWFnZS5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtQ2FudmFzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTGF5ZXJQ
YWludGVyQ2hyb21pdW07CisKKy8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFu
IGludGVybmFsIGJpdG1hcC4KK2NsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIg
OiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgY2xhc3Mg
VGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKyAgICAgICAgdmlydHVhbCB+VGV4dHVy
ZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciog
dGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAg
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICB9
OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cj4gY3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRl
eFN1YkltYWdlKTsKKyAgICB2aXJ0dWFsIH5CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KCk7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOworICAgIHZpcnR1YWwgT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9y
aWVudGF0aW9uOyB9CisgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVs
Rm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6
ZSwgaW50IGJvcmRlclRleGVscyk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCitwcml2YXRlOgorICAgIEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wg
dXNlTWFwVGV4U3ViSW1hZ2UpOworCisgICAgUGxhdGZvcm1DYW52YXMgbV9jYW52YXM7CisgICAg
TGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjZW5kaWYg
Ly8gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcAppbmRleCA0NDk0NTg2YTU3Y2ExNmJjNGI0ZjIzMjQxMGRiOGY3ZmQ0
Y2Q4OGMxLi4zOWQyZDE2YTFjYmJkZDE3MDc3YjBkMmUyN2UxY2U4NTlmOGE3YjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ0LDYgKzQ0LDIwIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1f
bGF5ZXIobGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1
cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IElu
dFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQor
eworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKK30KKwogUGFzc1Jl
ZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q2FudmFzMkRMYXllckNocm9taXVtKGNvbnRleHQpKTsKQEAgLTUyLDYgKzY2LDcgQEAgUGFzc1Jl
ZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KEdyYXBoaWNzQ29udGV4dDMKIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Q2FudmFzMkRMYXllckNo
cm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIDogQ2FudmFzTGF5ZXJDaHJv
bWl1bSgwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJl
KFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY1LDcgKzgwLDcgQEAg
Ym9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgICAg
ICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0
dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpKTsKIH0KIAotdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKIHsKICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0
eSgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODUsNiArMTAwLDEx
IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0CiAgICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKIH0K
IAordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKK3sKKyAgICBoYW5kbGVyLmhh
bmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0KCksIEludFJlY3QoKSk7Cit9CisK
IHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpjb250ZW50Q2hhbmdlZCgpCiB7CiAgICAgaWYg
KGxheWVyVHJlZUhvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXgg
NDU3YmQ1NjRkNzc4ZGFiOTRhYzk5MTEzZjgxZWJmZTc1ZGVmZGQ0Zi4uZTI1ZWU0NjhhMTMzNWUz
NmE1NjlkZjk1YTMwMjk2YjQ2OTYwOTlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9t
aXVtLmgKQEAgLTQzLDE2ICs0MywzNiBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIC8vIEEg
bGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNsYXNzIENhbnZhczJE
TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAg
ICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVwZGF0ZXJUZXh0
dXJlPiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAg
ICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6Cisg
ICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSopOwor
CisgICAgICAgIENhbnZhczJETGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3ND
b250ZXh0M0QqKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21pdW0oKTsKICAgICB2
aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVy
Jik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7CisgICAgdmlydHVhbCB2
b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxl
ciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQ2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKik7CiAg
ICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKworICAgIFJlZlB0cjxVcGRhdGVyVGV4
dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWI5NzY1ZjhjM2ZhZTE5ZWJiNTI1ZGEx
YzQzNjgxMzEwZTgwZGFmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1ZGUgIkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyUGFp
bnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sK
K30KKworQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQorewor
fQorCitib29sIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJl
UmVjdCgpCit7CisgICAgcmV0dXJuICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworfQorCit2b2lk
IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IElu
dFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQor
eworICAgIG1fdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKK30KKwor
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQorICAgIDogbV9wYWludGVyKHBh
aW50ZXIpCit7Cit9CisKK0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5DYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyKCkKK3sKK30KKwordm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpw
YWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQoreworICAgIGNvbnRleHQudHJhbnNsYXRlKC1jb250ZW50UmVjdC54KCksIC1jb250ZW50UmVj
dC55KCkpOworICAgIHsKKyAgICAgICAgVFJBQ0VfRVZFTlQoIkNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50IiwgdGhpcywgMCk7CisgICAgICAgIG1fcGFpbnRlci0+cGFpbnQoY29udGV4
dCwgY29udGVudFJlY3QpOworICAgIH0KKyAgICBtX2NvbnRlbnRSZWN0ID0gY29udGVudFJlY3Q7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjZlMDU0NzhhYjkwZGE3NGYxNjkwZDBlMzZkMWI4Mzg2NzJkMGZiMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZu
ZGVmIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorI2RlZmluZSBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKworI2luY2x1
ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dDNEOworY2xhc3Mg
TGF5ZXJQYWludGVyQ2hyb21pdW07CisKKy8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFu
IGludGVybmFsIGNhbnZhcy4KK2NsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1
YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHZpcnR1YWwgflRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBi
b29sIG5lZWRQcmVwYXJlUmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyog
c291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJv
dGVjdGVkOgorICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1
cmU+KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90
ZXh0dXJlOworICAgIH07CisKKyAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KCk7CisKK3Byb3RlY3RlZDoKKyAgICBleHBsaWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKKworICAgIHZvaWQgcGFpbnQoR3Jh
cGhpY3NDb250ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UmVjdDsgfQorCitw
cml2YXRlOgorICAgIEludFJlY3QgbV9jb250ZW50UmVjdDsKKyAgICBPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IG1fcGFpbnRlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjZW5kaWYgLy8gQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggY2E4YjNiZDc2MWYwODE1ZTQ3YjZjZmIwNDkxYTFkOTcyODc5ZjA0Yy4uMDBkMzg1YjlhNTQy
MTdmZWIwMzAwZTViYTEzZjY5NjA4YWQ1YWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNo
cm9taXVtLmNwcApAQCAtMzQsOSArMzQsMTAgQEAKIAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNo
cm9taXVtLmgiCiAKKyNpbmNsdWRlICJCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgi
CisjaW5jbHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC05MiwyNSArOTMsMzcgQEAg
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgVGlsZWRM
YXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7CiB9CiAKLXZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewotICAgIEFTU0VSVChkcmF3c0NvbnRlbnQo
KSk7Ci0KICAgICB1cGRhdGVUaWxlU2l6ZUFuZFRpbGluZ09wdGlvbigpOwogCi0gICAgY29uc3Qg
SW50UmVjdCYgbGF5ZXJSZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOwotICAgIGlmIChsYXllclJl
Y3QuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgSW50UmVjdCBsYXllclJlY3Q7CisK
KyAgICAvLyBBbHdheXMgY2FsbCBwcmVwYXJlVG9VcGRhdGUoKSBidXQgd2l0aCBhbiBlbXB0eSBs
YXllciByZWN0YW5nbGUgd2hlbgorICAgIC8vIGxheWVyIGRvZXNuJ3QgZHJhdyBjb250ZW50cy4K
KyAgICBpZiAoZHJhd3NDb250ZW50KCkpCisgICAgICAgIGxheWVyUmVjdCA9IHZpc2libGVMYXll
clJlY3QoKTsKIAogICAgIEludFJlY3QgZGlydHkgPSBlbmNsb3NpbmdJbnRSZWN0KG1fZGlydHlS
ZWN0KTsKICAgICBkaXJ0eS5pbnRlcnNlY3QoSW50UmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91
bmRzKCkpKTsKICAgICBpbnZhbGlkYXRlUmVjdChkaXJ0eSk7CiAKKyAgICBwcmVwYXJlVG9VcGRh
dGUobGF5ZXJSZWN0KTsKKyAgICByZXNldE5lZWRzRGlzcGxheSgpOworfQorCit2b2lkIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7CisgICAgQVNTRVJUKGRy
YXdzQ29udGVudCgpKTsKKworICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHZpc2libGVM
YXllclJlY3QoKTsKKyAgICBpZiAobGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJl
cGFyZVRvVXBkYXRlKGxheWVyUmVjdCk7Ci0gICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKKyAgICBw
YWludENvbnRlbnRzKGxheWVyUmVjdCk7CiB9CiAKIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06
OmRyYXdzQ29udGVudCgpIGNvbnN0CkBAIC0xMjIsMTIgKzEzNSwxMiBAQCB2b2lkIENvbnRlbnRM
YXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3Qq
IGhvc3QpCiB7CiAjaWYgVVNFKFNLSUEpCiAgICAgaWYgKGhvc3QtPnNldHRpbmdzKCkuYWNjZWxl
cmF0ZVBhaW50aW5nKSB7Ci0gICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBMYXllclRleHR1cmVV
cGRhdGVyU2tQaWN0dXJlOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUpKTsKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9IEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNy
ZWF0ZShtX2RlbGVnYXRlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gVVNF
KFNLSUEpCiAKLSAgICBtX3RleHR1cmVVcGRhdGVyID0gTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1h
cDo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKKyAgICBtX3RleHR1cmVV
cGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRM
YXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcygpLnVzaW5nTWFwU3ViKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmgKaW5kZXggYjgzNGU2NzZiZDYzNDQ1YWE0NTNiMzY1ZWVlMjgwMjQwZjM4MDljMS4uYzVl
OWZjY2ViZjQ3NmViN2QwMmJjOTgyMjE3MGI2NjUzYTUxM2JiNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
fkNvbnRlbnRMYXllckNocm9taXVtKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDll
YmU3ZDUwMzZkZDZkMGNjYzBhMTI0ZTVjNzZkMmU5M2EwNjIxCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMCwwICsxLDE2MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisKKyNpbmNsdWRlICJMYXllclBhaW50ZXJDaHJvbWl1
bS5oIgorI2luY2x1ZGUgIlNrQ2FudmFzLmgiCisjaW5jbHVkZSAiU2tHcHVEZXZpY2UuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgeworCitjbGFzcyBGcmFtZUJ1ZmZlciB7
CitwdWJsaWM6CisgICAgRnJhbWVCdWZmZXIoKTsKKyAgICB+RnJhbWVCdWZmZXIoKTsKKworICAg
IFNrQ2FudmFzKiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUq
KTsKKworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIFBs
YXRmb3JtM0RPYmplY3QgbV9mYm87CisgICAgT3duUHRyPFNrQ2FudmFzPiBtX2NhbnZhczsKK307
CisKK0ZyYW1lQnVmZmVyOjpGcmFtZUJ1ZmZlcigpCisgICAgOiBtX2NvbnRleHQoMCkKKyAgICAs
IG1fZmJvKDApCit7Cit9CisKK0ZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQoreworICAgIG1f
Y2FudmFzLmNsZWFyKCk7CisKKyAgICBpZiAobV9mYm8pCisgICAgICAgIG1fY29udGV4dC0+ZGVs
ZXRlRnJhbWVidWZmZXIobV9mYm8pOworfQorCitTa0NhbnZhcyogRnJhbWVCdWZmZXI6OmluaXRp
YWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJl
KQoreworICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CisgICAgbV9mYm8gPSBtX2NvbnRleHQtPmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7CisgICAgY29udGV4dC0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0
ZXh0dXJlLT50ZXh0dXJlSWQoKSwgMCk7CisKKyAgICAvLyBDcmVhdGUgYSBza2lhIGdwdSBjYW52
YXMuCisgICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBtX2NvbnRleHQtPmdyQ29udGV4dCgpOwor
ICAgIEludFNpemUgY2FudmFzU2l6ZSA9IHRleHR1cmUtPnNpemUoKTsKKyAgICBHclBsYXRmb3Jt
U3VyZmFjZURlc2MgdGFyZ2V0RGVzYzsKKyAgICB0YXJnZXREZXNjLnJlc2V0KCk7CisgICAgdGFy
Z2V0RGVzYy5mU3VyZmFjZVR5cGUgPSBrVGV4dHVyZVJlbmRlclRhcmdldF9HclBsYXRmb3JtU3Vy
ZmFjZVR5cGU7CisgICAgdGFyZ2V0RGVzYy5mUmVuZGVyVGFyZ2V0RmxhZ3MgPSBrTm9uZV9HclBs
YXRmb3JtUmVuZGVyVGFyZ2V0RmxhZ0JpdDsKKyAgICB0YXJnZXREZXNjLmZXaWR0aCA9IGNhbnZh
c1NpemUud2lkdGgoKTsKKyAgICB0YXJnZXREZXNjLmZIZWlnaHQgPSBjYW52YXNTaXplLmhlaWdo
dCgpOworICAgIHRhcmdldERlc2MuZkNvbmZpZyA9IGtSR0JBXzg4ODhfR3JQaXhlbENvbmZpZzsK
KyAgICB0YXJnZXREZXNjLmZTdGVuY2lsQml0cyA9IDg7CisgICAgdGFyZ2V0RGVzYy5mUGxhdGZv
cm1UZXh0dXJlID0gdGV4dHVyZS0+dGV4dHVyZUlkKCk7CisgICAgdGFyZ2V0RGVzYy5mUGxhdGZv
cm1SZW5kZXJUYXJnZXQgPSBtX2ZibzsKKyAgICBTa0F1dG9UVW5yZWY8R3JUZXh0dXJlPiB0YXJn
ZXQoc3RhdGljX2Nhc3Q8R3JUZXh0dXJlKj4oZ3JDb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVN1cmZh
Y2UodGFyZ2V0RGVzYykpKTsKKyAgICBTa0F1dG9UVW5yZWY8U2tEZXZpY2U+IGRldmljZShuZXcg
U2tHcHVEZXZpY2UoZ3JDb250ZXh0LCB0YXJnZXQuZ2V0KCkpKTsKKyAgICBtX2NhbnZhcyA9IGFk
b3B0UHRyKG5ldyBTa0NhbnZhcyhkZXZpY2UuZ2V0KCkpKTsKKworICAgIHJldHVybiBtX2NhbnZh
cy5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVy
KQoreworfQorCitGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKwordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQoreworICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICB0
ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCksIHNv
dXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKworUGFzc1JlZlB0cjxGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+
IHBhaW50ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikpOworfQorCitGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBw
YWludGVyKQorICAgIDogU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVy
KQoreworfQorCitGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
On5GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQoreworfQor
CitQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZShUZXh0dXJlTWFu
YWdlciogbWFuYWdlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmUodGhpcywg
TWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOworfQorCitMYXllclRleHR1cmVVcGRh
dGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkK
K3sKKyAgICAvLyBIZXJlIHdlIGRpcmVjdGx5IHJlbmRlciB0byB0aGUgdGV4dHVyZSwgc28gdGhl
IGNvbXBvbmVudCBvcmRlciBpcyBhbHdheXMgY29ycmVjdC4KKyAgICByZXR1cm4gTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQTsKK30KKwordm9pZCBGcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgLy8g
TWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgorICAgIGNvbnRleHQt
Pm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGlu
dGVybmFsIEdMIHN0YXRlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQo
KTsKKworICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KKyAg
ICBGcmFtZUJ1ZmZlciBidWZmZXI7CisgICAgU2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0
aWFsaXplKGNvbnRleHQsIHRleHR1cmUpOworCisgICAgY2FudmFzLT5jbGlwUmVjdChTa1JlY3Qo
ZGVzdFJlY3QpKTsKKyAgICAvLyBUcmFuc2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0
byB0aGF0IG9mIGRlc3RSZWN0LgorICAgIC8vIE5vdGUgdGhhdCBkZXN0UmVjdCBpcyBkZWZpbmVk
IHJlbGF0aXZlIHRvIHNvdXJjZVJlY3QuCisgICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJl
Y3QoKS54KCkgLSBzb3VyY2VSZWN0LngoKSArIGRlc3RSZWN0LngoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICBjb250ZW50UmVjdCgpLnkoKSAtIHNvdXJjZVJlY3QueSgpICsgZGVzdFJlY3QueSgp
KTsKKyAgICBkcmF3UGljdHVyZShjYW52YXMpOworCisgICAgLy8gRmx1c2ggU0tJQSBjb250ZXh0
IHNvIHRoYXQgYWxsIHRoZSByZW5kZXJlZCBzdHVmZiBhcHBlYXJzIG9uIHRoZSB0ZXh0dXJlLgor
ICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5mbHVzaCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisjZW5kaWYgLy8gVVNFKFNLSUEpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMWU4M2EzZGFk
ZmE1MDE0NTI5MTM3ZjRkYTIyOWFmNzBmNTllOGY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lm
bmRlZiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorI2Rl
ZmluZSBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorCisj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVk
ZSAiU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKK3B1Ymxp
YzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
Pik7CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIo
KSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAgRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgIH07
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7
CisgICAgdmlydHVhbCB+RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKCk7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOworICAgIHZpcnR1YWwgT3JpZW50
YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpUb3BEb3du
T3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4
ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCitwcml2YXRlOgorICAgIGV4
cGxpY2l0IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKKyNlbmRpZiAvLyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMzYzMzYyOTY3YWNj
ZGViYzI1NTllMjljMjRkNDNjMWM4ODg4MDMxNy4uZDU2MzM1MWU2NjQ5YmUzY2Y3ZWNmMTE1MGRk
NWU3ZjczNjk2ZWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC00Niw2
ICs0NiwzOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJl
VXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKKyAgICBjbGFz
cyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1
YmxpYzoKKyAgICAgICAgVGV4dHVyZShJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVV
cGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAg
OiBtX3RleHR1cmUodGV4dHVyZSkKKyAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0
dXJlVXBkYXRlcikKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gIW1fdGV4dHVyZS0+dGV4dHVyZUlkKCk7CisgICAgICAgIH0KKworICAgICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
dGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAg
ICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4
dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6
CisgICAgICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJl
dHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CisKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJl
PiBtX3RleHR1cmU7CisgICAgICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJl
VXBkYXRlcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllclRleHR1
cmVVcGRhdGVyPiBjcmVhdGUoYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKHVzZU1hcFRleFN1
YkltYWdlKSk7CkBAIC01Myw2ICs4NiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5JbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KIAorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKiBt
YW5hZ2VyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0dXJlKHRoaXMs
IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKKyAgICB9CisKICAgICB2aXJ0dWFs
IE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQg
c2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCkBAIC02MSwxNCArOTks
MTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3Jt
YXRCR1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3Qg
SW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9y
ZGVyVGV4ZWxzICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJl
Y3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJv
cmRlclRleGVscyAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VT
aXplKHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJl
Y3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRv
ciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVj
dChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgIHsK
LSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAg
ICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRl
eHR1cmUtPnRleHR1cmVJZCgpKTsKIAogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2
ZXIgZ28gb3V0c2lkZSB0aGUgaW1hZ2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8g
aXMgcmVxdWVzdGVkIGJlY2F1c2UgdGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFn
ZS4KQEAgLTE0NCw3ICsxODIsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50cy0+Y3VycmVudEZy
YW1lSGFzQWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZE
aXJ0eSgpCiB7CiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV90
ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCAxYWZjY2Zl
MmZkY2U2NDQ3NWE3NGFiMmM5MjZkMDQyY2I1ZjM3Njc0Li44YmI5YTFkZmIzNTRhNmY4YTk5ZjRm
OTkwNDJjMWMwOTdlN2U2ZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMs
NyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0
ZUlmRGlydHkoKTsKIAogICAgIHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IGY1YzQzMThkYzk5ZmZjMTdjNWFmNGRhNGU5MzE4YTljNzIyM2Q1
OTMuLjM5ZWQ5YmMwYzkyNzcxZDc0ZGNkNTZiMWVhN2IzOTEzYTA4OTI3MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGlu
Zy5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgpAQCAtNTMsNyArNTQsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXll
clRyZWVIb3N0OwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOwogCiBjbGFzcyBDQ0xheWVyRGVsZWdhdGUgewpAQCAtMTYxLDggKzE2MSw5IEBAIHB1Ymxp
YzoKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0
ZW4gYnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJ
ZkRpcnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVz
ZXJ2ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNU
ZXh0dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCAw
YmQ2ZGJjMzg5NmFlNGEwNzcxOWE0ZWE0YTNjY2U3MzU5MjczZTA0Li5jYjA2MjNkNjkyMzkyM2Ey
OTNiNzdiMTRlYzVjMWEyYzU0ZDllMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKQEAgLTM1LDEzICszNSwxMyBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIgogCiAjaW5jbHVkZSAiQ2FudmFzMkRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAi
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9t
aXVtLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVkZSAiR2VvbWV0cnlCaW5kaW5n
LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJMYXll
clRleHR1cmVVcGRhdGVyQ2FudmFzLmgiCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNp
bmNsdWRlICJOb25Db21wb3NpdGVkQ29udGVudEhvc3QuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDNkODU5N2UzOWU4NWQ0
Y2JmMDE1NmQ1Y2MxMTc5NDY3OTUzNzEyNGYuLjQwY2NhMmU1ZTNhNGRhZDcyOTIzMTI3N2ZkNzQ2
Y2Q4M2NkNzgxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM5LDkgKzM5
LDI5IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgTWFuYWdlZFRleHR1
cmU7CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOworY2xhc3MgVGV4dHVyZU1hbmFnZXI7CiAKIGNs
YXNzIExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxMYXllclRleHR1cmVV
cGRhdGVyPiB7CiBwdWJsaWM6CisgICAgLy8gQWxsb3dzIHRleHR1cmUgdXBsb2FkZXJzIHRvIHN0
b3JlIHBlci10aWxlIHJlc291cmNlcy4KKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIFJlZkNv
dW50ZWQ8VGV4dHVyZT4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgp
IHsgfQorCisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVy
biAwOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKyAgICB9
OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5I
YW5kbGVyKCkgeyB9OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KSA9IDA7CisgICAgfTsKKwogICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVw
ZGF0ZXIoKSB7IH0KIAogICAgIGVudW0gT3JpZW50YXRpb24gewpAQCAtNTQsNiArNzQsNyBAQCBw
dWJsaWM6CiAgICAgICAgIFNhbXBsZWRUZXhlbEZvcm1hdEJHUkEsCiAgICAgICAgIFNhbXBsZWRU
ZXhlbEZvcm1hdEludmFsaWQsCiAgICAgfTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VGV4dHVy
ZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopID0gMDsKICAgICAvLyBSZXR1cm5zIHRo
ZSBvcmllbnRhdGlvbiBvZiB0aGUgdGV4dHVyZSB1cGxvYWRlZCBieSB0aGlzIGludGVyZmFjZS4K
ICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgPSAwOwogICAgIC8vIFJldHVy
bnMgdGhlIGZvcm1hdCBvZiB0aGUgdGV4ZWwgdXBsb2FkZWQgYnkgdGhpcyBpbnRlcmZhY2UuCkBA
IC02MSw4ICs4Miw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMgdGhl
IGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhlbC4KICAgICAvLyBJZiB0aGUgZm9y
bWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyByZWQu
CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0Rl
bnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJl
Y3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxz
ICovKSB7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJD
YW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFjYjJjZDNlNDZiMzAxMzRlYWY4ODA1YjQ1M2U1Y2FiOGQ1NDVjMWIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwyMTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0j
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5oIgotCi0jaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCi0jaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKLSNp
bmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29sb3IuaCIKLSNp
bmNsdWRlICJUcmFjZUV2ZW50LmgiCi0KLSNpZiBVU0UoU0tJQSkKLSNpbmNsdWRlICJHckNvbnRl
eHQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCi0jaW5jbHVkZSAiU2tDYW52
YXMuaCIKLSNpbmNsdWRlICJTa0dwdURldmljZS5oIgotI2VuZGlmIC8vIFVTRShTS0lBKQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBVU0UoU0tJQSkKLW5hbWVzcGFjZSB7Ci0KLWNsYXNz
IEZyYW1lQnVmZmVyIHsKLXB1YmxpYzoKLSAgICBGcmFtZUJ1ZmZlcigpOwotICAgIH5GcmFtZUJ1
ZmZlcigpOwotCi0gICAgU2tDYW52YXMqIGluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqKTsKLQotcHJpdmF0ZToKLSAgICBHcmFw
aGljc0NvbnRleHQzRCogbV9jb250ZXh0OwotICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mYm87Ci0g
ICAgT3duUHRyPFNrQ2FudmFzPiBtX2NhbnZhczsKLX07Ci0KLUZyYW1lQnVmZmVyOjpGcmFtZUJ1
ZmZlcigpCi0gICAgOiBtX2NvbnRleHQoMCkKLSAgICAsIG1fZmJvKDApCi17Ci19Ci0KLUZyYW1l
QnVmZmVyOjp+RnJhbWVCdWZmZXIoKQotewotICAgIG1fY2FudmFzLmNsZWFyKCk7Ci0KLSAgICBp
ZiAobV9mYm8pCi0gICAgICAgIG1fY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIobV9mYm8pOwot
fQotCi1Ta0NhbnZhcyogRnJhbWVCdWZmZXI6OmluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRl
eHR1cmUpCi17Ci0gICAgbV9jb250ZXh0ID0gY29udGV4dDsKLSAgICBtX2ZibyA9IG1fY29udGV4
dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLSAgICB0ZXh0dXJlLT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQsIGFsbG9jYXRvcik7Ci0KLSAgICAvLyBDcmVhdGUg
YSBza2lhIGdwdSBjYW52YXMuCi0gICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBtX2NvbnRleHQt
PmdyQ29udGV4dCgpOwotICAgIEludFNpemUgY2FudmFzU2l6ZSA9IHRleHR1cmUtPnNpemUoKTsK
LSAgICBHclBsYXRmb3JtU3VyZmFjZURlc2MgdGFyZ2V0RGVzYzsKLSAgICB0YXJnZXREZXNjLnJl
c2V0KCk7Ci0gICAgdGFyZ2V0RGVzYy5mU3VyZmFjZVR5cGUgPSBrVGV4dHVyZVJlbmRlclRhcmdl
dF9HclBsYXRmb3JtU3VyZmFjZVR5cGU7Ci0gICAgdGFyZ2V0RGVzYy5mUmVuZGVyVGFyZ2V0Rmxh
Z3MgPSBrTm9uZV9HclBsYXRmb3JtUmVuZGVyVGFyZ2V0RmxhZ0JpdDsKLSAgICB0YXJnZXREZXNj
LmZXaWR0aCA9IGNhbnZhc1NpemUud2lkdGgoKTsKLSAgICB0YXJnZXREZXNjLmZIZWlnaHQgPSBj
YW52YXNTaXplLmhlaWdodCgpOwotICAgIHRhcmdldERlc2MuZkNvbmZpZyA9IGtSR0JBXzg4ODhf
R3JQaXhlbENvbmZpZzsKLSAgICB0YXJnZXREZXNjLmZTdGVuY2lsQml0cyA9IDg7Ci0gICAgdGFy
Z2V0RGVzYy5mUGxhdGZvcm1UZXh0dXJlID0gdGV4dHVyZS0+dGV4dHVyZUlkKCk7Ci0gICAgdGFy
Z2V0RGVzYy5mUGxhdGZvcm1SZW5kZXJUYXJnZXQgPSBtX2ZibzsKLSAgICBTa0F1dG9UVW5yZWY8
R3JUZXh0dXJlPiB0YXJnZXQoc3RhdGljX2Nhc3Q8R3JUZXh0dXJlKj4oZ3JDb250ZXh0LT5jcmVh
dGVQbGF0Zm9ybVN1cmZhY2UodGFyZ2V0RGVzYykpKTsKLSAgICBTa0F1dG9UVW5yZWY8U2tEZXZp
Y2U+IGRldmljZShuZXcgU2tHcHVEZXZpY2UoZ3JDb250ZXh0LCB0YXJnZXQuZ2V0KCkpKTsKLSAg
ICBtX2NhbnZhcyA9IGFkb3B0UHRyKG5ldyBTa0NhbnZhcyhkZXZpY2UuZ2V0KCkpKTsKLQotICAg
IHJldHVybiBtX2NhbnZhcy5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLSNlbmRpZiAvLyBV
U0UoU0tJQSkKLQotTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhczo6TGF5ZXJUZXh0dXJlVXBkYXRl
ckNhbnZhcyhQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQotICAgIDog
bV9wYWludGVyKHBhaW50ZXIpCi17Ci19Ci0KLXZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZh
czo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0KQotewotICAgIGNvbnRleHQudHJhbnNsYXRlKC1jb250ZW50UmVjdC54KCks
IC1jb250ZW50UmVjdC55KCkpOwotICAgIHsKLSAgICAgICAgVFJBQ0VfRVZFTlQoIkxheWVyVGV4
dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50IiwgdGhpcywgMCk7Ci0gICAgICAgIG1fcGFpbnRlci0+
cGFpbnQoY29udGV4dCwgY29udGVudFJlY3QpOwotICAgIH0KLSAgICBtX2NvbnRlbnRSZWN0ID0g
Y29udGVudFJlY3Q7Ci19Ci0KLVBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcD4g
TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKHBhaW50ZXIsIHVzZU1hcFRl
eFN1YkltYWdlKSk7Ci19Ci0KLUxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OkxheWVyVGV4dHVy
ZVVwZGF0ZXJCaXRtYXAoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMo
cGFpbnRlcikKLSAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCi17Ci19Ci0K
LUxheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBMYXllclRleHR1cmVVcGRh
dGVyQml0bWFwOjpzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkKLXsK
LSAgICAvLyBUaGUgY29tcG9uZW50IG9yZGVyIG1heSBiZSBiZ3JhIGlmIHdlIHVwbG9hZGVkIGJn
cmEgcGl4ZWxzIHRvIHJnYmEgdGV4dHVyZXMuCi0gICAgcmV0dXJuIFBsYXRmb3JtQ29sb3I6OnNh
bWVDb21wb25lbnRPcmRlcih0ZXh0dXJlRm9ybWF0KSA/Ci0gICAgICAgICAgICBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKLX0KLQotdm9pZCBMYXllclRleHR1cmVVcGRhdGVyQml0
bWFwOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IElu
dFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKQotewotICAgIG1fdGV4U3ViSW1hZ2Uu
c2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKLQotICAgIG1fY2FudmFzLnJlc2l6ZShjb250ZW50
UmVjdC5zaXplKCkpOwotICAgIC8vIEFzc3VtcHRpb246IGlmIGEgdGlsZXIgaXMgdXNpbmcgYm9y
ZGVyIHRleGVscywgdGhlbiBpdCBpcyBiZWNhdXNlIHRoZQotICAgIC8vIGxheWVyIGlzIGxpa2Vs
eSB0byBiZSBmaWx0ZXJlZCBvciB0cmFuc2Zvcm1lZC4gQmVjYXVzZSBvZiBpdCBtaWdodCBiZQot
ICAgIC8vIHRyYW5zZm9ybWVkLCBkcmF3IHRoZSB0ZXh0IGluIGdyYXlzY2FsZSBpbnN0ZWFkIG9m
IHN1YnBpeGVsIGFudGlhbGlhc2luZy4KLSAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6VGV4
dE9wdGlvbiB0ZXh0T3B0aW9uID0KLSAgICAgICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZvcm1DYW52
YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQgOiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6U3Vi
cGl4ZWxUZXh0OwotICAgIFBsYXRmb3JtQ2FudmFzOjpQYWludGVyIGNhbnZhc1BhaW50ZXIoJm1f
Y2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBwYWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNv
bnRleHQoKSwgY29udGVudFJlY3QpOwotfQotCi12b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRt
YXA6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKLXsKLSAgICBQbGF0Zm9y
bUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFzKTsKLQotICAgIHRleHR1cmUtPmJp
bmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0gICAgbV90ZXhTdWJJbWFnZS51cGxvYWQo
bG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgdGV4
dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOwotfQotCi0jaWYgVVNFKFNLSUEpCi1QYXNzUmVmUHRy
PExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU+IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1
cmU6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQotewot
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZShwYWlu
dGVyKSk7Ci19Ci0KLUxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJTa1BpY3R1cmUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikK
LSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMocGFpbnRlcikKLXsKLX0KLQotTGF5ZXJU
ZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6fkxheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUoKQot
ewotfQotCi1MYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgTGF5ZXJUZXh0
dXJlVXBkYXRlclNrUGljdHVyZTo6c2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVG
b3JtYXQpCi17Ci0gICAgLy8gSGVyZSB3ZSBkaXJlY3RseSByZW5kZXIgdG8gdGhlIHRleHR1cmUs
IHNvIHRoZSBjb21wb25lbnQgb3JkZXIgaXMgYWx3YXlzIGNvcnJlY3QuCi0gICAgcmV0dXJuIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7Ci19Ci0KLXZvaWQgTGF5
ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscykK
LXsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNvbnRl
bnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKLSAgICBQbGF0Zm9ybUNvbnRl
eHRTa2lhIHBsYXRmb3JtQ29udGV4dChjYW52YXMpOwotICAgIEdyYXBoaWNzQ29udGV4dCBncmFw
aGljc0NvbnRleHQoJnBsYXRmb3JtQ29udGV4dCk7Ci0gICAgcGFpbnRDb250ZW50cyhncmFwaGlj
c0NvbnRleHQsIGNvbnRlbnRSZWN0KTsKLSAgICBtX3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7Ci19
Ci0KLXZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6dXBkYXRlVGV4dHVyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQotewotICAgIC8vIE1ha2Ugc3VyZSBTS0lBIHVzZXMgdGhlIGNv
cnJlY3QgR0wgY29udGV4dC4KLSAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLSAg
ICAvLyBOb3RpZnkgU0tJQSB0byBzeW5jIGl0cyBpbnRlcm5hbCBHTCBzdGF0ZS4KLSAgICBjb250
ZXh0LT5nckNvbnRleHQoKS0+cmVzZXRDb250ZXh0KCk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gYWNj
ZWxlcmF0ZWQgY2FudmFzIHRvIGRyYXcgb24uCi0gICAgRnJhbWVCdWZmZXIgYnVmZmVyOwotICAg
IFNrQ2FudmFzKiBjYW52YXMgPSBidWZmZXIuaW5pdGlhbGl6ZShjb250ZXh0LCBhbGxvY2F0b3Is
IHRleHR1cmUpOwotCi0gICAgY2FudmFzLT5jbGlwUmVjdChTa1JlY3QoZGVzdFJlY3QpKTsKLSAg
ICAvLyBUcmFuc2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIGRlc3RS
ZWN0LgotICAgIC8vIE5vdGUgdGhhdCBkZXN0UmVjdCBpcyBkZWZpbmVkIHJlbGF0aXZlIHRvIHNv
dXJjZVJlY3QuCi0gICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJlY3QoKS54KCkgLSBzb3Vy
Y2VSZWN0LngoKSArIGRlc3RSZWN0LngoKSwKLSAgICAgICAgICAgICAgICAgICAgICBjb250ZW50
UmVjdCgpLnkoKSAtIHNvdXJjZVJlY3QueSgpICsgZGVzdFJlY3QueSgpKTsKLSAgICBjYW52YXMt
PmRyYXdQaWN0dXJlKG1fcGljdHVyZSk7Ci0KLSAgICAvLyBGbHVzaCBTS0lBIGNvbnRleHQgc28g
dGhhdCBhbGwgdGhlIHJlbmRlcmVkIHN0dWZmIGFwcGVhcnMgb24gdGhlIHRleHR1cmUuCi0gICAg
Y29udGV4dC0+Z3JDb250ZXh0KCktPmZsdXNoKCk7Ci19Ci0jZW5kaWYgLy8gVVNFKFNLSUEpCi0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLSNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmYzcxYzY4ZmY3YzdkYzk4MjFjZTlhYzhhMWI0MDg4YWE1
ODgzODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ckNhbnZhcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0KLSNpZm5k
ZWYgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhc19oCi0jZGVmaW5lIExheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXNfaAotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaW5jbHVk
ZSAiR3JhcGhpY3NUeXBlczNELmgiCi0jaW5jbHVkZSAiTGF5ZXJUZXh0dXJlU3ViSW1hZ2UuaCIK
LSNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1DYW52
YXMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+Ci0KLSNpZiBVU0UoU0tJQSkKLSNpbmNsdWRlICJTa1BpY3R1cmUuaCIKLQotY2xhc3Mg
R3JDb250ZXh0OwotY2xhc3MgU2tDYW52YXM7Ci1jbGFzcyBTa1BpY3R1cmU7Ci0jZW5kaWYKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKLWNsYXNzIExh
eWVyUGFpbnRlckNocm9taXVtOwotCi0vLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBhbiBp
bnRlcm5hbCBjYW52YXMuCi1jbGFzcyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXIgewotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IExheWVyVGV4
dHVyZVVwZGF0ZXJDYW52YXMoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwotCi0g
ICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0KTsKLSAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udGVudFJlY3Q7IH0KLQotcHJpdmF0ZToKLQotICAgIEludFJlY3QgbV9jb250ZW50
UmVjdDsKLSAgICBPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IG1fcGFpbnRlcjsKLX07Ci0K
LS8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGJpdG1hcCBjYW52YXMu
Ci1jbGFzcyBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXJCaXRtYXA+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwg
Ym9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7Ci0KLSAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlv
bjsgfQotICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChH
QzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscyk7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwotCi1wcml2YXRl
OgotICAgIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwotICAgIFBsYXRmb3JtQ2FudmFzIG1f
Y2FudmFzOwotICAgIExheWVyVGV4dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7Ci19OwotCi0j
aWYgVVNFKFNLSUEpCi1jbGFzcyBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlIDogcHVibGlj
IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU+IGNyZWF0ZShQYXNzT3duUHRyPExheWVy
UGFpbnRlckNocm9taXVtPik7Ci0gICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGlj
dHVyZSgpOwotCi0gICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJu
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlvbjsgfQotICAgIHZpcnR1YWwg
U2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9y
bWF0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscyk7Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IExh
eWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4pOwotICAKLSAgICBTa1BpY3R1cmUgbV9waWN0dXJlOyAvLyBSZWNvcmRpbmcgY2FudmFzLgot
fTsKLSNlbmRpZiAvLyBVU0UoU0tJQSkKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotI2VuZGlm
IC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSNlbmRpZiAvLyBMYXllclRleHR1cmVV
cGRhdGVyQ2FudmFzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2E1YTRkZjM3NjczODgxZjlhODdkMTkz
ODY2ODU1ZjQwNTcxYTUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUg
IlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkdyYXBo
aWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2luY2x1ZGUgIlNrQ2FudmFzLmgiCisjaW5jbHVk
ZSAiVHJhY2VFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKKyAgICA6IENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikKK3sKK30KKworU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQorewor
fQorCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVu
dHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXpl
ICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKQoreworICAgIFNrQ2FudmFzKiBjYW52YXMgPSBt
X3BpY3R1cmUuYmVnaW5SZWNvcmRpbmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3Qu
aGVpZ2h0KCkpOworICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZh
cyk7CisgICAgR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0
KTsKKyAgICBwYWludChncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0KTsKKyAgICBtX3BpY3R1
cmUuZW5kUmVjb3JkaW5nKCk7Cit9CisKK3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6ZHJhd1BpY3R1cmUoU2tDYW52YXMqIGNhbnZhcykKK3sKKyAgICBUUkFDRV9FVkVO
VCgiU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6ZHJhd1BpY3R1cmUiLCB0aGlz
LCAwKTsKKyAgICBjYW52YXMtPmRyYXdQaWN0dXJlKG1fcGljdHVyZSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk0ZTY0NjFhZGZmZTdkYWIwOGFiYThm
OTE5NzY1YzEwOWZiZDA0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXJfaAorI2RlZmluZSBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyX2gKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkK
KworI2luY2x1ZGUgIkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJTa1Bp
Y3R1cmUuaCIKKworY2xhc3MgU2tDYW52YXM7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CisKK2NsYXNzIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6
CisgICAgdmlydHVhbCB+U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOworCitw
cm90ZWN0ZWQ6CisgICAgZXhwbGljaXQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CisKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOworICAgIHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52
YXMqKTsKKworcHJpdmF0ZToKKyAgICBTa1BpY3R1cmUgbV9waWN0dXJlOyAvLyBSZWNvcmRpbmcg
Y2FudmFzLgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorI2VuZGlmIC8vIFVTRShTS0lB
KQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNlbmRpZiAvLyBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGZjYzQ2ZDk5M2Q1NDBhNDIxOWQ3ZjI3MDEwMDE4NzM4ZWY3YjhmZmUuLjdk
ZWNjMGUzNWNiMzgzNWEyMjcyMWE0OWE5NTlhYjc1ZjEwOWU0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcApAQCAtNTEsMTcgKzUxLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFVwZGF0YWJsZVRpbGUgOiBwdWJsaWMgQ0NMYXllclRpbGluZ0RhdGE6OlRpbGUgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFVwZGF0YWJsZVRpbGUpOwogcHVibGljOgotICAgIGV4
cGxpY2l0IFVwZGF0YWJsZVRpbGUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4KSA6IG1f
dGV4KHRleCkgeyB9CisgICAgZXhwbGljaXQgVXBkYXRhYmxlVGlsZShQYXNzUmVmUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsg
fQogCi0gICAgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleC5nZXQoKTsg
fQorICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBt
X3RleHR1cmUuZ2V0KCk7IH0KKyAgICBNYW5hZ2VkVGV4dHVyZSogbWFuYWdlZFRleHR1cmUoKSB7
IHJldHVybiBtX3RleHR1cmUtPnRleHR1cmUoKTsgfQogCiAgICAgYm9vbCBkaXJ0eSgpIGNvbnN0
IHsgcmV0dXJuICFtX2RpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKTsgfQogICAgIHZvaWQgY2xlYXJE
aXJ0eSgpIHsgbV9kaXJ0eUxheWVyUmVjdCA9IEludFJlY3QoKTsgfQogCiAgICAgLy8gTGF5ZXIt
c3BhY2UgZGlydHkgcmVjdGFuZ2xlIHRoYXQgbmVlZHMgdG8gYmUgcmVwYWludGVkLgogICAgIElu
dFJlY3QgbV9kaXJ0eUxheWVyUmVjdDsKKyAgICAvLyBDb250ZW50LXNwYWNlIHJlY3RhbmdsZSB0
aGF0IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCisgICAgSW50UmVjdCBtX3VwZGF0ZVJlY3Q7CiBwcml2
YXRlOgotICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXg7CisgICAgUmVmUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IG1fdGV4dHVyZTsKIH07CiAKIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6VGlsZWRMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCkBAIC0x
NTEsMTAgKzE1NCwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9z
dChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgICAgIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQo
KSA/IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdEYXRh
OjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJl
VXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9z
aXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7CiAg
ICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBvZmYs
IHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11cGRh
dGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5
KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVx
dWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9w
YWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCwgdG9w
LCByaWdodCwgYm90dG9tOwpAQCAtMTYyLDIyICsxNjUsMTkgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEMKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAg
IGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKICAgICAgICAgICAgIFVwZGF0
YWJsZVRpbGUqIHRpbGUgPSB0aWxlQXQoaSwgaik7CisKKyAgICAgICAgICAgIC8vIFJlcXVpcmVk
IHRpbGVzIGFyZSBjcmVhdGVkIGluIHByZXBhcmVUb1VwZGF0ZSgpLiBBIHRpbGUgc2hvdWxkCisg
ICAgICAgICAgICAvLyBuZXZlciBiZSByZW1vdmVkIGJldHdlZW4gdGhlIGNhbGwgdG8gcHJlcGFy
ZVRvVXBkYXRlKCkgYW5kIHRoZQorICAgICAgICAgICAgLy8gY2FsbCB0byB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKCkuCiAgICAgICAgICAgICBpZiAoIXRpbGUpCi0gICAgICAgICAgICAgICAg
dGlsZSA9IGNyZWF0ZVRpbGUoaSwgaik7Ci0gICAgICAgICAgICBlbHNlIGlmICghdGlsZS0+ZGly
dHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBDUkFTSCgp
OwogCi0gICAgICAgICAgICAvLyBDYWxjdWxhdGUgcGFnZS1zcGFjZSByZWN0YW5nbGUgdG8gY29w
eSBmcm9tLgotICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gbV90aWxlci0+dGlsZUNv
bnRlbnRSZWN0KHRpbGUpOwotICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5jaG9yID0gc291
cmNlUmVjdC5sb2NhdGlvbigpOwotICAgICAgICAgICAgc291cmNlUmVjdC5pbnRlcnNlY3QobV90
aWxlci0+bGF5ZXJSZWN0VG9Db250ZW50UmVjdCh0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0KSk7Ci0g
ICAgICAgICAgICAvLyBQYWludCByZWN0IG5vdCBndWFyYW50ZWVkIHRvIGxpbmUgdXAgb24gdGls
ZSBib3VuZGFyaWVzLCBzbwotICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgc291cmNlUmVj
dCBkb2Vzbid0IGV4dGVuZCBvdXRzaWRlIG9mIGl0LgotICAgICAgICAgICAgc291cmNlUmVjdC5p
bnRlcnNlY3QobV9wYWludFJlY3QpOwotICAgICAgICAgICAgaWYgKHNvdXJjZVJlY3QuaXNFbXB0
eSgpKQorICAgICAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gdGlsZS0+bV91cGRhdGVSZWN0
OworICAgICAgICAgICAgaWYgKHRpbGUtPm1fdXBkYXRlUmVjdC5pc0VtcHR5KCkpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIEFTU0VSVCh0aWxlLT50ZXh0dXJlKCkt
PmlzUmVzZXJ2ZWQoKSk7CisgICAgICAgICAgICBBU1NFUlQodGlsZS0+bWFuYWdlZFRleHR1cmUo
KS0+aXNSZXNlcnZlZCgpKTsKKyAgICAgICAgICAgIGNvbnN0IEludFBvaW50IGFuY2hvciA9IG1f
dGlsZXItPnRpbGVDb250ZW50UmVjdCh0aWxlKS5sb2NhdGlvbigpOwogCiAgICAgICAgICAgICAv
LyBDYWxjdWxhdGUgdGlsZS1zcGFjZSByZWN0YW5nbGUgdG8gdXBsb2FkIGludG8uCiAgICAgICAg
ICAgICBJbnRSZWN0IGRlc3RSZWN0KEludFBvaW50KHNvdXJjZVJlY3QueCgpIC0gYW5jaG9yLngo
KSwgc291cmNlUmVjdC55KCkgLSBhbmNob3IueSgpKSwgc291cmNlUmVjdC5zaXplKCkpOwpAQCAt
MTk3LDE3ICsxOTcsOSBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRv
clJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICAgICAgaWYg
KHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdodCgpID4gbV9wYWludFJlY3QuaGVpZ2h0
KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAotICAgICAgICAgICAgdGlsZS0+dGV4dHVy
ZSgpLT5iaW5kVGV4dHVyZShjb250ZXh0LCB1cGRhdGVyLmFsbG9jYXRvcigpKTsKLSAgICAgICAg
ICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBH
cmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0g
ICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRF
UiwgZmlsdGVyKSk7Ci0gICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1l
dGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7Ci0KLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5k
KHRpbGUtPnRleHR1cmUoKSwgdGV4dHVyZVVwZGF0ZXIoKSwgc291cmNlUmVjdCwgZGVzdFJlY3Qp
OwotICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOworICAgICAgICAgICAgaGFuZGxlci5o
YW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0K
ICAgICB9Ci0KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29udGVudFJl
Y3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOwogfQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1
bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRpb24pCkBAIC0yNDAsMTAg
KzIzMiwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xh
eWVySW1wbCogbGF5ZXIpCiAgICAgICAgIGludCBpID0gaXRlci0+Zmlyc3QuZmlyc3Q7CiAgICAg
ICAgIGludCBqID0gaXRlci0+Zmlyc3Quc2Vjb25kOwogICAgICAgICBVcGRhdGFibGVUaWxlKiB0
aWxlID0gc3RhdGljX2Nhc3Q8VXBkYXRhYmxlVGlsZSo+KGl0ZXItPnNlY29uZC5nZXQoKSk7Ci0g
ICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCks
IG1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgIGlmICghdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+
aXNWYWxpZChtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3RleHR1cmVGb3JtYXQpKQogICAgICAgICAg
ICAgY29udGludWU7CiAKLSAgICAgICAgdGlsZWRMYXllci0+c3luY1RleHR1cmVJZChpLCBqLCB0
aWxlLT50ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgdGlsZWRMYXllci0+c3luY1Rl
eHR1cmVJZChpLCBqLCB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CiAgICAg
fQogfQogCkBAIC0yNjEsNyArMjUzLDcgQEAgVXBkYXRhYmxlVGlsZSogVGlsZWRMYXllckNocm9t
aXVtOjp0aWxlQXQoaW50IGksIGludCBqKSBjb25zdAogCiBVcGRhdGFibGVUaWxlKiBUaWxlZExh
eWVyQ2hyb21pdW06OmNyZWF0ZVRpbGUoaW50IGksIGludCBqKQogewotICAgIFJlZlB0cjxVcGRh
dGFibGVUaWxlPiB0aWxlID0gYWRvcHRSZWYobmV3IFVwZGF0YWJsZVRpbGUoTWFuYWdlZFRleHR1
cmU6OmNyZWF0ZSh0ZXh0dXJlTWFuYWdlcigpKSkpOworICAgIFJlZlB0cjxVcGRhdGFibGVUaWxl
PiB0aWxlID0gYWRvcHRSZWYobmV3IFVwZGF0YWJsZVRpbGUodGV4dHVyZVVwZGF0ZXIoKS0+Y3Jl
YXRlVGV4dHVyZSh0ZXh0dXJlTWFuYWdlcigpKSkpOwogICAgIG1fdGlsZXItPmFkZFRpbGUodGls
ZSwgaSwgaik7CiAgICAgdGlsZS0+bV9kaXJ0eUxheWVyUmVjdCA9IG1fdGlsZXItPnRpbGVMYXll
clJlY3QodGlsZS5nZXQoKSk7CiAKQEAgLTMwOSwxMCArMzAxLDEwIEBAIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpwcm90ZWN0VGlsZVRleHR1cmVzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9y
IChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewogICAgICAgICAgICAgVXBkYXRhYmxl
VGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsKLSAgICAgICAgICAgIGlmICghdGlsZSB8fCAhdGls
ZS0+dGV4dHVyZSgpLT5pc1ZhbGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1h
dCkpCisgICAgICAgICAgICBpZiAoIXRpbGUgfHwgIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlz
VmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0KSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgdGlsZS0+dGV4dHVyZSgpLT5yZXNlcnZlKG1f
dGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCk7CisgICAgICAgICAgICB0aWxlLT5t
YW5hZ2VkVGV4dHVyZSgpLT5yZXNlcnZlKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZv
cm1hdCk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0zMjMsNiArMzE1LDEyIEBAIHZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QpCiAKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwogCisgICAgLy8gUmVzZXQgbV91cGRhdGVS
ZWN0IGZvciBhbGwgdGlsZXMuCisgICAgZm9yIChDQ0xheWVyVGlsaW5nRGF0YTo6VGlsZU1hcDo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fdGlsZXItPnRpbGVzKCkuYmVnaW4oKTsgaXRlciAhPSBt
X3RpbGVyLT50aWxlcygpLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgVXBkYXRhYmxlVGlsZSog
dGlsZSA9IHN0YXRpY19jYXN0PFVwZGF0YWJsZVRpbGUqPihpdGVyLT5zZWNvbmQuZ2V0KCkpOwor
ICAgICAgICB0aWxlLT5tX3VwZGF0ZVJlY3QgPSBJbnRSZWN0KCk7CisgICAgfQorCiAgICAgaWYg
KGNvbnRlbnRSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICBtX3JlcXVlc3RlZFVwZGF0ZVJlY3Qg
PSBJbnRSZWN0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTM0NiwxMCArMzQ0LDEwIEBAIHZvaWQg
VGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QpCiAgICAgICAgICAgICBpZiAoIXRpbGUpCiAgICAgICAgICAgICAgICAgdGlsZSA9IGNy
ZWF0ZVRpbGUoaSwgaik7CiAKLSAgICAgICAgICAgIGlmICghdGlsZS0+dGV4dHVyZSgpLT5pc1Zh
bGlkKG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpCisgICAgICAgICAgICBp
ZiAoIXRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmlzVmFsaWQobV90aWxlci0+dGlsZVNpemUoKSwg
bV90ZXh0dXJlRm9ybWF0KSkKICAgICAgICAgICAgICAgICB0aWxlLT5tX2RpcnR5TGF5ZXJSZWN0
ID0gbV90aWxlci0+dGlsZUxheWVyUmVjdCh0aWxlKTsKIAotICAgICAgICAgICAgaWYgKCF0aWxl
LT50ZXh0dXJlKCktPnJlc2VydmUobV90aWxlci0+dGlsZVNpemUoKSwgbV90ZXh0dXJlRm9ybWF0
KSkgeworICAgICAgICAgICAgaWYgKCF0aWxlLT5tYW5hZ2VkVGV4dHVyZSgpLT5yZXNlcnZlKG1f
dGlsZXItPnRpbGVTaXplKCksIG1fdGV4dHVyZUZvcm1hdCkpIHsKICAgICAgICAgICAgICAgICBt
X3NraXBzRHJhdyA9IHRydWU7CiAgICAgICAgICAgICAgICAgY2xlYW51cFJlc291cmNlcygpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTM2NSwxNiArMzYzLDU1IEBAIHZvaWQgVGlsZWRM
YXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3Qp
CiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0ID0gY29udGVudFJlY3Q7CiAKICAgICBtX3BhaW50
UmVjdCA9IG1fdGlsZXItPmxheWVyUmVjdFRvQ29udGVudFJlY3QoZGlydHlMYXllclJlY3QpOwot
ICAgIGlmIChkaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgaWYgKG1fcGFpbnRSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gQ2FsbGluZyBwcmVwYXJlVG9VcGRh
dGUoKSBjYWxscyBpbnRvIFdlYktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUK
KyAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMobV9yZXF1ZXN0ZWRVcGRhdGVS
ZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgIGZvciAoaW50IGogPSB0b3A7IGog
PD0gYm90dG9tOyArK2opIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7
ICsraSkgeworICAgICAgICAgICAgVXBkYXRhYmxlVGlsZSogdGlsZSA9IHRpbGVBdChpLCBqKTsK
KworICAgICAgICAgICAgLy8gVGlsZXMgYXJlIGNyZWF0ZWQgYmVmb3JlIHByZXBhcmVUb1VwZGF0
ZSgpIGlzIGNhbGxlZC4KKyAgICAgICAgICAgIGlmICghdGlsZSkKKyAgICAgICAgICAgICAgICBD
UkFTSCgpOworCisgICAgICAgICAgICBpZiAoIXRpbGUtPmRpcnR5KCkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBjb250ZW50LXNwYWNlIHJl
Y3RhbmdsZSB0byBjb3B5IGZyb20uCisgICAgICAgICAgICBJbnRSZWN0IHNvdXJjZVJlY3QgPSBt
X3RpbGVyLT50aWxlQ29udGVudFJlY3QodGlsZSk7CisgICAgICAgICAgICBjb25zdCBJbnRQb2lu
dCBhbmNob3IgPSBzb3VyY2VSZWN0LmxvY2F0aW9uKCk7CisgICAgICAgICAgICBzb3VyY2VSZWN0
LmludGVyc2VjdChtX3RpbGVyLT5sYXllclJlY3RUb0NvbnRlbnRSZWN0KHRpbGUtPm1fZGlydHlM
YXllclJlY3QpKTsKKyAgICAgICAgICAgIC8vIFBhaW50IHJlY3Qgbm90IGd1YXJhbnRlZWQgdG8g
bGluZSB1cCBvbiB0aWxlIGJvdW5kYXJpZXMsIHNvCisgICAgICAgICAgICAvLyBtYWtlIHN1cmUg
dGhhdCBzb3VyY2VSZWN0IGRvZXNuJ3QgZXh0ZW5kIG91dHNpZGUgb2YgaXQuCisgICAgICAgICAg
ICBzb3VyY2VSZWN0LmludGVyc2VjdChtX3BhaW50UmVjdCk7CisKKyAgICAgICAgICAgIC8vIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKSB1c2VzIG1fdXBkYXRlUmVjdCB0byBkZXRlcm1pbmUK
KyAgICAgICAgICAgIC8vIHRoZSB0aWxlcyB0byB1cGRhdGUgc28gd2UgY2FuIGNsZWFyIHRoZSBk
aXJ0eSByZWN0YW5nbGUgaGVyZS4KKyAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKKwor
ICAgICAgICAgICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKKworICAgICAgICAg
ICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkK
K3sKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHko
KSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIC8vIENhbGxpbmcgcGFpbnRDb250ZW50cygpIGNhbGxzIGludG8g
V2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQogICAgIC8vIGVmZmVjdCBv
ZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRo
ZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KICAgICAvLyBIb3dldmVyLCB3ZSBjYW4n
dCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBw
YWludCBmaW5pc2hlcywKICAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUg
dG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgogICAg
IFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7
Ci0gICAgdGV4dHVyZVVwZGF0ZXIoKS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3Rp
bGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSk7CisgICAgdGV4dHVy
ZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50cyhtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUo
KSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkpOworCisgICAgbV91cGRhdGVSZWN0ID0gRmxv
YXRSZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWludFJlY3QpKTsKIH0K
IAorCiB9CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNo
cm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaAppbmRleCA1ZGFmMGYwMTk0N2E5OTQ3Y2QyMzVmNTVmYjczOTU5ZTQ0
N2IxZjU2Li5jZmRkZmM4NmMwYWRjZTRjMjhhMmUzZjM5OWRhY2JlODY0Mjg4MDgxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIH5UaWxlZExheWVyQ2hyb21pdW0oKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYp
OworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNNYXNrKGJvb2wpOwog
CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqKTsKQEAgLTY1
LDggKzY1LDEwIEBAIHByb3RlY3RlZDoKIAogICAgIC8vIFNldCBpbnZhbGlkYXRpb25zIHRvIGJl
IHBvdGVudGlhbGx5IHJlcGFpbnRlZCBkdXJpbmcgdXBkYXRlKCkuCiAgICAgdm9pZCBpbnZhbGlk
YXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7Ci0gICAgLy8gUHJlcGFyZSBkYXRh
IG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVj
dC4KKyAgICAvLyBQcmVwYXJlIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRo
IGNvbnRlbnRSZWN0LgogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0KTsKKyAgICAvLyBQYWludCBjb250ZW50cyBuZWVkZWQgdG8gdXBkYXRlIHRleHR1
cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCisgICAgdm9pZCBwYWludENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwcm90
ZWN0VmlzaWJsZVRpbGVUZXh0dXJlcygpOwogCkBAIC04Myw3ICs4NSw3IEBAIHByaXZhdGU6CiAK
ICAgICBUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIoKSBjb25zdDsKIAotICAgIC8vIFRl
bXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKS4KKyAgICAvLyBUZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVu
IHByZXBhcmVUb1VwZGF0ZSgpIGFuZCBwYWludENvbnRlbnRzKCkuCiAgICAgSW50UmVjdCBtX3Jl
cXVlc3RlZFVwZGF0ZVJlY3Q7CiAgICAgLy8gU3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1Vw
ZGF0ZSgpIGFuZCBwdXNoUHJvcGVydGllc1RvKCkuIFRoaXMgcmVwcmVzZW50cyB0aGUgYXJlYQog
ICAgIC8vIG9mIHRoZSBsYXllciB0aGF0IGlzIGFjdHVhbGx5IHJlLXBhaW50ZWQgYnkgV2ViS2l0
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMjM5NDU2OGYyZDgyNzhmNTk3
OWE3ZmUwYzU2MTVkOWY3MjA5OGI2Ny4uNGRjOTYxNGQzYTM2NmQ3M2M4NzNiYWM1ODhlYjI5ZDBk
MzFiNzc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCkBAIC00MCwxMSArNDAs
MzQgQEAKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIKICNpbmNsdWRlICJWaWRlb0Zy
YW1lUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgotI2luY2x1ZGUgImNj
L0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1ZpZGVvTGF5ZXJJbXBsLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6VXBkYXRlclRleHR1cmUoVmlkZW9MYXllckNocm9taXVtKiBsYXllcikKKyAgICA6IG1fbGF5
ZXIobGF5ZXIpCit7Cit9CisKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5V
cGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK2Jvb2wgVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVy
VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKK3sKKyAgICByZXR1cm4gbV9sYXllci0+bmVlZFBy
ZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKCk7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVt
OjpVcGRhdGVyVGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+cHJl
cGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgYWxsb2NhdG9yKTsKK30KKwordm9pZCBW
aWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJ
bnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKGNvbnRleHQpOworfQorCiBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4g
VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
aWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpAQCAtNTcsNiArODAsOSBAQCBWaWRlb0xh
eWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRl
LCBWaWRlb0ZyYW1lUHJvdgogICAgICwgbV9mcmFtZUZvcm1hdChWaWRlb0ZyYW1lQ2hyb21pdW06
OkludmFsaWQpCiAgICAgLCBtX3Byb3ZpZGVyKHByb3ZpZGVyKQogICAgICwgbV9wbGFuZXMoMCkK
KyAgICAsIG1fZnJhbWUoMCkKKyAgICAsIG1fbmVlZFByZXBhcmUoZmFsc2UpCisgICAgLCBtX3Vw
ZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTc3
LDkgKzEwMywxMyBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygp
CiAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLmNsZWFyKCk7CiB9CiAKLXZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBWaWRlb0xheWVy
Q2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewotICAgIGlmICghbV9kZWxlZ2F0
ZSB8fCAhbV9wcm92aWRlcikKKyAgICBtX25lZWRQcmVwYXJlID0gZmFsc2U7CisgICAgbV91cGRh
dGVSZWN0ID0gSW50UmVjdCgpOworICAgIEFTU0VSVCghbV9mcmFtZSk7CisKKyAgICBpZiAoIW1f
ZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYmIHRleHR1cmVzVmFsaWQoKSkg
ewpAQCAtOTMsNTIgKzEyMyw5MCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKGRyYXdzQ29udGVudCgpKTsKLQogICAgIG1fcGxh
bmVzID0gMDsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwotCi0gICAgVmlkZW9GcmFtZUNocm9t
aXVtKiBmcmFtZSA9IG1fcHJvdmlkZXItPmdldEN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghZnJh
bWUpIHsKKyAgICBtX2ZyYW1lID0gbV9wcm92aWRlci0+Z2V0Q3VycmVudEZyYW1lKCk7CisgICAg
aWYgKCFtX2ZyYW1lKSB7CiAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKLSAgICAgICAgbV9w
cm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fZnJhbWVGb3JtYXQgPSBmcmFtZS0+Zm9ybWF0KCk7Ci0gICAgR0MzRGVudW0gdGV4
dHVyZUZvcm1hdCA9IGRldGVybWluZVRleHR1cmVGb3JtYXQoZnJhbWUpOworICAgIG1fZnJhbWVG
b3JtYXQgPSBtX2ZyYW1lLT5mb3JtYXQoKTsKKyAgICBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0ID0g
ZGV0ZXJtaW5lVGV4dHVyZUZvcm1hdChtX2ZyYW1lKTsKICAgICBpZiAodGV4dHVyZUZvcm1hdCA9
PSBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSkgewogICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IG90aGVyIHBhdGhzLgogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgICAg
ICBtX3NraXBzRHJhdyA9IHRydWU7Ci0gICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFt
ZShmcmFtZSk7CisgICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShtX2ZyYW1lKTsK
KyAgICAgICAgbV9mcmFtZSA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBB
bGxvY2F0ZSB0ZXh0dXJlcyBmb3IgcGxhbmVzIGlmIHRoZXkgYXJlIG5vdCBhbGxvY2F0ZWQgYWxy
ZWFkeSwgb3IKICAgICAvLyByZWFsbG9jYXRlIHRleHR1cmVzIHRoYXQgYXJlIHRoZSB3cm9uZyBz
aXplIGZvciB0aGUgZnJhbWUuCi0gICAgYm9vbCB0ZXh0dXJlc1Jlc2VydmVkID0gcmVzZXJ2ZVRl
eHR1cmVzKGZyYW1lLCB0ZXh0dXJlRm9ybWF0KTsKKyAgICBib29sIHRleHR1cmVzUmVzZXJ2ZWQg
PSByZXNlcnZlVGV4dHVyZXMobV9mcmFtZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAgaWYgKCF0ZXh0
dXJlc1Jlc2VydmVkKSB7CiAgICAgICAgIG1fc2tpcHNEcmF3ID0gdHJ1ZTsKLSAgICAgICAgbV9w
cm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKKyAgICAgICAgbV9wcm92aWRlci0+cHV0
Q3VycmVudEZyYW1lKG1fZnJhbWUpOworICAgICAgICBtX2ZyYW1lID0gMDsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBsYW5lcy4KLSAgICBmb3IgKHVu
c2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKKyAg
ICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBib3VuZHMoKSk7CisgICAg
cmVzZXROZWVkc0Rpc3BsYXkoKTsKKworICAgIC8vIENoZWNrIGlmIHdlIG5lZWQgdG8gYWxsb2Nh
dGUgdGV4dHVyZSBwbGFuZXMuCisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwg
bV9mcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKICAgICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9
IG1fdGV4dHVyZXNbcGxhbmVdOwogICAgICAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwot
ICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IHRleHR1
cmUubV90ZXh0dXJlLT5zaXplKCkpOwotICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIHVw
ZGF0ZXIuYWxsb2NhdG9yKCksIHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5lKSk7CisgICAgICAg
IGlmICghdGV4dHVyZS5tX3RleHR1cmUtPnRleHR1cmVJZCgpKSB7CisgICAgICAgICAgICBtX25l
ZWRQcmVwYXJlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQor
fQogCi0gICAgbV9wbGFuZXMgPSBmcmFtZS0+cGxhbmVzKCk7Citib29sIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6bmVlZFByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKCkKK3sKKyAgICByZXR1cm4gbV9u
ZWVkUHJlcGFyZSAmJiAhbV9za2lwc0RyYXc7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVt
OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQoreworICAgIEFTU0VSVChtX2ZyYW1lKTsKKwor
ICAgIC8vIEFsbG9jYXRlIHRleHR1cmUgcGxhbmVzLgorICAgIGZvciAodW5zaWduZWQgcGxhbmUg
PSAwOyBwbGFuZSA8IG1fZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CisgICAgICAgIFRleHR1
cmUmIHRleHR1cmUgPSBtX3RleHR1cmVzW3BsYW5lXTsKKyAgICAgICAgQVNTRVJUKHRleHR1cmUu
bV90ZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKG1fZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUo
cGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkpOworICAgICAgICBhbGxvY2F0ZVRl
eHR1cmUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKKyAgICB9CisKKyAgICBtX3BsYW5l
cyA9IG1fZnJhbWUtPnBsYW5lcygpOwogICAgIEFTU0VSVChtX3BsYW5lcyA8PSBNYXhQbGFuZXMp
OworfQogCi0gICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYm91bmRz
KCkpOwotICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7Cit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKK3sK
KyAgICBpZiAobV91cGRhdGVSZWN0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
QVNTRVJUKG1fZnJhbWUpOwogCi0gICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1l
KTsKKyAgICAvLyBVcGRhdGUgdGV4dHVyZSBwbGFuZXMuCisgICAgZm9yICh1bnNpZ25lZCBwbGFu
ZSA9IDA7IHBsYW5lIDwgbV9mcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKKyAgICAgICAgVGV4
dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOworICAgICAgICB1cGRhdGVUZXh0dXJl
KGNvbnRleHQsIHRleHR1cmUsIG1fZnJhbWUtPmRhdGEocGxhbmUpKTsKKyAgICB9CisKKyAgICBt
X3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9mcmFtZSk7CisgICAgbV9mcmFtZSA9IDA7Cit9
CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7CisgICAgaGFuZGxlci5oYW5k
bGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOwogfQogCiB2
b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5
ZXIpCkBAIC0yNDcsMTIgKzMxNSwyMCBAQCBJbnRTaXplIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Y29t
cHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsCiAgICAgcmV0
dXJuIEludFNpemUodmlzaWJsZVdpZHRoLCB2aXNpYmxlSGVpZ2h0KTsKIH0KIAotdm9pZCBWaWRl
b0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZSYgdGV4dHVyZSwgY29uc3Qgdm9p
ZCogZGF0YSkgY29uc3QKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjphbGxvY2F0ZVRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwg
VGV4dHVyZSYgdGV4dHVyZSkgY29uc3QKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNT
RVJUKHRleHR1cmUubV90ZXh0dXJlKTsKLQogICAgIHRleHR1cmUubV90ZXh0dXJlLT5iaW5kVGV4
dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZSYgdGV4dHVy
ZSwgY29uc3Qgdm9pZCogZGF0YSkgY29uc3QKK3sKKyAgICBBU1NFUlQoY29udGV4dCk7CisgICAg
QVNTRVJUKHRleHR1cmUubV90ZXh0dXJlKTsKKyAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUt
PnRleHR1cmVJZCgpKTsKKworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4
dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOwogCiAgICAg
R0MzRGVudW0gZm9ybWF0ID0gdGV4dHVyZS5tX3RleHR1cmUtPmZvcm1hdCgpOwogICAgIEludFNp
emUgZGltZW5zaW9ucyA9IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21p
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDQ5MDU3MjI1ZTQzMGNlOGRkYjhiNDMwYmZlZmM3NDEyY2I1MjFi
MDQuLjQwMzhmNjc4YzJkZTU2ZDk2M2M3MWM0NzE1MDRiZmVmZjljNGU1YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw2ICs0MywyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAvLyBBIExheWVyIHRoYXQgY29udGFpbnMgYSBWaWRlbyBlbGVtZW50LgogY2xhc3MgVmlkZW9M
YXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNz
IFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VXBkYXRlclRleHR1cmU+IGNy
ZWF0ZShWaWRlb0xheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKwor
ICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgYm9v
bCBuZWVkUHJlcGFyZVJlY3QoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhw
bGljaXQgVXBkYXRlclRleHR1cmUoVmlkZW9MYXllckNocm9taXVtKik7CisKKyAgICAgICAgVmlk
ZW9MYXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJv
dmlkZXIqID0gMCk7CkBAIC01MCw3ICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKTsKKyAgICBib29sIG5lZWRQcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcygp
OworICAgIHZvaWQgcHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRl
SWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250
ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIo
KTsKQEAgLTc0LDcgKzk5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSW50U2l6ZSBjb21wdXRl
VmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgdW5zaWduZWQgcGxhbmUpOwog
ICAgIGJvb2wgdGV4dHVyZXNWYWxpZCgpOwogICAgIGJvb2wgcmVzZXJ2ZVRleHR1cmVzKGNvbnN0
IFZpZGVvRnJhbWVDaHJvbWl1bSosIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZvaWQg
dXBkYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0
dXJlJiwgY29uc3Qgdm9pZCopIGNvbnN0OworICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmUmKSBjb25zdDsKKyAgICB2
b2lkIHVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlJiwgY29uc3Qgdm9p
ZCopIGNvbnN0OwogCiAgICAgdm9pZCByZXNldEZyYW1lUGFyYW1ldGVycygpOwogCkBAIC04NSw2
ICsxMTEsMTEgQEAgcHJpdmF0ZToKICAgICBlbnVtIHsgTWF4UGxhbmVzID0gMyB9OwogICAgIFRl
eHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFuZXNdOwogICAgIHVuc2lnbmVkIG1fcGxhbmVzOworCisg
ICAgVmlkZW9GcmFtZUNocm9taXVtKiBtX2ZyYW1lOworICAgIGJvb2wgbV9uZWVkUHJlcGFyZTsK
KworICAgIFJlZlB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDI3NmYzYzlmYzJmZTEwN2YxNjNi
MmFiYTA5OGMwM2ZiYjMzNDRjYjYuLjdmZTQzZGIyMmQxMTA2NjFlZDdmMWU5NDdlZDdhMGRmMzIz
OGNiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzksOSArMzksMjQg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV2ViR0xMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKiBs
YXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhjb250ZXh0KTsKK30KKwogUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKQEAgLTUyLDYg
KzY3LDcgQEAgV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSkKICAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1ZSkKICAgICAsIG1f
dGV4dHVyZVVwZGF0ZWQoZmFsc2UpCiAgICAgLCBtX2RyYXdpbmdCdWZmZXIoMCkKKyAgICAsIG1f
dXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAt
NjYsNyArODIsNyBAQCBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29u
c3QKICAgICByZXR1cm4gKGNvbnRleHQoKSAmJiBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJP
Uik7CiB9CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXIm
KQordm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCkKIHsKICAgICBpZiAoIWRyYXdzQ29udGVu
dCgpKQogICAgICAgICByZXR1cm47CkBAIC05NSw2ICsxMTEsMTEgQEAgdm9pZCBXZWJHTExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJl
bmRlcmVyQ28KICAgICB9CiB9CiAKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7
CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJ
bnRSZWN0KCkpOworfQorCiBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJl
c3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKG1fdGV4
dHVyZVVwZGF0ZWQgfHwgIWxheWVyUmVuZGVyZXJDb250ZXh0KCkgfHwgIWRyYXdzQ29udGVudCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA2Mzc0YjllZjZiMTE3YWQyMzU1YTFm
YWRiNjlkZGI0MTA3YTY5MzEwLi5jMzNiNGQ1ZDhjOGMyOThhZGJhMDAzMjBhNTJjZjhjZDlkZWQz
YjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAj
aW5jbHVkZSAiQ2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIu
aCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDUsMTIgKzQ2LDMwIEBAIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1p
dFRhc2s7CiAvLyBBIExheWVyIGNvbnRhaW5pbmcgYSBXZWJHTCBjYW52YXMKIGNsYXNzIFdlYkdM
TGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAg
ICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVwZGF0ZXJUZXh0
dXJlPiBjcmVhdGUoV2ViR0xMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAg
ICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOworCisgICAg
ICAgIFdlYkdMTGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDAp
OwogCiAgICAgdmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAg
dm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAg
dmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJv
b2wgcGFpbnRSZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC03MSw2
ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgLy8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwg
YmVjYXVzZSB0aGUgRHJhd2luZ0J1ZmZlciBhbHJlYWR5IGhvbGRzCiAgICAgLy8gYSByZWZlcmVu
Y2UgdG8gdGhlIFdlYkdMTGF5ZXJDaHJvbWl1bS4KICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdp
bmdCdWZmZXI7CisKKyAgICBSZWZQdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA0OThlOTE3ZGQw
YjNjNjc3NGIxMjMwZTEzMTRkOGY1NTFiNWUxNDQ0Li41ODk5YmY2NDRjYzNiMTBkMmMzMmNjNGE4
NjJmZDI0OTBjZWZhMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM0
LDExICszNCw1OCBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUg
ImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK0NDTGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6TmVl
ZFJlc291cmNlSGFuZGxlcigpCisgICAgOiBtX3Jlc291cmNlcygwKQoreworfQorCitDQ0xheWVy
VHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6On5OZWVkUmVzb3VyY2VIYW5kbGVyKCkKK3sK
K30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiAvKiBz
b3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBpZiAo
dGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisgICAgICAgIG1fcmVzb3VyY2VzKys7Cit9CisK
K0NDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6UHJlcGFyZVJlc291cmNl
SGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yKQorICAgIDogbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX2FsbG9jYXRvcihhbGxv
Y2F0b3IpCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6
flByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKQoreworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQoreworICAgIGlmICh0ZXh0dXJlLT5uZWVkUHJlcGFyZVJlY3QoKSkKKyAgICAgICAg
dGV4dHVyZS0+cHJlcGFyZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6UGFpbnRIYW5k
bGVyKENDUHJveHkqIHByb3h5KQorICAgIDogbV9wcm94eShwcm94eSkKK3sKK30KKworQ0NMYXll
clRyZWVIb3N0OjpQYWludEhhbmRsZXI6On5QYWludEhhbmRsZXIoKQoreworfQorCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCit7CisgICAgdGV4dHVyZS0+cGFpbnRDb250ZW50c1JlY3Qoc291cmNlUmVj
dCk7CisgICAgbV9wcm94eS0+dXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
K30KKwogUGFzc1JlZlB0cjxDQ0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRl
KENDTGF5ZXJUcmVlSG9zdENsaWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5n
cykKIHsKICAgICBSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRS
ZWYobmV3IENDTGF5ZXJUcmVlSG9zdChjbGllbnQsIHNldHRpbmdzKSk7CkBAIC0yOTQsNyArMzQx
LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8
Q0NTaW5nbGVUaHJlYWRQcm94eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVs
eSgpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUoKQogewogICAgIGlmICghcm9vdExheWVyKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTMwMiwxMiArMzQ5LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJl
cGFyZVRvVXBkYXRlKHJvb3RMYXllcigpKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVw
ZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFD
RV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBU
UkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsK
IAogICAgIGlmICghcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXll
ci0+Y3JlYXRlUmVuZGVyU3VyZmFjZSgpOwpAQCAtMzE2LDMwICszNjMsNzcgQEAgdm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAg
SW50UmVjdCByb290Q2xpcFJlY3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJv
b3RMYXllci0+c2V0Q2xpcFJlY3Qocm9vdENsaXBSZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0
IGZpcmVzIGlmIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgot
ICAgIC8vIHVwZGF0ZUxheWVycy4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFu
eSBnaXZlbiB0aW1lLgotICAgIEFTU0VSVCghbV91cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91
cGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOworICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlm
IGNvbW1pdENvbXBsZXRlIHdhc24ndCBjYWxsZWQgYWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRh
dGUuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAg
ICBBU1NFUlQoIW1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpICYmICFtX2xheWVyVXBk
YXRlTGlzdC5zaXplKCkpOworICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJv
b3RMYXllcik7CiAKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNl
ID0gcm9vdExheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNs
ZWFyTGF5ZXJMaXN0KCk7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKICAgICB7Ci0gICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxh
eWVyczo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290
TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290
UmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5t
YXhUZXh0dXJlU2l6ZSk7CisgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBy
ZXBhcmVUb1VwZGF0ZTo6Y2FsY0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExh
eWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJT
dXJmYWNlVXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgIH0KKworICAgIGFwcGVu
ZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV9sYXllclVwZGF0ZUxp
c3QpOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUo
KSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNo
cm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAg
ICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIH0KK30KIAotICAgIHBh
aW50TGF5ZXJDb250ZW50cyhtX3VwZGF0ZUxpc3QpOworYm9vbCBDQ0xheWVyVHJlZUhvc3Q6Om5l
ZWRzQ29tcG9zaXRvclJlc291cmNlcygpCit7CisgICAgTmVlZFJlc291cmNlSGFuZGxlciBoYW5k
bGVyOworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CisgICAgcmV0dXJu
IGhhbmRsZXIucmVzb3VyY2VzKCk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6
OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzIiwgdGhpcywgMCk7CisgICAgUHJlcGFyZVJlc291
cmNlSGFuZGxlciBoYW5kbGVyKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgZm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRDb250ZW50c0lm
RGlydHkoTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRD
b250ZW50cygpCiB7Ci0gICAgaWYgKGxheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICBpZiAoIXJv
b3RMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RMYXllcigp
KTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1
bSogcm9vdExheWVyKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBhaW50
Q29udGVudHMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVy
VXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsK
KyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllcklu
ZGV4XS5nZXQoKTsKICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisKKyAg
ICAgICAgUGFpbnRIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgICAgIGxheWVy
LT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIH0KK30KKwordm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwg
TGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQoreworICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVz
ZSBjb25kaXRpb25zIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0
aW5nIHRoZSByZW5kZXIgc3VyZmFjZSBsYXllciBsaXN0cy4KKyAgICAvLyBGb3IgbWFza3MgYW5k
IHJlcGxpY2FzIGhvd2V2ZXIsIHdlIG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4K
KyAgICBpZiAobGF5ZXItPmJvdW5kcygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8
fCAhbGF5ZXItPmRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVM
aXN0LmFwcGVuZChsYXllcik7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tB
bmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5
ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1cGRh
dGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0IGZv
ciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50
CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRoaW5n
IHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM0OCwz
NCArNDQyLDM0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9y
UmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAgICAgaWYgKHJlbmRlclN1cmZh
Y2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNr
TGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxh
eWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCks
IHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHBhaW50Q29u
dGVudHNJZkRpcnR5KHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpOworICAgICAgICBh
cHBlbmRWaXNpYmxlTGF5ZXIocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSwgdXBkYXRl
TGlzdCk7CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bSogcmVwbGljYUxheWVyID0gcmVuZGVy
U3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKTsKICAgICBpZiAocmVwbGljYUxheWVyKSB7CiAK
ICAgICAgICAgcmVwbGljYUxheWVyLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwotICAgICAgICBw
YWludENvbnRlbnRzSWZEaXJ0eShyZXBsaWNhTGF5ZXIpOworICAgICAgICBhcHBlbmRWaXNpYmxl
TGF5ZXIocmVwbGljYUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBpZiAocmVwbGljYUxh
eWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIo
KS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFz
a0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2ludCgpLCByZXBsaWNh
TGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAgICAgIHBhaW50
Q29udGVudHNJZkRpcnR5KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpOworICAgICAgICAgICAg
YXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3Qp
OwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXll
ckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKLSAgICBmb3Ig
KGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1
cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1
bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5k
ZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsK
KyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFj
ZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNo
cm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNl
KCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgQVNTRVJUKHJlbmRl
clN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKSk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJm
YWNlLT5kcmF3T3BhY2l0eSgpKTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnNldExh
eWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJT
dXJmYWNlKHJlbmRlclN1cmZhY2VMYXllcik7CisgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBsaWNh
Rm9yUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAg
ICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0
KCk7CiAgICAgICAgIEFTU0VSVChsYXllckxpc3Quc2l6ZSgpKTsKQEAgLTM5Miw2MCArNDg2LDI5
IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJM
aXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBBU1NFUlQobGF5ZXItPm9w
YWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkp
OwogCi0gICAgICAgICAgICBwYWludENvbnRlbnRzSWZEaXJ0eShsYXllcik7CisgICAgICAgICAg
ICBhcHBlbmRWaXNpYmxlTGF5ZXIobGF5ZXIsIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAg
fQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0Ojpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7Ci0gICAgZm9yIChpbnQgc3VyZmFjZUluZGV4
ID0gbV91cGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNl
SW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gbV91
cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Ci0gICAgICAgIFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZSA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVuZGVyU3VyZmFjZSgp
OwotICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFjZSk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJT
dXJmYWNlLT5sYXllckxpc3QoKS5zaXplKCkpOwotICAgICAgICBBU1NFUlQocmVuZGVyU3VyZmFj
ZS0+ZHJhd09wYWNpdHkoKSk7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFz
a0xheWVyKCkpCi0gICAgICAgICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRlclN1
cmZhY2VMYXllci0+bWFza0xheWVyKCksIGNvbnRleHQsIHVwZGF0ZXIpOwotCi0gICAgICAgIGlm
IChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpKSB7Ci0gICAgICAgICAgICB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCks
IGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAocmVuZGVy
U3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFza0xheWVyKCkpCi0gICAgICAgICAgICAg
ICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FM
YXllcigpLT5tYXNrTGF5ZXIoKSwgY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+
bGF5ZXJMaXN0KCk7Ci0gICAgICAgIEFTU0VSVChsYXllckxpc3Quc2l6ZSgpKTsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBsYXllckluZGV4ID0gMDsgbGF5ZXJJbmRleCA8IGxheWVyTGlzdC5zaXpl
KCk7ICsrbGF5ZXJJbmRleCkgewotICAgICAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBs
YXllckxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAobGF5ZXItPnJlbmRl
clN1cmZhY2UoKSAmJiBsYXllci0+cmVuZGVyU3VyZmFjZSgpICE9IHJlbmRlclN1cmZhY2UpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMobGF5ZXIsIGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICB9CisgICAgZm9yIChp
bnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXgg
Pj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1f
bGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKExheWVyQ2hyb21pdW0qIGxheWVyLCBH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKLXsK
LSAgICAvLyBGb3Igbm9ybWFsIGxheWVycywgdGhlc2UgY29uZGl0aW9ucyBzaG91bGQgaGF2ZSBh
bHJlYWR5IGJlZW4gY2hlY2tlZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVuZGVyIHN1cmZhY2UgbGF5
ZXIgbGlzdHMuCi0gICAgLy8gRm9yIG1hc2tzIGFuZCByZXBsaWNhcyBob3dldmVyLCB3ZSBtYXkg
c3RpbGwgbmVlZCB0byBjaGVjayB0aGVtIGhlcmUuCi0gICAgaWYgKGxheWVyLT5ib3VuZHMoKS5p
c0VtcHR5KCkgfHwgIWxheWVyLT5vcGFjaXR5KCkgfHwgIWxheWVyLT5kcmF3c0NvbnRlbnQoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
Y29udGV4dCwgdXBkYXRlcik7Ci19Ci0KIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpjbGVhclBlbmRp
bmdVcGRhdGUoKQogewotICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJbmRleCA9IDA7IHN1cmZhY2VJ
bmRleCA8IG1fdXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExh
eWVyQ2hyb21pdW0qIGxheWVyID0gbV91cGRhdGVMaXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7Cisg
ICAgbV9sYXllclVwZGF0ZUxpc3QuY2xlYXIoKTsKKworICAgIGZvciAoc2l6ZV90IHN1cmZhY2VJ
bmRleCA9IDA7IHN1cmZhY2VJbmRleCA8IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgp
OyArK3N1cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAgQVNTRVJU
KGxheWVyLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgICAgICBsYXllci0+Y2xlYXJSZW5kZXJTdXJm
YWNlKCk7CiAgICAgfQotICAgIG1fdXBkYXRlTGlzdC5jbGVhcigpOworICAgIG1fcmVuZGVyU3Vy
ZmFjZVVwZGF0ZUxpc3QuY2xlYXIoKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYgaW5mbykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmgKaW5kZXggZDgxNDE0OWM1NGIwNTNlY2VhNmZjYWUwNTYyNDQ0OGRk
MzExZDkxMS4uY2I2ZDlhZTE5OTZkMjljYTdmZDNiM2EwYzkxNzE3NDBmZDJkMTc2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTQ1LDcgKzQ1LDYgQEAgY2xhc3MgR3JDb250ZXh0
OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsOwotY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgTGF5
ZXJQYWludGVyQ2hyb21pdW07CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwpAQCAtMTc1LDkgKzE3
NCwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9v
bCk7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycygpOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRl
KCk7CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2b2lkIHByZXBh
cmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciopOworICAgIHZvaWQgcGFpbnRDb250ZW50cygpOwogCi0gICAgdm9pZCB1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAg
IHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5k
bGVyJik7CiAgICAgdm9pZCBhcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IENDU2Nyb2xsQW5kU2Nh
bGVTZXQmKTsKICAgICB2b2lkIHN0YXJ0UmF0ZUxpbWl0ZXIoR3JhcGhpY3NDb250ZXh0M0QqKTsK
ICAgICB2b2lkIHN0b3BSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwpAQCAtMTg3LDEz
ICsxODksNTAgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRl
OgorICAgIGNsYXNzIE5lZWRSZXNvdXJjZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBOZWVkUmVzb3VyY2VIYW5kbGVy
KCk7CisgICAgICAgIHZpcnR1YWwgfk5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICAgICAg
aW50IHJlc291cmNlcygpIHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBpbnQgbV9yZXNvdXJjZXM7CisgICAgfTsKKworICAgIGNsYXNzIFByZXBhcmVSZXNv
dXJjZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAg
cHVibGljOgorICAgICAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyKEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgICAgICB2aXJ0dWFsIH5QcmVwYXJlUmVzb3VyY2VI
YW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1f
Y29udGV4dDsKKyAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7CisgICAgfTsK
KworICAgIGNsYXNzIFBhaW50SGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBhaW50SGFuZGxlcihDQ1Byb3h5Kik7Cisg
ICAgICAgIHZpcnR1YWwgflBhaW50SGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAg
IENDUHJveHkqIG1fcHJveHk7CisgICAgfTsKKwogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IExheWVyTGlzdDsKIAotICAgIHZvaWQgcGFpbnRMYXllckNvbnRlbnRz
KGNvbnN0IExheWVyTGlzdCYpOwotICAgIHZvaWQgcGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRl
clN1cmZhY2UoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVyKExh
eWVyQ2hyb21pdW0qLCBMYXllckxpc3QmKTsKKyAgICB2b2lkIGFwcGVuZE1hc2tBbmRSZXBsaWNh
Rm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsK
KyAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJm
YWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKIAotICAgIHZvaWQgdXBkYXRl
TGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoTGF5ZXJDaHJvbWl1bSosIEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYp
OworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHBh
aW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRl
KCk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKQEAgLTIwOSw3ICsyNDgsOCBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBP
d25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExh
eWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAgICAgQ0NTZXR0aW5n
cyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTYyMzBlYWNkNTY4OWQ1YmVhNDJmMGQw
Y2RiOWM2Mzg1MzM3ODhhYS4uMWM1MzE3ZDJmYjBkMTdmYzE1NmY2MDBiZTU4ZmJjYzcyOTI3M2E5
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5X2gKIAog
I2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzgsNiArNzksOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgdXNp
bmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0IGJlIGNh
bGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhvb2tzCiAj
aWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBkZGMwMWMxNDA5YjhjOTEyOWQxY2Zh
MzkyN2M0NDEzOGRmZTVlYzU1Li45MzIxZTkwZTQwMGZlMjMxYzg0MzkyODVhNGViODU2NzBiMWVj
ZmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzEsNyAr
MzEsNiBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJl
ZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0xNDgsMTUgKzE0NywxOSBAQCB2b2lkIENDU2luZ2xlVGhy
ZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRv
Q29tbWl0KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworCisgICAg
Ly8gUHJlcGFyZSBjb21wb3NpdG9yIHJlc291cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3Qt
Pm5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpKQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnBy
ZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAg
bV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CisKICAgICAvLyBDb21taXQgaW1tZWRp
YXRlbHkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwotCisgICAgICAgIHdoaWxl
IChtX3RleHR1cmVVcGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCks
IDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1
cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsK
LSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRh
dGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAg
ICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2li
bGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFk
KG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogCkBAIC0yMDksNiArMjEyLDExIEBAIHZvaWQg
Q0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKIH0K
IAordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCit7CisgICAgbV90ZXh0dXJlVXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291
cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVs
aW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQog
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0y
NzMsNyArMjgxLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgp
CiB7CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbGF5ZXJU
cmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9V
cGRhdGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmgKaW5kZXggZWRhYjYxZjJjMDMyNzk2ZWM4NDIzNWI0MWI0ZWY3NzNhODIyOWYxMy4u
NmQ5YTEzYTNjNTcxZmJjNTBhN2M5YzMyNzZkNDIxMDI1MmZlMDhiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNjL0ND
Q29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgi
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw2
ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQg
b25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgfQpAQCAtODIsNiArODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0NvbnRl
eHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1cmlu
ZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7CisK
KyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNl
IGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5k
cyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA5ODQzNzBl
ZGE5NWM1MjNmNTllZTU1Yzg3YWM4Mjg3MWUwMmE3M2JiLi5hNjFjM2JiMzNmNmUyOWNiZWZhYjcz
MDAyNTA4NWQxMjA3NTM2YzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisj
aW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJl
LmgiCkBAIC0zNywyNSArMzgsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1DQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKLSAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKLSAgICAs
IG1fZW50cnlJbmRleCgwKQorQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcigpCiB7
Ci0gICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0KIAogQ0NUZXh0dXJlVXBkYXRlcjo6fkNDVGV4
dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIENDVGV4dHVyZVVwZGF0ZXI6OmFwcGVuZChNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdXBkYXRlciwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIENDVGV4
dHVyZVVwZGF0ZXI6OmFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsK
ICAgICBBU1NFUlQodGV4dHVyZSk7Ci0gICAgQVNTRVJUKHVwZGF0ZXIpOwogCiAgICAgVXBkYXRl
RW50cnkgZW50cnk7CiAgICAgZW50cnkubV90ZXh0dXJlID0gdGV4dHVyZTsKLSAgICBlbnRyeS5t
X3VwZGF0ZXIgPSB1cGRhdGVyOwogICAgIGVudHJ5Lm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7
CiAgICAgZW50cnkubV9kZXN0UmVjdCA9IGRlc3RSZWN0OwogICAgIG1fZW50cmllcy5hcHBlbmQo
ZW50cnkpOwpAQCAtNjgsMjMgKzY0LDIwIEBAIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6aGFzTW9y
ZVVwZGF0ZXMoKSBjb25zdAogCiBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogewotICAgIHNpemVfdCBtYXhJbmRl
eCA9IG1pbihtX2VudHJ5SW5kZXggKyBjb3VudCwgbV9lbnRyaWVzLnNpemUoKSk7Ci0gICAgZm9y
ICg7IG1fZW50cnlJbmRleCA8IG1heEluZGV4OyArK21fZW50cnlJbmRleCkgewotICAgICAgICBV
cGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXNbbV9lbnRyeUluZGV4XTsKLSAgICAgICAgZW50
cnkubV91cGRhdGVyLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvciwgZW50
cnkubV90ZXh0dXJlLCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOwotICAg
IH0KKyAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICBpZiAoIW1fZW50cmllcy5zaXplKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobWF4SW5kZXggPCBtX2VudHJp
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgVXBkYXRlRW50cnkmIGVu
dHJ5ID0gbV9lbnRyaWVzLmxhc3QoKTsKKyAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVS
ZWN0KGNvbnRleHQsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAg
ICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7CisgICAgfQogCi0gICAgLy8gSWYgbm8gZW50cmll
cyBsZWZ0IHRvIHByb2Nlc3MsIGF1dG8tY2xlYXIuCi0gICAgY2xlYXIoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIG1fZW50cmllcy5zaXplKCkgPiAwOwogfQogCiB2b2lkIENDVGV4
dHVyZVVwZGF0ZXI6OmNsZWFyKCkKIHsKLSAgICBtX2VudHJ5SW5kZXggPSAwOwogICAgIG1fZW50
cmllcy5jbGVhcigpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggMTdi
OGFhZmEwNmNlN2E2ZDIwYTBlNWZiNGM5MTRlNzJmYzkzOTRhMS4uYWI2NTllY2VlYWQ2ZGNjZjU2
YmQ4MzA4YTg2NGQ4MzRkMGVjODg1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApA
QCAtMjcsMjEgKzI3LDE5IEBACiAjZGVmaW5lIENDVGV4dHVyZVVwZGF0ZXJfaAogCiAjaW5jbHVk
ZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3ND
b250ZXh0M0Q7Ci1jbGFzcyBMYXllclRleHR1cmVVcGRhdGVyOwotY2xhc3MgTWFuYWdlZFRleHR1
cmU7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsK
IHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBD
Q1RleHR1cmVVcGRhdGVyKCk7CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKIAotICAgIHZvaWQg
YXBwZW5kKE1hbmFnZWRUZXh0dXJlKiwgTGF5ZXJUZXh0dXJlVXBkYXRlciosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIGFwcGVu
ZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgYm9vbCBoYXNNb3JlVXBkYXRlcygp
IGNvbnN0OwogCkBAIC01MCwxOCArNDgsMTMgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhcigp
OwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0
b3I7IH0KLQogcHJpdmF0ZToKICAgICBzdHJ1Y3QgVXBkYXRlRW50cnkgewotICAgICAgICBNYW5h
Z2VkVGV4dHVyZSogbV90ZXh0dXJlOwotICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyKiBtX3Vw
ZGF0ZXI7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIG1fdGV4dHVyZTsK
ICAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CiAgICAgICAgIEludFJlY3QgbV9kZXN0UmVj
dDsKICAgICB9OwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7Ci0gICAgc2l6
ZV90IG1fZW50cnlJbmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNzQ3YzhkZjEyY2UyYTkxODY4OWEx
NmFkNzcyZWZlZWFlZmU3NzBlYy4uYTkxM2MzNmM5MGNkZGU1MGU0MGFiNGMyZWNmMDM3OGQ5YzY5
NjM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNp
bmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVkVGhyZWFkUHJv
eHkuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTI5
Miw2ICsyOTEsMjAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX3N0YXJ0ZWQg
PSBmYWxzZTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVw
ZGF0ZSIsIHRoaXMsIDApOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KG1fc3RhcnRlZCk7CisKKyAgICBVcGRhdGVFbnRyeSogZW50cnkgPSBuZXcgVXBkYXRlRW50cnk7
CisgICAgZW50cnktPm1fdGV4dHVyZSA9IHRleHR1cmU7CisgICAgZW50cnktPm1fc291cmNlUmVj
dCA9IHNvdXJjZVJlY3Q7CisgICAgZW50cnktPm1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKworICAg
IENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMs
ICZDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKGVudHJ5KSkpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJl
bmRlcmluZ09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAg
ICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhy
ZWFkIiwgdGhpcywgMCk7CkBAIC0zNjcsNyArMzgwLDE3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6
YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2lu
VGltCiAgICAgLy8gdXBkYXRlTGF5ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7
CiAKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVl
SG9zdC0+cHJlcGFyZVRvVXBkYXRlKCk7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVk
c0NvbXBvc2l0b3JSZXNvdXJjZXMoKSkgeworICAgICAgICAvLyBJbml0aWFsaXplIGNvbXBvc2l0
b3IgcmVzb3VyY2VzIHJlcXVpcmUgZm9yIGZyYW1lLgorICAgICAgICBUUkFDRV9FVkVOVCgiYWxs
b2NhdGUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsK
KyAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVh
ZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29tcGxl
dGlvbi53YWl0KCk7CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRz
KCk7CiAKICAgICB7CiAgICAgICAgIC8vIE5vdGlmeSB0aGUgaW1wbCB0aHJlYWQgdGhhdCB0aGUg
YmVnaW5GcmFtZSBoYXMgY29tcGxldGVkLiBUaGlzIHdpbGwKQEAgLTM4NSw2ICs0MDgsMzkgQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJl
ciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZy
YW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lk
IENDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCogY29tcGxldGlvbikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94
eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25PbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBB
U1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQo
aXNJbXBsVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZCk7Cisg
ICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQZW5kaW5nKCkpOworICAg
IGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFy
ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBjb21w
bGV0aW9uLT5zaWduYWwoKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJl
T25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5KiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fY29tbWl0
Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkp
OworICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKG1fc2No
ZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQZW5kaW5nKCkpOworICAgIGlmICghbV9sYXllclRy
ZWVIb3N0SW1wbCkgeworICAgICAgICBkZWxldGUgZW50cnk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmFwcGVuZChlbnRyeS0+bV90
ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7CisKKyAgICBk
ZWxldGUgZW50cnk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0
aGlzLCAwKTsKQEAgLTM5OSwzNiArNDU1LDI4IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uCiAK
ICAgICBtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCA9IGNvbXBsZXRpb247CiAK
LSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1
cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KSk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5
ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgKm1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkKTsKLQogICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5iZWdpbkZyYW1lQ29tcGxl
dGUoKTsKIH0KIAogYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VVcGRhdGVzKCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOworICAgIHJldHVybiBtX3RleHR1cmVVcGRh
dGVyT25JbXBsVGhyZWFkLmhhc01vcmVVcGRhdGVzKCk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94
eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZF
TlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0
aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
OwogICAgIHN0YXRpYyBjb25zdCBpbnQgVXBkYXRlc1BlckZyYW1lID0gMTY7Ci0gICAgbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVzUGVy
RnJhbWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgp
CiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1p
dCIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCk7Ci0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+
aGFzTW9yZVVwZGF0ZXMoKSk7CisgICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLmhhc01vcmVVcGRhdGVzKCkpOwogICAgIEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVu
dE9uSW1wbFRocmVhZCk7CiAKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZC5jbGVhcigpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAog
CiAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+YmVnaW5Db21taXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuaAppbmRleCBlYmY0MzI4ODM5YzJhYTQxYjI5OTQyMjRiODE5Y2I4NGQzNTE0MzM1Li41
ZDdmYjNjOGNiMjQwN2Q5Y2IyMThkOTEwMzNhZDdkNjNiNWM1NTI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxl
ci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Ro
cmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtNjIsNiArNjMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFZpc2libGUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0KCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICAvLyBDQ0xheWVyVHJlZUhvc3RJ
bXBsQ2xpZW50IGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIG9uU3dhcEJ1ZmZlcnND
b21wbGV0ZU9uSW1wbFRocmVhZCgpOwpAQCAtNzgsNiArODAsMTIgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBDQ1RocmVhZFByb3h5KENDTGF5ZXJUcmVlSG9zdCopOwogCisgICAg
c3RydWN0IFVwZGF0ZUVudHJ5IHsKKyAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSogbV90ZXh0dXJlOworICAgICAgICBJbnRSZWN0IG1fc291cmNlUmVjdDsKKyAgICAgICAgSW50
UmVjdCBtX2Rlc3RSZWN0OworICAgIH07CisKICAgICAvLyBDYWxsZWQgb24gbWFpbiB0aHJlYWQK
ICAgICB2b2lkIGJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUg
ZnJhbWVCZWdpblRpbWUsIFBhc3NPd25QdHI8Q0NTY3JvbGxBbmRTY2FsZVNldD4pOwogICAgIHZv
aWQgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lKCk7CkBAIC05Miw2ICsxMDAsOCBAQCBwcml2YXRlOgog
ICAgIH07CiAgICAgUGFzc093blB0cjxDQ1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFu
ZENvbW1pdFRhc2tPbkltcGxUaHJlYWQoKTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRD
b21taXRUYXNrRnJvbUNDVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sq
Kik7CisgICAgdm9pZCBwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21wbGV0
aW9uRXZlbnQqKTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoVXBkYXRlRW50
cnkqKTsKICAgICB2b2lkIGJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRp
b25FdmVudCopOwogICAgIHZvaWQgcmVxdWVzdFJlYWRiYWNrT25JbXBsVGhyZWFkKFJlYWRiYWNr
UmVxdWVzdCopOwogICAgIHZvaWQgZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50Kik7CkBAIC0xMjgsMTAgKzEzOCwxMSBAQCBwcml2YXRlOgogCiAgICAgLy8g
U2V0IHdoZW4gdGhlIG1haW4gdGhyZWFkIGlzIHdhaXRpbmcgb24gYSBjb21taXQgdG8gY29tcGxl
dGUuCiAgICAgQ0NDb21wbGV0aW9uRXZlbnQqIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBs
VGhyZWFkOwotICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZDsKIAogICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxk
IHBvc3QgZGlkQ29tbWl0QW5kRHJhd0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29s
IG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOworCisgICAgQ0NU
ZXh0dXJlVXBkYXRlciBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAppbmRleCAyMjA5YzhhNGIxMDVlNzEwZTlkZjE4
ZDUwNmIzYzkwMzk1MTI1ZmI3Li4xOGZlZDI2ZTgzMzM0NThjZjA5YTkxYTJhNThkYzFjZTExZGI2
YjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcApAQCAtMjE5LDYgKzIxOSw3
IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1
bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAgICAgbV90aWxlci0+Y29udGVudFJlY3RUb1Rp
bGVJbmRpY2VzKGNvbnRlbnRSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOwogICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gbV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChjb250ZW50
UmVjdCk7CiAgICAgZmxvYXQgc2lnbiA9IEZsb2F0UXVhZChjb250ZW50UmVjdCkuaXNDb3VudGVy
Y2xvY2t3aXNlKCkgPyAtMSA6IDE7CisgICAgY29uc3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGVy
LT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNzQ29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGlj
c0NvbnRleHQzRDo6TkVBUkVTVDsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsg
KytqKSB7CiAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIHByZXZFZGdlWCA9IGNvbnRlbnRRdWFk
LmxlZnQoKTsKIApAQCAtMzQzLDYgKzM0NCw5IEBAIHZvaWQgQ0NUaWxlZExheWVySW1wbDo6ZHJh
d1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50CiAK
ICAgICAgICAgICAgIGlmICh0aWxlICYmIHRpbGUtPnRleHR1cmVJZCgpKSB7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRpbGUtPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3ND
b250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKSk7CisgICAgICAgICAgICAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikp
OworCiAgICAgICAgICAgICAgICAgbGF5ZXJSZW5kZXJlci0+ZHJhd1RleHR1cmVkUXVhZChnbG9i
YWxUcmFuc2Zvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aWxlUmVjdC53aWR0aCgpLCB0aWxlUmVjdC5oZWlnaHQoKSwgb3BhY2l0eSwgcXVhZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0t
PnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCBkMWRjZjVkODY2
ZjJmMTVjMTBlMjVhZjJmYWVlMjE1YmU5M2IyNzc5Li5hZWY1NzZmZGZkNjI3YmQ2ZTE2ZDA2YzMy
NWRhMWM2MmQwMjIwMjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTI2LDEzICsyNiwxNiBAQAogCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAKKyNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1
bS5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVkVGhyZWFkUHJveHkuaCIKKyNpbmNs
dWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3Rlc3Qv
Z3Rlc3QuaD4KICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRl
eHR1cmUuaCIKICNpbmNsdWRlICJNb2NrV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRl
ICJUZXh0dXJlTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKQEAgLTIyNyw2
ICsyMzAsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGltZW91dFRhc2sgPSAwOwogICAgIH0KIAor
ICAgIENDTGF5ZXJUcmVlSG9zdCogbGF5ZXJUcmVlSG9zdCgpIHsgcmV0dXJuIG1fbGF5ZXJUcmVl
SG9zdC5nZXQoKTsgfQorCiAKIHByb3RlY3RlZDoKICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KCkK
QEAgLTgyNiw0ICs4MzEsMjQwIEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJs
ZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xh
eWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0Jikg
eyB9CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0KK307CisKK2NsYXNzIFRlc3RP
cGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgeworcHVi
bGljOgorICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RU
ZXN0KiB0ZXN0KQorICAgICAgICA6IG1fdGVzdCh0ZXN0KQorICAgIHsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JikKKyAgICB7CisgICAgICAgIC8vIFNldCBsYXllciBvcGFjaXR5IHRvIDAuCisgICAgICAgIG1f
dGVzdC0+bGF5ZXJUcmVlSG9zdCgpLT5yb290TGF5ZXIoKS0+c2V0T3BhY2l0eSgwKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpIHsgfQorCitwcml2YXRlOgorICAgIEND
TGF5ZXJUcmVlSG9zdFRlc3QqIG1fdGVzdDsKK307CisKK2NsYXNzIENvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nIDogcHVibGljIENvbnRlbnRMYXllckNocm9taXVtIHsKK3B1
YmxpYzoKKyAgICBjbGFzcyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXll
clRleHR1cmVVcGRhdGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgICAgIHB1YmxpYzoKKyAg
ICAgICAgICAgIFRleHR1cmUoQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRh
dGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAgICAg
IDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVy
KHRleHR1cmVVcGRhdGVyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOyB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyLT5s
YXllcigpLT5uZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8q
IGRlc3RSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVw
ZGF0ZXItPmxheWVyKCktPnByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0
ZXItPmxheWVyKCktPnBhaW50Q29udGVudHNSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3Qg
SW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8p
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIo
KS0+dXBkYXRlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6CisgICAg
ICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgICAgIENv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgICAgICB9Owor
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyPiBj
cmVhdGUoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllclRleHR1
cmVVcGRhdGVyKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFu
YWdlciogbWFuYWdlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBUZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVy
biBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CisKKyAgICAgICAg
dmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIC8q
IHRleHR1cmVGb3JtYXQgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJl
Y3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxz
ICovKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xheWVyLT5wYWludENvbnRlbnRzKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
ZyogbGF5ZXIoKSB7IHJldHVybiBtX2xheWVyOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBl
eHBsaWNpdCBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZyAqbGF5ZXIpIDogbV9sYXllcihsYXllcikgeyB9CisKKyAgICAgICAg
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIG1fbGF5ZXI7CisgICAgfTsK
KworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJlcGFy
ZVJlY3QpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXll
clRyZWVIb3N0KikKKyAgICB7CisgICAgICAgIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIg
PSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOworICAgIH0KKyAgICB2
aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQorCisgICAgdm9pZCBwYWlu
dENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVudHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29u
dGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2b2lk
IHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJl
UmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHBh
aW50Q29udGVudHNSZWN0KCkgeyBtX3BhaW50Q29udGVudHNSZWN0Q291bnQrKzsgfQorICAgIGlu
dCBwYWludENvbnRlbnRzUmVjdENvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzUmVjdENv
dW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0K
KyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0K
KworICAgIGludCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBtX25lZWRQcmVwYXJlUmVjdDsg
fQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUsIGJvb2wgbmVlZFByZXBhcmVSZWN0
KQorICAgICAgICA6IENvbnRlbnRMYXllckNocm9taXVtKGRlbGVnYXRlKQorICAgICAgICAsIG1f
bmVlZFByZXBhcmVSZWN0KG5lZWRQcmVwYXJlUmVjdCkKKyAgICAgICAgLCBtX3BhaW50Q29udGVu
dHNDb3VudCgwKQorICAgICAgICAsIG1fcHJlcGFyZVJlY3RDb3VudCgwKQorICAgICAgICAsIG1f
cGFpbnRDb250ZW50c1JlY3RDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlUmVjdENvdW50KDAp
CisgICAgeworICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKKyAgICB9CisKKyAg
ICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fY29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXI7CisgICAgYm9vbCBtX25lZWRQcmVwYXJlUmVjdDsKKyAgICBpbnQgbV9wYWludENv
bnRlbnRzQ291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV9wYWlu
dENvbnRlbnRzUmVjdENvdW50OworICAgIGludCBtX3VwZGF0ZVJlY3RDb3VudDsKK307CisKKy8v
IExheWVyIG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29t
cG9zaXRvciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCitjbGFz
cyBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSA6IHB1YmxpYyBDQ0xheWVyVHJlZUhv
c3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSgp
CisgICAgICAgIDogbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKHRoaXMpCisgICAgICAgICwg
bV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5n
OjpjcmVhdGUoJm1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSwgdHJ1ZSkpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5zZXRSb290TGF5ZXIobV91cGRhdGVDaGVja0xheWVyKTsKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydChJbnRTaXplKDEwLCAxMCkpOworCisgICAgICAgIHBv
c3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9p
ZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgewor
ICAgICAgICBlbmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgp
CisgICAgeworICAgICAgICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgb25jZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRD
b250ZW50c0NvdW50KCkpOworCisgICAgICAgIC8vIHBhaW50Q29udGVudHNSZWN0KCkgc2hvdWxk
IGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFz
IHByZXBhcmVSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBy
ZXBhcmVSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+
cGFpbnRDb250ZW50c1JlY3RDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVz
IGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNr
TGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBk
YXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBUZXN0T3BhY2l0eUNoYW5nZUxheWVyRGVsZWdhdGUgbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVn
YXRlOworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4g
bV91cGRhdGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFj
aXR5Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQorCisv
LyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gbmVlZFByZXBhcmVSZWN0
KCkgcmV0dXJucyBmYWxzZS4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0
IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVl
SG9zdFRlc3ROb1ByZXBhcmVSZWN0KCkKKyAgICAgICAgOiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSwg
ZmFsc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAg
ICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1fdXBkYXRlQ2hlY2tM
YXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnQoSW50U2l6ZSgxMCwg
MTApKTsKKworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVl
SG9zdEltcGwqKQorICAgIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0
ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKKworICAgICAgICAvLyBwcmVwYXJl
UmVjdCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICAgICAgRVhQRUNUX0VRKDAs
IG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgICAgICAvLyB1
cGRhdGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8g
YW1vdW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9F
UShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAg
ICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBNb2NrTGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOworICAgIFJlZlB0
cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xh
eWVyOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LCBydW5N
dWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115881</attachid>
            <date>2011-11-18 15:02:34 -0800</date>
            <delta_ts>2011-11-18 15:17:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initialize-frame-resources.diff</filename>
            <type>text/plain</type>
            <size>87347</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IGZjMmEzZWIxMzFhZDI1ODM4MWU2Y2EwYmMwNzllOTRmNjU4NDIyYTIKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gTm92IDE0IDE3
OjMzOjI5IDIwMTEgLTA4MDAKCiAgICBJbml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHBy
aW9yIHRvIHBhaW50aW5nLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzIxOTIKICAgIAogICAgU291cmNlL1dlYkNvcmU6CiAgICAKICAgIFNwbGl0IGxheWVyIHVwZGF0
ZXMgaW50byB0d28gc3RlcHMuIFN0ZXAgb25lIGNhbGN1bGF0ZXMgdHJhbnNmb3JtcwogICAgYW5k
IHZpc2libGUgbGF5ZXIgYXJlYXMuIFN0ZXAgdHdvIHBhaW50cyBsYXllciBjb250ZW50cy4gVGhp
cwogICAgYWxsb3dzIHVzIHRvIHBlcmZvcm0gYSBjb21wb3NpdG9yIHJlc291cmNlIHByZXBhcmF0
aW9uIHN0ZXAgYWZ0ZXIKICAgIHZpc2libGUgbGF5ZXIgYXJlYXMgaGF2ZSBiZWVuIGNvbXB1dGVk
IGJ1dCBiZWZvcmUgYW55IHBhaW50aW5nCiAgICBoYXMgb2NjdXJyZWQuIExheWVyQ2hyb21pdW06
OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMgaXMgcmVwbGFjZWQKICAgIGJ5IExheWVyQ2hyb21p
dW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxsb3dzIHVzIHRvIGl0ZXJhdGUK
ICAgIG92ZXIgY29tcG9zaXRvciByZXNvdXJjZXMgZm9yIHZhcmlvdXMgcHVycG9zZXMuCiAgICAK
ICAgIE5vIG5ldyB0ZXN0cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDA3MWRl
NjQuLmYxMmMxZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+IHRleHR1cmUpCi0gICAgOiBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
KHRleHR1cmUpCisgICAgOiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1
cmUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQogewogfQpAQCAtNDUs
OSArNDUsMTAgQEAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRl
eHR1cmUoKQogewogfQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRh
dGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkp
OworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1
cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiBQYXNzUmVmUHRyPEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNy
ZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyLCBib29sIHVzZU1h
cFRleFN1YkltYWdlKQpAQCAtNzcsNyArNzgsNyBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1w
bGVkVGV4ZWxGb3JtYXQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZAog
ICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiB9CiAKLXZvaWQg
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRl
eGVscykKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50
cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGlu
dCBib3JkZXJUZXhlbHMpCiB7CiAgICAgbV90ZXhTdWJJbWFnZS5zZXRTdWJJbWFnZVNpemUodGls
ZVNpemUpOwogCkBAIC04OCwxNCArODksMTQgQEAgdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QKICAg
ICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6VGV4dE9wdGlvbiB0ZXh0T3B0aW9uID0KICAgICAg
ICAgYm9yZGVyVGV4ZWxzID8gUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OkdyYXlzY2FsZVRleHQg
OiBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlcjo6U3VicGl4ZWxUZXh0OwogICAgIFBsYXRmb3JtQ2Fu
dmFzOjpQYWludGVyIGNhbnZhc1BhaW50ZXIoJm1fY2FudmFzLCB0ZXh0T3B0aW9uKTsKLSAgICBw
YWludENvbnRlbnRzKCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QpOworICAg
IHBhaW50KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QpOwogfQogCi12b2lk
IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBk
YXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJl
KiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKICAgICBQbGF0Zm9ybUNhbnZhczo6QXV0b0xvY2tlciBsb2NrZXIoJm1fY2FudmFz
KTsKIAotICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAg
Y29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1
cmUtPnRleHR1cmVJZCgpKTsKICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxz
KCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQo
KSwgY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAppbmRleCA2NzVkZGRkLi5iZmM4YjRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00MCwxMiArNDAsMTIgQEAg
Y2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07CiAvLyBBIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIgd2l0aCBhbiBpbnRlcm5hbCBiaXRtYXAuCiBjbGFzcyBCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgot
ICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmly
dHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBCaXRtYXBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVy
ZVVwZGF0ZXI7IH0KQEAgLTU5LDggKzU5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVN
YW5hZ2VyKik7CiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJu
IExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFs
IFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZv
cm1hdCk7Ci0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwot
ICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9y
ZGVyVGV4ZWxzKTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhT
dWJJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAppbmRleCA0NDk0
NTg2Li4zOWQyZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTQ0LDYgKzQ0LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzMkRMYXllckNo
cm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9t
aXVtKiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK0NhbnZhczJETGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQg
Q2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJl
Y3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoKTsKK30KKwogUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzMkRMYXllckNocm9taXVtKGNvbnRleHQpKTsKQEAg
LTUyLDYgKzY2LDcgQEAgUGFzc1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDMKIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6Q2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQog
ICAgIDogQ2FudmFzTGF5ZXJDaHJvbWl1bSgwKQogICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisg
ICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9
CiAKQEAgLTY1LDcgKzgwLDcgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpIGNvbnN0CiAgICAgICAgICAgICAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCkt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJS
T1IpKTsKIH0KIAotdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgQ2Fu
dmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkKIHsKICAgICBp
ZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtODUsNiArMTAwLDExIEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0CiAgICAgcmVz
ZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OmZvckVh
Y2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxl
cikKK3sKKyAgICBoYW5kbGVyLmhhbmRsZShtX3VwZGF0ZXJUZXh0dXJlLmdldCgpLCBJbnRSZWN0
KCksIEludFJlY3QoKSk7Cit9CisKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpjb250ZW50
Q2hhbmdlZCgpCiB7CiAgICAgaWYgKGxheWVyVHJlZUhvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmgKaW5kZXggNDU3YmQ1Ni4uZTI1ZWU0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmgKQEAgLTQzLDE2ICs0MywzNiBAQCBjbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKIC8vIEEgbGF5ZXIgY29udGFpbmluZyBhbiBhY2NlbGVyYXRlZCAyZCBjYW52YXMKIGNs
YXNzIENhbnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsK
IHB1YmxpYzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVcGRhdGVyVGV4dHVyZShs
YXllcikpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsK
KworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAg
IHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJD
aHJvbWl1bSopOworCisgICAgICAgIENhbnZhczJETGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAg
ICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBjcmVh
dGUoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICB2aXJ0dWFsIH5DYW52YXMyRExheWVyQ2hyb21p
dW0oKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1Rl
eHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7Cisg
ICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6SGFuZGxlciYpOwogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ2FudmFzMkRMYXllckNocm9taXVtKEdyYXBoaWNzQ29u
dGV4dDNEKik7CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKKworICAgIFJlZlB0
cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggYTNlOGY3Yi4uOWI5NzY1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDYg
KzM2LDI0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6VGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJl
KSA6IG1fdGV4dHVyZSh0ZXh0dXJlKQoreworfQorCitDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp+VGV4dHVyZSgpCit7Cit9CisKK2Jvb2wgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKK3sKKyAgICByZXR1cm4gIW1fdGV4dHVy
ZS0+dGV4dHVyZUlkKCk7Cit9CisKK3ZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3Qg
SW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV90ZXh0dXJlLT5iaW5kVGV4dHVyZShj
b250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBh
aW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRlcikKIHsKQEAgLTQ1LDcgKzYzLDcgQEAgQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewog
fQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3ZvaWQgQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKIHsKICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtY29u
dGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggZmQ3OWEwNC4uZjZlMDU0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVw
ZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTM5LDEyICs0MCwyOCBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8v
IEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZhcy4KIGNsYXNzIENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBw
dWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKKworICAg
ICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJl
LmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVj
dCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBleHBsaWNpdCBU
ZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07CisKICAgICB2aXJ0
dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWMzNmEyZC4uMDBkMzg1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lk
IENvbnRlbnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICBUaWxlZExheWVy
Q2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdP
cHRpb24oKTsKIApAQCAtMTEyLDYgKzExMiwyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAor
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAg
IEFTU0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qg
PSB2aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSAm
JiBtX2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdz
Q29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggYjgzNGU2Ny4u
YzVlOWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9taXVtKCk7CiAKKyAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcAppbmRleCBlOTQ1ZTA2Li5lMDllYmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEZyYW1lQnVmZmVyKCk7CiAg
ICAgfkZyYW1lQnVmZmVyKCk7CiAKLSAgICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSopOworICAgIFNrQ2Fu
dmFzKiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqKTsKIAog
cHJpdmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwpAQCAtNjYsMTIgKzY2
LDEyIEBAIEZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQogICAgICAgICBtX2NvbnRleHQtPmRl
bGV0ZUZyYW1lYnVmZmVyKG1fZmJvKTsKIH0KIAotU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0
aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQorU2tDYW52YXMqIEZyYW1lQnVmZmVyOjpp
bml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSkKIHsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1fZmJvID0gbV9jb250ZXh0
LT5jcmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIHRleHR1cmUtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKG1fY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBjb250ZXh0LT5mcmFt
ZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNz
Q29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIHRleHR1cmUtPnRleHR1cmVJZCgpLCAwKTsKIAogICAgIC8vIENyZWF0ZSBhIHNraWEgZ3B1
IGNhbnZhcy4KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IG1fY29udGV4dC0+Z3JDb250ZXh0
KCk7CkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvcioKIH0gLy8gbmFtZXNw
YWNlCiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQot
ICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBk
YXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTEwNSw5ICsxMDUsMTAgQEAgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgp
CiB7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFs
bG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgQVNTRVJUKHRl
eHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1
cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiBQ
YXNzUmVmUHRyPEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4g
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKQEAgLTEzNSw3ICsxMzYsNyBA
QCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVy
OjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2Vk
VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpCiB7CiAgICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVjdCBH
TCBjb250ZXh0LgogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwpAQCAtMTQ0LDcg
KzE0NSw3IEBAIHZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvCiAKICAgICAvLyBDcmVhdGUgYW4gYWNj
ZWxlcmF0ZWQgY2FudmFzIHRvIGRyYXcgb24uCiAgICAgRnJhbWVCdWZmZXIgYnVmZmVyOwotICAg
IFNrQ2FudmFzKiBjYW52YXMgPSBidWZmZXIuaW5pdGlhbGl6ZShjb250ZXh0LCBhbGxvY2F0b3Is
IHRleHR1cmUpOworICAgIFNrQ2FudmFzKiBjYW52YXMgPSBidWZmZXIuaW5pdGlhbGl6ZShjb250
ZXh0LCB0ZXh0dXJlKTsKIAogICAgIGNhbnZhcy0+Y2xpcFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7
CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBk
ZXN0UmVjdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggOWQzNzY4Yy4uMzFlODNhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM2LDEyICszNiwxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1
YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRl
eHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTUsNyAr
NTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFs
IE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VG9wRG93bk9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2Ft
cGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRl
VGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdl
ZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIE1h
bmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCAwYmQ4MmFlLi5kNTYzMzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ5LDE5ICs0OSwzMyBAQCBw
dWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoSW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVy
ZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQor
ICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAgICAgICAgICAgICwgbV90ZXh0dXJl
VXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wg
bmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICFtX3RleHR1
cmUtPnRleHR1cmVJZCgpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8q
IGRlc3RSZWN0ICovKQorICAgICAgICB7CisgICAgICAgICAgICBtX3RleHR1cmUtPmJpbmRUZXh0
dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRv
ciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBBU1NFUlQo
dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51
cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgSW1hZ2VMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KIAor
ICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKICAgICAgICAgSW1hZ2VM
YXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOwogICAgIH07CiAKQEAgLTg1LDE0
ICs5OSwxNCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhl
bEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShj
b25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGludCAvKiBib3JkZXJUZXhlbHMgKi8pCisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
Y29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFnZS5z
ZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCiAgICAgewotICAgICAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0
b3IpOworICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgdGV4dHVyZS0+dGV4dHVyZUlkKCkpOwogCiAgICAgICAgIC8vIFNvdXJjZSByZWN0
IHNob3VsZCBuZXZlciBnbyBvdXRzaWRlIHRoZSBpbWFnZSBwaXhlbHMsIGV2ZW4gaWYgdGhpcwog
ICAgICAgICAvLyBpcyByZXF1ZXN0ZWQgYmVjYXVzZSB0aGUgdGV4dHVyZSBleHRlbmRzIG91dHNp
ZGUgdGhlIGltYWdlLgpAQCAtMTY4LDcgKzE4Miw3IEBAIHZvaWQgSW1hZ2VMYXllckNocm9taXVt
OjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiAgICAgc2V0T3BhcXVlKCFtX2NvbnRlbnRz
LT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKIH0KIAotdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwcmVwYXJl
VG9VcGRhdGVJZkRpcnR5KCkKIHsKICAgICBpZiAoIW1fZGlydHlSZWN0LmlzRW1wdHkoKSkgewog
ICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmlu
ZGV4IDFhZmNjZmUuLjhiYjlhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC01
Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyQ2hyb21pdW0oKTsK
IAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOwogCiAgICAgdm9pZCBzZXRDb250ZW50cyhJbWFnZSogaW1hZ2UpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllckNocm9taXVtLmgKaW5kZXggZjVjNDMxOC4uMzllZDliYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVtLmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhv
c3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAK
IGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0xNjEsOCArMTYxLDkgQEAgcHVibGljOgogCiAg
ICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkgbmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBk
ZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHko
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29u
dGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUo
KSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA0NTI1Y2U3Li40MGNjYTJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVy
ZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMzRC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1h
bmFnZWRUZXh0dXJlOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5h
Z2VyOwogCkBAIC00OCwxNCArNDgsMTggQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAg
dmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0gICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJl
KCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
KiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0g
MDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAg
IHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiAwOyB9CisgICAgICAg
IHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKyAgICB9OworCisgICAgY2xhc3Mg
SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9Owog
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9
IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAg
LTc4LDcgKzgyLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUg
Y29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVkIHRleGVsLgogICAgIC8vIElmIHRoZSBmb3Jt
YXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4K
ICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVu
dW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUo
Y29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVT
aXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6
ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8pIHsgfQogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCBkY2ZkNjNlLi4zYTVhNGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cApAQCAtNDgsMTIgKzQ4LDEyIEBAIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
On5Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkKIHsKIH0KIAotdm9pZCBTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyog
Ym9yZGVyVGV4ZWxzICovKQordm9pZCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXpl
JiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLykKIHsKICAgICBTa0NhbnZh
cyogY2FudmFzID0gbV9waWN0dXJlLmJlZ2luUmVjb3JkaW5nKGNvbnRlbnRSZWN0LndpZHRoKCks
IGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIHBsYXRmb3Jt
Q29udGV4dChjYW52YXMpOwogICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnBs
YXRmb3JtQ29udGV4dCk7Ci0gICAgcGFpbnRDb250ZW50cyhncmFwaGljc0NvbnRleHQsIGNvbnRl
bnRSZWN0KTsKKyAgICBwYWludChncmFwaGljc0NvbnRleHQsIGNvbnRlbnRSZWN0KTsKICAgICBt
X3BpY3R1cmUuZW5kUmVjb3JkaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA4OTFhNmQzLi5hOTRlNjQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4
ZWxzKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMpOwogICAg
IHZvaWQgZHJhd1BpY3R1cmUoU2tDYW52YXMqKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDZlMGYzY2IuLjdkZWNjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcApAQCAtMTU0LDEwICsxNTQsMTAgQEAgdm9pZCBUaWxlZExheWVyQ2hy
b21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQogICAgICAgICBp
c05vbkNvbXBvc2l0ZWRDb250ZW50KCkgPyBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhl
bHMgOiBDQ0xheWVyVGlsaW5nRGF0YTo6SGFzQm9yZGVyVGV4ZWxzKTsKIH0KIAotdm9pZCBUaWxl
ZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyJiBoYW5kbGVyKQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0
aW5nIHRvIGdldCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29t
ZSBpbnZhbGlkYXRlZCBtaWQtdXBkYXRlLgotICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVl
c3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpKQorICAgIGlm
IChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0eSgpIHx8ICFtX3Rp
bGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaW50IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbTsKQEAgLTE5NywxNiArMTk3LDkg
QEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgICAgIGlmIChwYWludE9mZnNldC55
KCkgKyBkZXN0UmVjdC5oZWlnaHQoKSA+IG1fcGFpbnRSZWN0LmhlaWdodCgpKQogICAgICAgICAg
ICAgICAgIENSQVNIKCk7CiAKLSAgICAgICAgICAgIHRpbGUtPm1hbmFnZWRUZXh0dXJlKCktPmJp
bmRUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCkpOwotICAgICAgICAgICAgY29u
c3QgR0MzRGludCBmaWx0ZXIgPSBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSA/IEdyYXBoaWNz
Q29udGV4dDNEOjpMSU5FQVIgOiBHcmFwaGljc0NvbnRleHQzRDo6TkVBUkVTVDsKLSAgICAgICAg
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0
ZXIpKTsKLSAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9N
QUdfRklMVEVSLCBmaWx0ZXIpKTsKLQotICAgICAgICAgICAgdXBkYXRlci5hcHBlbmQodGlsZS0+
dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgICAgICBoYW5kbGVyLmhh
bmRsZSh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQog
ICAgIH0KLQotICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVj
dFRvTGF5ZXJSZWN0KG1fcGFpbnRSZWN0KSk7CiB9CiAKIHZvaWQgVGlsZWRMYXllckNocm9taXVt
OjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uIHRpbGluZ09wdGlvbikKQEAgLTM3MCwxNiAr
MzYzLDkgQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QgPSBjb250ZW50
UmVjdDsKIAogICAgIG1fcGFpbnRSZWN0ID0gbV90aWxlci0+bGF5ZXJSZWN0VG9Db250ZW50UmVj
dChkaXJ0eUxheWVyUmVjdCk7Ci0gICAgaWYgKGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKSkKKyAg
ICBpZiAobV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBD
YWxsaW5nIHByZXBhcmVUb1VwZGF0ZSgpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGlj
aCBtYXkgaGF2ZSB0aGUgc2lkZQotICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRp
bmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8g
YmUgZGVsZXRlZC4KLSAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFj
a2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywKLSAgICAv
LyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBh
bGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgotICAgIFJlZlB0cjxMYXllclRleHR1cmVV
cGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7Ci0gICAgdGV4dHVyZVVwZGF0ZXIo
KS0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVyLT50aWxlU2l6ZSgpLCBtX3Rp
bGVyLT5oYXNCb3JkZXJUZXhlbHMoKSk7Ci0KICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGls
ZUluZGljZXMobV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20p
OwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgZm9y
IChpbnQgaSA9IGxlZnQ7IGkgPD0gcmlnaHQ7ICsraSkgewpAQCAtNDA1LDEzICszOTEsMjcgQEAg
dm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCkKICAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKIAogICAgICAgICAg
ICAgdGlsZS0+bV91cGRhdGVSZWN0ID0gc291cmNlUmVjdDsKLSAgICAgICAgICAgIGlmIChzb3Vy
Y2VSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAg
ICAgdGlsZS0+dGV4dHVyZSgpLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKKyAgICAgICAgICAg
IHRpbGUtPmNsZWFyRGlydHkoKTsKICAgICAgICAgfQogICAgIH0KIH0KIAordm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit7
CisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkg
fHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwgbV9wYWludFJlY3QuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBDYWxsaW5nIHBhaW50Q29udGVudHMoKSBjYWxscyBpbnRvIFdl
YktpdCB0byBwYWludCwgd2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKKyAgICAvLyBlZmZlY3Qgb2Yg
ZGlzYWJsaW5nIGNvbXBvc2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUg
dGV4dHVyZSB1cGRhdGVyIHRvIGJlIGRlbGV0ZWQuCisgICAgLy8gSG93ZXZlciwgd2UgY2FuJ3Qg
ZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFp
bnQgZmluaXNoZXMsCisgICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRv
IGhvbGQgdGhlIHVwZGF0ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KKyAgICBS
ZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOwor
ICAgIHRleHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHMobV9wYWludFJlY3QsIG1fdGlsZXIt
PnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpKTsKKworICAgIG1fdXBkYXRl
UmVjdCA9IEZsb2F0UmVjdChtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KG1fcGFpbnRS
ZWN0KSk7Cit9CisKKwogfQogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmgKaW5kZXggNWRhZjBmMC4uY2ZkZGZjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmgKQEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB+VGlsZWRMYXllckNocm9taXVtKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXIm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1
cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKik7CkBAIC02
NSw4ICs2NSwxMCBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBTZXQgaW52YWxpZGF0aW9ucyB0byBi
ZSBwb3RlbnRpYWxseSByZXBhaW50ZWQgZHVyaW5nIHVwZGF0ZSgpLgogICAgIHZvaWQgaW52YWxp
ZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwotICAgIC8vIFByZXBhcmUgZGF0
YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJl
Y3QuCisgICAgLy8gUHJlcGFyZSB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0
aCBjb250ZW50UmVjdC4KICAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCk7CisgICAgLy8gUGFpbnQgY29udGVudHMgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0
dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgorICAgIHZvaWQgcGFpbnRDb250
ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJv
dGVjdFZpc2libGVUaWxlVGV4dHVyZXMoKTsKIApAQCAtODMsNyArODUsNyBAQCBwcml2YXRlOgog
CiAgICAgVGV4dHVyZU1hbmFnZXIqIHRleHR1cmVNYW5hZ2VyKCkgY29uc3Q7CiAKLSAgICAvLyBU
ZW1wb3Jhcnkgc3RhdGUgaGVsZCBiZXR3ZWVuIHByZXBhcmVUb1VwZGF0ZSgpIGFuZCB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKCkuCisgICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2Vl
biBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgcGFpbnRDb250ZW50cygpLgogICAgIEludFJlY3QgbV9y
ZXF1ZXN0ZWRVcGRhdGVSZWN0OwogICAgIC8vIFN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9V
cGRhdGUoKSBhbmQgcHVzaFByb3BlcnRpZXNUbygpLiBUaGlzIHJlcHJlc2VudHMgdGhlIGFyZWEK
ICAgICAvLyBvZiB0aGUgbGF5ZXIgdGhhdCBpcyBhY3R1YWxseSByZS1wYWludGVkIGJ5IFdlYktp
dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IGU2YmM3NzUuLjRkYzk2MTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Zp
ZGVvTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcApAQCAtNDAsMTEgKzQwLDM0IEBACiAj
aW5jbHVkZSAiVmlkZW9GcmFtZUNocm9taXVtLmgiCiAjaW5jbHVkZSAiVmlkZW9GcmFtZVByb3Zp
ZGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1
cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NWaWRlb0xheWVySW1wbC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK1ZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0
ZXJUZXh0dXJlKFZpZGVvTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVy
KQoreworfQorCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRl
eHR1cmUoKQoreworfQorCitib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
Om5lZWRQcmVwYXJlUmVjdCgpCit7CisgICAgcmV0dXJuIG1fbGF5ZXItPm5lZWRQcmVwYXJlQ29t
cG9zaXRvclJlc291cmNlcygpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRl
clRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNv
bnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnByZXBhcmVDb21w
b3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7Cit9CisKK3ZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhjb250ZXh0KTsKK30KKwogUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFt
ZVByb3ZpZGVyKiBwcm92aWRlcikKIHsKQEAgLTU3LDYgKzgwLDkgQEAgVmlkZW9MYXllckNocm9t
aXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9G
cmFtZVByb3YKICAgICAsIG1fZnJhbWVGb3JtYXQoVmlkZW9GcmFtZUNocm9taXVtOjpJbnZhbGlk
KQogICAgICwgbV9wcm92aWRlcihwcm92aWRlcikKICAgICAsIG1fcGxhbmVzKDApCisgICAgLCBt
X2ZyYW1lKDApCisgICAgLCBtX25lZWRQcmVwYXJlKGZhbHNlKQorICAgICwgbV91cGRhdGVyVGV4
dHVyZShVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKHRoaXMpKQogewogfQogCkBAIC03Nyw4ICsxMDMs
MTIgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogICAgICAg
ICBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS5jbGVhcigpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVmlkZW9MYXllckNocm9taXVt
OjpwcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCkKIHsKKyAgICBtX25lZWRQcmVwYXJlID0gZmFsc2U7
CisgICAgbV91cGRhdGVSZWN0ID0gSW50UmVjdCgpOworICAgIEFTU0VSVCghbV9mcmFtZSk7CisK
ICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29udGVudCgpKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTk1LDQ4ICsxMjUsODggQEAgdm9pZCBWaWRlb0xheWVyQ2hy
b21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIEMKIAogICAgIG1fcGxhbmVzID0gMDsKICAgICBtX3NraXBzRHJhdyA9IGZhbHNlOwotCi0g
ICAgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSA9IG1fcHJvdmlkZXItPmdldEN1cnJlbnRGcmFt
ZSgpOwotICAgIGlmICghZnJhbWUpIHsKKyAgICBtX2ZyYW1lID0gbV9wcm92aWRlci0+Z2V0Q3Vy
cmVudEZyYW1lKCk7CisgICAgaWYgKCFtX2ZyYW1lKSB7CiAgICAgICAgIG1fc2tpcHNEcmF3ID0g
dHJ1ZTsKLSAgICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZnJhbWVGb3JtYXQgPSBmcmFtZS0+Zm9ybWF0KCk7
Ci0gICAgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCA9IGRldGVybWluZVRleHR1cmVGb3JtYXQoZnJh
bWUpOworICAgIG1fZnJhbWVGb3JtYXQgPSBtX2ZyYW1lLT5mb3JtYXQoKTsKKyAgICBHQzNEZW51
bSB0ZXh0dXJlRm9ybWF0ID0gZGV0ZXJtaW5lVGV4dHVyZUZvcm1hdChtX2ZyYW1lKTsKICAgICBp
ZiAodGV4dHVyZUZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9WQUxVRSkgewog
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG90aGVyIHBhdGhzLgogICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgICAgICBtX3NraXBzRHJhdyA9IHRydWU7Ci0gICAgICAgIG1fcHJvdmlk
ZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7CisgICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJl
bnRGcmFtZShtX2ZyYW1lKTsKKyAgICAgICAgbV9mcmFtZSA9IDA7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICAvLyBBbGxvY2F0ZSB0ZXh0dXJlcyBmb3IgcGxhbmVzIGlmIHRoZXkgYXJl
IG5vdCBhbGxvY2F0ZWQgYWxyZWFkeSwgb3IKICAgICAvLyByZWFsbG9jYXRlIHRleHR1cmVzIHRo
YXQgYXJlIHRoZSB3cm9uZyBzaXplIGZvciB0aGUgZnJhbWUuCi0gICAgYm9vbCB0ZXh0dXJlc1Jl
c2VydmVkID0gcmVzZXJ2ZVRleHR1cmVzKGZyYW1lLCB0ZXh0dXJlRm9ybWF0KTsKKyAgICBib29s
IHRleHR1cmVzUmVzZXJ2ZWQgPSByZXNlcnZlVGV4dHVyZXMobV9mcmFtZSwgdGV4dHVyZUZvcm1h
dCk7CiAgICAgaWYgKCF0ZXh0dXJlc1Jlc2VydmVkKSB7CiAgICAgICAgIG1fc2tpcHNEcmF3ID0g
dHJ1ZTsKLSAgICAgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKGZyYW1lKTsKKyAgICAg
ICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOworICAgICAgICBtX2ZyYW1l
ID0gMDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBs
YW5lcy4KLSAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVz
KCk7IHBsYW5lKyspIHsKKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBib3VuZHMoKSk7CisgICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKKworICAgIC8vIENoZWNrIGlm
IHdlIG5lZWQgdG8gYWxsb2NhdGUgdGV4dHVyZSBwbGFuZXMuCisgICAgZm9yICh1bnNpZ25lZCBw
bGFuZSA9IDA7IHBsYW5lIDwgbV9mcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKKyAgICAgICAg
VGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOworICAgICAgICBBU1NFUlQodGV4
dHVyZS5tX3RleHR1cmUpOworICAgICAgICBpZiAoIXRleHR1cmUubV90ZXh0dXJlLT50ZXh0dXJl
SWQoKSkgeworICAgICAgICAgICAgbV9uZWVkUHJlcGFyZSA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06Om5l
ZWRQcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcygpCit7CisgICAgcmV0dXJuIG1fbmVlZFByZXBh
cmUgJiYgIW1fc2tpcHNEcmF3OworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHJlcGFy
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBBU1NFUlQobV9mcmFtZSk7CisKKyAgICAvLyBB
bGxvY2F0ZSB0ZXh0dXJlIHBsYW5lcy4KKyAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxh
bmUgPCBtX2ZyYW1lLT5wbGFuZXMoKTsgcGxhbmUrKykgewogICAgICAgICBUZXh0dXJlJiB0ZXh0
dXJlID0gbV90ZXh0dXJlc1twbGFuZV07CiAgICAgICAgIEFTU0VSVCh0ZXh0dXJlLm1fdGV4dHVy
ZSk7Ci0gICAgICAgIEFTU0VSVChmcmFtZS0+cmVxdWlyZWRUZXh0dXJlU2l6ZShwbGFuZSkgPT0g
dGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKSk7Ci0gICAgICAgIHVwZGF0ZVRleHR1cmUoY29udGV4
dCwgdXBkYXRlci5hbGxvY2F0b3IoKSwgdGV4dHVyZSwgZnJhbWUtPmRhdGEocGxhbmUpKTsKKyAg
ICAgICAgQVNTRVJUKG1fZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IHRleHR1
cmUubV90ZXh0dXJlLT5zaXplKCkpOworICAgICAgICBhbGxvY2F0ZVRleHR1cmUoY29udGV4dCwg
YWxsb2NhdG9yLCB0ZXh0dXJlKTsKICAgICB9CiAKLSAgICBtX3BsYW5lcyA9IGZyYW1lLT5wbGFu
ZXMoKTsKKyAgICBtX3BsYW5lcyA9IG1fZnJhbWUtPnBsYW5lcygpOwogICAgIEFTU0VSVChtX3Bs
YW5lcyA8PSBNYXhQbGFuZXMpOworfQogCi0gICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYm91bmRzKCkpOwotICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7Cit2b2lkIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dCkKK3sKKyAgICBpZiAobV91cGRhdGVSZWN0LmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fZnJhbWUpOwogCi0gICAgbV9wcm92aWRlci0+cHV0
Q3VycmVudEZyYW1lKGZyYW1lKTsKKyAgICAvLyBVcGRhdGUgdGV4dHVyZSBwbGFuZXMuCisgICAg
Zm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9mcmFtZS0+cGxhbmVzKCk7IHBsYW5l
KyspIHsKKyAgICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOworICAg
ICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIHRleHR1cmUsIG1fZnJhbWUtPmRhdGEocGxhbmUp
KTsKKyAgICB9CisKKyAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9mcmFtZSk7Cisg
ICAgbV9mcmFtZSA9IDA7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7
CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJ
bnRSZWN0KCkpOwogfQogCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNU
byhDQ0xheWVySW1wbCogbGF5ZXIpCkBAIC0yNDUsMTIgKzMxNSwyMCBAQCBJbnRTaXplIFZpZGVv
TGF5ZXJDaHJvbWl1bTo6Y29tcHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1
bSogZnJhbWUsCiAgICAgcmV0dXJuIEludFNpemUodmlzaWJsZVdpZHRoLCB2aXNpYmxlSGVpZ2h0
KTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZSYg
dGV4dHVyZSwgY29uc3Qgdm9pZCogZGF0YSkgY29uc3QKK3ZvaWQgVmlkZW9MYXllckNocm9taXVt
OjphbGxvY2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZSYgdGV4dHVyZSkgY29uc3QKIHsKICAgICBBU1NFUlQo
Y29udGV4dCk7CiAgICAgQVNTRVJUKHRleHR1cmUubV90ZXh0dXJlKTsKLQogICAgIHRleHR1cmUu
bV90ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCit2b2lkIFZp
ZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgVGV4dHVyZSYgdGV4dHVyZSwgY29uc3Qgdm9pZCogZGF0YSkgY29uc3QKK3sKKyAgICBBU1NF
UlQoY29udGV4dCk7CisgICAgQVNTRVJUKHRleHR1cmUubV90ZXh0dXJlKTsKKyAgICBBU1NFUlQo
dGV4dHVyZS5tX3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKworICAgIGNvbnRleHQtPmJpbmRUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4
dHVyZUlkKCkpOwogCiAgICAgR0MzRGVudW0gZm9ybWF0ID0gdGV4dHVyZS5tX3RleHR1cmUtPmZv
cm1hdCgpOwogICAgIEludFNpemUgZGltZW5zaW9ucyA9IHRleHR1cmUubV90ZXh0dXJlLT5zaXpl
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDQ5MDU3MjIuLjQwMzhmNjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw2ICs0MywyNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBBIExheWVyIHRoYXQgY29udGFpbnMgYSBWaWRlbyBlbGVtZW50LgogY2xh
c3MgVmlkZW9MYXllckNocm9taXVtIDogcHVibGljIExheWVyQ2hyb21pdW0gewogcHVibGljOgor
ICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VXBkYXRlclRl
eHR1cmU+IGNyZWF0ZShWaWRlb0xheWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAg
ICAgIH0KKworICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZp
cnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoVmlkZW9MYXllckNocm9taXVtKik7CisKKyAg
ICAgICAgVmlkZW9MYXllckNocm9taXVtKiBtX2xheWVyOworICAgIH07CiAKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0g
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRl
b0ZyYW1lUHJvdmlkZXIqID0gMCk7CkBAIC01MCw3ICs3MCwxMiBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQz
RCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICBib29sIG5lZWRQcmVwYXJlQ29tcG9zaXRvclJl
c291cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCB1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFy
ZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJl
c291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNl
UHJvdmlkZXIoKTsKQEAgLTc0LDcgKzk5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgSW50U2l6
ZSBjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwgdW5zaWduZWQg
cGxhbmUpOwogICAgIGJvb2wgdGV4dHVyZXNWYWxpZCgpOwogICAgIGJvb2wgcmVzZXJ2ZVRleHR1
cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSosIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwot
ICAgIHZvaWQgdXBkYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0
b3IqLCBUZXh0dXJlJiwgY29uc3Qgdm9pZCopIGNvbnN0OworICAgIHZvaWQgYWxsb2NhdGVUZXh0
dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmUmKSBjb25z
dDsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlJiwg
Y29uc3Qgdm9pZCopIGNvbnN0OwogCiAgICAgdm9pZCByZXNldEZyYW1lUGFyYW1ldGVycygpOwog
CkBAIC04NSw2ICsxMTEsMTEgQEAgcHJpdmF0ZToKICAgICBlbnVtIHsgTWF4UGxhbmVzID0gMyB9
OwogICAgIFRleHR1cmUgbV90ZXh0dXJlc1tNYXhQbGFuZXNdOwogICAgIHVuc2lnbmVkIG1fcGxh
bmVzOworCisgICAgVmlkZW9GcmFtZUNocm9taXVtKiBtX2ZyYW1lOworICAgIGJvb2wgbV9uZWVk
UHJlcGFyZTsKKworICAgIFJlZlB0cjxVcGRhdGVyVGV4dHVyZT4gbV91cGRhdGVyVGV4dHVyZTsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDI3NmYzYzkuLjdm
ZTQzZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtMzksOSArMzksMjQg
QEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVy
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorV2ViR0xMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoV2ViR0xMYXllckNocm9taXVtKiBs
YXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCit7Cit9CisKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6
VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCit7Cit9CisKK3ZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYg
LyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cyhjb250ZXh0KTsKK30KKwogUGFzc1JlZlB0cjxXZWJHTExheWVyQ2hyb21pdW0+IFdlYkdMTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJHTExheWVyQ2hyb21pdW0oZGVsZWdhdGUpKTsKQEAgLTUyLDYg
KzY3LDcgQEAgV2ViR0xMYXllckNocm9taXVtOjpXZWJHTExheWVyQ2hyb21pdW0oQ0NMYXllckRl
bGVnYXRlKiBkZWxlZ2F0ZSkKICAgICAsIG1fdGV4dHVyZUNoYW5nZWQodHJ1ZSkKICAgICAsIG1f
dGV4dHVyZVVwZGF0ZWQoZmFsc2UpCiAgICAgLCBtX2RyYXdpbmdCdWZmZXIoMCkKKyAgICAsIG1f
dXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAt
NjYsNyArODIsNyBAQCBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29u
c3QKICAgICByZXR1cm4gKGNvbnRleHQoKSAmJiBjb250ZXh0KCktPmdldEV4dGVuc2lvbnMoKS0+
Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJP
Uik7CiB9CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXIm
KQordm9pZCBXZWJHTExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3Jh
cGhpY3NDb250ZXh0M0QqIHJlbmRlcmVyQ29udGV4dCkKIHsKICAgICBpZiAoIWRyYXdzQ29udGVu
dCgpKQogICAgICAgICByZXR1cm47CkBAIC05NSw2ICsxMTEsMTEgQEAgdm9pZCBXZWJHTExheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIHJl
bmRlcmVyQ28KICAgICB9CiB9CiAKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCit7
CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJ
bnRSZWN0KCkpOworfQorCiBib29sIFdlYkdMTGF5ZXJDaHJvbWl1bTo6cGFpbnRSZW5kZXJlZFJl
c3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7CiAgICAgaWYgKG1fdGV4
dHVyZVVwZGF0ZWQgfHwgIWxheWVyUmVuZGVyZXJDb250ZXh0KCkgfHwgIWRyYXdzQ29udGVudCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRleCA2Mzc0YjllLi5jMzNiNGQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVkZSAi
Q2FudmFzTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkRyYXdpbmdCdWZmZXIuaCIKKyNpbmNs
dWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDUsMTIgKzQ2LDMwIEBAIGNsYXNzIFdlYkdMTGF5ZXJDaHJvbWl1bVJhdGVMaW1pdFRhc2s7CiAv
LyBBIExheWVyIGNvbnRhaW5pbmcgYSBXZWJHTCBjYW52YXMKIGNsYXNzIFdlYkdMTGF5ZXJDaHJv
bWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9taXVtIHsKIHB1YmxpYzoKKyAgICBjbGFzcyBV
cGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVh
dGUoV2ViR0xMYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAgICB9CisKKyAg
ICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxp
Y2l0IFVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSopOworCisgICAgICAgIFdlYkdM
TGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViR0xMYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDApOwogCiAgICAg
dmlydHVhbCB+V2ViR0xMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3ND
b250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKik7CisgICAgdmlydHVhbCB2
b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxl
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgpOwogICAgIGJvb2wgcGFpbnRS
ZW5kZXJlZFJlc3VsdHNUb0NhbnZhcyhJbWFnZUJ1ZmZlciopOwogCkBAIC03MSw2ICs5MCw4IEBA
IHByaXZhdGU6CiAgICAgLy8gQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgaGVyZSwgYmVjYXVzZSB0
aGUgRHJhd2luZ0J1ZmZlciBhbHJlYWR5IGhvbGRzCiAgICAgLy8gYSByZWZlcmVuY2UgdG8gdGhl
IFdlYkdMTGF5ZXJDaHJvbWl1bS4KICAgICBEcmF3aW5nQnVmZmVyKiBtX2RyYXdpbmdCdWZmZXI7
CisKKyAgICBSZWZQdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCBiYWU2ZmIzLi41ODk5YmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTM0LDExICszNCw1OCBAQAogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCisjaW5j
bHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaHJlYWRQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0ND
TGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6TmVlZFJlc291cmNlSGFuZGxlcigp
CisgICAgOiBtX3Jlc291cmNlcygwKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNv
dXJjZUhhbmRsZXI6On5OZWVkUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25z
dCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBh
cmVSZWN0KCkpCisgICAgICAgIG1fcmVzb3VyY2VzKys7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6
UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6UHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCit7Cit9CisKK0ND
TGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6flByZXBhcmVSZXNvdXJjZUhh
bmRsZXIoKQoreworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFu
ZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlm
ICh0ZXh0dXJlLT5uZWVkUHJlcGFyZVJlY3QoKSkKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJl
Y3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCitD
Q0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6UGFpbnRIYW5kbGVyKENDUHJveHkqIHByb3h5
KQorICAgIDogbV9wcm94eShwcm94eSkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhh
bmRsZXI6On5QYWludEhhbmRsZXIoKQoreworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6UGFp
bnRIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7Cisg
ICAgdGV4dHVyZS0+cGFpbnRDb250ZW50c1JlY3Qoc291cmNlUmVjdCk7CisgICAgbV9wcm94eS0+
dXBkYXRlKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwogUGFzc1JlZlB0cjxD
Q0xheWVyVHJlZUhvc3Q+IENDTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKENDTGF5ZXJUcmVlSG9zdENs
aWVudCogY2xpZW50LCBjb25zdCBDQ1NldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICBSZWZQdHI8
Q0NMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0ID0gYWRvcHRSZWYobmV3IENDTGF5ZXJUcmVl
SG9zdChjbGllbnQsIHNldHRpbmdzKSk7CkBAIC0yOTQsNyArMzQxLDcgQEAgdm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OmNvbXBvc2l0ZSgpCiAgICAgc3RhdGljX2Nhc3Q8Q0NTaW5nbGVUaHJlYWRQcm94
eSo+KG1fcHJveHkuZ2V0KCkpLT5jb21wb3NpdGVJbW1lZGlhdGVseSgpOwogfQogCi12b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVw
YXJlVG9VcGRhdGUoKQogewogICAgIGlmICghcm9vdExheWVyKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTMwMiwxMiArMzQ5LDEyIEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMo
KQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgcHJlcGFyZVRvVXBkYXRlKHJvb3RM
YXllcigpKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNo
cm9taXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRl
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXll
clRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAogICAgIGlmICghcm9vdExh
eWVyLT5yZW5kZXJTdXJmYWNlKCkpCiAgICAgICAgIHJvb3RMYXllci0+Y3JlYXRlUmVuZGVyU3Vy
ZmFjZSgpOwpAQCAtMzE2LDI0ICszNjMsNzcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0
ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgSW50UmVjdCByb290Q2xpcFJl
Y3QoSW50UG9pbnQoKSwgdmlld3BvcnRTaXplKCkpOwogICAgIHJvb3RMYXllci0+c2V0Q2xpcFJl
Y3Qocm9vdENsaXBSZWN0KTsKIAotICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMgd2Fzbid0IGNhbGxlZCBhZnRlcgotICAgIC8vIHVwZGF0ZUxheWVy
cy4gT25seSBvbmUgdXBkYXRlIGNhbiBiZSBwZW5kaW5nIGF0IGFueSBnaXZlbiB0aW1lLgotICAg
IEFTU0VSVCghbV91cGRhdGVMaXN0LnNpemUoKSk7Ci0gICAgbV91cGRhdGVMaXN0LmFwcGVuZChy
b290TGF5ZXIpOworICAgIC8vIFRoaXMgYXNzZXJ0IGZpcmVzIGlmIGNvbW1pdENvbXBsZXRlIHdh
c24ndCBjYWxsZWQgYWZ0ZXIKKyAgICAvLyBwcmVwYXJlVG9VcGRhdGUuIE9ubHkgb25lIHVwZGF0
ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICBBU1NFUlQoIW1fcmVuZGVy
U3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpICYmICFtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkpOwor
ICAgIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QuYXBwZW5kKHJvb3RMYXllcik7CiAKICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJvb3RSZW5kZXJTdXJmYWNlID0gcm9vdExheWVyLT5yZW5k
ZXJTdXJmYWNlKCk7CiAgICAgcm9vdFJlbmRlclN1cmZhY2UtPmNsZWFyTGF5ZXJMaXN0KCk7CiAK
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICB7Ci0gICAgICAg
IFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVyczo6Y2FsY0RyYXdFdGMi
LCB0aGlzLCAwKTsKLSAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlkZW50aXR5TWF0
cml4LCBpZGVudGl0eU1hdHJpeCwgbV91cGRhdGVMaXN0LCByb290UmVuZGVyU3VyZmFjZS0+bGF5
ZXJMaXN0KCksIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7Cisg
ICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZTo6Y2Fs
Y0RyYXdFdGMiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxj
dWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdExheWVyLCByb290TGF5ZXIsIGlk
ZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwg
cm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkubWF4VGV4dHVyZVNpemUpOwogICAgIH0KIAotICAgIHBhaW50TGF5ZXJDb250ZW50cyhtX3Vw
ZGF0ZUxpc3QpOworICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRl
TGlzdCwgbV9sYXllclVwZGF0ZUxpc3QpOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1f
bGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRl
eCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xh
eWVySW5kZXhdLmdldCgpOworICAgICAgICBsYXllci0+cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
OworICAgIH0KK30KKworYm9vbCBDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzQ29tcG9zaXRvclJlc291
cmNlcygpCit7CisgICAgTmVlZFJlc291cmNlSGFuZGxlciBoYW5kbGVyOworICAgIGZvckVhY2hD
b21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CisgICAgcmV0dXJuIGhhbmRsZXIucmVzb3VyY2Vz
KCk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVu
ZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIpCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBUUkFDRV9FVkVO
VCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyIsIHRoaXMsIDAp
OworICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcihjb250ZXh0LCBhbGxvY2F0b3Ip
OworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7Cit9CisKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RMYXllcigpKTsKK30KKwordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVy
KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMiLCB0
aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5z
aXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5
ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsK
KyAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisKKyAgICAgICAgUGFpbnRI
YW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIH0KK30KKwordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJMaXN0JiB1
cGRhdGVMaXN0KQoreworICAgIC8vIEZvciBub3JtYWwgbGF5ZXJzLCB0aGVzZSBjb25kaXRpb25z
IHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBjaGVja2VkIHdoaWxlIGNyZWF0aW5nIHRoZSByZW5k
ZXIgc3VyZmFjZSBsYXllciBsaXN0cy4KKyAgICAvLyBGb3IgbWFza3MgYW5kIHJlcGxpY2FzIGhv
d2V2ZXIsIHdlIG1heSBzdGlsbCBuZWVkIHRvIGNoZWNrIHRoZW0gaGVyZS4KKyAgICBpZiAobGF5
ZXItPmJvdW5kcygpLmlzRW1wdHkoKSB8fCAhbGF5ZXItPm9wYWNpdHkoKSB8fCAhbGF5ZXItPmRy
YXdzQ29udGVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICB1cGRhdGVMaXN0LmFwcGVuZChs
YXllcik7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRNYXNrQW5kUmVwbGljYUZv
clJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyLCBMYXllckxp
c3QmIHVwZGF0ZUxpc3QpCiB7CiAgICAgLy8gTm90ZTogTWFza3MgYW5kIHJlcGxpY2FzIG9ubHkg
ZXhpc3QgZm9yIGxheWVycyB0aGF0IG93biByZW5kZXIgc3VyZmFjZXMuIElmIHdlIHJlYWNoIHRo
aXMgcG9pbnQKICAgICAvLyBpbiBjb2RlLCB3ZSBhbHJlYWR5IGtub3cgdGhhdCBhdCBsZWFzdCBz
b21ldGhpbmcgd2lsbCBiZSBkcmF3biBpbnRvIHRoaXMgcmVuZGVyIHN1cmZhY2UsIHNvIHRoZQpA
QCAtMzQyLDM0ICs0NDIsMzQgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TWFza0FuZFJl
cGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclMKICAgICBpZiAocmVu
ZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICByZW5kZXJTdXJmYWNlTGF5
ZXItPm1hc2tMYXllcigpLT5zZXRMYXllclRyZWVIb3N0KHRoaXMpOwogICAgICAgICByZW5kZXJT
dXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgcmVuZGVyU3VyZmFjZUxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAgICAg
cmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsK
KyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVy
KCksIHVwZGF0ZUxpc3QpOwogICAgIH0KIAogICAgIExheWVyQ2hyb21pdW0qIHJlcGxpY2FMYXll
ciA9IHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCk7CiAgICAgaWYgKHJlcGxpY2FM
YXllcikgewogCiAgICAgICAgIHJlcGxpY2FMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsK
LSAgICAgICAgcmVwbGljYUxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICBh
cHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLCB1cGRhdGVMaXN0KTsKIAogICAgICAgICBp
ZiAocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKSkgewogICAgICAgICAgICAgcmVwbGljYUxheWVy
LT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgICAgIHJlcGxp
Y2FMYXllci0+bWFza0xheWVyKCktPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdChJbnRQb2lu
dCgpLCByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICAg
ICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7
CisgICAgICAgICAgICBhcHBlbmRWaXNpYmxlTGF5ZXIocmVwbGljYUxheWVyLT5tYXNrTGF5ZXIo
KSwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmFwcGVuZFZpc2libGVMYXllcnMoY29uc3Qg
TGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0
KQogewotICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
c2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAg
ICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0W3N1cmZhY2VJbmRleF0uZ2V0KCk7CisgICAgZm9yIChpbnQgc3VyZmFjZUluZGV4ID0gcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1
cmZhY2VJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIg
PSByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwogICAgICAg
ICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCkuc2l6ZSgpKTsKICAgICAgICAgQVNT
RVJUKHJlbmRlclN1cmZhY2UtPmRyYXdPcGFjaXR5KCkpOwogCiAgICAgICAgIHJlbmRlclN1cmZh
Y2VMYXllci0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKLSAgICAgICAgcGFpbnRNYXNrQW5kUmVw
bGljYUZvclJlbmRlclN1cmZhY2UocmVuZGVyU3VyZmFjZUxheWVyKTsKKyAgICAgICAgYXBwZW5k
TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllciwgdXBkYXRl
TGlzdCk7CiAKICAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJm
YWNlLT5sYXllckxpc3QoKTsKICAgICAgICAgQVNTRVJUKGxheWVyTGlzdC5zaXplKCkpOwpAQCAt
Mzg2LDUwICs0ODYsMjkgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50
cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QKICAgICAgICAgICAgIEFT
U0VSVChsYXllci0+b3BhY2l0eSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghbGF5ZXItPmJvdW5k
cygpLmlzRW1wdHkoKSk7CiAKLSAgICAgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0
eSgpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKGxheWVyLCB1cGRhdGVMaXN0KTsK
ICAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0
ZXImIHVwZGF0ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Zm9yRWFjaENvbXBvc2l0b3JSZXNv
dXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewotICAgIGZvciAo
aW50IHN1cmZhY2VJbmRleCA9IG1fdXBkYXRlTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNlSW5kZXgg
Pj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7Ci0gICAgICAgIExheWVyQ2hyb21pdW0qIHJlbmRlclN1
cmZhY2VMYXllciA9IG1fdXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwotICAgICAgICBS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXIt
PnJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOwotICAgICAg
ICBBU1NFUlQocmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCkuc2l6ZSgpKTsKLSAgICAgICAgQVNT
RVJUKHJlbmRlclN1cmZhY2UtPmRyYXdPcGFjaXR5KCkpOwotCi0gICAgICAgIGlmIChyZW5kZXJT
dXJmYWNlTGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVy
LT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVy
KTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgewot
ICAgICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+dXBkYXRlQ29t
cG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1hc2tMYXllcigp
KQotICAgICAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPm1h
c2tMYXllcigpLT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCBMYXllckxpc3QmIGxheWVyTGlzdCA9
IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwotICAgICAgICBBU1NFUlQobGF5ZXJMaXN0LnNp
emUoKSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgbGF5ZXJJbmRleCA9IDA7IGxheWVySW5kZXgg
PCBsYXllckxpc3Quc2l6ZSgpOyArK2xheWVySW5kZXgpIHsKLSAgICAgICAgICAgIExheWVyQ2hy
b21pdW0qIGxheWVyID0gbGF5ZXJMaXN0W2xheWVySW5kZXhdLmdldCgpOwotICAgICAgICAgICAg
aWYgKGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgJiYgbGF5ZXItPnJlbmRlclN1cmZhY2UoKSAhPSBy
ZW5kZXJTdXJmYWNlKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBs
YXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAg
ICAgfQorICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkg
LSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJv
bWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAg
ICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgfQogfQog
CiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nVXBkYXRlKCkKIHsKLSAgICBmb3Ig
KHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXggPCBtX3VwZGF0ZUxpc3Quc2l6
ZSgpOyArK3N1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1f
dXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIG1fbGF5ZXJVcGRhdGVMaXN0LmNs
ZWFyKCk7CisKKyAgICBmb3IgKHNpemVfdCBzdXJmYWNlSW5kZXggPSAwOyBzdXJmYWNlSW5kZXgg
PCBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKKyAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0W3N1
cmZhY2VJbmRleF0uZ2V0KCk7CiAgICAgICAgIEFTU0VSVChsYXllci0+cmVuZGVyU3VyZmFjZSgp
KTsKICAgICAgICAgbGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOwogICAgIH0KLSAgICBtX3Vw
ZGF0ZUxpc3QuY2xlYXIoKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmNsZWFyKCk7
CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBseVNjcm9sbEFuZFNjYWxlKGNvbnN0IEND
U2Nyb2xsQW5kU2NhbGVTZXQmIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4
IGE3OTNjY2EuLjY4MGI0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC00NSw3
ICs0NSw2IEBAIGNsYXNzIEdyQ29udGV4dDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbDsKLWNsYXNzIENDVGV4dHVyZVVwZGF0ZXI7CiBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogY2xhc3MgVGV4dHVy
ZUFsbG9jYXRvcjsKQEAgLTE3Nyw5ICsxNzYsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRI
YXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoKTsK
KyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZSgpOworICAgIGJvb2wgbmVlZHNDb21wb3NpdG9yUmVz
b3VyY2VzKCk7CisgICAgdm9pZCBwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoKTsK
IAotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCos
IENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRT
Y2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CiAgICAgdm9pZCBzdGFydFJhdGVMaW1p
dGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdm9pZCBzdG9wUmF0ZUxpbWl0ZXIoR3JhcGhp
Y3NDb250ZXh0M0QqKTsKQEAgLTE4OSwxMiArMTkxLDUwIEBAIHByb3RlY3RlZDoKICAgICBib29s
IGluaXRpYWxpemUoKTsKIAogcHJpdmF0ZToKKyAgICBjbGFzcyBOZWVkUmVzb3VyY2VIYW5kbGVy
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgTmVlZFJlc291cmNlSGFuZGxlcigpOworICAgICAgICB2aXJ0dWFsIH5OZWVkUmVzb3Vy
Y2VIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOworCisgICAgICAgIGludCByZXNvdXJjZXMoKSB7IHJldHVybiBtX3Jlc291
cmNlczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1fcmVzb3VyY2VzOworICAgIH07
CisKKyAgICBjbGFzcyBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUHJlcGFyZVJlc291cmNl
SGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICAgICAg
dmlydHVhbCB+UHJlcGFyZVJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgICAgIFRleHR1cmVBbGxvY2F0
b3IqIG1fYWxsb2NhdG9yOworICAgIH07CisKKyAgICBjbGFzcyBQYWludEhhbmRsZXIgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBQ
YWludEhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2aXJ0dWFsIH5QYWludEhhbmRsZXIoKTsK
KworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7
CisKKyAgICBwcml2YXRlOgorICAgICAgICBDQ1Byb3h5KiBtX3Byb3h5OworICAgIH07CisKICAg
ICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBMYXllckxpc3Q7CiAKLSAg
ICB2b2lkIHBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBMYXllckxpc3QmKTsKLSAgICB2b2lkIHBh
aW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2
b2lkIGFwcGVuZFZpc2libGVMYXllcihMYXllckNocm9taXVtKiwgTGF5ZXJMaXN0Jik7CisgICAg
dm9pZCBhcHBlbmRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSos
IExheWVyTGlzdCYgdXBkYXRlTGlzdCk7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXJzKGNv
bnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRl
TGlzdCk7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7CisgICAgdm9p
ZCBwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgcGFpbnRDb250ZW50
cyhMYXllckNocm9taXVtKik7CiAgICAgdm9pZCBjbGVhclBlbmRpbmdVcGRhdGUoKTsKIAogICAg
IGludCBtX2NvbXBvc2l0b3JJZGVudGlmaWVyOwpAQCAtMjEwLDcgKzI1MCw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IG1fcm9vdExheWVyOwogICAgIE93blB0cjxUZXh0
dXJlTWFuYWdlcj4gbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyOwogCi0gICAgTGF5ZXJMaXN0IG1f
dXBkYXRlTGlzdDsKKyAgICBMYXllckxpc3QgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdDsKKyAg
ICBMYXllckxpc3QgbV9sYXllclVwZGF0ZUxpc3Q7CiAKICAgICBDQ1NldHRpbmdzIG1fc2V0dGlu
Z3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUHJveHkuaAppbmRleCBhNjIzMGVhLi4xYzUzMTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIENDUHJveHlfaAogCiAjaW5jbHVkZSAiSW50UmVjdC5o
IgorI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CkBAIC03OCw2ICs3OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3Rh
cnQoKSA9IDA7IC8vIE11c3QgYmUgY2FsbGVkIGJlZm9yZSB1c2luZyB0aGUgcHJveHkuCiAgICAg
dmlydHVhbCB2b2lkIHN0b3AoKSA9IDA7IC8vIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBkZWxldGlu
ZyB0aGUgcHJveHkuCiAKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBk
ZXN0UmVjdCkgPSAwOworCiAgICAgLy8gRGVidWcgaG9va3MKICNpZm5kZWYgTkRFQlVHCiAgICAg
c3RhdGljIGJvb2wgaXNNYWluVGhyZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCmluZGV4IGRkYzAxYzEuLjkzMjFlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiVHJhY2VFdmVu
dC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgImNjL0NDU2Ny
b2xsQ29udHJvbGxlci5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdURjsKQEAgLTE0OCwx
NSArMTQ3LDE5IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNBbmltYXRlKCkK
IHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1By
b3h5Ojppc01haW5UaHJlYWQoKSk7CisKKyAgICAvLyBQcmVwYXJlIGNvbXBvc2l0b3IgcmVzb3Vy
Y2VzCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkp
CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29udGVu
dHMoKTsKKwogICAgIC8vIENvbW1pdCBpbW1lZGlhdGVseQogICAgIHsKICAgICAgICAgRGVidWdT
Y29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJl
Z2luQ29tbWl0KCk7Ci0KKyAgICAgICAgd2hpbGUgKG1fdGV4dHVyZVVwZGF0ZXIudXBkYXRlKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkp
OwotICAgICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCB1
cGRhdGVyKTsKLSAgICAgICAgd2hpbGUgKHVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRleHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRW
aXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAgbV9sYXllclRyZWVI
b3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7
CiAKQEAgLTIwOSw2ICsyMTIsMTEgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkK
ICAgICBtX2xheWVyVHJlZUhvc3QgPSAwOwogfQogCit2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OnVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBtX3RleHR1
cmVVcGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIC8v
IENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJf
d2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmNv
bXBvc2l0ZUltbWVkaWF0ZWx5KCkKIHsKQEAgLTI3Myw3ICsyODEsNyBAQCB2b2lkIENDU2luZ2xl
VGhyZWFkUHJveHk6OmNvbW1pdElmTmVlZGVkKCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNN
YWluVGhyZWFkKCkpOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAg
ICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOwogCiAgICAgZG9Db21taXQoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAppbmRleCBlZGFiNjFmLi42ZDlh
MTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiY2MvQ0NDb21wbGV0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNj
L0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlv
bgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBCdWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CkBAIC04Miw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2dyYXBoaWNzQ29udGV4dExvc3Q7CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNob3Vs
ZEZhaWw7IC8vIFVzZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3
bHlDb21taXR0ZWRGcmFtZTsKKworICAgIENDVGV4dHVyZVVwZGF0ZXIgbV90ZXh0dXJlVXBkYXRl
cjsKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1
ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IDg3NDVjNGUuLmE2MWMzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVyLmgiCiAKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTWFu
YWdlZFRleHR1cmUuaCIKQEAgLTM3LDExICszOCw4IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRl
cihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCi0gICAgOiBtX2FsbG9jYXRvcihhbGxvY2F0
b3IpCi0gICAgLCBtX2VudHJ5SW5kZXgoMCkKK0NDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVw
ZGF0ZXIoKQogewotICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CiB9CiAKIENDVGV4dHVyZVVwZGF0
ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKQEAgLTY2LDIzICs2NCwyMCBAQCBib29sIENDVGV4dHVy
ZVVwZGF0ZXI6Omhhc01vcmVVcGRhdGVzKCkgY29uc3QKIAogYm9vbCBDQ1RleHR1cmVVcGRhdGVy
Ojp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHNpemVfdCBjb3VudCkKIHsKLSAg
ICBzaXplX3QgbWF4SW5kZXggPSBtaW4obV9lbnRyeUluZGV4ICsgY291bnQsIG1fZW50cmllcy5z
aXplKCkpOwotICAgIGZvciAoOyBtX2VudHJ5SW5kZXggPCBtYXhJbmRleDsgKyttX2VudHJ5SW5k
ZXgpIHsKLSAgICAgICAgVXBkYXRlRW50cnkmIGVudHJ5ID0gbV9lbnRyaWVzW21fZW50cnlJbmRl
eF07Ci0gICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2FsbG9j
YXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKLSAgICB9CisgICAg
d2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgaWYgKCFtX2VudHJpZXMuc2l6ZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKG1heEluZGV4IDwgbV9lbnRyaWVzLnNpemUo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1f
ZW50cmllcy5sYXN0KCk7CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250
ZXh0LCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOworICAgICAgICBtX2Vu
dHJpZXMucmVtb3ZlTGFzdCgpOworICAgIH0KIAotICAgIC8vIElmIG5vIGVudHJpZXMgbGVmdCB0
byBwcm9jZXNzLCBhdXRvLWNsZWFyLgotICAgIGNsZWFyKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiBtX2VudHJpZXMuc2l6ZSgpID4gMDsKIH0KIAogdm9pZCBDQ1RleHR1cmVVcGRh
dGVyOjpjbGVhcigpCiB7Ci0gICAgbV9lbnRyeUluZGV4ID0gMDsKICAgICBtX2VudHJpZXMuY2xl
YXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJmNzlhYzkuLmFi
NjU5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKQEAgLTMzLDExICszMywxMCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKLWNsYXNz
IFRleHR1cmVBbGxvY2F0b3I7CiAKIGNsYXNzIENDVGV4dHVyZVVwZGF0ZXIgewogcHVibGljOgot
ICAgIENDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciopOworICAgIENDVGV4dHVyZVVw
ZGF0ZXIoKTsKICAgICB+Q0NUZXh0dXJlVXBkYXRlcigpOwogCiAgICAgdm9pZCBhcHBlbmQoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKQEAgLTQ5LDggKzQ4LDYgQEAgcHVibGljOgogCiAgICAg
dm9pZCBjbGVhcigpOwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKCkgeyByZXR1
cm4gbV9hbGxvY2F0b3I7IH0KLQogcHJpdmF0ZToKICAgICBzdHJ1Y3QgVXBkYXRlRW50cnkgewog
ICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3RleHR1cmU7CkBAIC01OCw4
ICs1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJlY3QgbV9kZXN0UmVjdDsKICAgICB9Owog
Ci0gICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0b3I7Ci0gICAgc2l6ZV90IG1fZW50cnlJ
bmRleDsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFk
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOTVjNmI1ZC4uNjc0MWMyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxl
ci5oIgogI2luY2x1ZGUgImNjL0NDU2NvcGVkVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlICJjYy9D
Q1Njcm9sbENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTI4Niw2ICsyODUsMjAgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpzdG9wKCkKICAgICBtX3N0YXJ0ZWQgPSBmYWxzZTsKIH0KIAordm9pZCBD
Q1RocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVy
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7
CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnVwZGF0ZSIsIHRoaXMsIDApOworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc3RhcnRlZCk7CisKKyAgICBV
cGRhdGVFbnRyeSogZW50cnkgPSBuZXcgVXBkYXRlRW50cnk7CisgICAgZW50cnktPm1fdGV4dHVy
ZSA9IHRleHR1cmU7CisgICAgZW50cnktPm1fc291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CisgICAg
ZW50cnktPm1fZGVzdFJlY3QgPSBkZXN0UmVjdDsKKworICAgIENDUHJveHk6OmltcGxUaHJlYWQo
KS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5Ojp1cGRh
dGVUZXh0dXJlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKGVudHJ5KSkpOwor
fQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6ZmluaXNoQWxsUmVuZGVyaW5nT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC0z
NzQsNyArMzg3LDE3IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChp
bnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgLy8gdXBkYXRlTGF5
ZXJzLgogICAgIG1fY29tbWl0UmVxdWVzdGVkID0gZmFsc2U7CiAKLSAgICBtX2xheWVyVHJlZUhv
c3QtPnVwZGF0ZUxheWVycygpOworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZVRvVXBkYXRl
KCk7CisKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMo
KSkgeworICAgICAgICAvLyBJbml0aWFsaXplIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHJlcXVpcmUg
Zm9yIGZyYW1lLgorICAgICAgICBUUkFDRV9FVkVOVCgiYWxsb2NhdGUiLCB0aGlzLCAwKTsKKyAg
ICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICAgICAgQ0NQcm94eTo6aW1w
bFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFj
Y2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CisgICAgfQor
CisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CiAKICAgICAvLyBCZWZvcmUg
YXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVx
dWVzdGVkIHRvIGZhbHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBpdCBtZWFucyBzZXRO
ZWVkQW5pbWF0ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29tbWl0CkBAIC0zOTgs
NiArNDIxLDM5IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQg
c2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4
ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVy
KTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCit7CisgICAgVFJBQ0VfRVZFTlQo
IkNDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uT25JbXBsVGhyZWFkIiwgdGhp
cywgMCk7CisgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7
CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbklt
cGxUaHJlYWQpOworICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVu
ZGluZygpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKKyAgICAgICAgY29tcGxl
dGlvbi0+c2lnbmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xheWVyVHJl
ZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkp
OworCisgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7Cit9CisKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6
dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChVcGRhdGVFbnRyeSogZW50cnkpCit7CisgICAgQVNT
RVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQpOworICAg
IEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+Y29tbWl0UGVuZGluZygpKTsKKyAgICBp
ZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKKyAgICAgICAgZGVsZXRlIGVudHJ5OworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5hcHBl
bmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJl
Y3QpOworCisgICAgZGVsZXRlIGVudHJ5OworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25J
bXBsVGhyZWFkIiwgdGhpcywgMCk7CkBAIC00MTIsMzYgKzQ2OCwyOCBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCog
Y29tcGxldGlvbgogCiAgICAgbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQgPSBj
b21wbGV0aW9uOwogCi0gICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRo
cmVhZCk7Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0
cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IoKSkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksICptX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZCk7Ci0KICAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+YmVn
aW5GcmFtZUNvbXBsZXRlKCk7CiB9CiAKIGJvb2wgQ0NUaHJlYWRQcm94eTo6aGFzTW9yZVJlc291
cmNlVXBkYXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9u
SW1wbFRocmVhZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKTsKKyAgICByZXR1cm4g
bV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygpOwogfQogCiB2b2lk
IENDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewog
ICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3Jl
UmVzb3VyY2VzIiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVy
T25JbXBsVGhyZWFkKTsKICAgICBzdGF0aWMgY29uc3QgaW50IFVwZGF0ZXNQZXJGcmFtZSA9IDk5
OTk5OwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRhdGUobV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOworICAgIG1fdGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVs
ZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsKLSAgICBBU1NFUlQobV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21t
aXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLmNsZWFyKCk7CiAKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMWRmMzc0Ni4uYWJhMzQ0YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NT
Y2hlZHVsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAi
Y2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTYyLDYgKzYzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzdGFydCgpOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCk7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgLy8gQ0NMYXllclRy
ZWVIb3N0SW1wbENsaWVudCBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBvblN3YXBC
dWZmZXJzQ29tcGxldGVPbkltcGxUaHJlYWQoKTsKQEAgLTc4LDYgKzgwLDEyIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ0NUaHJlYWRQcm94eShDQ0xheWVyVHJlZUhvc3QqKTsK
IAorICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7CisgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmUqIG1fdGV4dHVyZTsKKyAgICAgICAgSW50UmVjdCBtX3NvdXJjZVJlY3Q7CisgICAg
ICAgIEludFJlY3QgbV9kZXN0UmVjdDsKKyAgICB9OworCiAgICAgLy8gQ2FsbGVkIG9uIG1haW4g
dGhyZWFkCiAgICAgdm9pZCBiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwg
ZG91YmxlIGZyYW1lQmVnaW5UaW1lLCBQYXNzT3duUHRyPENDU2Nyb2xsQW5kU2NhbGVTZXQ+KTsK
ICAgICB2b2lkIGRpZENvbW1pdEFuZERyYXdGcmFtZSgpOwpAQCAtOTIsNiArMTAwLDggQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIFBhc3NPd25QdHI8Q0NUaHJlYWQ6OlRhc2s+IGNyZWF0ZUJlZ2lu
RnJhbWVBbmRDb21taXRUYXNrT25JbXBsVGhyZWFkKCk7CiAgICAgdm9pZCBvYnRhaW5CZWdpbkZy
YW1lQW5kQ29tbWl0VGFza0Zyb21DQ1RocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIENDVGhyZWFk
OjpUYXNrKiopOworICAgIHZvaWQgcHJlcGFyZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50Kik7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVw
ZGF0ZUVudHJ5Kik7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChS
ZWFkYmFja1JlcXVlc3QqKTsKICAgICB2b2lkIGZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCopOwpAQCAtMTI3LDEwICsxMzcsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFNldCB3aGVuIHRoZSBtYWluIHRocmVhZCBpcyB3YWl0aW5nIG9uIGEgY29tbWl0IHRv
IGNvbXBsZXRlLgogICAgIENDQ29tcGxldGlvbkV2ZW50KiBtX2NvbW1pdENvbXBsZXRpb25FdmVu
dE9uSW1wbFRocmVhZDsKLSAgICBPd25QdHI8Q0NUZXh0dXJlVXBkYXRlcj4gbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbmV4dCBkcmF3
IHNob3VsZCBwb3N0IGRpZENvbW1pdEFuZERyYXdGcmFtZSB0byB0aGUgbWFpbiB0aHJlYWQuCiAg
ICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZU9uSW1wbFRocmVhZDsKKwor
ICAgIENDVGV4dHVyZVVwZGF0ZXIgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggMjIwOWM4YS4uMThmZWQy
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTIxOSw2ICsyMTksNyBA
QCB2b2lkIENDVGlsZWRMYXllckltcGw6OmRyYXdUaWxlcyhMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIsIGNvbnN0IEludAogICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxl
SW5kaWNlcyhjb250ZW50UmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKICAgICBJbnRS
ZWN0IGxheWVyUmVjdCA9IG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QoY29udGVudFJl
Y3QpOwogICAgIGZsb2F0IHNpZ24gPSBGbG9hdFF1YWQoY29udGVudFJlY3QpLmlzQ291bnRlcmNs
b2Nrd2lzZSgpID8gLTEgOiAxOworICAgIGNvbnN0IEdDM0RpbnQgZmlsdGVyID0gbV90aWxlci0+
aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFwaGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhpY3ND
b250ZXh0M0Q6Ok5FQVJFU1Q7CiAgICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsr
aikgewogICAgICAgICBDQ0xheWVyUXVhZDo6RWRnZSBwcmV2RWRnZVggPSBjb250ZW50UXVhZC5s
ZWZ0KCk7CiAKQEAgLTM0Myw2ICszNDQsOSBAQCB2b2lkIENDVGlsZWRMYXllckltcGw6OmRyYXdU
aWxlcyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEludAogCiAg
ICAgICAgICAgICBpZiAodGlsZSAmJiB0aWxlLT50ZXh0dXJlSWQoKSkgewogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0
aWxlLT50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOworICAgICAgICAgICAgICAgIEdM
Qyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpKTsK
KwogICAgICAgICAgICAgICAgIGxheWVyUmVuZGVyZXItPmRyYXdUZXh0dXJlZFF1YWQoZ2xvYmFs
VHJhbnNmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGlsZVJlY3Qud2lkdGgoKSwgdGlsZVJlY3QuaGVpZ2h0KCksIG9wYWNpdHksIHF1YWQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLT52
ZXJ0ZXhTaGFkZXIoKS5tYXRyaXhMb2NhdGlvbigpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNGE0MTc5Ni4uYmMz
NjZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJl
ZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KICNpbmNsdWRlICJMYXll
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKICNpbmNsdWRlICJNb2Nr
V2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKQEAgLTkwNCw2ICs5MDUsMTQgQEAgVEVTVF9GKENDTGF5
ZXJUcmVlSG9zdFRlc3RTZXRWaXNpYmxlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRy
dWUpOwogfQogCitjbGFzcyBNb2NrTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdh
dGUgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29u
dGV4dCYsIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBwcmVzZXJ2ZXMzRCgp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgp
IHsgfQorfTsKKwogY2xhc3MgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRlbGVnYXRlIDogcHVibGlj
IENDTGF5ZXJEZWxlZ2F0ZSB7CiBwdWJsaWM6CiAgICAgVGVzdE9wYWNpdHlDaGFuZ2VMYXllckRl
bGVnYXRlKENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QpCkBAIC05MjcsMzcgKzkzNiwxMTYgQEAg
cHJpdmF0ZToKIAogY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcg
OiBwdWJsaWMgQ29udGVudExheWVyQ2hyb21pdW0gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NM
YXllckRlbGVnYXRlICpkZWxlZ2F0ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlKSk7IH0KKyAgICBjbGFzcyBDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSB7CisgICAgICAgIHB1YmxpYzoKKyAgICAgICAgICAgIFRleHR1cmUoQ29u
dGVudExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgICAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUp
CisgICAgICAgICAgICAgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVyKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIE1hbmFnZWRU
ZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAg
ICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5uZWVkUHJlcGFyZVJl
Y3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnByZXBh
cmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwYWlu
dENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnBhaW50Q29u
dGVudHNSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+dXBkYXRlUmVjdCgpOworICAg
ICAgICAgICAgfQorCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBPd25QdHI8TWFuYWdl
ZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICAgICAgICAgIENvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKGxheWVyKSk7Cisg
ICAgICAgIH0KIAotICAgIGludCBwYWludENvbnRlbnRzQ291bnQoKSB7IHJldHVybiBtX3BhaW50
Q29udGVudHNDb3VudDsgfQotICAgIHZvaWQgcmVzZXRQYWludENvbnRlbnRzQ291bnQoKSB7IG1f
cGFpbnRDb250ZW50c0NvdW50ID0gMDsgfQorICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciog
bWFuYWdlcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBUZXh0
dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKKyAgICAgICAgfQog
Ci0gICAgaW50IHVwZGF0ZUNvdW50KCkgeyByZXR1cm4gbV91cGRhdGVDb3VudDsgfQotICAgIHZv
aWQgcmVzZXRVcGRhdGVDb3VudCgpIHsgbV91cGRhdGVDb3VudCA9IDA7IH0KKyAgICAgICAgdmly
dHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0
ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzSWZEaXJ0eSgpCisgICAgICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRU
ZXhlbEZvcm1hdChHQzNEZW51bSAvKiB0ZXh0dXJlRm9ybWF0ICovKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdC
QTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAq
LywgaW50IC8qIGJvcmRlclRleGVscyAqLykKKyAgICAgICAgeworICAgICAgICAgICAgbV9sYXll
ci0+cGFpbnRDb250ZW50cygpOworICAgICAgICB9CisKKyAgICAgICAgQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllcjsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIo
Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcgKmxheWVyKSA6IG1fbGF5ZXIo
bGF5ZXIpIHsgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nKiBtX2xheWVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVs
ZWdhdGUsIGJvb2wgbmVlZFByZXBhcmVSZWN0KQogICAgIHsKLSAgICAgICAgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0gICAgICAgIG1fcGFpbnRDb250ZW50
c0NvdW50Kys7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21p
dW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUsIG5lZWRQcmVwYXJlUmVjdCkpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQorICAgIHZpcnR1YWwg
dm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKQogICAgIHsK
LSAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
Y29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIG1fdXBkYXRlQ291bnQrKzsKKyAgICAgICAgbV9j
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciA9IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUodGhpcyk7CiAgICAgfQorICAgIHZpcnR1YWwgTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4
dHVyZVVwZGF0ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVy
LmdldCgpOyB9CisKKyAgICB2b2lkIHBhaW50Q29udGVudHMoKSB7IG1fcGFpbnRDb250ZW50c0Nv
dW50Kys7IH0KKyAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENv
bnRlbnRzQ291bnQ7IH0KKworICAgIHZvaWQgcHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RD
b3VudCsrOyB9CisgICAgaW50IHByZXBhcmVSZWN0Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVS
ZWN0Q291bnQ7IH0KKworICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoKSB7IG1fcGFpbnRDb250
ZW50c1JlY3RDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNSZWN0Q291bnQoKSB7IHJl
dHVybiBtX3BhaW50Q29udGVudHNSZWN0Q291bnQ7IH0KKworICAgIHZvaWQgdXBkYXRlUmVjdCgp
IHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQorICAgIGludCB1cGRhdGVSZWN0Q291bnQoKSB7IHJl
dHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQorCisgICAgaW50IG5lZWRQcmVwYXJlUmVjdCgpIHsg
cmV0dXJuIG1fbmVlZFByZXBhcmVSZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxl
Z2F0ZSkKKyAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
ZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICAg
ICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAgICAgICAgLCBtX25lZWRQcmVw
YXJlUmVjdChuZWVkUHJlcGFyZVJlY3QpCiAgICAgICAgICwgbV9wYWludENvbnRlbnRzQ291bnQo
MCkKLSAgICAgICAgLCBtX3VwZGF0ZUNvdW50KDApCisgICAgICAgICwgbV9wcmVwYXJlUmVjdENv
dW50KDApCisgICAgICAgICwgbV9wYWludENvbnRlbnRzUmVjdENvdW50KDApCisgICAgICAgICwg
bV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAgICAgICAgIHNldEJvdW5kcyhJbnRTaXplKDEw
LCAxMCkpOwogICAgIH0KIAorICAgIFJlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4g
bV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjsKKyAgICBib29sIG1fbmVlZFByZXBhcmVSZWN0
OwogICAgIGludCBtX3BhaW50Q29udGVudHNDb3VudDsKLSAgICBpbnQgbV91cGRhdGVDb3VudDsK
KyAgICBpbnQgbV9wcmVwYXJlUmVjdENvdW50OworICAgIGludCBtX3BhaW50Q29udGVudHNSZWN0
Q291bnQ7CisgICAgaW50IG1fdXBkYXRlUmVjdENvdW50OwogfTsKIAogLy8gTGF5ZXIgb3BhY2l0
eSBjaGFuZ2UgZHVyaW5nIHBhaW50IHNob3VsZCBub3QgcHJldmVudCBjb21wb3NpdG9yIHJlc291
cmNlcyBmcm9tIGJlaW5nIHVwZGF0ZWQgZHVyaW5nIGNvbW1pdC4KQEAgLTk2NSw3ICsxMDUzLDcg
QEAgY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UgOiBwdWJsaWMgQ0NMYXll
clRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlD
aGFuZ2UoKQogICAgICAgICA6IG1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxlZ2F0ZSh0aGlzKQotICAg
ICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUpKQorICAgICAgICAs
IG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUsIHRydWUpKQogICAgIHsKICAg
ICB9CiAKQEAgLTk4NCwxMyArMTA3MiwxOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
YWZ0ZXJUZXN0KCkKICAgICB7Ci0gICAgICAgIC8vIHBhaW50Q29udGVudHNJZkRpcnR5KCkgc2hv
dWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCiAgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0
ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKIAotICAgICAgICAvLyB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKLSAg
ICAgICAgLy8gYW1vdXQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c0lmRGlydHkoKS4KLSAgICAg
ICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c0NvdW50KCksCi0g
ICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZUNvdW50KCkpOworICAg
ICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBz
YW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwcmVwYXJlUmVjdCgpLgorICAgICAg
ICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50KCksCisgICAg
ICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQo
KSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRo
ZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzUmVjdCgp
LgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVj
dENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJl
Y3RDb3VudCgpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMDAzLDQgKzEwOTYsNDkgQEAgVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkKICAg
ICBydW5UZXN0KHRydWUpOwogfQogCisvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgYmUgY2Fs
bGVkIHdoZW4gbmVlZFByZXBhcmVSZWN0KCkgcmV0dXJucyBmYWxzZS4KK2NsYXNzIENDTGF5ZXJU
cmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qgewor
cHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0KCkKKyAgICAgICAg
OiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tp
bmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSwgZmFsc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0
Um9vdExheWVyKG1fdXBkYXRlQ2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
c2V0Vmlld3BvcnQoSW50U2l6ZSgxMCwgMTApKTsKKworICAgICAgICBwb3N0U2V0TmVlZHNDb21t
aXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxl
dGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHsKKyAgICAgICAgZW5kVGVz
dCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICAg
ICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAg
ICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgp
KTsKKworICAgICAgICAvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxl
ZC4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RD
b3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxs
ZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNS
ZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVu
dHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBk
YXRlUmVjdENvdW50KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNb2NrTGF5ZXJEZWxlZ2F0
ZSBtX2RlbGVnYXRlOworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9z
dFRlc3ROb1ByZXBhcmVSZWN0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUp
OworfQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115884</attachid>
            <date>2011-11-18 15:17:25 -0800</date>
            <delta_ts>2011-11-20 15:48:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Initialize-compositor-resources-prior-to-painting.patch</filename>
            <type>text/plain</type>
            <size>89530</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">RnJvbSA1YjY1MGI0MmM4NWIwY2UxZTJiMzJkMDdmZWVkMjFjZGU0NTE4OWE5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4K
RGF0ZTogTW9uLCAxNCBOb3YgMjAxMSAxNzozMzoyOSAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIElu
aXRpYWxpemUgY29tcG9zaXRvciByZXNvdXJjZXMgcHJpb3IgdG8gcGFpbnRpbmcuCiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzIxOTIKClNvdXJjZS9XZWJDb3JlOgoK
U3BsaXQgbGF5ZXIgdXBkYXRlcyBpbnRvIHR3byBzdGVwcy4gU3RlcCBvbmUgY2FsY3VsYXRlcyB0
cmFuc2Zvcm1zCmFuZCB2aXNpYmxlIGxheWVyIGFyZWFzLiBTdGVwIHR3byBwYWludHMgbGF5ZXIg
Y29udGVudHMuIFRoaXMKYWxsb3dzIHVzIHRvIHBlcmZvcm0gYSBjb21wb3NpdG9yIHJlc291cmNl
IHByZXBhcmF0aW9uIHN0ZXAgYWZ0ZXIKdmlzaWJsZSBsYXllciBhcmVhcyBoYXZlIGJlZW4gY29t
cHV0ZWQgYnV0IGJlZm9yZSBhbnkgcGFpbnRpbmcKaGFzIG9jY3VycmVkLiBMYXllckNocm9taXVt
Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIGlzIHJlcGxhY2VkCmJ5IExheWVyQ2hyb21pdW06
OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Ugd2hpY2ggYWxsb3dzIHVzIHRvIGl0ZXJhdGUKb3Zl
ciBjb21wb3NpdG9yIHJlc291cmNlcyBmb3IgdmFyaW91cyBwdXJwb3Nlcy4KCk5vIG5ldyB0ZXN0
cy4gQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KLS0tCiAuLi4vY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgICB8ICAgMTUgKy0KIC4uLi9jaHJvbWl1bS9CaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggICAgIHwgICAgOCArLQogLi4uL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAgICAgfCAgIDIyICsrKy0KIC4uLi9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaCAgICAgIHwgICAyMiArKyst
CiAuLi4vY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgICAgICAgICB8ICAg
MjAgKystCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
ICB8ICAgMTkgKystCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwICAgICB8ICAgMTYgKystCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hy
b21pdW0uaCAgICAgICB8ICAgIDEgKwogLi4uYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAgfCAgIDE3ICstCiAuLi5GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaCB8ICAgIDYgKy0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwICAgICAgIHwgICAyOCArKystCiAuLi4vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggICAgICAgICB8ICAgIDIgKy0KIC4uLi9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggICAgIHwgICAgNSArLQogLi4uL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCAgICAgICAgfCAgIDIyICsrLQog
Li4uL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwICAgICAgICAgfCAgICA0
ICstCiAuLi4vY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oICB8
ICAgIDIgKy0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwICAg
ICAgIHwgICA0MiArKystLS0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uaCAgICAgICAgIHwgICAgOCArLQogLi4uL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJD
aHJvbWl1bS5jcHAgICAgICAgfCAgMTIwICsrKysrKysrKysrLS0tCiAuLi4vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmggICAgICAgICB8ICAgMzUgKysrKy0KIC4uLi9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwICAgICAgIHwgICAyMyArKystCiAu
Li4vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggICAgICAgICB8ICAgMjMg
KysrLQogLi4uL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgICAgICAg
fCAgMTc5ICsrKysrKysrKysrKysrLS0tLS0tCiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmggICAgICAgICB8ICAgNTUgKysrKysrLQogLi4uL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaCAgICAgICAgfCAgICAzICsKIC4uLi9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCAgIHwgICAyMCArKy0KIC4uLi9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggICAgIHwgICAgNCArCiAuLi4v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgICAgICB8ICAgMjUgKy0t
CiAuLi4vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oICAgICAgICB8ICAg
IDcgKy0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCAgICAgICAg
IHwgICA3NiArKysrKysrLS0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmggIHwgICAxMyArKy0KIC4uLi9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcCAgICAgIHwgICAgNCArCiAuLi4vV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdFRlc3QuY3BwICB8ICAxNzggKysrKysrKysrKysrKysrKystLS0KIDMzIGZp
bGVzIGNoYW5nZWQsIDgwNyBpbnNlcnRpb25zKCspLCAyMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAppbmRleCAw
NzFkZTY0Li5mMTJjMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKEJp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0
ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAg
LTQ1LDkgKzQ1LDEwIEBAIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJl
VXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUo
KSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJ
ZCgpKTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1
c2VNYXBUZXhTdWJJbWFnZSkKQEAgLTc3LDcgKzc4LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
U2FtcGxlZFRleGVsRm9ybWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBs
ZWQKICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJH
QkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12
b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25z
dCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3Jk
ZXJUZXhlbHMpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29u
dGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBpbnQgYm9yZGVyVGV4ZWxzKQogewogICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXpl
KHRpbGVTaXplKTsKIApAQCAtODgsMTQgKzg5LDE0IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAg
ICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3JtQ2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVU
ZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9y
bUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVyKCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0g
ICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0KTsK
KyAgICBwYWludCgqY2FudmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0KTsKIH0KIAot
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4
dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2Nh
bnZhcyk7CiAKLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwor
ICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0
ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CiAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobG9ja2VyLnBp
eGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCwgdGV4dHVyZS0+Zm9y
bWF0KCksIGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKaW5kZXggNjc1ZGRkZC4uYmZjOGI0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDAsMTIgKzQwLDEy
IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9taXVtOwogLy8gQSBDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyIHdpdGggYW4gaW50ZXJuYWwgYml0bWFwLgogY2xhc3MgQml0bWFwQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1Ymxp
YzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEJpdG1hcENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAgICAgICAg
IHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyOyB9CkBAIC01OSw4ICs1OSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0
dXJlTWFuYWdlciopOwogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJl
dHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxz
KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRz
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50
IGJvcmRlclRleGVscyk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIEJpdG1hcENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFw
VGV4U3ViSW1hZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXgg
NDQ5NDU4Ni4uMzlkMmQxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3Bw
CkBAIC00NCw2ICs0NCwyMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhczJETGF5
ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJETGF5ZXJD
aHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitDYW52YXMyRExh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2
b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJ
bnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT51cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKCk7Cit9CisKIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52
YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbnZhczJETGF5ZXJDaHJvbWl1bShjb250ZXh0KSk7
CkBAIC01Miw2ICs2Niw3IEBAIFBhc3NSZWZQdHI8Q2FudmFzMkRMYXllckNocm9taXVtPiBDYW52
YXMyRExheWVyQ2hyb21pdW06OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzCiBDYW52YXMyRExheWVy
Q2hyb21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCkKICAgICA6IENhbnZhc0xheWVyQ2hyb21pdW0oMCkKICAgICAsIG1fY29udGV4dChjb250ZXh0
KQorICAgICwgbV91cGRhdGVyVGV4dHVyZShVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKHRoaXMpKQog
ewogfQogCkBAIC02NSw3ICs4MCw3IEBAIGJvb2wgQ2FudmFzMkRMYXllckNocm9taXVtOjpkcmF3
c0NvbnRlbnQoKSBjb25zdAogICAgICAgICAgICAgJiYgKG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5nZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgPT0gR3JhcGhpY3NDb250ZXh0M0Q6Ok5P
X0VSUk9SKSk7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpCit2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiB7CiAg
ICAgaWYgKG1fZGlydHlSZWN0LmlzRW1wdHkoKSB8fCAhZHJhd3NDb250ZW50KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTg1LDYgKzEwMCwxMSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dAogICAg
IHJlc2V0TmVlZHNEaXNwbGF5KCk7CiB9CiAKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhh
bmRsZXIpCit7CisgICAgaGFuZGxlci5oYW5kbGUobV91cGRhdGVyVGV4dHVyZS5nZXQoKSwgSW50
UmVjdCgpLCBJbnRSZWN0KCkpOworfQorCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y29u
dGVudENoYW5nZWQoKQogewogICAgIGlmIChsYXllclRyZWVIb3N0KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hy
b21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJDaHJvbWl1bS5oCmluZGV4IDQ1N2JkNTYuLmUyNWVlNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nh
bnZhczJETGF5ZXJDaHJvbWl1bS5oCkBAIC00MywxNiArNDMsMzYgQEAgY2xhc3MgR3JhcGhpY3ND
b250ZXh0M0Q7CiAvLyBBIGxheWVyIGNvbnRhaW5pbmcgYW4gYWNjZWxlcmF0ZWQgMmQgY2FudmFz
CiBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1
bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKENhbnZhczJETGF5ZXJDaHJvbWl1bSogbGF5ZXIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXBkYXRlclRleHR1
cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJl
KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShDYW52YXMyRExh
eWVyQ2hyb21pdW0qKTsKKworICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7
CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZhczJETGF5ZXJDaHJvbWl1bT4g
Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdmlydHVhbCB+Q2FudmFzMkRMYXllckNo
cm9taXVtKCk7CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwg
Q0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygp
OworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXImKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50Q2hhbmdlZCgp
OwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENhbnZhczJETGF5ZXJDaHJvbWl1bShHcmFwaGlj
c0NvbnRleHQzRCopOwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisKKyAgICBS
ZWZQdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGEzZThmN2IuLjliOTc2
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0z
Niw2ICszNiwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4
dHVyZSkgOiBtX3RleHR1cmUodGV4dHVyZSkKK3sKK30KKworQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQoreworfQorCitib29sIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCgpCit7CisgICAgcmV0dXJuICFtX3Rl
eHR1cmUtPnRleHR1cmVJZCgpOworfQorCit2b2lkIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNv
bnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fdGV4dHVyZS0+YmluZFRleHR1
cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKK30KKwogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
PiBwYWludGVyKQogICAgIDogbV9wYWludGVyKHBhaW50ZXIpCiB7CkBAIC00NSw3ICs2Myw3IEBA
IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6On5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCkK
IHsKIH0KIAotdm9pZCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit2b2lk
IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiB7CiAgICAgY29udGV4dC50cmFuc2xhdGUo
LWNvbnRlbnRSZWN0LngoKSwgLWNvbnRlbnRSZWN0LnkoKSk7CiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGZkNzlhMDQuLmY2ZTA1NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMwLDYgKzMwLDcgQEAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKICNpbmNsdWRlICJMYXllclRleHR1
cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zOSwxMiArNDAsMjggQEAgY2xhc3MgTGF5ZXJQYWludGVyQ2hyb21pdW07
CiAvLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBjYW52YXMuCiBjbGFz
cyBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIg
ewogcHVibGljOgorICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CisK
KyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4
dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IElu
dFJlY3QmIC8qIGRlc3RSZWN0ICovKTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgZXhwbGlj
aXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsKKyAgICB9OworCiAgICAg
dmlydHVhbCB+Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpOwogCiBwcm90ZWN0ZWQ6CiAgICAg
ZXhwbGljaXQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRl
ckNocm9taXVtPik7CiAKLSAgICB2b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogICAgIGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50UmVjdDsgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29u
dGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IGVjMzZhMmQuLjAwZDM4NWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygpCiAgICAgVGlsZWRM
YXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7CiB9CiAKLXZvaWQgQ29udGVudExheWVy
Q2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3ZvaWQgQ29udGVudExheWVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKQogewogICAgIHVwZGF0ZVRpbGVTaXplQW5kVGls
aW5nT3B0aW9uKCk7CiAKQEAgLTExMiw2ICsxMTIsMjAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQogICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7CiB9
CiAKK3ZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KCkKK3sK
KyAgICBBU1NFUlQoZHJhd3NDb250ZW50KCkpOworCisgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJS
ZWN0ID0gdmlzaWJsZUxheWVyUmVjdCgpOworICAgIGlmIChsYXllclJlY3QuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWRyYXdzQ29udGVudCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBwYWludENvbnRlbnRzKGxheWVyUmVjdCk7Cit9CisKIGJvb2wgQ29udGVudExh
eWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGVsZWdh
dGUgJiYgbV9kZWxlZ2F0ZS0+ZHJhd3NDb250ZW50KCkgJiYgVGlsZWRMYXllckNocm9taXVtOjpk
cmF3c0NvbnRlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGI4MzRl
NjcuLmM1ZTlmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNDksNiAr
NDksNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJDaHJvbWl1bSgpOwog
CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAKaW5kZXggZTk0NWUwNi4uZTA5ZWJlNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBGcmFtZUJ1ZmZlcigp
OwogICAgIH5GcmFtZUJ1ZmZlcigpOwogCi0gICAgU2tDYW52YXMqIGluaXRpYWxpemUoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqKTsKKyAgICBT
a0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCosIE1hbmFnZWRUZXh0dXJlKik7
CiAKIHByaXZhdGU6CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKQEAgLTY2LDEy
ICs2NiwxMiBAQCBGcmFtZUJ1ZmZlcjo6fkZyYW1lQnVmZmVyKCkKICAgICAgICAgbV9jb250ZXh0
LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2Zibyk7CiB9CiAKLVNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6
aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSkKK1NrQ2FudmFzKiBGcmFtZUJ1ZmZl
cjo6aW5pdGlhbGl6ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1cmUq
IHRleHR1cmUpCiB7CiAgICAgbV9jb250ZXh0ID0gY29udGV4dDsKICAgICBtX2ZibyA9IG1fY29u
dGV4dC0+Y3JlYXRlRnJhbWVidWZmZXIoKTsKICAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZl
cihHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIG1fZmJvKTsKLSAgICB0ZXh0dXJlLT5m
cmFtZWJ1ZmZlclRleHR1cmUyRChtX2NvbnRleHQsIGFsbG9jYXRvcik7CisgICAgY29udGV4dC0+
ZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFw
aGljc0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCB0ZXh0dXJlLT50ZXh0dXJlSWQoKSwgMCk7CiAKICAgICAvLyBDcmVhdGUgYSBza2lh
IGdwdSBjYW52YXMuCiAgICAgR3JDb250ZXh0KiBnckNvbnRleHQgPSBtX2NvbnRleHQtPmdyQ29u
dGV4dCgpOwpAQCAtOTYsNyArOTYsNyBAQCBTa0NhbnZhcyogRnJhbWVCdWZmZXI6OmluaXRpYWxp
emUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqCiB9IC8vIG5h
bWVzcGFjZQogCiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU6OlRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVy
ZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVy
ZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7CiB9CkBAIC0xMDUsOSArMTA1LDEwIEBAIEZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1
cmUoKQogewogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0
LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIEFTU0VS
VCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVU
ZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0K
IAogUGFzc1JlZlB0cjxGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI+IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRl
KFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0xMzUsNyArMTM2
LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXAKICAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQTsKIH0KIAotdm9pZCBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRU
ZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCkKK3ZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFu
YWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQogewogICAgIC8vIE1ha2Ugc3VyZSBTS0lBIHVzZXMgdGhlIGNvcnJl
Y3QgR0wgY29udGV4dC4KICAgICBjb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKQEAgLTE0
NCw3ICsxNDUsNyBAQCB2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDbwogCiAgICAgLy8gQ3JlYXRlIGFu
IGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgogICAgIEZyYW1lQnVmZmVyIGJ1ZmZlcjsK
LSAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmluaXRpYWxpemUoY29udGV4dCwgYWxsb2Nh
dG9yLCB0ZXh0dXJlKTsKKyAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmluaXRpYWxpemUo
Y29udGV4dCwgdGV4dHVyZSk7CiAKICAgICBjYW52YXMtPmNsaXBSZWN0KFNrUmVjdChkZXN0UmVj
dCkpOwogICAgIC8vIFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQg
b2YgZGVzdFJlY3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDlkMzc2OGMuLjMxZTgz
YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7
CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3Iq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU1
LDcgKzU1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmly
dHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRvcERvd25PcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1h
bmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMGJkODJhZS4uZDU2
MzM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC00OSwxOSArNDksMzMg
QEAgcHVibGljOgogICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgogICAgICAgICBUZXh0dXJlKEltYWdlTGF5ZXJUZXh0
dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRl
eHR1cmUpCi0gICAgICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVy
ZSkKKyAgICAgICAgICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCiAgICAgICAgICAgICAsIG1fdGV4
dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBi
b29sIG5lZWRQcmVwYXJlUmVjdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAhbV90
ZXh0dXJlLT50ZXh0dXJlSWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0
JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAgbV90ZXh0dXJlLT5iaW5k
VGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogICAgICAgICB7Ci0gICAg
ICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxv
Y2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgQVNT
RVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIEltYWdlTGF5ZXJUZXh0
dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9
CiAKKyAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgICAgIElt
YWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKICAgICB9OwogCkBAIC04
NSwxNCArOTksMTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVk
VGV4ZWxGb3JtYXRCR1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIHRpbGVT
aXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiB0aWxl
U2l6ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3ViSW1h
Z2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgTWFuYWdlZFRleHR1
cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQogICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxs
b2NhdG9yKTsKKyAgICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmUtPnRleHR1cmVJZCgpKTsKIAogICAgICAgICAvLyBTb3VyY2Ug
cmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1hZ2UgcGl4ZWxzLCBldmVuIGlmIHRo
aXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2UgdGhlIHRleHR1cmUgZXh0ZW5kcyBv
dXRzaWRlIHRoZSBpbWFnZS4KQEAgLTE2OCw3ICsxODIsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJv
bWl1bTo6c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250
ZW50cy0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkp
IHsKICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMt
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
aAppbmRleCAxYWZjY2ZlLi44YmI5YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVt
KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKTsKIAogICAgIHZvaWQgc2V0Q29udGVudHMoSW1hZ2UqIGltYWdlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGY1YzQzMTguLjM5ZWQ5YmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9t
aXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJQcm9ncmFtQmluZGluZy5o
IgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgpAQCAtNTMsNyArNTQsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJJbXBsOwogY2xhc3MgQ0NMYXllclRy
ZWVIb3N0OwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNE
OwogCiBjbGFzcyBDQ0xheWVyRGVsZWdhdGUgewpAQCAtMTYxLDggKzE2MSw5IEBAIHB1YmxpYzoK
IAogICAgIC8vIFRoZXNlIG1ldGhvZHMgdHlwaWNhbGx5IG5lZWQgdG8gYmUgb3ZlcndyaXR0ZW4g
YnkgZGVyaXZlZCBjbGFzc2VzLgogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGVJZkRp
cnR5KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCkgeyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21w
b3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpIHsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHVucmVzZXJ2
ZUNvbnRlbnRzVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBiaW5kQ29udGVudHNUZXh0
dXJlKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggNDUyNWNlNy4uNDBj
Y2EyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMjksNyArMjksNiBAQAog
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCi0jaW5jbHVkZSAiTWFuYWdlZFRl
eHR1cmUuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5cGVzM0QuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCkBAIC0zOCw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IEdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CitjbGFz
cyBNYW5hZ2VkVGV4dHVyZTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiBjbGFzcyBUZXh0dXJl
TWFuYWdlcjsKIApAQCAtNDgsMTQgKzQ4LDE4IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAotICAgICAgICBNYW5hZ2VkVGV4dHVyZSogdGV4
dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KSA9IDA7Ci0gICAgcHJvdGVjdGVkOgotICAgICAgICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25Q
dHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpIHsgfQorICAg
ICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gMDsgfQorICAg
ICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJl
Y3QmIC8qIGRlc3RSZWN0ICovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVu
dHNSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CisgICAgfTsKKworICAgIGNs
YXNzIEhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+SGFuZGxlcigpIHsg
fTsKIAotICAgIHByaXZhdGU6Ci0gICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0
dXJlOworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkgPSAwOwogICAgIH07CiAKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyKCkgeyB9
CkBAIC03OCw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMg
dGhlIGNvbXBvbmVudCBvcmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhlbC4KICAgICAvLyBJZiB0aGUg
Zm9ybWF0IGlzIFRleGVsRm9ybWF0QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyBy
ZWQuCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdD
M0RlbnVtIHRleHR1cmVGb3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0
aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLykgeyB9CisgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IElu
dFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovKSB7IH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggZGNmZDYzZS4uM2E1YTRkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjp+U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcigpCiB7CiB9CiAKLXZvaWQg
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50
IC8qIGJvcmRlclRleGVscyAqLykKK3ZvaWQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50
U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8pCiB7CiAgICAgU2tD
YW52YXMqIGNhbnZhcyA9IG1fcGljdHVyZS5iZWdpblJlY29yZGluZyhjb250ZW50UmVjdC53aWR0
aCgpLCBjb250ZW50UmVjdC5oZWlnaHQoKSk7CiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBwbGF0
Zm9ybUNvbnRleHQoY2FudmFzKTsKICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0
KCZwbGF0Zm9ybUNvbnRleHQpOwotICAgIHBhaW50Q29udGVudHMoZ3JhcGhpY3NDb250ZXh0LCBj
b250ZW50UmVjdCk7CisgICAgcGFpbnQoZ3JhcGhpY3NDb250ZXh0LCBjb250ZW50UmVjdCk7CiAg
ICAgbV9waWN0dXJlLmVuZFJlY29yZGluZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggODkxYTZkMy4uYTk0ZTY0
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRl
clRleGVscyk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzKTsK
ICAgICB2b2lkIGRyYXdQaWN0dXJlKFNrQ2FudmFzKik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcAppbmRleCA2ZTBmM2NiLi43ZGVjYzBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Rp
bGVkTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTE1NCwxMCArMTU0LDEwIEBAIHZvaWQgVGlsZWRMYXll
ckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICAg
ICAgaXNOb25Db21wb3NpdGVkQ29udGVudCgpID8gQ0NMYXllclRpbGluZ0RhdGE6Ok5vQm9yZGVy
VGV4ZWxzIDogQ0NMYXllclRpbGluZ0RhdGE6Okhhc0JvcmRlclRleGVscyk7CiB9CiAKLXZvaWQg
VGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBUaWxlZExh
eWVyQ2hyb21pdW06OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6SGFuZGxlciYgaGFuZGxlcikKIHsKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21w
b3NpdGluZyB0byBnZXQgdHVybmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBi
ZWNvbWUgaW52YWxpZGF0ZWQgbWlkLXVwZGF0ZS4KLSAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9y
ZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSkKKyAg
ICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAh
bV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGludCBsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b207CkBAIC0xOTcsMTYgKzE5
Nyw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDCiAgICAgICAgICAgICBpZiAocGFpbnRPZmZz
ZXQueSgpICsgZGVzdFJlY3QuaGVpZ2h0KCkgPiBtX3BhaW50UmVjdC5oZWlnaHQoKSkKICAgICAg
ICAgICAgICAgICBDUkFTSCgpOwogCi0gICAgICAgICAgICB0aWxlLT5tYW5hZ2VkVGV4dHVyZSgp
LT5iaW5kVGV4dHVyZShjb250ZXh0LCB1cGRhdGVyLmFsbG9jYXRvcigpKTsKLSAgICAgICAgICAg
IGNvbnN0IEdDM0RpbnQgZmlsdGVyID0gbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkgPyBHcmFw
aGljc0NvbnRleHQzRDo6TElORUFSIDogR3JhcGhpY3NDb250ZXh0M0Q6Ok5FQVJFU1Q7Ci0gICAg
ICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRl
eHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUlOX0ZJTFRFUiwg
ZmlsdGVyKSk7Ci0gICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVy
aShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7Ci0KLSAgICAgICAgICAgIHVwZGF0ZXIuYXBwZW5kKHRp
bGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgaGFuZGxl
ci5oYW5kbGUodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAg
IH0KICAgICB9Ci0KLSAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29udGVu
dFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOwogfQogCiB2b2lkIFRpbGVkTGF5ZXJDaHJv
bWl1bTo6c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiB0aWxpbmdPcHRpb24pCkBAIC0zNzAs
MTYgKzM2Myw5IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0ID0gY29u
dGVudFJlY3Q7CiAKICAgICBtX3BhaW50UmVjdCA9IG1fdGlsZXItPmxheWVyUmVjdFRvQ29udGVu
dFJlY3QoZGlydHlMYXllclJlY3QpOwotICAgIGlmIChkaXJ0eUxheWVyUmVjdC5pc0VtcHR5KCkp
CisgICAgaWYgKG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ly8gQ2FsbGluZyBwcmVwYXJlVG9VcGRhdGUoKSBjYWxscyBpbnRvIFdlYktpdCB0byBwYWludCwg
d2hpY2ggbWF5IGhhdmUgdGhlIHNpZGUKLSAgICAvLyBlZmZlY3Qgb2YgZGlzYWJsaW5nIGNvbXBv
c2l0aW5nLCB3aGljaCBjYXVzZXMgb3VyIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVyZSB1cGRhdGVy
IHRvIGJlIGRlbGV0ZWQuCi0gICAgLy8gSG93ZXZlciwgd2UgY2FuJ3QgZnJlZSB0aGUgbWVtb3J5
IGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCB1bnRpbCB0aGUgcGFpbnQgZmluaXNoZXMsCi0g
ICAgLy8gc28gd2UgZ3JhYiBhIGxvY2FsIHJlZmVyZW5jZSBoZXJlIHRvIGhvbGQgdGhlIHVwZGF0
ZXIgYWxpdmUgdW50aWwgdGhlIHBhaW50IGNvbXBsZXRlcy4KLSAgICBSZWZQdHI8TGF5ZXJUZXh0
dXJlVXBkYXRlcj4gcHJvdGVjdG9yKHRleHR1cmVVcGRhdGVyKCkpOwotICAgIHRleHR1cmVVcGRh
dGVyKCktPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwg
bV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCkpOwotCiAgICAgbV90aWxlci0+Y29udGVudFJlY3RU
b1RpbGVJbmRpY2VzKG1fcmVxdWVzdGVkVXBkYXRlUmVjdCwgbGVmdCwgdG9wLCByaWdodCwgYm90
dG9tKTsKICAgICBmb3IgKGludCBqID0gdG9wOyBqIDw9IGJvdHRvbTsgKytqKSB7CiAgICAgICAg
IGZvciAoaW50IGkgPSBsZWZ0OyBpIDw9IHJpZ2h0OyArK2kpIHsKQEAgLTQwNSwxMyArMzkxLDI3
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpCiAgICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5KCk7CiAKICAgICAg
ICAgICAgIHRpbGUtPm1fdXBkYXRlUmVjdCA9IHNvdXJjZVJlY3Q7Ci0gICAgICAgICAgICBpZiAo
c291cmNlUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAg
ICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAgICAg
ICAgICB0aWxlLT5jbGVhckRpcnR5KCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKK3ZvaWQgVGls
ZWRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQoreworICAgIGlmIChtX3NraXBzRHJhdyB8fCBtX3JlcXVlc3RlZFVwZGF0ZVJlY3QuaXNFbXB0
eSgpIHx8ICFtX3RpbGVyLT5udW1UaWxlcygpIHx8IG1fcGFpbnRSZWN0LmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gQ2FsbGluZyBwYWludENvbnRlbnRzKCkgY2FsbHMgaW50
byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRlCisgICAgLy8gZWZmZWN0
IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91ciByZWZlcmVuY2UgdG8g
dGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgorICAgIC8vIEhvd2V2ZXIsIHdlIGNh
bid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0NvbnRleHQgdW50aWwgdGhl
IHBhaW50IGZpbmlzaGVzLAorICAgIC8vIHNvIHdlIGdyYWIgYSBsb2NhbCByZWZlcmVuY2UgaGVy
ZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWludCBjb21wbGV0ZXMuCisg
ICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0ZXh0dXJlVXBkYXRlcigp
KTsKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT5wYWludENvbnRlbnRzKG1fcGFpbnRSZWN0LCBtX3Rp
bGVyLT50aWxlU2l6ZSgpLCBtX3RpbGVyLT5oYXNCb3JkZXJUZXhlbHMoKSk7CisKKyAgICBtX3Vw
ZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3Bh
aW50UmVjdCkpOworfQorCisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDVkYWYwZjAuLmNmZGRmYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVk
TGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRh
dGVyJik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9v
bCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpA
QCAtNjUsOCArNjUsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU2V0IGludmFsaWRhdGlvbnMg
dG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4KICAgICB2b2lkIGlu
dmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKLSAgICAvLyBQcmVwYXJl
IGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRl
bnRSZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0
IHdpdGggY29udGVudFJlY3QuCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QpOworICAgIC8vIFBhaW50IGNvbnRlbnRzIG5lZWRlZCB0byB1cGRhdGUg
dGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICB2b2lkIHBhaW50
Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lk
IHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKQEAgLTgzLDcgKzg1LDcgQEAgcHJpdmF0
ZToKIAogICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCi0gICAg
Ly8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJl
dHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRSZWN0
IG1fcmVxdWVzdGVkVXBkYXRlUmVjdDsKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFy
ZVRvVXBkYXRlKCkgYW5kIHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBh
cmVhCiAgICAgLy8gb2YgdGhlIGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBieSBX
ZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlNmJjNzc1Li40ZGM5
NjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQwLDExICs0MCwzNCBA
QAogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVQ
cm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpV
cGRhdGVyVGV4dHVyZShWaWRlb0xheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihs
YXllcikKK3sKK30KKworVmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0
ZXJUZXh0dXJlKCkKK3sKK30KKworYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQoreworICAgIHJldHVybiBtX2xheWVyLT5uZWVkUHJlcGFy
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX2xheWVyLT5wcmVwYXJl
Q29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCit2b2lkIFZpZGVv
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJl
Y3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBWaWRl
b0xheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZGVv
RnJhbWVQcm92aWRlciogcHJvdmlkZXIpCiB7CkBAIC01Nyw2ICs4MCw5IEBAIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6VmlkZW9MYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsIFZp
ZGVvRnJhbWVQcm92CiAgICAgLCBtX2ZyYW1lRm9ybWF0KFZpZGVvRnJhbWVDaHJvbWl1bTo6SW52
YWxpZCkKICAgICAsIG1fcHJvdmlkZXIocHJvdmlkZXIpCiAgICAgLCBtX3BsYW5lcygwKQorICAg
ICwgbV9mcmFtZSgwKQorICAgICwgbV9uZWVkUHJlcGFyZShmYWxzZSkKKyAgICAsIG1fdXBkYXRl
clRleHR1cmUoVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNzcsOCAr
MTAzLDEyIEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAg
ICAgICAgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUuY2xlYXIoKTsKIH0KIAotdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CisgICAgbV9uZWVkUHJlcGFyZSA9IGZh
bHNlOworICAgIG1fdXBkYXRlUmVjdCA9IEludFJlY3QoKTsKKyAgICBBU1NFUlQoIW1fZnJhbWUp
OworCiAgICAgaWYgKCFtX2RlbGVnYXRlIHx8ICFtX3Byb3ZpZGVyIHx8ICFkcmF3c0NvbnRlbnQo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC05NSw0OCArMTI1LDg4IEBAIHZvaWQgVmlkZW9MYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBDCiAKICAgICBtX3BsYW5lcyA9IDA7CiAgICAgbV9za2lwc0RyYXcgPSBmYWxzZTsK
LQotICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUgPSBtX3Byb3ZpZGVyLT5nZXRDdXJyZW50
RnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKSB7CisgICAgbV9mcmFtZSA9IG1fcHJvdmlkZXItPmdl
dEN1cnJlbnRGcmFtZSgpOworICAgIGlmICghbV9mcmFtZSkgewogICAgICAgICBtX3NraXBzRHJh
dyA9IHRydWU7Ci0gICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2ZyYW1lRm9ybWF0ID0gZnJhbWUtPmZvcm1h
dCgpOwotICAgIEdDM0RlbnVtIHRleHR1cmVGb3JtYXQgPSBkZXRlcm1pbmVUZXh0dXJlRm9ybWF0
KGZyYW1lKTsKKyAgICBtX2ZyYW1lRm9ybWF0ID0gbV9mcmFtZS0+Zm9ybWF0KCk7CisgICAgR0Mz
RGVudW0gdGV4dHVyZUZvcm1hdCA9IGRldGVybWluZVRleHR1cmVGb3JtYXQobV9mcmFtZSk7CiAg
ICAgaWYgKHRleHR1cmVGb3JtYXQgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfVkFMVUUp
IHsKICAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCBvdGhlciBwYXRocy4KICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwotICAgICAgICBtX3By
b3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJhbWUpOworICAgICAgICBtX3Byb3ZpZGVyLT5wdXRD
dXJyZW50RnJhbWUobV9mcmFtZSk7CisgICAgICAgIG1fZnJhbWUgPSAwOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5
IGFyZSBub3QgYWxsb2NhdGVkIGFscmVhZHksIG9yCiAgICAgLy8gcmVhbGxvY2F0ZSB0ZXh0dXJl
cyB0aGF0IGFyZSB0aGUgd3Jvbmcgc2l6ZSBmb3IgdGhlIGZyYW1lLgotICAgIGJvb2wgdGV4dHVy
ZXNSZXNlcnZlZCA9IHJlc2VydmVUZXh0dXJlcyhmcmFtZSwgdGV4dHVyZUZvcm1hdCk7CisgICAg
Ym9vbCB0ZXh0dXJlc1Jlc2VydmVkID0gcmVzZXJ2ZVRleHR1cmVzKG1fZnJhbWUsIHRleHR1cmVG
b3JtYXQpOwogICAgIGlmICghdGV4dHVyZXNSZXNlcnZlZCkgewogICAgICAgICBtX3NraXBzRHJh
dyA9IHRydWU7Ci0gICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7Cisg
ICAgICAgIG1fcHJvdmlkZXItPnB1dEN1cnJlbnRGcmFtZShtX2ZyYW1lKTsKKyAgICAgICAgbV9m
cmFtZSA9IDA7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBVcGRhdGUgdGV4dHVy
ZSBwbGFuZXMuCi0gICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBs
YW5lcygpOyBwbGFuZSsrKSB7CisgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgYm91bmRzKCkpOworICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7CisKKyAgICAvLyBDaGVj
ayBpZiB3ZSBuZWVkIHRvIGFsbG9jYXRlIHRleHR1cmUgcGxhbmVzLgorICAgIGZvciAodW5zaWdu
ZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CisgICAg
ICAgIFRleHR1cmUmIHRleHR1cmUgPSBtX3RleHR1cmVzW3BsYW5lXTsKKyAgICAgICAgQVNTRVJU
KHRleHR1cmUubV90ZXh0dXJlKTsKKyAgICAgICAgaWYgKCF0ZXh0dXJlLm1fdGV4dHVyZS0+dGV4
dHVyZUlkKCkpIHsKKyAgICAgICAgICAgIG1fbmVlZFByZXBhcmUgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgVmlkZW9MYXllckNocm9taXVt
OjpuZWVkUHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQoreworICAgIHJldHVybiBtX25lZWRQ
cmVwYXJlICYmICFtX3NraXBzRHJhdzsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnBy
ZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit7CisgICAgQVNTRVJUKG1fZnJhbWUpOworCisgICAg
Ly8gQWxsb2NhdGUgdGV4dHVyZSBwbGFuZXMuCisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7
IHBsYW5lIDwgbV9mcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKICAgICAgICAgVGV4dHVyZSYg
dGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwogICAgICAgICBBU1NFUlQodGV4dHVyZS5tX3Rl
eHR1cmUpOwotICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUp
ID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkpOwotICAgICAgICB1cGRhdGVUZXh0dXJlKGNv
bnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCksIHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5lKSk7
CisgICAgICAgIEFTU0VSVChtX2ZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKSA9PSB0
ZXh0dXJlLm1fdGV4dHVyZS0+c2l6ZSgpKTsKKyAgICAgICAgYWxsb2NhdGVUZXh0dXJlKGNvbnRl
eHQsIGFsbG9jYXRvciwgdGV4dHVyZSk7CiAgICAgfQogCi0gICAgbV9wbGFuZXMgPSBmcmFtZS0+
cGxhbmVzKCk7CisgICAgbV9wbGFuZXMgPSBtX2ZyYW1lLT5wbGFuZXMoKTsKICAgICBBU1NFUlQo
bV9wbGFuZXMgPD0gTWF4UGxhbmVzKTsKK30KIAotICAgIG1fdXBkYXRlUmVjdCA9IEZsb2F0UmVj
dChGbG9hdFBvaW50KCksIGJvdW5kcygpKTsKLSAgICByZXNldE5lZWRzRGlzcGxheSgpOwordm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQpCit7CisgICAgaWYgKG1fdXBkYXRlUmVjdC5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX2ZyYW1lKTsKIAotICAgIG1fcHJvdmlkZXIt
PnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7CisgICAgLy8gVXBkYXRlIHRleHR1cmUgcGxhbmVzLgor
ICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fZnJhbWUtPnBsYW5lcygpOyBw
bGFuZSsrKSB7CisgICAgICAgIFRleHR1cmUmIHRleHR1cmUgPSBtX3RleHR1cmVzW3BsYW5lXTsK
KyAgICAgICAgdXBkYXRlVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlLCBtX2ZyYW1lLT5kYXRhKHBs
YW5lKSk7CisgICAgfQorCisgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUp
OworICAgIG1fZnJhbWUgPSAwOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVy
KQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3Qo
KSwgSW50UmVjdCgpKTsKIH0KIAogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtMjQ1LDEyICszMTUsMjAgQEAgSW50U2l6ZSBW
aWRlb0xheWVyQ2hyb21pdW06OmNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hy
b21pdW0qIGZyYW1lLAogICAgIHJldHVybiBJbnRTaXplKHZpc2libGVXaWR0aCwgdmlzaWJsZUhl
aWdodCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1
cmUmIHRleHR1cmUsIGNvbnN0IHZvaWQqIGRhdGEpIGNvbnN0Cit2b2lkIFZpZGVvTGF5ZXJDaHJv
bWl1bTo6YWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmUmIHRleHR1cmUpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGNvbnRleHQpOwogICAgIEFTU0VSVCh0ZXh0dXJlLm1fdGV4dHVyZSk7Ci0KICAgICB0ZXh0
dXJlLm1fdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKK30KKwordm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IHZvaWQqIGRhdGEpIGNvbnN0Cit7CisgICAg
QVNTRVJUKGNvbnRleHQpOworICAgIEFTU0VSVCh0ZXh0dXJlLm1fdGV4dHVyZSk7CisgICAgQVNT
RVJUKHRleHR1cmUubV90ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisKKyAgICBjb250ZXh0LT5iaW5k
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZS5tX3RleHR1cmUt
PnRleHR1cmVJZCgpKTsKIAogICAgIEdDM0RlbnVtIGZvcm1hdCA9IHRleHR1cmUubV90ZXh0dXJl
LT5mb3JtYXQoKTsKICAgICBJbnRTaXplIGRpbWVuc2lvbnMgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+
c2l6ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVmlkZW9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaAppbmRleCA0OTA1NzIyLi40MDM4ZjY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9W
aWRlb0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uaApAQCAtNDMsNiArNDMsMjYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIGEgVmlkZW8gZWxlbWVudC4K
IGNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBMYXllckNocm9taXVtIHsKIHB1Ymxp
YzoKKyAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVwZGF0
ZXJUZXh0dXJlPiBjcmVhdGUoVmlkZW9MYXllckNocm9taXVtKiBsYXllcikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBVcGRhdGVyVGV4dHVyZShsYXllcikpOwor
ICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6
CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFZpZGVvTGF5ZXJDaHJvbWl1bSopOwor
CisgICAgICAgIFZpZGVvTGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICB9OwogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRl
KiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAsNyArNzAsMTIgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgYm9vbCBuZWVkUHJlcGFyZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKTsKKyAgICB2b2lkIHByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOworCisgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0
b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgcmVs
ZWFzZVByb3ZpZGVyKCk7CkBAIC03NCw3ICs5OSw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIElu
dFNpemUgY29tcHV0ZVZpc2libGVTaXplKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSosIHVuc2ln
bmVkIHBsYW5lKTsKICAgICBib29sIHRleHR1cmVzVmFsaWQoKTsKICAgICBib29sIHJlc2VydmVU
ZXh0dXJlcyhjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCBHQzNEZW51bSB0ZXh0dXJlRm9ybWF0
KTsKLSAgICB2b2lkIHVwZGF0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgVGV4dHVyZSYsIGNvbnN0IHZvaWQqKSBjb25zdDsKKyAgICB2b2lkIGFsbG9jYXRl
VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlJikg
Y29uc3Q7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZSYsIGNvbnN0IHZvaWQqKSBjb25zdDsKIAogICAgIHZvaWQgcmVzZXRGcmFtZVBhcmFtZXRlcnMo
KTsKIApAQCAtODUsNiArMTExLDExIEBAIHByaXZhdGU6CiAgICAgZW51bSB7IE1heFBsYW5lcyA9
IDMgfTsKICAgICBUZXh0dXJlIG1fdGV4dHVyZXNbTWF4UGxhbmVzXTsKICAgICB1bnNpZ25lZCBt
X3BsYW5lczsKKworICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogbV9mcmFtZTsKKyAgICBib29sIG1f
bmVlZFByZXBhcmU7CisKKyAgICBSZWZQdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1
cmU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCAyNzZmM2M5
Li43ZmU0M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5
LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1
bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21p
dW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJl
Y3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJH
TExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNocm9taXVtKGRlbGVnYXRlKSk7CkBAIC01
Miw2ICs2Nyw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAg
LCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAg
LCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAK
QEAgLTY2LDcgKzgyLDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIChjb250ZXh0KCkgJiYgY29udGV4dCgpLT5nZXRFeHRlbnNpb25z
KCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9f
RVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRh
dGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2Vz
KEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0Nv
bnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUsNiArMTExLDExIEBAIHZvaWQgV2ViR0xM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiByZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVy
KQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3Qo
KSwgSW50UmVjdCgpKTsKK30KKwogYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVy
ZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmICht
X3RleHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRlcmVyQ29udGV4dCgpIHx8ICFkcmF3c0NvbnRl
bnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggNjM3NGI5ZS4uYzMzYjRkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2Vi
R0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1
ZGUgIkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisj
aW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTQ1LDEyICs0NiwzMCBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNr
OwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVy
Q2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xh
c3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7
CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVcGRhdGVyVGV4dHVyZT4g
Y3JlYXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBl
eHBsaWNpdCBVcGRhdGVyVGV4dHVyZShXZWJHTExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBX
ZWJHTExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKIAog
ICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRy
YXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQg
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZpcnR1
YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29sIHBh
aW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIApAQCAtNzEsNiArOTAs
OCBAQCBwcml2YXRlOgogICAgIC8vIEEgcmVmZXJlbmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1
c2UgdGhlIERyYXdpbmdCdWZmZXIgYWxyZWFkeSBob2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRv
IHRoZSBXZWJHTExheWVyQ2hyb21pdW0uCiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVm
ZmVyOworCisgICAgUmVmUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmFlNmZiMy4uNTg5OWJm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNCwxMSArMzQsNTggQEAK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgor
I2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRs
ZXIoKQorICAgIDogbV9yZXNvdXJjZXMoMCkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpOZWVk
UmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NM
YXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgaWYgKHRleHR1cmUtPm5lZWRQ
cmVwYXJlUmVjdCgpKQorICAgICAgICBtX3Jlc291cmNlcysrOworfQorCitDQ0xheWVyVHJlZUhv
c3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6
IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQor
CitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3Vy
Y2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJj
ZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAg
ICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisgICAgICAgIHRleHR1cmUtPnByZXBh
cmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30K
KworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OlBhaW50SGFuZGxlcihDQ1Byb3h5KiBw
cm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFp
bnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6
OlBhaW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQor
eworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNSZWN0KHNvdXJjZVJlY3QpOworICAgIG1fcHJv
eHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIFBhc3NSZWZQ
dHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhv
c3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgUmVm
UHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVy
VHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMjk0LDcgKzM0MSw3IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFk
UHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKIH0KIAotdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1
cm47CkBAIC0zMDIsMTIgKzM0OSwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5
ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShy
b290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5
ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1Vw
ZGF0ZShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkND
TGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJv
b3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRl
clN1cmZhY2UoKTsKQEAgLTMxNiwyNCArMzYzLDc3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qgcm9vdENs
aXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXItPnNldENs
aXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVM
YXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4K
LSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBl
bmQocm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0
ZSB3YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8gcHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1
cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3Jl
bmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAmJiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgp
KTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAg
ICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+
cmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgp
OwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAg
ICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3
RXRjIiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2Ut
PmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUp
OworICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6
OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6
Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVy
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxp
c3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKLSAgICBwYWludExheWVyQ29udGVudHMo
bV91cGRhdGVMaXN0KTsKKyAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVw
ZGF0ZUxpc3QsIG1fbGF5ZXJVcGRhdGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXgg
PSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVy
SW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlz
dFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGly
dHkoKTsKKyAgICB9Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JS
ZXNvdXJjZXMoKQoreworICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBmb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyLnJlc291
cmNlcygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZv
clJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyKQordm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit7CisgICAgVFJBQ0Vf
RVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMiLCB0aGlz
LCAwKTsKKyAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIGhhbmRsZXIoY29udGV4dCwgYWxsb2Nh
dG9yKTsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworfQorCit2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cygpCit7CisgICAgaWYgKCFyb290TGF5ZXIo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgcGFpbnRDb250ZW50cyhyb290TGF5ZXIoKSk7Cit9CisK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKExheWVyQ2hyb21pdW0qIHJvb3RM
YXllcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRz
IiwgdGhpcywgMCk7CisKKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxp
c3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAg
IExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0
KCk7CisgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworCisgICAgICAgIFBh
aW50SGFuZGxlciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOworICAgICAgICBsYXllci0+Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyTGlz
dCYgdXBkYXRlTGlzdCkKK3sKKyAgICAvLyBGb3Igbm9ybWFsIGxheWVycywgdGhlc2UgY29uZGl0
aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tlZCB3aGlsZSBjcmVhdGluZyB0aGUg
cmVuZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCisgICAgLy8gRm9yIG1hc2tzIGFuZCByZXBsaWNh
cyBob3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVjayB0aGVtIGhlcmUuCisgICAgaWYg
KGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVyLT5vcGFjaXR5KCkgfHwgIWxheWVy
LT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlTGlzdC5hcHBl
bmQobGF5ZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxp
Y2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5
ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBv
bmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFj
aCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVh
c3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0
aGUKQEAgLTM0MiwzNCArNDQyLDM0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tB
bmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAgICAgaWYg
KHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFj
ZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgcmVu
ZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0
KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAg
ICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5
KCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tM
YXllcigpLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNh
TGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBs
aWNhTGF5ZXIpIHsKIAogICAgICAgICByZXBsaWNhTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhp
cyk7Ci0gICAgICAgIHJlcGxpY2FMYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAg
ICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAg
ICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FM
YXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3QodGhpcyk7CiAgICAgICAgICAgICBy
ZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0g
ICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5wYWludENvbnRlbnRzSWZEaXJ0
eSgpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xh
eWVyKCksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJU
cmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNv
bnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRl
TGlzdCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAg
ICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9
IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsg
LS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxh
eWVyID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAg
ICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxh
eWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKICAg
ICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKSk7CiAgICAgICAg
IEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgpKTsKIAogICAgICAgICByZW5kZXJT
dXJmYWNlTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50TWFza0Fu
ZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllcik7CisgICAgICAgIGFw
cGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIsIHVw
ZGF0ZUxpc3QpOwogCiAgICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVy
U3VyZmFjZS0+bGF5ZXJMaXN0KCk7CiAgICAgICAgIEFTU0VSVChsYXllckxpc3Quc2l6ZSgpKTsK
QEAgLTM4Niw1MCArNDg2LDI5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29u
dGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAg
ICBBU1NFUlQobGF5ZXItPm9wYWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWxheWVyLT5i
b3VuZHMoKS5pc0VtcHR5KCkpOwogCi0gICAgICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lm
RGlydHkoKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihsYXllciwgdXBkYXRlTGlz
dCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVV
cGRhdGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKLSAgICBm
b3IgKGludCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUlu
ZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5k
ZXJTdXJmYWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAgICAg
ICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxh
eWVyLT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKLSAg
ICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKSk7Ci0gICAgICAg
IEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgpKTsKLQotICAgICAgICBpZiAocmVu
ZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VM
YXllci0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBk
YXRlcik7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCkp
IHsKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5
ZXIoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigp
LT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVy
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxp
c3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKLSAgICAgICAgQVNTRVJUKGxheWVyTGlz
dC5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllcklu
ZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7Ci0gICAgICAgICAgICBMYXll
ckNocm9taXVtKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKLSAgICAgICAg
ICAgIGlmIChsYXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxheWVyLT5yZW5kZXJTdXJmYWNlKCkg
IT0gcmVuZGVyU3VyZmFjZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAg
ICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0g
ICAgICAgIH0KKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6
ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVy
Q2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7Cisg
ICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0K
IH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAg
Zm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0
LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIg
PSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlz
dC5jbGVhcigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUlu
ZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7
CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlz
dFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZh
Y2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAg
bV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVh
cigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25z
dCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApp
bmRleCBhNzkzY2NhLi42ODBiNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAt
NDUsNyArNDUsNiBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFRl
eHR1cmVBbGxvY2F0b3I7CkBAIC0xNzcsOSArMTc2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJz
KCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKTsKKyAgICBib29sIG5lZWRzQ29tcG9zaXRv
clJlc291cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBwYWludENvbnRlbnRz
KCk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0
M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U2Nyb2xs
QW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3RhcnRSYXRl
TGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVMaW1pdGVyKEdy
YXBoaWNzQ29udGV4dDNEKik7CkBAIC0xODksMTIgKzE5MSw1MCBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgTmVlZFJlc291cmNlSGFu
ZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKyAgICAgICAgdmlydHVhbCB+TmVlZFJl
c291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICBpbnQgcmVzb3VyY2VzKCkgeyByZXR1cm4gbV9y
ZXNvdXJjZXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX3Jlc291cmNlczsKKyAg
ICB9OworCisgICAgY2xhc3MgUHJlcGFyZVJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFByZXBhcmVSZXNv
dXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAg
ICAgIHZpcnR1YWwgflByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgICAgICBUZXh0dXJlQWxs
b2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICB9OworCisgICAgY2xhc3MgUGFpbnRIYW5kbGVyIDog
cHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgUGFpbnRIYW5kbGVyKENDUHJveHkqKTsKKyAgICAgICAgdmlydHVhbCB+UGFpbnRIYW5kbGVy
KCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94eSogbV9wcm94eTsKKyAgICB9Owor
CiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0Owog
Ci0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0Jik7Ci0gICAgdm9p
ZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKik7Cisg
ICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlzdCYpOwor
ICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21p
dW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVy
cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVw
ZGF0ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOworICAg
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHBhaW50Q29u
dGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAK
ICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKQEAgLTIxMCw3ICsyNTAsOCBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8
VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExheWVyTGlz
dCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Q7
CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAgICAgQ0NTZXR0aW5ncyBtX3Nl
dHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTYyMzBlYS4uMWM1MzE3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHku
aApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5X2gKIAogI2luY2x1ZGUgIkludFJl
Y3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgpAQCAtNzgsNiArNzksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgdGhlIHByb3h5Lgog
ICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgZGVs
ZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwog
ICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmNwcAppbmRleCBkZGMwMWMxLi45MzIxZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIlRyYWNl
RXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9D
Q1Njcm9sbENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAj
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0x
NDgsMTUgKzE0NywxOSBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0
ZSgpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKIHsKICAgICBBU1NFUlQo
Q0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gUHJlcGFyZSBjb21wb3NpdG9yIHJl
c291cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRvclJlc291cmNl
cygpKQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2Vz
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENv
bnRlbnRzKCk7CisKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKICAgICB7CiAgICAgICAgIERl
YnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBs
LT5iZWdpbkNvbW1pdCgpOwotCisgICAgICAgIHdoaWxlIChtX3RleHR1cmVVcGRhdGVyLnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXll
clRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdl
dCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0
KCkpOwogCkBAIC0yMDksNiArMjEyLDExIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3Rv
cCgpCiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKIH0KIAordm9pZCBDQ1NpbmdsZVRocmVhZFBy
b3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgbV90
ZXh0dXJlVXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQor
CiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVu
ZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5
Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNzMsNyArMjgxLDcgQEAgdm9pZCBDQ1Np
bmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6
OmlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7
CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZWRhYjYxZi4u
NmQ5YTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRl
ICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50
YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFk
KCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpAQCAtODIsNiArODQsOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVT
aG91bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJ
c05ld2x5Q29tbWl0dGVkRnJhbWU7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVw
ZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4g
ZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlLi5hNjFjM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1
cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJl
VXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUg
Ik1hbmFnZWRUZXh0dXJlLmgiCkBAIC0zNywxMSArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3Rk
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVw
ZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxs
b2NhdG9yKQotICAgICwgbV9lbnRyeUluZGV4KDApCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1
cmVVcGRhdGVyKCkKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQogCiBDQ1RleHR1cmVV
cGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCkBAIC02NiwyMyArNjQsMjAgQEAgYm9vbCBDQ1Rl
eHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7
Ci0gICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJp
ZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRy
eUluZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5
SW5kZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9h
bGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7Ci0gICAgfQor
ICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5z
aXplKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkg
PSBtX2VudHJpZXMubGFzdCgpOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3Qo
Y29udGV4dCwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAg
bV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9CiAKLSAgICAvLyBJZiBubyBlbnRyaWVzIGxl
ZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJl
VXBkYXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVz
LmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5
Li5hYjY1OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zMywxMSArMzMs
MTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1j
bGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsKIHB1Ymxp
YzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1RleHR1
cmVVcGRhdGVyKCk7CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5k
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CkBAIC00OSw4ICs0OCw2IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpIHsg
cmV0dXJuIG1fYWxsb2NhdG9yOyB9Ci0KIHByaXZhdGU6CiAgICAgc3RydWN0IFVwZGF0ZUVudHJ5
IHsKICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOwpAQCAt
NTgsOCArNTUsNiBAQCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CiAgICAg
fTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2Vu
dHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDk1YzZiNWQuLjY3NDFjMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiY2MvQ0NTY2hl
ZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAi
Y2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGlt
ZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0yODYsNiArMjg1LDIwIEBAIHZv
aWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3Zv
aWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRl
eHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3N0YXJ0ZWQpOworCisg
ICAgVXBkYXRlRW50cnkqIGVudHJ5ID0gbmV3IFVwZGF0ZUVudHJ5OworICAgIGVudHJ5LT5tX3Rl
eHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0Owor
ICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBDQ1Byb3h5OjppbXBsVGhy
ZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6
dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhlbnRyeSkp
KTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkND
VGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpA
QCAtMzc0LDcgKzM4NywxNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21t
aXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0
ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgbV9sYXllclRy
ZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1Vw
ZGF0ZSgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1
aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7
CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CisgICAgICAgIENDUHJveHk6
OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVh
ZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJl
YWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNvbXBsZXRpb24ud2FpdCgpOworICAg
IH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygpOwogCiAgICAgLy8gQmVm
b3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0
ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVlIG5vdywgaXQgbWVhbnMg
c2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXROZWVkc0NvbW1pdApAQCAt
Mzk4LDYgKzQyMSwzOSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQo
aW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFTU0VSVChtX2xh
c3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBzZXF1ZW5jZU51
bWJlcik7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQoreworICAgIFRSQUNFX0VW
RU5UKCJDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbk9uSW1wbFRocmVhZCIs
IHRoaXMsIDApOworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJl
YWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVy
T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1p
dFBlbmRpbmcoKSk7CisgICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGNv
bXBsZXRpb24tPnNpZ25hbCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXll
clRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBs
LT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRv
cigpKTsKKworICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworfQorCit2b2lkIENDVGhyZWFkUHJv
eHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoVXBkYXRlRW50cnkqIGVudHJ5KQoreworICAg
IEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOworICAgIEFTU0VS
VChpc0ltcGxUaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkKTsK
KyAgICBBU1NFUlQobV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmNvbW1pdFBlbmRpbmcoKSk7Cisg
ICAgaWYgKCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGRlbGV0ZSBlbnRyeTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQu
YXBwZW5kKGVudHJ5LT5tX3RleHR1cmUsIGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rl
c3RSZWN0KTsKKworICAgIGRlbGV0ZSBlbnRyeTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5Ojpi
ZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRp
b24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0
ZU9uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAtNDEyLDM2ICs0NjgsMjggQEAgdm9pZCBDQ1Ro
cmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
ID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRv
cHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNU
ZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQt
PmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVS
ZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAogewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0
ZXJPbkltcGxUaHJlYWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7CisgICAgcmV0
dXJuIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMoKTsKIH0KIAog
dm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkK
IHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRl
TW9yZVJlc291cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBVcGRhdGVzUGVyRnJhbWUg
PSA5OTk5OTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRl
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKKyAgICBt
X3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBBU1NFUlQoIW1fdGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgQVNTRVJUKG1f
Y29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKIAotICAgIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1w
bFRocmVhZC5jbGVhcigpOwogCiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1p
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDFkZjM3NDYuLmFiYTM0NGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgImNj
L0NDU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1
ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBAIC02Miw2ICs2
Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5
ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25T
d2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCk7CkBAIC03OCw2ICs4MCwxMiBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0
Kik7CiAKKyAgICBzdHJ1Y3QgVXBkYXRlRW50cnkgeworICAgICAgICBMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiBtX3RleHR1cmU7CisgICAgICAgIEludFJlY3QgbV9zb3VyY2VSZWN0Owor
ICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CisgICAgfTsKKwogICAgIC8vIENhbGxlZCBvbiBt
YWluIHRocmVhZAogICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1i
ZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0
Pik7CiAgICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKQEAgLTkyLDYgKzEwMCw4IEBA
IHByaXZhdGU6CiAgICAgfTsKICAgICBQYXNzT3duUHRyPENDVGhyZWFkOjpUYXNrPiBjcmVhdGVC
ZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVn
aW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1Ro
cmVhZDo6VGFzayoqKTsKKyAgICB2b2lkIHByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVh
ZChDQ0NvbXBsZXRpb25FdmVudCopOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZU9uSW1wbFRocmVh
ZChVcGRhdGVFbnRyeSopOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFk
KENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJl
YWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxU
aHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKQEAgLTEyNywxMCArMTM3LDExIEBAIHByaXZhdGU6
CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1p
dCB0byBjb21wbGV0ZS4KICAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9jb21taXRDb21wbGV0aW9u
RXZlbnRPbkltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQg
ZHJhdyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFk
LgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7
CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDIyMDljOGEuLjE4
ZmVkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0yMTksNiArMjE5
LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRv
VGlsZUluZGljZXMoY29udGVudFJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAg
SW50UmVjdCBsYXllclJlY3QgPSBtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KGNvbnRl
bnRSZWN0KTsKICAgICBmbG9hdCBzaWduID0gRmxvYXRRdWFkKGNvbnRlbnRSZWN0KS5pc0NvdW50
ZXJjbG9ja3dpc2UoKSA/IC0xIDogMTsKKyAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGls
ZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBo
aWNzQ29udGV4dDNEOjpORUFSRVNUOwogICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9t
OyArK2opIHsKICAgICAgICAgQ0NMYXllclF1YWQ6OkVkZ2UgcHJldkVkZ2VYID0gY29udGVudFF1
YWQubGVmdCgpOwogCkBAIC0zNDMsNiArMzQ0LDkgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpk
cmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQK
IAogICAgICAgICAgICAgaWYgKHRpbGUgJiYgdGlsZS0+dGV4dHVyZUlkKCkpIHsKICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgdGlsZS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250
ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVy
KSk7CisKICAgICAgICAgICAgICAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGds
b2JhbFRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBxdWFk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3Jh
bS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDRhNDE3OTYu
LmJjMzY2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAi
TW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIK
ICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCkBAIC05MDQsNiArOTA1LDE0IEBAIFRFU1RfRihD
Q0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVz
dCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRl
bGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29u
dGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVz
M0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWly
ZWQoKSB7IH0KK307CisKIGNsYXNzIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6IHB1
YmxpYyBDQ0xheWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5
ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtOTI3LDM3ICs5MzYsMTE2
IEBAIHByaXZhdGU6CiAKIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nIDogcHVibGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRl
KENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xhc3Mg
Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7
CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0dXJl
KENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0
dXJlKQorICAgICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAg
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+bmVlZFByZXBh
cmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRS
ZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5w
cmVwYXJlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wYWlu
dENvbnRlbnRzUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJj
ZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1h
bmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikp
OworICAgICAgICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9w
YWludENvbnRlbnRzQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50KCkg
eyBtX3BhaW50Q29udGVudHNDb3VudCA9IDA7IH0KKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFn
ZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7CisgICAgICAg
IH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0KLSAg
ICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9CisgICAgICAg
IHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVV
cGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoKQorICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1w
bGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dFJHQkE7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNp
emUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
bGF5ZXItPnBhaW50Q29udGVudHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXI7IH0K
KworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IENvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikgOiBtX2xh
eWVyKGxheWVyKSB7IH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZyogbV9sYXllcjsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUg
KmRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRM
YXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX3BhaW50Q29u
dGVudHNDb3VudCsrOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNo
cm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2aXJ0
dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikKICAg
ICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAgICAg
IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlci5nZXQoKTsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVu
dHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFp
bnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVS
ZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVw
YXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KCkgeyBtX3BhaW50
Q29udGVudHNSZWN0Q291bnQrKzsgfQorICAgIGludCBwYWludENvbnRlbnRzUmVjdENvdW50KCkg
eyByZXR1cm4gbV9wYWludENvbnRlbnRzUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJl
Y3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkg
eyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0KKworICAgIGludCBuZWVkUHJlcGFyZVJlY3Qo
KSB7IHJldHVybiBtX25lZWRQcmVwYXJlUmVjdDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAq
ZGVsZWdhdGUpCisgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3QpCiAg
ICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9uZWVk
UHJlcGFyZVJlY3QobmVlZFByZXBhcmVSZWN0KQogICAgICAgICAsIG1fcGFpbnRDb250ZW50c0Nv
dW50KDApCi0gICAgICAgICwgbV91cGRhdGVDb3VudCgwKQorICAgICAgICAsIG1fcHJlcGFyZVJl
Y3RDb3VudCgwKQorICAgICAgICAsIG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCgwKQorICAgICAg
ICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAgICAgewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6
ZSgxMCwgMTApKTsKICAgICB9CiAKKyAgICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXI+IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI7CisgICAgYm9vbCBtX25lZWRQcmVwYXJl
UmVjdDsKICAgICBpbnQgbV9wYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291
bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV9wYWludENvbnRlbnRz
UmVjdENvdW50OworICAgIGludCBtX3VwZGF0ZVJlY3RDb3VudDsKIH07CiAKIC8vIExheWVyIG9w
YWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRvciBy
ZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC05NjUsNyArMTA1
Myw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIDogcHVibGljIEND
TGF5ZXJUcmVlSG9zdFRlc3QgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFj
aXR5Q2hhbmdlKCkKICAgICAgICAgOiBtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUodGhpcykK
LSAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKSkKKyAgICAg
ICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlLCB0cnVlKSkKICAgICB7
CiAgICAgfQogCkBAIC05ODQsMTMgKzEwNzIsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGFmdGVyVGVzdCgpCiAgICAgewotICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0eSgp
IHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIC8vIHBhaW50Q29udGVudHMo
KSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgogICAgICAgICBFWFBFQ1RfRVEoMSwgbV91
cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8gdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1l
Ci0gICAgICAgIC8vIGFtb3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCkuCi0g
ICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgp
LAotICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgpKTsK
KyAgICAgICAgLy8gcGFpbnRDb250ZW50c1JlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0
aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcHJlcGFyZVJlY3QoKS4KKyAg
ICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpLAor
ICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENv
dW50KCkpOworCisgICAgICAgIC8vIHVwZGF0ZVJlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c1Jl
Y3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50
c1JlY3RDb3VudCgpLAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRh
dGVSZWN0Q291bnQoKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTAwMyw0ICsxMDk2LDQ5IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSwgcnVuTXVsdGlUaHJlYWQp
CiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90IGJl
IGNhbGxlZCB3aGVuIG5lZWRQcmVwYXJlUmVjdCgpIHJldHVybnMgZmFsc2UuCitjbGFzcyBDQ0xh
eWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0
IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCgpCisgICAg
ICAgIDogbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUsIGZhbHNlKSkKKyAgICB7CisgICAgfQorCisgICAg
dmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3Qt
PnNldFJvb3RMYXllcihtX3VwZGF0ZUNoZWNrTGF5ZXIpOworICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFZpZXdwb3J0KEludFNpemUoMTAsIDEwKSk7CisKKyAgICAgICAgcG9zdFNldE5lZWRz
Q29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENv
bXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKKyAgICB7CisgICAgICAgIGVu
ZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7Cisg
ICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgor
ICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291
bnQoKSk7CisKKyAgICAgICAgLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90IGhhdmUgYmVlbiBj
YWxsZWQuCisgICAgICAgIEVYUEVDVF9FUSgwLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVS
ZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4g
Y2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENvbnRl
bnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENv
bnRlbnRzUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIt
PnVwZGF0ZVJlY3RDb3VudCgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0xheWVyRGVs
ZWdhdGUgbV9kZWxlZ2F0ZTsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc+IG1fdXBkYXRlQ2hlY2tMYXllcjsKK307CisKK1RFU1RfRihDQ0xheWVyVHJl
ZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCwgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVzdCh0
cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKLS0gCjEuNy4zLjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116003</attachid>
            <date>2011-11-20 15:48:10 -0800</date>
            <delta_ts>2011-11-21 12:24:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initialize-frame-resources.diff</filename>
            <type>text/plain</type>
            <size>94455</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggMDAzODYyOS4uZmVkZDM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7
CiB9CkBAIC00NSw5ICs0NSwxMSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBBU1NFUlQodGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSkKQEAgLTc3LDcgKzc5LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsMTUgKzkwLDEz
IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3Jt
Q2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVy
KCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRl
ci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWludCgqY2Fu
dmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIH0KIAot
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBm
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwot
Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgbV90ZXhTdWJJ
bWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IGM4ZTZlMDIuLjUzNWYwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFs
IGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTks
OCArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0
dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7
Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDQ0OTQ1ODYuLjM5ZDJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcApAQCAtNDQsNiArNDQsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4
dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikK
K3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVy
Q2hyb21pdW0oY29udGV4dCkpOwpAQCAtNTIsNiArNjYsNyBAQCBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0MwogQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBDYW52YXNMYXllckNocm9taXVtKDApCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1
cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjUsNyArODAsNyBAQCBib29sIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgICYmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKQogewogICAgIGlmIChtX2RpcnR5UmVjdC5pc0VtcHR5KCkgfHwgIWRyYXdz
Q29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC04NSw2ICsxMDAsMTEgQEAgdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHQKICAgICByZXNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRl
clRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMy
RExheWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBpZiAobGF5ZXJUcmVlSG9z
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA0NTdiZDU2Li5lMjVl
ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDMsMTYgKzQzLDM2
IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8gQSBsYXllciBjb250YWluaW5nIGFuIGFj
Y2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDogcHVibGlj
IENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShDYW52YXMyRExh
eWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRl
clRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRMYXll
ckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1
YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDYW52YXMyRExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCog
bV9jb250ZXh0OworCisgICAgUmVmUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApp
bmRleCA1ZmE2Nzg1Li5jNjFlYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcApAQCAtMzYsNiArMzYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CisKK0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKworYm9v
bCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQor
eworICAgIHJldHVybiAhbV90ZXh0dXJlLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBt
X3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRl
cikKIHsKQEAgLTQ1LDcgKzYzLDcgQEAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKK3ZvaWQgQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtY29udGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYThmZWZmMy4uODg2ZDEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwyOCBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZh
cy4KIGNsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1
cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJl
UmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07
CisKICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5
ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7
CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWMzNmEyZC4uMDBkMzg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICBUaWxlZExheWVyQ2hy
b21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRp
b24oKTsKIApAQCAtMTEyLDYgKzExMiwyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAordm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFT
U0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2
aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggYjgzNGU2Ny4uYzVl
OWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9taXVtKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCBlOTQ1ZTA2Li45ZWQ5YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEZyYW1lQnVmZmVyKCk7CiAgICAg
fkZyYW1lQnVmZmVyKCk7CiAKLSAgICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSopOworICAgIFNrQ2FudmFz
KiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqKTsKIAogcHJp
dmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwpAQCAtNjYsMTIgKzY2LDEy
IEBAIEZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQogICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZUZyYW1lYnVmZmVyKG1fZmJvKTsKIH0KIAotU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQorU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0
aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSkKIHsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1fZmJvID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIHRleHR1cmUtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKG1fY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUtPnRleHR1cmVJZCgpLCAwKTsKIAogICAgIC8vIENyZWF0ZSBhIHNraWEgZ3B1IGNh
bnZhcy4KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IG1fY29udGV4dC0+Z3JDb250ZXh0KCk7
CkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvcioKIH0gLy8gbmFtZXNwYWNl
CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAg
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRl
cih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTEwNSw5ICsxMDUsMjMgQEAgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9j
YXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgLy8gTWFrZSBzdXJl
IFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgorICAgIGNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdM
IHN0YXRlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKKworICAg
IEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKworICAgIC8vIENyZWF0ZSBhbiBhY2Nl
bGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KKyAgICBGcmFtZUJ1ZmZlciBidWZmZXI7CisgICAg
U2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIHRleHR1cmUoKSk7
CisKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBjYW52
YXMsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBz
byB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KKyAg
ICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0xMzUsMjYgKzE0OSwxNCBAQCBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBTa0NhbnZhcyogY2FudmFzLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICAv
LyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgLy8gTm90aWZ5IFNLSUEgdG8gc3luYyBpdHMg
aW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4
dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgot
ICAgIEZyYW1lQnVmZmVyIGJ1ZmZlcjsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmlu
aXRpYWxpemUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKLQogICAgIGNhbnZhcy0+Y2xp
cFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2Yg
Y29udGVudFJlY3QgdG8gdGhhdCBvZiBkZXN0UmVjdC4KICAgICAvLyBOb3RlIHRoYXQgZGVzdFJl
Y3QgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byBzb3VyY2VSZWN0LgogICAgIGNhbnZhcy0+dHJhbnNs
YXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCkgKyBkZXN0UmVjdC54KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSAr
IGRlc3RSZWN0LnkoKSk7CiAgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKLQotICAgIC8vIEZsdXNo
IFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0
aGUgdGV4dHVyZS4KLSAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5ZDM3Njhj
Li5iNWRmNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsMTYgKzMyLDE4IEBA
CiAKICNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKK2Ns
YXNzIFNrQ2FudmFzOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApp
bmRleCBiOTUzMzBiLi5jNDBjNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQ5LDE5ICs0OSwzNCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1
cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAg
ICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3Is
IHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgbV90ZXh0dXJl
LT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBk
YXRlcjsgfQogCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAg
ICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsK
IApAQCAtODUsMTUgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8p
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVu
dFJlY3QgKi8sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFn
ZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBmb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsK
LQogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1h
Z2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2Ug
dGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBj
bGlwcGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CkBAIC0xMDMsNyArMTE2LDcgQEAgcHVibGlj
OgogICAgICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5sb2NhdGlv
bigpIC0gc291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNl
dFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3Qs
IGNsaXBwZWREZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgICAgICBt
X3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBl
ZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKICAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZUZyb21JbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKQEAg
LTE2OCw3ICsxODEsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1h
Z2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50cy0+Y3VycmVudEZyYW1lSGFz
QWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
CiB7CiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV90ZXh0dXJl
VXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCA1ZmU0ZjI2Li5mNmVi
YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNzEzZGZiMi4u
ZGRkMzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVt
LmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0x
NjEsOCArMTYxLDkgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkg
bmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVy
OjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCA5MDg4NGNmLi5iYmU3NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMz
RC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgVGV4dHVyZUFs
bG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCkBAIC00OCwxNCArNDgsMTggQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0gICAg
ICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4
cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3Rl
eHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3Qo
KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
ID0gMDsKKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkxh
eWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTc4LDcgKzgyLDcgQEAgcHVibGljOgogICAgIC8v
IFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVk
IHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0Lngg
aXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1h
dCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3Qg
Ki8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYg
LyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRl
eHR1cmUuY3BwCmluZGV4IDViYmZmNmEuLmM3NGM5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5j
cHAKQEAgLTgwLDExICs4MCwxNiBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUoKQog
ICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7CiB9CiAKLXZv
aWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxv
Y2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSht
X3Rva2VuKSk7CiAgICAgaWYgKCFtX3RleHR1cmVJZCkKICAgICAgICAgbV90ZXh0dXJlSWQgPSBt
X3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKK30K
Kwordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBhbGxvY2F0ZVRleHR1
cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaAppbmRleCA0ZDQzODA5Li5kNzNjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKQEAgLTU1
LDYgKzU1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+aXNQ
cm90ZWN0ZWQobV90b2tlbik7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBiaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IGI3NTE1YmYuLjRhYWUwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCwxMiArNDgsMTIg
QEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZs
b2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50
c1NjYWxlKQogewogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRp
bmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgR3JhcGhpY3NDb250
ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBwYWludENvbnRlbnRz
KGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOworICAgIHBhaW50
KGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGlj
dHVyZS5lbmRSZWNvcmRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MGY4YjAuLmFlZmJmYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShT
a0NhbnZhcyopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggNzFiNmY1ZC4uYmQ4NDkyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBA
IC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVl
SG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgICAgIGlzTm9uQ29tcG9zaXRlZENvbnRl
bnQoKSA/IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdE
YXRhOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0
dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7
CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBv
ZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11
cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0Vt
cHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1f
cmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwg
bV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tOwpAQCAtMjA4LDE2ICsyMDgsOSBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgQwogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdo
dCgpID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAot
ICAgICAgICAgICAgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwg
dXBkYXRlci5hbGxvY2F0b3IoKSk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9
IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6
IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikp
OwotCi0gICAgICAgICAgICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuaGFuZGxlKHRpbGUtPnRleHR1cmUo
KSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgbV91cGRh
dGVSZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWlu
dFJlY3QpKTsKIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihU
aWxpbmdPcHRpb24gdGlsaW5nT3B0aW9uKQpAQCAtMzgxLDE1ICszNzQsOSBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQogICAgIG1fcmVxdWVzdGVkVXBkYXRlUmVjdCA9IGNvbnRlbnRSZWN0OwogCiAgICAgbV9wYWlu
dFJlY3QgPSBtX3RpbGVyLT5sYXllclJlY3RUb0NvbnRlbnRSZWN0KGRpcnR5TGF5ZXJSZWN0KTsK
LSAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChtX3BhaW50UmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIENhbGxpbmcgcHJlcGFyZVRvVXBk
YXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRl
Ci0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91
ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgotICAgIC8v
IEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0Nv
bnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAgIC8vIHNvIHdlIGdyYWIgYSBsb2Nh
bCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWlu
dCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0
ZXh0dXJlVXBkYXRlcigpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUo
bV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVs
cygpLCBjb250ZW50c1NjYWxlKCkpOwogICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5k
aWNlcyhtX3JlcXVlc3RlZFVwZGF0ZVJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAg
ICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3IgKGlu
dCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CkBAIC00MTQsMTMgKzQwMSwyNyBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KQogICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOwogCiAgICAgICAgICAgICB0
aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZVJl
Y3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB0
aWxlLT50ZXh0dXJlKCktPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOworICAgICAgICAgICAgdGls
ZS0+Y2xlYXJEaXJ0eSgpOwogICAgICAgICB9CiAgICAgfQogfQogCit2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3sKKyAg
ICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRVcGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAh
bV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIENhbGxpbmcgcGFpbnRDb250ZW50cygpIGNhbGxzIGludG8gV2ViS2l0
IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lkZQorICAgIC8vIGVmZmVjdCBvZiBkaXNh
YmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBvdXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0
dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KKyAgICAvLyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVl
IHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3NDb250ZXh0IHVudGlsIHRoZSBwYWludCBm
aW5pc2hlcywKKyAgICAvLyBzbyB3ZSBncmFiIGEgbG9jYWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9s
ZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFpbnQgY29tcGxldGVzLgorICAgIFJlZlB0
cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3IodGV4dHVyZVVwZGF0ZXIoKSk7CisgICAg
dGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50cyhtX3BhaW50UmVjdCwgbV90aWxlci0+dGls
ZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxzKCksIGNvbnRlbnRzU2NhbGUoKSk7CisK
KyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90aWxlci0+Y29udGVudFJlY3RUb0xheWVy
UmVjdChtX3BhaW50UmVjdCkpOworfQorCisKIH0KICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGYwYjU0OWUuLjgy
OGQyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJDaHJvbWl1bSgpOwogCi0gICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1Rl
eHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3Vy
Y2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJ
c01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVy
SW1wbCopOwpAQCAtNjgsOCArNjgsMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gU2V0IGludmFs
aWRhdGlvbnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWludGVkIGR1cmluZyB1cGRhdGUoKS4KICAg
ICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKLSAgICAv
LyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3
aXRoIGNvbnRlbnRSZWN0LgorICAgIC8vIFByZXBhcmUgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQg
aW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29u
c3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIC8vIFBhaW50IGNvbnRlbnRzIG5lZWRlZCB0
byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qgd2l0aCBjb250ZW50UmVjdC4KKyAgICB2
b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOwogCiAgICAgdmly
dHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1cmVzKCk7CiAKQEAgLTg2LDcgKzg4LDcg
QEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmVNYW5hZ2VyKiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0
OwogCi0gICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQgYmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUo
KSBhbmQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpLgorICAgIC8vIFRlbXBvcmFyeSBzdGF0
ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHBhaW50Q29udGVudHMoKS4KICAg
ICBJbnRSZWN0IG1fcmVxdWVzdGVkVXBkYXRlUmVjdDsKICAgICAvLyBTdGF0ZSBoZWxkIGJldHdl
ZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHB1c2hQcm9wZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNl
bnRzIHRoZSBhcmVhCiAgICAgLy8gb2YgdGhlIGxheWVyIHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFp
bnRlZCBieSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAppbmRleCBlNmJj
Nzc1Li43ZTQwMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQwLDEx
ICs0MCw2MSBAQAogI2luY2x1ZGUgIlZpZGVvRnJhbWVDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlZp
ZGVvRnJhbWVQcm92aWRlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVmlkZW9MYXllckltcGwu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJl
KQorICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX21hcHBlZEJ1ZmZlcigwKQorewor
fQorCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUo
KQoreworICAgIEFTU0VSVCghbV9tYXBwZWRCdWZmZXIpOworfQorCit2b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNv
dXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIEludFNp
emUgZGltZW5zaW9ucyA9IG1fdGV4dHVyZS0+c2l6ZSgpOworCisgICAgRXh0ZW5zaW9uczNEQ2hy
b21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgbV9tYXBwZWRCdWZmZXIgPSBzdGF0aWNfY2Fz
dDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNz
Q29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVu
c2lvbnMuaGVpZ2h0KCksIG1fdGV4dHVyZS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6V1JJVEVfT05MWSkpOworCisgICAg
aWYgKCFtX21hcHBlZEJ1ZmZlcikgeworICAgICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1
cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhkaW1lbnNpb25zLCBtX3RleHR1cmUtPmZvcm1hdCgp
KTsKKyAgICAgICAgbV9idWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNp
emVdKTsKKyAgICB9CisKKyAgICBtX3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBh
bGxvY2F0b3IpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
OmRhdGFSZWN0KGNvbnN0IHZvaWQqIGRhdGEpCit7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBU
ZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMobV90ZXh0dXJlLT5zaXplKCksIG1fdGV4dHVy
ZS0+Zm9ybWF0KCkpOworCisgICAgaWYgKG1fbWFwcGVkQnVmZmVyKQorICAgICAgICBtZW1jcHko
bV9tYXBwZWRCdWZmZXIsIGRhdGEsIGJ1ZmZlclNpemUpOworICAgIGVsc2UKKyAgICAgICAgbWVt
Y3B5KG1fYnVmZmVyLmdldCgpLCBkYXRhLCBidWZmZXJTaXplKTsKK30KKwordm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0
JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBBU1NFUlQobV90ZXh0dXJlLT50ZXh0dXJlSWQoKSk7
CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGlmIChtX21hcHBlZEJ1ZmZlcikgeworICAg
ICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVu
c2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICAgICAgR0xD
KGNvbnRleHQsIGV4dGVuc2lvbnMtPnVubWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKG1fbWFwcGVk
QnVmZmVyKSk7CisgICAgICAgIG1fbWFwcGVkQnVmZmVyID0gMDsKKyAgICB9IGVsc2UgeworICAg
ICAgICBJbnRTaXplIGRpbWVuc2lvbnMgPSBtX3RleHR1cmUtPnNpemUoKTsKKyAgICAgICAgR0xD
KGNvbnRleHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgoKSwgZGltZW5zaW9ucy5oZWlnaHQoKSwg
bV90ZXh0dXJlLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1f
YnVmZmVyLmdldCgpKSk7CisgICAgICAgIG1fYnVmZmVyLmNsZWFyKCk7CisgICAgfQorfQorCiBQ
YXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUo
Q0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVy
KQogewpAQCAtNTcsNiArMTA3LDcgQEAgVmlkZW9MYXllckNocm9taXVtOjpWaWRlb0xheWVyQ2hy
b21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgVmlkZW9GcmFtZVByb3YKICAgICAsIG1f
ZnJhbWVGb3JtYXQoVmlkZW9GcmFtZUNocm9taXVtOjpJbnZhbGlkKQogICAgICwgbV9wcm92aWRl
cihwcm92aWRlcikKICAgICAsIG1fcGxhbmVzKDApCisgICAgLCBtX2ZyYW1lKDApCiB7CiB9CiAK
QEAgLTc0LDE3ICsxMjUsMTkgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OmNsZWFudXBSZXNv
dXJjZXMoKQogewogICAgIExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVzOyArK2kpCi0gICAgICAgIG1fdGV4dHVy
ZXNbaV0ubV90ZXh0dXJlLmNsZWFyKCk7CisgICAgICAgIG1fdGV4dHVyZXNbaV0uY2xlYXIoKTsK
IH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2
b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CisgICAg
bV9mcmFtZSA9IDA7CisKICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRy
YXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9kaXJ0eVJlY3QuaXNF
bXB0eSgpICYmIHRleHR1cmVzVmFsaWQoKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHBsYW5l
ID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUrKykgewotICAgICAgICAgICAgTWFuYWdlZFRl
eHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAg
ICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpOwog
ICAgICAgICAgICAgaWYgKCF0ZXgtPnJlc2VydmUodGV4LT5zaXplKCksIHRleC0+Zm9ybWF0KCkp
KSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTEzLDggKzE2NiwxMCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5l
cyBpZiB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGFscmVhZHksIG9yCi0gICAgLy8gcmVhbGxvY2F0
ZSB0ZXh0dXJlcyB0aGF0IGFyZSB0aGUgd3Jvbmcgc2l6ZSBmb3IgdGhlIGZyYW1lLgorICAgIGlm
IChmcmFtZS0+cGxhbmVzKCkgPiBNYXhQbGFuZXMpCisgICAgICAgIENSQVNIKCk7CisKKyAgICAv
LyBSZXNlcnZlIHRleHR1cmVzIGZvciBwbGFuZXMgaWYgdGhleSBhcmUgbm90IHJlc2VydmVkIGFs
cmVhZHkuCiAgICAgYm9vbCB0ZXh0dXJlc1Jlc2VydmVkID0gcmVzZXJ2ZVRleHR1cmVzKGZyYW1l
LCB0ZXh0dXJlRm9ybWF0KTsKICAgICBpZiAoIXRleHR1cmVzUmVzZXJ2ZWQpIHsKICAgICAgICAg
bV9za2lwc0RyYXcgPSB0cnVlOwpAQCAtMTIyLDIxICsxNzcsMzQgQEAgdm9pZCBWaWRlb0xheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIEMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJl
IHBsYW5lcy4KLSAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxh
bmVzKCk7IHBsYW5lKyspIHsKLSAgICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNb
cGxhbmVdOwotICAgICAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwotICAgICAgICBBU1NF
UlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJl
LT5zaXplKCkpOwotICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIHVwZGF0ZXIuYWxsb2Nh
dG9yKCksIHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5lKSk7Ci0gICAgfQotCisgICAgbV9mcmFt
ZSA9IGZyYW1lOwogICAgIG1fcGxhbmVzID0gZnJhbWUtPnBsYW5lcygpOwotICAgIEFTU0VSVCht
X3BsYW5lcyA8PSBNYXhQbGFuZXMpOwogCiAgICAgbV91cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZs
b2F0UG9pbnQoKSwgYm91bmRzKCkpOwogICAgIHJlc2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3Zv
aWQgVmlkZW9MYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpCit7CisgICAgaWYg
KCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50
RnJhbWUoZnJhbWUpOworICAgIC8vIENvcHkgcGxhbmVzIHRvIG1hcHBlZCBidWZmZXJzLgorICAg
IGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8IG1fZnJhbWUtPnBsYW5lcygpOyBwbGFu
ZSsrKQorICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS0+ZGF0YVJlY3QobV9mcmFtZS0+ZGF0YShw
bGFuZSkpOworCisgICAgbV9wcm92aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOworfQor
Cit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXll
clRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGlmICghbV9mcmFtZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwg
bV9wbGFuZXM7IHBsYW5lKyspIHsKKyAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KCksIG1f
dGV4dHVyZXNbcGxhbmVdLT52aXNpYmxlU2l6ZSgpKTsKKyAgICAgICAgaGFuZGxlci5oYW5kbGUo
bV90ZXh0dXJlc1twbGFuZV0uZ2V0KCksIHJlY3QsIHJlY3QpOworICAgIH0KIH0KIAogdm9pZCBW
aWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQpA
QCAtMTQ3LDExICsyMTUsMTEgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0
aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIHZpZGVvTGF5ZXItPnNldFNraXBzRHJhdyht
X3NraXBzRHJhdyk7CiAgICAgdmlkZW9MYXllci0+c2V0RnJhbWVGb3JtYXQobV9mcmFtZUZvcm1h
dCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbmVzOyArK2kpIHsKLSAgICAg
ICAgaWYgKCFtX3RleHR1cmVzW2ldLm1fdGV4dHVyZSkgeworICAgICAgICBpZiAoIW1fdGV4dHVy
ZXNbaV0pIHsKICAgICAgICAgICAgIHZpZGVvTGF5ZXItPnNldFNraXBzRHJhdyh0cnVlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHZpZGVvTGF5ZXItPnNldFRleHR1
cmUoaSwgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUtPnRleHR1cmVJZCgpLCBtX3RleHR1cmVzW2ld
Lm1fdGV4dHVyZS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ldLm1fdmlzaWJsZVNpemUpOworICAgICAg
ICB2aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUoKS0+dGV4
dHVyZUlkKCksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUoKS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ld
LT52aXNpYmxlU2l6ZSgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFuZXM7
IGkgPCBNYXhQbGFuZXM7ICsraSkKICAgICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShpLCAw
LCBJbnRTaXplKCksIEludFNpemUoKSk7CkBAIC0xNjAsMTAgKzIyOCw4IEBAIHZvaWQgVmlkZW9M
YXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHZvaWQg
VmlkZW9MYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9z
dCkKIHsKICAgICBpZiAoaG9zdCAmJiBsYXllclRyZWVIb3N0KCkgIT0gaG9zdCkgewotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVzOyArK2kpIHsKLSAgICAgICAgICAg
IG1fdGV4dHVyZXNbaV0ubV92aXNpYmxlU2l6ZSA9IEludFNpemUoKTsKLSAgICAgICAgICAgIG1f
dGV4dHVyZXNbaV0ubV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShob3N0LT5jb250
ZW50c1RleHR1cmVNYW5hZ2VyKCkpOwotICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsraSkKKyAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0gPSBV
cGRhdGVyVGV4dHVyZTo6Y3JlYXRlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVu
dHNUZXh0dXJlTWFuYWdlcigpKSk7CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5
ZXJUcmVlSG9zdChob3N0KTsKQEAgLTE4NSw4ICsyNTEsMTAgQEAgR0MzRGVudW0gVmlkZW9MYXll
ckNocm9taXVtOjpkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1
bSogZnIKIAogYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06OnRleHR1cmVzVmFsaWQoKQogeworICAg
IEFTU0VSVChsYXllclRyZWVIb3N0KCkpOworCiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7
IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKLSAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRl
eCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAgTWFuYWdlZFRl
eHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCk7CiAgICAgICAgIGlmICgh
dGV4LT5pc1ZhbGlkKHRleC0+c2l6ZSgpLCB0ZXgtPmZvcm1hdCgpKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0yMDMsMTkgKzI3MSwyMCBAQCBib29sIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUs
IEdDM0RlbgogCiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBs
YW5lcygpOyBwbGFuZSsrKSB7CiAgICAgICAgIEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9
IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4
dHVyZXNbcGxhbmVdKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJl
KCkpOwogCiAgICAgICAgIC8vIElmIHRoZSByZW5kZXJlciBjYW5ub3QgaGFuZGxlIHRoaXMgbGFy
Z2Ugb2YgYSB0ZXh0dXJlLCByZXR1cm4gZmFsc2UuCiAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUg
dGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KICAgICAgICAgaWYg
KHJlcXVpcmVkVGV4dHVyZVNpemUuaXNaZXJvKCkgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0
aCgpID4gbWF4VGV4dHVyZVNpemUgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS5oZWlnaHQoKSA+IG1h
eFRleHR1cmVTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICgh
bV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgICAgIGlmIChtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnNpemUoKSAhPSByZXF1
aXJlZFRleHR1cmVTaXplKQotICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxl
U2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwgcGxhbmUpOworICAgICAgICBpZiAobV90
ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUoKS0+c2l6ZSgpICE9IHJlcXVpcmVkVGV4dHVyZVNpemUp
IHsKKyAgICAgICAgICAgIEludFNpemUgdmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNpemUo
ZnJhbWUsIHBsYW5lKTsKKyAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT5zZXRWaXNpYmxl
U2l6ZSh2aXNpYmxlU2l6ZSk7CisgICAgICAgIH0KIAotICAgICAgICBtX3RleHR1cmVzW3BsYW5l
XS5tX3RleHR1cmUtPnJlc2VydmUocmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7
CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCktPnJlc2VydmUocmVxdWlyZWRU
ZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC0yNDUsMjggKzMxNCw2IEBAIEludFNpemUgVmlkZW9MYXllckNocm9taXVtOjpjb21wdXRlVmlz
aWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwKICAgICByZXR1cm4gSW50
U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCB2b2lkKiBkYXRh
KSBjb25zdAotewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQodGV4dHVyZS5tX3Rl
eHR1cmUpOwotCi0gICAgdGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFs
bG9jYXRvcik7Ci0KLSAgICBHQzNEZW51bSBmb3JtYXQgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9y
bWF0KCk7Ci0gICAgSW50U2l6ZSBkaW1lbnNpb25zID0gdGV4dHVyZS5tX3RleHR1cmUtPnNpemUo
KTsKLQotICAgIHZvaWQqIG1lbSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4o
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKS0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRp
bWVuc2lvbnMuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZ
VEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKTsKLSAgICBpZiAobWVtKSB7Ci0g
ICAgICAgIG1lbWNweShtZW0sIGRhdGEsIGRpbWVuc2lvbnMud2lkdGgoKSAqIGRpbWVuc2lvbnMu
aGVpZ2h0KCkpOwotICAgICAgICBHTEMoY29udGV4dCwgc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNE
Q2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT51bm1hcFRleFN1YkltYWdlMkRD
SFJPTUlVTShtZW0pKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBJZiBtYXBUZXhTdWJJbWFn
ZTJEQ0hST01JVU0gZmFpbHMsIHRoZW4gZG8gdGhlIHNsb3dlciB0ZXhTdWJJbWFnZTJECi0gICAg
ICAgIC8vIHVwbG9hZC4gVGhpcyBkb2VzIHR3aWNlIHRoZSBjb3BpZXMgYXMgbWFwVGV4U3ViSW1h
Z2UyRENIUk9NSVVNLCBvbmUKLSAgICAgICAgLy8gaW4gdGhlIGNvbW1hbmQgYnVmZmVyIGFuZCBh
bm90aGVyIHRvIHRoZSB0ZXh0dXJlLgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4
U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGltZW5z
aW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4
dDNEOjpVTlNJR05FRF9CWVRFLCBkYXRhKSk7Ci0gICAgfQotfQotCiB2b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6cmVsZWFzZVByb3ZpZGVyKCkKIHsKICAgICBtX3Byb3ZpZGVyID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggNDkwNTcyMi4uZDE5YTc3MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlk
ZW9MYXllckNocm9taXVtLmgKQEAgLTQzLDYgKzQzLDMzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBhIFZpZGVvIGVsZW1lbnQuCiBjbGFzcyBWaWRlb0xh
eWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3Mg
VXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVcGRhdGVyVGV4dHVyZT4gY3Jl
YXRlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXBkYXRlclRleHR1cmUodGV4dHVyZSkpOworICAg
ICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKKworICAgICAgICB2
aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgp
OyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdm9pZCBkYXRhUmVjdChjb25zdCB2b2lkKik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgICAg
IHZvaWQgc2V0VmlzaWJsZVNpemUoSW50U2l6ZSYgc2l6ZSkgeyBtX3Zpc2libGVTaXplID0gc2l6
ZTsgfQorICAgICAgICBJbnRTaXplJiB2aXNpYmxlU2l6ZSgpIHsgcmV0dXJuIG1fdmlzaWJsZVNp
emU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFBh
c3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpOworCisgICAgICAgIE93blB0cjxNYW5h
Z2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICBJbnRTaXplIG1fdmlzaWJsZVNpemU7Cisg
ICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVyOworICAgICAgICBPd25BcnJheVB0cjx1aW50
OF90PiBtX2J1ZmZlcjsKKyAgICB9OwogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VmlkZW9MYXll
ckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiA9IDAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiA9IDAp
OwpAQCAtNTAsNyArNzcsOSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NM
YXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Q29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXIm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2
aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
dm9pZCByZWxlYXNlUHJvdmlkZXIoKTsKQEAgLTYzLDE4ICs5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1
Y3QgVGV4dHVyZSB7Ci0gICAgICAgIEludFNpemUgbV92aXNpYmxlU2l6ZTsKLSAgICAgICAgT3du
UHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7Ci0gICAgfTsKLQogICAgIFZpZGVvTGF5ZXJD
aHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqLCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIHN0
YXRpYyBHQzNEZW51bSBkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJv
bWl1bSopOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRl
b0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25lZCBwbGFuZSk7CiAgICAgYm9vbCB0ZXh0dXJlc1ZhbGlk
KCk7CiAgICAgYm9vbCByZXNlcnZlVGV4dHVyZXMoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwg
R0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmUmLCBjb25zdCB2b2lkKikgY29u
c3Q7CiAKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiAKQEAgLTgzLDggKzEwNiwx
MCBAQCBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVQcm92aWRlciogbV9wcm92aWRlcjsKIAogICAg
IGVudW0geyBNYXhQbGFuZXMgPSAzIH07Ci0gICAgVGV4dHVyZSBtX3RleHR1cmVzW01heFBsYW5l
c107CisgICAgUmVmUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3RleHR1cmVzW01heFBsYW5lc107CiAg
ICAgdW5zaWduZWQgbV9wbGFuZXM7CisKKyAgICBWaWRlb0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCAyNzZmM2M5Li43
ZmU0M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJMYXllclJlbmRl
cmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJv
bWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSog
bGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQoreworfQorCitXZWJHTExheWVyQ2hyb21pdW06
OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworfQorCit2b2lkIFdlYkdMTGF5
ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3Qm
IC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8V2ViR0xMYXllckNocm9taXVtPiBXZWJHTExh
eWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQogewogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNocm9taXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2
ICs2Nyw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2ViR0xMYXllckNocm9taXVtKENDTGF5ZXJE
ZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBt
X3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9kcmF3aW5nQnVmZmVyKDApCisgICAgLCBt
X3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiB9CiAKQEAg
LTY2LDcgKzgyLDcgQEAgYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgpIGNv
bnN0CiAgICAgcmV0dXJuIChjb250ZXh0KCkgJiYgY29udGV4dCgpLT5nZXRFeHRlbnNpb25zKCkt
PmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJS
T1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJDb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVy
JikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdy
YXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQpCiB7CiAgICAgaWYgKCFkcmF3c0NvbnRl
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUsNiArMTExLDExIEBAIHZvaWQgV2ViR0xMYXll
ckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBy
ZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENv
bXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQor
eworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwg
SW50UmVjdCgpKTsKK30KKwogYm9vbCBXZWJHTExheWVyQ2hyb21pdW06OnBhaW50UmVuZGVyZWRS
ZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewogICAgIGlmIChtX3Rl
eHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRlcmVyQ29udGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggNjM3NGI5ZS4uYzMzYjRkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xM
YXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTM2LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUg
IkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJEcmF3aW5nQnVmZmVyLmgiCisjaW5j
bHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQ1LDEyICs0NiwzMCBAQCBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW1SYXRlTGltaXRUYXNrOwog
Ly8gQSBMYXllciBjb250YWluaW5nIGEgV2ViR0wgY2FudmFzCiBjbGFzcyBXZWJHTExheWVyQ2hy
b21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CisgICAgY2xhc3Mg
VXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7Cisg
ICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVcGRhdGVyVGV4dHVyZT4gY3Jl
YXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgVXBkYXRlclRleHR1cmUobGF5ZXIpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBleHBs
aWNpdCBVcGRhdGVyVGV4dHVyZShXZWJHTExheWVyQ2hyb21pdW0qKTsKKworICAgICAgICBXZWJH
TExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogPSAwKTsKIAogICAg
IHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCBib29sIGRyYXdz
Q29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJlVXBkYXRlciYpOworICAgIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOworICAgIHZpcnR1YWwg
dm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRs
ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENoYW5nZWQoKTsKICAgICBib29sIHBhaW50
UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqKTsKIApAQCAtNzEsNiArOTAsOCBA
QCBwcml2YXRlOgogICAgIC8vIEEgcmVmZXJlbmNlIGlzIG5vdCBoZWxkIGhlcmUsIGJlY2F1c2Ug
dGhlIERyYXdpbmdCdWZmZXIgYWxyZWFkeSBob2xkcwogICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRo
ZSBXZWJHTExheWVyQ2hyb21pdW0uCiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVy
OworCisgICAgUmVmUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJlOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmFlNmZiMy4uNTg5OWJmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0zNCwxMSArMzQsNTggQEAKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgorI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgog
I2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitD
Q0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIo
KQorICAgIDogbV9yZXNvdXJjZXMoMCkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVz
b3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29u
c3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgaWYgKHRleHR1cmUtPm5lZWRQcmVw
YXJlUmVjdCgpKQorICAgICAgICBtX3Jlc291cmNlcysrOworfQorCitDQ0xheWVyVHJlZUhvc3Q6
OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IG1f
Y29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQorCitD
Q0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VI
YW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhh
bmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBp
ZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisgICAgICAgIHRleHR1cmUtPnByZXBhcmVS
ZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKwor
Q0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OlBhaW50SGFuZGxlcihDQ1Byb3h5KiBwcm94
eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRI
YW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlBh
aW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorewor
ICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNSZWN0KHNvdXJjZVJlY3QpOworICAgIG1fcHJveHkt
PnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cit9CisKIFBhc3NSZWZQdHI8
Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RD
bGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCiB7CiAgICAgUmVmUHRy
PENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJl
ZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMjk0LDcgKzM0MSw3IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRpY19jYXN0PENDU2luZ2xlVGhyZWFkUHJv
eHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1tZWRpYXRlbHkoKTsKIH0KIAotdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJl
cGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47
CkBAIC0zMDIsMTIgKzM0OSwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOworICAgIHByZXBhcmVUb1VwZGF0ZShyb290
TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJD
aHJvbWl1bSogcm9vdExheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0
ZShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJU
cmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlIiwgdGhpcywgMCk7CiAKICAgICBpZiAoIXJvb3RM
YXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICByb290TGF5ZXItPmNyZWF0ZVJlbmRlclN1
cmZhY2UoKTsKQEAgLTMxNiwyNCArMzYzLDc3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRh
dGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIEludFJlY3Qgcm9vdENsaXBS
ZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsKICAgICByb290TGF5ZXItPnNldENsaXBS
ZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiB1cGRhdGVD
b21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQgYWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXll
cnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGluZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAg
ICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwotICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQo
cm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFzc2VydCBmaXJlcyBpZiBjb21taXRDb21wbGV0ZSB3
YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8gcHJlcGFyZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRh
dGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRpbWUuCisgICAgQVNTRVJUKCFtX3JlbmRl
clN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAmJiAhbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsK
KyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmFwcGVuZChyb290TGF5ZXIpOwogCiAgICAg
UmVuZGVyU3VyZmFjZUNocm9taXVtKiByb290UmVuZGVyU3VyZmFjZSA9IHJvb3RMYXllci0+cmVu
ZGVyU3VyZmFjZSgpOwogICAgIHJvb3RSZW5kZXJTdXJmYWNlLT5jbGVhckxheWVyTGlzdCgpOwog
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgewotICAgICAg
ICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRj
IiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1h
dHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlzdCwgcm9vdFJlbmRlclN1cmZhY2UtPmxh
eWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkubWF4VGV4dHVyZVNpemUpOwor
ICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNh
bGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2Fs
Y3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Qs
IHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGll
cygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKLSAgICBwYWludExheWVyQ29udGVudHMobV91
cGRhdGVMaXN0KTsKKyAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0
ZUxpc3QsIG1fbGF5ZXJVcGRhdGVMaXN0KTsKKworICAgIGZvciAoaW50IGxheWVySW5kZXggPSBt
X2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5k
ZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFts
YXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGlydHko
KTsKKyAgICB9Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNv
dXJjZXMoKQoreworICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBmb3JFYWNo
Q29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyLnJlc291cmNl
cygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRNYXNrQW5kUmVwbGljYUZvclJl
bmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyKQordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit7CisgICAgVFJBQ0VfRVZF
TlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMiLCB0aGlzLCAw
KTsKKyAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIGhhbmRsZXIoY29udGV4dCwgYWxsb2NhdG9y
KTsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworfQorCit2b2lkIEND
TGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cygpCit7CisgICAgaWYgKCFyb290TGF5ZXIoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgcGFpbnRDb250ZW50cyhyb290TGF5ZXIoKSk7Cit9CisKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKExheWVyQ2hyb21pdW0qIHJvb3RMYXll
cikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzIiwg
dGhpcywgMCk7CisKKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Qu
c2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExh
eWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7
CisgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworCisgICAgICAgIFBhaW50
SGFuZGxlciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOworICAgICAgICBsYXllci0+Zm9yRWFjaENv
bXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVI
b3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyTGlzdCYg
dXBkYXRlTGlzdCkKK3sKKyAgICAvLyBGb3Igbm9ybWFsIGxheWVycywgdGhlc2UgY29uZGl0aW9u
cyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tlZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVu
ZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCisgICAgLy8gRm9yIG1hc2tzIGFuZCByZXBsaWNhcyBo
b3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVjayB0aGVtIGhlcmUuCisgICAgaWYgKGxh
eWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVyLT5vcGFjaXR5KCkgfHwgIWxheWVyLT5k
cmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXBkYXRlTGlzdC5hcHBlbmQo
bGF5ZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kTWFza0FuZFJlcGxpY2FG
b3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJlbmRlclN1cmZhY2VMYXllciwgTGF5ZXJM
aXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5
IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVyIHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0
aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxyZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qg
c29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlzIHJlbmRlciBzdXJmYWNlLCBzbyB0aGUK
QEAgLTM0MiwzNCArNDQyLDM0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludE1hc2tBbmRS
ZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKiByZW5kZXJTCiAgICAgaWYgKHJl
bmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxh
eWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9zdCh0aGlzKTsKICAgICAgICAgcmVuZGVy
U3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KElu
dFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAg
IHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnBhaW50Q29udGVudHNJZkRpcnR5KCk7
CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZW5kZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXll
cigpLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAgICBMYXllckNocm9taXVtKiByZXBsaWNhTGF5
ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpOwogICAgIGlmIChyZXBsaWNh
TGF5ZXIpIHsKIAogICAgICAgICByZXBsaWNhTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7
Ci0gICAgICAgIHJlcGxpY2FMYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAg
YXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwgdXBkYXRlTGlzdCk7CiAKICAgICAgICAg
aWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsKICAgICAgICAgICAgIHJlcGxpY2FMYXll
ci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3QodGhpcyk7CiAgICAgICAgICAgICByZXBs
aWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9p
bnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+Y29udGVudEJvdW5kcygpKSk7Ci0gICAg
ICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5wYWludENvbnRlbnRzSWZEaXJ0eSgp
OworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllci0+bWFza0xheWVy
KCksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0
IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIExheWVyTGlzdCYgdXBkYXRlTGlz
dCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKLSAgICAg
ICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVy
TGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJl
bmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1z
dXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxheWVy
ID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKICAgICAgICAg
UmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVy
LT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKICAgICAg
ICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKSk7CiAgICAgICAgIEFT
U0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgpKTsKIAogICAgICAgICByZW5kZXJTdXJm
YWNlTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHBhaW50TWFza0FuZFJl
cGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZhY2VMYXllcik7CisgICAgICAgIGFwcGVu
ZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShyZW5kZXJTdXJmYWNlTGF5ZXIsIHVwZGF0
ZUxpc3QpOwogCiAgICAgICAgIGNvbnN0IExheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3Vy
ZmFjZS0+bGF5ZXJMaXN0KCk7CiAgICAgICAgIEFTU0VSVChsYXllckxpc3Quc2l6ZSgpKTsKQEAg
LTM4Niw1MCArNDg2LDI5IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludExheWVyQ29udGVu
dHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0CiAgICAgICAgICAgICBB
U1NFUlQobGF5ZXItPm9wYWNpdHkoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWxheWVyLT5ib3Vu
ZHMoKS5pc0VtcHR5KCkpOwogCi0gICAgICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGly
dHkoKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihsYXllciwgdXBkYXRlTGlzdCk7
CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVDb21w
b3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBDQ1RleHR1cmVVcGRh
dGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYgaGFuZGxlcikKIHsKLSAgICBmb3Ig
KGludCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4
ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAgICBMYXllckNocm9taXVtKiByZW5kZXJT
dXJmYWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKLSAgICAgICAg
UmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVy
LT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlKTsKLSAgICAg
ICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLnNpemUoKSk7Ci0gICAgICAgIEFT
U0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgpKTsKLQotICAgICAgICBpZiAocmVuZGVy
U3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXll
ci0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRl
cik7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCkpIHsK
LSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxheWVyKCktPnVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIo
KSkKLSAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FMYXllcigpLT5t
YXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29uc3QgTGF5ZXJMaXN0JiBsYXllckxpc3Qg
PSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKLSAgICAgICAgQVNTRVJUKGxheWVyTGlzdC5z
aXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGxheWVySW5kZXggPSAwOyBsYXllckluZGV4
IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4KSB7Ci0gICAgICAgICAgICBMYXllckNo
cm9taXVtKiBsYXllciA9IGxheWVyTGlzdFtsYXllckluZGV4XS5nZXQoKTsKLSAgICAgICAgICAg
IGlmIChsYXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxheWVyLT5yZW5kZXJTdXJmYWNlKCkgIT0g
cmVuZGVyU3VyZmFjZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAg
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0gICAg
ICAgIH0KKyAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgp
IC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hy
b21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAg
ICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOwogICAgIH0KIH0K
IAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVuZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9y
IChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV91cGRhdGVMaXN0LnNp
emUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBt
X3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsKKyAgICBtX2xheWVyVXBkYXRlTGlzdC5j
bGVhcigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4
IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXplKCk7ICsrc3VyZmFjZUluZGV4KSB7Cisg
ICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtz
dXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NFUlQobGF5ZXItPnJlbmRlclN1cmZhY2Uo
KSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKICAgICB9Ci0gICAgbV91
cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5jbGVhcigp
OwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBD
Q1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRl
eCBhNzkzY2NhLi42ODBiNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtNDUs
NyArNDUsNiBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IENDTGF5ZXJUcmVlSG9zdEltcGw7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwogY2xhc3MgR3Jh
cGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1
cmVBbGxvY2F0b3I7CkBAIC0xNzcsOSArMTc2LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7
CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKTsKKyAgICBib29sIG5lZWRzQ29tcG9zaXRvclJl
c291cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBwYWludENvbnRlbnRzKCk7
CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0Qq
LCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5k
U2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwogICAgIHZvaWQgc3RhcnRSYXRlTGlt
aXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZvaWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBo
aWNzQ29udGV4dDNEKik7CkBAIC0xODksMTIgKzE5MSw1MCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9v
bCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAgY2xhc3MgTmVlZFJlc291cmNlSGFuZGxl
ciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKyAgICAgICAgdmlydHVhbCB+TmVlZFJlc291
cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KTsKKworICAgICAgICBpbnQgcmVzb3VyY2VzKCkgeyByZXR1cm4gbV9yZXNv
dXJjZXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX3Jlc291cmNlczsKKyAgICB9
OworCisgICAgY2xhc3MgUHJlcGFyZVJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFByZXBhcmVSZXNvdXJj
ZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgICAg
IHZpcnR1YWwgflByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgICAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBtX2FsbG9jYXRvcjsKKyAgICB9OworCisgICAgY2xhc3MgUGFpbnRIYW5kbGVyIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAg
UGFpbnRIYW5kbGVyKENDUHJveHkqKTsKKyAgICAgICAgdmlydHVhbCB+UGFpbnRIYW5kbGVyKCk7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94eSogbV9wcm94eTsKKyAgICB9OworCiAg
ICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gTGF5ZXJMaXN0OwogCi0g
ICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0Jik7Ci0gICAgdm9pZCBw
YWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9taXVtKik7CisgICAg
dm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSosIExheWVyTGlzdCYpOworICAg
IHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0q
LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVycyhj
b25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVwZGF0
ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOworICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lkIHBhaW50Q29udGVu
dHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKICAg
ICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKQEAgLTIxMCw3ICsyNTAsOCBAQCBwcml2YXRl
OgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8VGV4
dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFuYWdlcjsKIAotICAgIExheWVyTGlzdCBt
X3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Q7Cisg
ICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0OwogCiAgICAgQ0NTZXR0aW5ncyBtX3NldHRp
bmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTYyMzBlYS4uMWM1MzE3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUHJveHkuaApA
QCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5X2gKIAogI2luY2x1ZGUgIkludFJlY3Qu
aCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgpAQCAtNzgsNiArNzksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0
YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgdGhlIHByb3h5LgogICAg
IHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRp
bmcgdGhlIHByb3h5LgogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhvb2tzCiAjaWZuZGVmIE5ERUJVRwogICAg
IHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmNwcAppbmRleCBkZGMwMWMxLi45MzIxZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Np
bmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIlRyYWNlRXZl
bnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1Nj
cm9sbENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC0xNDgs
MTUgKzE0NywxOSBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OnNldE5lZWRzQW5pbWF0ZSgp
CiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKIHsKICAgICBBU1NFUlQoQ0NQ
cm94eTo6aXNNYWluVGhyZWFkKCkpOworCisgICAgLy8gUHJlcGFyZSBjb21wb3NpdG9yIHJlc291
cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRvclJlc291cmNlcygp
KQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRl
bnRzKCk7CisKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKICAgICB7CiAgICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5i
ZWdpbkNvbW1pdCgpOwotCisgICAgICAgIHdoaWxlIChtX3RleHR1cmVVcGRhdGVyLnVwZGF0ZSht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgp
KTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAgICAgICAgbV9sYXllclRyZWVIb3N0LT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
dXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0
VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVl
SG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkp
OwogCkBAIC0yMDksNiArMjEyLDExIEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c3RvcCgp
CiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKIH0KIAordm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5
Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgbV90ZXh0
dXJlVXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCiAv
LyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVy
X3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpj
b21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNzMsNyArMjgxLDcgQEAgdm9pZCBDQ1Npbmds
ZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7CiAgICAgQVNTRVJUKENDUHJveHk6Omlz
TWFpblRocmVhZCgpKTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Cisg
ICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKIAogICAgIGRvQ29tbWl0KCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZWRhYjYxZi4uNmQ5
YTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKKyNpbmNsdWRlICJj
Yy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC01NCw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRp
b24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCkg
eyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpAQCAtODIsNiArODQsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0OwogICAgIGludCBtX3RpbWVzUmVjcmVhdGVTaG91
bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0aW5nLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05l
d2x5Q29tbWl0dGVkRnJhbWU7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0
ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVi
dWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmNwcAppbmRleCA4NzQ1YzRlLi5hNjFjM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBk
YXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIk1h
bmFnZWRUZXh0dXJlLmgiCkBAIC0zNywxMSArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0
ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2Nh
dG9yKQotICAgICwgbV9lbnRyeUluZGV4KDApCitDQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVV
cGRhdGVyKCkKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0b3IpOwogfQogCiBDQ1RleHR1cmVVcGRh
dGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCkBAIC02NiwyMyArNjQsMjAgQEAgYm9vbCBDQ1RleHR1
cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRl
cjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0g
ICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJbmRleCArIGNvdW50LCBtX2VudHJpZXMu
c2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUlu
ZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllc1ttX2VudHJ5SW5k
ZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxv
Y2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7Ci0gICAgfQorICAg
IHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChtYXhJbmRleCA8IG1fZW50cmllcy5zaXpl
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBVcGRhdGVFbnRyeSYgZW50cnkgPSBt
X2VudHJpZXMubGFzdCgpOworICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVwZGF0ZVJlY3QoY29u
dGV4dCwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAgbV9l
bnRyaWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9CiAKLSAgICAvLyBJZiBubyBlbnRyaWVzIGxlZnQg
dG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVhcigpOwotICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBk
YXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRleCA9IDA7CiAgICAgbV9lbnRyaWVzLmNs
ZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiZjc5YWM5Li5h
YjY1OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCkBAIC0zMywxMSArMzMsMTAg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFz
cyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1RleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoK
LSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICBDQ1RleHR1cmVV
cGRhdGVyKCk7CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIoKTsKIAogICAgIHZvaWQgYXBwZW5kKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CkBAIC00OSw4ICs0OCw2IEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgY2xlYXIoKTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcigpIHsgcmV0
dXJuIG1fYWxsb2NhdG9yOyB9Ci0KIHByaXZhdGU6CiAgICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsK
ICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogbV90ZXh0dXJlOwpAQCAtNTgs
OCArNTUsNiBAQCBwcml2YXRlOgogICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsK
IAotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOwotICAgIHNpemVfdCBtX2VudHJ5
SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVh
ZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDk1YzZiNWQuLjBiNzczMGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVs
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NTY3JvbGxDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgog
I2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0yODYsNiArMjg1LDIwIEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFydGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQg
Q0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1
cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQor
eworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX3N0YXJ0ZWQpOworCisgICAg
VXBkYXRlRW50cnkqIGVudHJ5ID0gbmV3IFVwZGF0ZUVudHJ5OworICAgIGVudHJ5LT5tX3RleHR1
cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OworICAg
IGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisKKyAgICBDQ1Byb3h5OjppbXBsVGhyZWFk
KCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBk
YXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcyhlbnRyeSkpKTsK
K30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhy
ZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1wbFRocmVhZCIsIHRoaXMsIDApOwpAQCAt
Mzc0LDcgKzM4NywxNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVBbmRDb21taXQo
aW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIC8vIHVwZGF0ZUxh
eWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCi0gICAgbV9sYXllclRyZWVI
b3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0
ZSgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3NpdG9yUmVzb3VyY2Vz
KCkpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291cmNlcyByZXF1aXJl
IGZvciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQoImFsbG9jYXRlIiwgdGhpcywgMCk7Cisg
ICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CisgICAgICAgIENDUHJveHk6Omlt
cGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFBy
b3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNvbXBsZXRpb24ud2FpdCgpOworICAgIH0K
KworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygpOwogCiAgICAgLy8gQmVmb3Jl
IGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJl
cXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0
TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXROZWVkc0NvbW1pdApAQCAtMzk4
LDEzICs0MjEsNDEgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGlu
dCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBBU1NFUlQobV9sYXN0
RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVuY2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1i
ZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1w
bFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKK3sKKyAgICBUUkFDRV9FVkVO
VCgiQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25PbkltcGxUaHJlYWQiLCB0
aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
KTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0
SW1wbCkgeworICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKK30K
Kwordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVu
dHJ5KiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBs
VGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOworICAgIGlmICghbV9sYXllclRy
ZWVIb3N0SW1wbCkgeworICAgICAgICBkZWxldGUgZW50cnk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmFwcGVuZChlbnRyeS0+bV90
ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7CisKKyAgICBk
ZWxldGUgZW50cnk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUNvbXBsZXRl
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQogewogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQiLCB0
aGlzLCAwKTsKICAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFk
KTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3NjaGVkdWxlck9u
SW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5jb21taXRQ
ZW5kaW5nKCkpOwogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgewogICAgICAgICBjb21w
bGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDEyLDM2ICs0NjMsMjggQEAg
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAqbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotCiAgICAgbV9zY2hlZHVsZXJPbklt
cGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwogfQogCiBib29sIENDVGhyZWFkUHJveHk6
Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAogewotICAgIGlmICghbV9jdXJyZW50VGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7
CisgICAgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMo
KTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVz
b3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0
aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDApOwotICAgIEFTU0VSVChtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBVcGRhdGVz
UGVyRnJhbWUgPSA5OTk5OTsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgVXBkYXRlc1BlckZyYW1l
KTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLnVwZGF0ZShtX2xheWVyVHJlZUhv
c3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJl
YWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7Ci0gICAgQVNTRVJUKG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKTsKLSAgICBBU1NFUlQoIW1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKKyAgICBBU1NF
UlQoIW1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAg
QVNTRVJUKG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKIAotICAgIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CisgICAgbV90ZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwogCiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5i
ZWdpbkNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDFkZjM3NDYuLmFiYTM0
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgogI2lu
Y2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5o
IgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCkBA
IC02Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOwor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAg
IC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFs
IHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBsVGhyZWFkKCk7CkBAIC03OCw2ICs4MCwx
MiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENDVGhyZWFkUHJveHkoQ0NMYXll
clRyZWVIb3N0Kik7CiAKKyAgICBzdHJ1Y3QgVXBkYXRlRW50cnkgeworICAgICAgICBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3RleHR1cmU7CisgICAgICAgIEludFJlY3QgbV9zb3Vy
Y2VSZWN0OworICAgICAgICBJbnRSZWN0IG1fZGVzdFJlY3Q7CisgICAgfTsKKwogICAgIC8vIENh
bGxlZCBvbiBtYWluIHRocmVhZAogICAgIHZvaWQgYmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2Vx
dWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltZSwgUGFzc093blB0cjxDQ1Njcm9sbEFu
ZFNjYWxlU2V0Pik7CiAgICAgdm9pZCBkaWRDb21taXRBbmREcmF3RnJhbWUoKTsKQEAgLTkyLDYg
KzEwMCw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXNzT3duUHRyPENDVGhyZWFkOjpUYXNr
PiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZvaWQg
b2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZl
bnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKKyAgICB2b2lkIHByZXBhcmVGcmFtZVJlc291cmNlc09u
SW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZU9u
SW1wbFRocmVhZChVcGRhdGVFbnRyeSopOwogICAgIHZvaWQgYmVnaW5GcmFtZUNvbXBsZXRlT25J
bXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAgICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tP
bkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAgICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJp
bmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKQEAgLTEyNywxMCArMTM3LDExIEBA
IHByaXZhdGU6CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBv
biBhIGNvbW1pdCB0byBjb21wbGV0ZS4KICAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9jb21taXRD
b21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+
IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4g
dGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1h
aW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbklt
cGxUaHJlYWQ7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDIy
MDljOGEuLjE4ZmVkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0y
MTksNiArMjE5LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQKICAgICBtX3RpbGVyLT5jb250
ZW50UmVjdFRvVGlsZUluZGljZXMoY29udGVudFJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRv
bSk7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBtX3RpbGVyLT5jb250ZW50UmVjdFRvTGF5ZXJS
ZWN0KGNvbnRlbnRSZWN0KTsKICAgICBmbG9hdCBzaWduID0gRmxvYXRRdWFkKGNvbnRlbnRSZWN0
KS5pc0NvdW50ZXJjbG9ja3dpc2UoKSA/IC0xIDogMTsKKyAgICBjb25zdCBHQzNEaW50IGZpbHRl
ciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVB
UiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwogICAgIGZvciAoaW50IGogPSB0b3A7IGog
PD0gYm90dG9tOyArK2opIHsKICAgICAgICAgQ0NMYXllclF1YWQ6OkVkZ2UgcHJldkVkZ2VYID0g
Y29udGVudFF1YWQubGVmdCgpOwogCkBAIC0zNDMsNiArMzQ0LDkgQEAgdm9pZCBDQ1RpbGVkTGF5
ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBj
b25zdCBJbnQKIAogICAgICAgICAgICAgaWYgKHRpbGUgJiYgdGlsZS0+dGV4dHVyZUlkKCkpIHsK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgdGlsZS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgICAgIEdMQyhjb250
ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpKTsKKyAgICAg
ICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0Nv
bnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRF
UiwgZmlsdGVyKSk7CisKICAgICAgICAgICAgICAgICBsYXllclJlbmRlcmVyLT5kcmF3VGV4dHVy
ZWRRdWFkKGdsb2JhbFRyYW5zZm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCksIHRpbGVSZWN0LmhlaWdodCgpLCBvcGFj
aXR5LCBxdWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4TG9jYXRpb24oKSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4
IDRhNDE3OTYuLjg3NjY1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUg
IkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAj
aW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAj
aW5jbHVkZSAiTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1h
bmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCkBAIC05MDQsNiArOTA1LDE0IEBA
IFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAg
ICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9ja0xheWVyRGVsZWdhdGUgOiBwdWJsaWMg
Q0NMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JikgeyB9CisgICAgdmlydHVhbCBib29s
IGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlT
eW5jUmVxdWlyZWQoKSB7IH0KK307CisKIGNsYXNzIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxl
Z2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgewogcHVibGljOgogICAgIFRlc3RPcGFjaXR5
Q2hhbmdlTGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtOTI3LDM3
ICs5MzYsMTE2IEBAIHByaXZhdGU6CiAKIGNsYXNzIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVw
ZGF0ZVRyYWNraW5nIDogcHVibGljIENvbnRlbnRMYXllckNocm9taXVtIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
Zz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOyB9Cisg
ICAgY2xhc3MgQ29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CisgICAgcHVibGljOgorICAgICAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIExh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgICAgICBwdWJsaWM6CisgICAgICAgICAg
ICBUZXh0dXJlKENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKKyAgICAgICAgICAgICAgICA6IG1fdGV4
dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJl
VXBkYXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmly
dHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsg
fQorCisgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+
bmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVj
dCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5s
YXllcigpLT5wcmVwYXJlUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAq
LykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXll
cigpLT5wYWludENvbnRlbnRzUmVjdCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0
ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBwcml2YXRlOgorICAgICAgICAgICAg
T3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgICAgICBDb250ZW50TGF5
ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAgICAgICAgfTsKKworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRl
cihsYXllcikpOworICAgICAgICB9CiAKLSAgICBpbnQgcGFpbnRDb250ZW50c0NvdW50KCkgeyBy
ZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0UGFpbnRDb250ZW50
c0NvdW50KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCA9IDA7IH0KKyAgICAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7
CisgICAgICAgIH0KIAotICAgIGludCB1cGRhdGVDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291
bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQoKSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9
CisgICAgICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXll
clRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZv
cm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gLyogdGV4dHVyZUZvcm1hdCAqLykKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRU
ZXhlbEZvcm1hdFJHQkE7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYg
LyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGF5ZXItPnBhaW50Q29udGVudHMo
KTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nKiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXI7IH0KKworICAgIHByaXZhdGU6CisgICAg
ICAgIGV4cGxpY2l0IENvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyKENvbnRlbnRMYXllckNocm9t
aXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikgOiBtX2xheWVyKGxheWVyKSB7IH0KKworICAg
ICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyogbV9sYXllcjsKKyAg
ICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBk
YXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlLCBib29sIG5lZWRQ
cmVwYXJlUmVjdCkKICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX3BhaW50Q29udGVudHNDb3VudCsrOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nKGRlbGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
Q0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVy
ZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikKICAgICB7Ci0gICAgICAgIENvbnRlbnRM
YXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIp
OwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAgICAgIG1fY29udGVudExheWVyVGV4dHVy
ZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKHRoaXMpOwogICAg
IH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlci5nZXQoKTsgfQorCisgICAg
dm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29udGVudHNDb3VudCsrOyB9CisgICAgaW50
IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c0NvdW50OyB9CisK
KyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQorICAgIGlu
dCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CisKKyAg
ICB2b2lkIHBhaW50Q29udGVudHNSZWN0KCkgeyBtX3BhaW50Q29udGVudHNSZWN0Q291bnQrKzsg
fQorICAgIGludCBwYWludENvbnRlbnRzUmVjdENvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRl
bnRzUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENv
dW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0
Q291bnQ7IH0KKworICAgIGludCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBtX25lZWRQcmVw
YXJlUmVjdDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVt
V2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpCisgICAgZXhwbGlj
aXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRl
ICpkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3QpCiAgICAgICAgIDogQ29udGVudExheWVy
Q2hyb21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9uZWVkUHJlcGFyZVJlY3QobmVlZFByZXBh
cmVSZWN0KQogICAgICAgICAsIG1fcGFpbnRDb250ZW50c0NvdW50KDApCi0gICAgICAgICwgbV91
cGRhdGVDb3VudCgwKQorICAgICAgICAsIG1fcHJlcGFyZVJlY3RDb3VudCgwKQorICAgICAgICAs
IG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCgwKQorICAgICAgICAsIG1fdXBkYXRlUmVjdENvdW50
KDApCiAgICAgewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICB9CiAK
KyAgICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fY29udGVudExheWVyVGV4
dHVyZVVwZGF0ZXI7CisgICAgYm9vbCBtX25lZWRQcmVwYXJlUmVjdDsKICAgICBpbnQgbV9wYWlu
dENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRlQ291bnQ7CisgICAgaW50IG1fcHJlcGFy
ZVJlY3RDb3VudDsKKyAgICBpbnQgbV9wYWludENvbnRlbnRzUmVjdENvdW50OworICAgIGludCBt
X3VwZGF0ZVJlY3RDb3VudDsKIH07CiAKIC8vIExheWVyIG9wYWNpdHkgY2hhbmdlIGR1cmluZyBw
YWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRvciByZXNvdXJjZXMgZnJvbSBiZWluZyB1
cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC05NjUsNyArMTA1Myw3IEBAIGNsYXNzIENDTGF5ZXJU
cmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qgewog
cHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlKCkKICAgICAgICAg
OiBtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUodGhpcykKLSAgICAgICAgLCBtX3VwZGF0ZUNo
ZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgm
bV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKSkKKyAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5
ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0
T3BhY2l0eUNoYW5nZURlbGVnYXRlLCB0cnVlKSkKICAgICB7CiAgICAgfQogCkBAIC05ODQsMTMg
KzEwNzIsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCiAgICAg
ewotICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0eSgpIHNob3VsZCBoYXZlIGJlZW4gY2Fs
bGVkIG9uY2UuCisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCBvbmNlLgogICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWlu
dENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8gdXBkYXRlQ29tcG9zaXRvclJlc291cmNl
cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCi0gICAgICAgIC8vIGFtb3V0IG9m
IHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCkuCi0gICAgICAgIEVYUEVDVF9FUShtX3Vw
ZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpLAotICAgICAgICAgICAgICAgICAg
bV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgpKTsKKyAgICAgICAgLy8gcGFpbnRDb250
ZW50c1JlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBh
bW91bnQgb2YgdGltZXMgYXMgcHJlcGFyZVJlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBk
YXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpLAorICAgICAgICAgICAgICAgICAgbV91
cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCkpOworCisgICAgICAgIC8v
IHVwZGF0ZVJlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAgICAv
LyBhbW91bnQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50c1JlY3QoKS4KKyAgICAgICAgRVhQRUNU
X0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c1JlY3RDb3VudCgpLAorICAgICAg
ICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVSZWN0Q291bnQoKSk7CiAgICAg
fQogCiBwcml2YXRlOgpAQCAtMTAwMyw0ICsxMDk2LDQ5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhv
c3RUZXN0T3BhY2l0eUNoYW5nZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsK
IH0KIAorLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90IGJlIGNhbGxlZCB3aGVuIG5lZWRQcmVw
YXJlUmVjdCgpIHJldHVybnMgZmFsc2UuCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVw
YXJlUmVjdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xh
eWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCgpCisgICAgICAgIDogbV91cGRhdGVDaGVja0xh
eWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVs
ZWdhdGUsIGZhbHNlKSkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVz
dCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFJvb3RMYXllcihtX3VwZGF0
ZUNoZWNrTGF5ZXIpOworICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0KEludFNp
emUoMTAsIDEwKSk7CisKKyAgICAgICAgcG9zdFNldE5lZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7
CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25DQ1RocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKikKKyAgICB7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgICAgIC8vIHBhaW50Q29udGVu
dHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwg
bV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CisKKyAgICAgICAgLy8g
cHJlcGFyZVJlY3QoKSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQuCisgICAgICAgIEVYUEVD
VF9FUSgwLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICAg
ICAgLy8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAg
ICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzUmVjdCgpLgorICAgICAgICBF
WFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCksCisg
ICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsK
KyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0xheWVyRGVsZWdhdGUgbV9kZWxlZ2F0ZTsKKyAg
ICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IG1fdXBkYXRl
Q2hlY2tMYXllcjsKK307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVj
dCwgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVzdCh0cnVlKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116116</attachid>
            <date>2011-11-21 12:24:57 -0800</date>
            <delta_ts>2011-11-22 16:52:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initialize-frame-resources.diff</filename>
            <type>text/plain</type>
            <size>94422</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggMDAzODYyOS4uZmVkZDM5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7
CiB9CkBAIC00NSw5ICs0NSwxMSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBBU1NFUlQodGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSkKQEAgLTc3LDcgKzc5LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsMTUgKzkwLDEz
IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3Jt
Q2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVy
KCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRl
ci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWludCgqY2Fu
dmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIH0KIAot
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBm
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwot
Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgbV90ZXhTdWJJ
bWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IGM4ZTZlMDIuLjUzNWYwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFs
IGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTks
OCArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0
dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7
Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDQ0OTQ1ODYuLjM5ZDJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcApAQCAtNDQsNiArNDQsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4
dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikK
K3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVy
Q2hyb21pdW0oY29udGV4dCkpOwpAQCAtNTIsNiArNjYsNyBAQCBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0MwogQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBDYW52YXNMYXllckNocm9taXVtKDApCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1
cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjUsNyArODAsNyBAQCBib29sIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgICYmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKQogewogICAgIGlmIChtX2RpcnR5UmVjdC5pc0VtcHR5KCkgfHwgIWRyYXdz
Q29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC04NSw2ICsxMDAsMTEgQEAgdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHQKICAgICByZXNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRl
clRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMy
RExheWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBpZiAobGF5ZXJUcmVlSG9z
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA0NTdiZDU2Li5lMjVl
ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDMsMTYgKzQzLDM2
IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8gQSBsYXllciBjb250YWluaW5nIGFuIGFj
Y2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDogcHVibGlj
IENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShDYW52YXMyRExh
eWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRl
clRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRMYXll
ckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1
YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDYW52YXMyRExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCog
bV9jb250ZXh0OworCisgICAgUmVmUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApp
bmRleCA1ZmE2Nzg1Li5jNjFlYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcApAQCAtMzYsNiArMzYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CisKK0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKworYm9v
bCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQor
eworICAgIHJldHVybiAhbV90ZXh0dXJlLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBt
X3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRl
cikKIHsKQEAgLTQ1LDcgKzYzLDcgQEAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKK3ZvaWQgQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtY29udGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYThmZWZmMy4uODg2ZDEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwyOCBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZh
cy4KIGNsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1
cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJl
UmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07
CisKICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5
ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7
CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWMzNmEyZC4uMDBkMzg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICBUaWxlZExheWVyQ2hy
b21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRp
b24oKTsKIApAQCAtMTEyLDYgKzExMiwyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAordm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFT
U0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2
aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggYjgzNGU2Ny4uYzVl
OWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9taXVtKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCBlOTQ1ZTA2Li45ZWQ5YThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEZyYW1lQnVmZmVyKCk7CiAgICAg
fkZyYW1lQnVmZmVyKCk7CiAKLSAgICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSopOworICAgIFNrQ2FudmFz
KiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqKTsKIAogcHJp
dmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwpAQCAtNjYsMTIgKzY2LDEy
IEBAIEZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQogICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZUZyYW1lYnVmZmVyKG1fZmJvKTsKIH0KIAotU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQorU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0
aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSkKIHsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1fZmJvID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIHRleHR1cmUtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKG1fY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUtPnRleHR1cmVJZCgpLCAwKTsKIAogICAgIC8vIENyZWF0ZSBhIHNraWEgZ3B1IGNh
bnZhcy4KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IG1fY29udGV4dC0+Z3JDb250ZXh0KCk7
CkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvcioKIH0gLy8gbmFtZXNwYWNl
CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAg
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRl
cih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTEwNSw5ICsxMDUsMjMgQEAgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9j
YXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgLy8gTWFrZSBzdXJl
IFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgorICAgIGNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdM
IHN0YXRlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKKworICAg
IEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKworICAgIC8vIENyZWF0ZSBhbiBhY2Nl
bGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KKyAgICBGcmFtZUJ1ZmZlciBidWZmZXI7CisgICAg
U2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIHRleHR1cmUoKSk7
CisKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBjYW52
YXMsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBz
byB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KKyAg
ICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0xMzUsMjYgKzE0OSwxNCBAQCBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBTa0NhbnZhcyogY2FudmFzLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICAv
LyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgLy8gTm90aWZ5IFNLSUEgdG8gc3luYyBpdHMg
aW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4
dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgot
ICAgIEZyYW1lQnVmZmVyIGJ1ZmZlcjsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmlu
aXRpYWxpemUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKLQogICAgIGNhbnZhcy0+Y2xp
cFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2Yg
Y29udGVudFJlY3QgdG8gdGhhdCBvZiBkZXN0UmVjdC4KICAgICAvLyBOb3RlIHRoYXQgZGVzdFJl
Y3QgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byBzb3VyY2VSZWN0LgogICAgIGNhbnZhcy0+dHJhbnNs
YXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCkgKyBkZXN0UmVjdC54KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSAr
IGRlc3RSZWN0LnkoKSk7CiAgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKLQotICAgIC8vIEZsdXNo
IFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0
aGUgdGV4dHVyZS4KLSAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA5ZDM3Njhj
Li5iNWRmNWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsMTYgKzMyLDE4IEBA
CiAKICNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKK2Ns
YXNzIFNrQ2FudmFzOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApp
bmRleCBiOTUzMzBiLi5jNDBjNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQ5LDE5ICs0OSwzNCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1
cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAg
ICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3Is
IHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgbV90ZXh0dXJl
LT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBk
YXRlcjsgfQogCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAg
ICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsK
IApAQCAtODUsMTUgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8p
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVu
dFJlY3QgKi8sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFn
ZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBmb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsK
LQogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1h
Z2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2Ug
dGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBj
bGlwcGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CkBAIC0xMDMsNyArMTE2LDcgQEAgcHVibGlj
OgogICAgICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5sb2NhdGlv
bigpIC0gc291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNl
dFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3Qs
IGNsaXBwZWREZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgICAgICBt
X3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBl
ZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKICAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZUZyb21JbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKQEAg
LTE2OCw3ICsxODEsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1h
Z2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50cy0+Y3VycmVudEZyYW1lSGFz
QWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
CiB7CiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV90ZXh0dXJl
VXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCA1ZmU0ZjI2Li5mNmVi
YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNzEzZGZiMi4u
ZGRkMzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVt
LmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0x
NjEsOCArMTYxLDkgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkg
bmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVy
OjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCA5MDg4NGNmLi5iYmU3NzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMz
RC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgVGV4dHVyZUFs
bG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCkBAIC00OCwxNCArNDgsMTggQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0gICAg
ICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4
cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3Rl
eHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3Qo
KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
ID0gMDsKKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkxh
eWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTc4LDcgKzgyLDcgQEAgcHVibGljOgogICAgIC8v
IFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVk
IHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0Lngg
aXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1h
dCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3Qg
Ki8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYg
LyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRl
eHR1cmUuY3BwCmluZGV4IDViYmZmNmEuLmM3NGM5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5j
cHAKQEAgLTgwLDExICs4MCwxNiBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUoKQog
ICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7CiB9CiAKLXZv
aWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxv
Y2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSht
X3Rva2VuKSk7CiAgICAgaWYgKCFtX3RleHR1cmVJZCkKICAgICAgICAgbV90ZXh0dXJlSWQgPSBt
X3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKK30K
Kwordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBhbGxvY2F0ZVRleHR1
cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaAppbmRleCA0ZDQzODA5Li5kNzNjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKQEAgLTU1
LDYgKzU1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+aXNQ
cm90ZWN0ZWQobV90b2tlbik7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBiaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IGI3NTE1YmYuLjRhYWUwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCwxMiArNDgsMTIg
QEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZs
b2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50
c1NjYWxlKQogewogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRp
bmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgR3JhcGhpY3NDb250
ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBwYWludENvbnRlbnRz
KGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOworICAgIHBhaW50
KGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGlj
dHVyZS5lbmRSZWNvcmRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MGY4YjAuLmFlZmJmYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShT
a0NhbnZhcyopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggNzFiNmY1ZC4uODU4OGEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBA
IC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVl
SG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgICAgIGlzTm9uQ29tcG9zaXRlZENvbnRl
bnQoKSA/IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdE
YXRhOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0
dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7
CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBv
ZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11
cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0Vt
cHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1f
cmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwg
bV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tOwpAQCAtMjA4LDE2ICsyMDgsOSBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgQwogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdo
dCgpID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAot
ICAgICAgICAgICAgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwg
dXBkYXRlci5hbGxvY2F0b3IoKSk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9
IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6
IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikp
OwotCi0gICAgICAgICAgICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuaGFuZGxlKHRpbGUtPnRleHR1cmUo
KSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgbV91cGRh
dGVSZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWlu
dFJlY3QpKTsKIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihU
aWxpbmdPcHRpb24gdGlsaW5nT3B0aW9uKQpAQCAtMzgxLDE1ICszNzQsOSBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQogICAgIG1fcmVxdWVzdGVkVXBkYXRlUmVjdCA9IGNvbnRlbnRSZWN0OwogCiAgICAgbV9wYWlu
dFJlY3QgPSBtX3RpbGVyLT5sYXllclJlY3RUb0NvbnRlbnRSZWN0KGRpcnR5TGF5ZXJSZWN0KTsK
LSAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChtX3BhaW50UmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIENhbGxpbmcgcHJlcGFyZVRvVXBk
YXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRl
Ci0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91
ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgotICAgIC8v
IEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0Nv
bnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAgIC8vIHNvIHdlIGdyYWIgYSBsb2Nh
bCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWlu
dCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0
ZXh0dXJlVXBkYXRlcigpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUo
bV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVs
cygpLCBjb250ZW50c1NjYWxlKCkpOwogICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5k
aWNlcyhtX3JlcXVlc3RlZFVwZGF0ZVJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAg
ICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3IgKGlu
dCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CkBAIC00MTQsMTMgKzQwMSwyNSBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KQogICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOwogCiAgICAgICAgICAgICB0
aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZVJl
Y3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB0
aWxlLT50ZXh0dXJlKCktPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOwogICAgICAgICB9CiAgICAg
fQogfQogCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCkKK3sKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRV
cGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVj
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGxpbmcgcGFpbnRDb250
ZW50cygpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lk
ZQorICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBv
dXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KKyAgICAv
LyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3ND
b250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywKKyAgICAvLyBzbyB3ZSBncmFiIGEgbG9j
YWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFp
bnQgY29tcGxldGVzLgorICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3Io
dGV4dHVyZVVwZGF0ZXIoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50cyht
X3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxz
KCksIGNvbnRlbnRzU2NhbGUoKSk7CisKKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90
aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOworfQorCisKIH0KICNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCmluZGV4IGYwYjU0OWUuLjgyOGQyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJD
aHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lk
IGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpAQCAtNjgsOCArNjgsMTAgQEAgcHJvdGVj
dGVkOgogCiAgICAgLy8gU2V0IGludmFsaWRhdGlvbnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWlu
dGVkIGR1cmluZyB1cGRhdGUoKS4KICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0KTsKLSAgICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0
ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgorICAgIC8vIFByZXBhcmUg
dG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCiAgICAg
dm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIC8v
IFBhaW50IGNvbnRlbnRzIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qg
d2l0aCBjb250ZW50UmVjdC4KKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1
cmVzKCk7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmVNYW5hZ2Vy
KiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCi0gICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQg
YmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygp
LgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkg
YW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRSZWN0IG1fcmVxdWVzdGVkVXBkYXRlUmVjdDsK
ICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHB1c2hQcm9w
ZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCiAgICAgLy8gb2YgdGhlIGxheWVy
IHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBieSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmNwcAppbmRleCBlNmJjNzc1Li43ZTQwMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTQwLDExICs0MCw2MSBAQAogI2luY2x1ZGUgIlZpZGVvRnJhbWVD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVQcm92aWRlci5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1
ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitWaWRl
b0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAg
LCBtX21hcHBlZEJ1ZmZlcigwKQoreworfQorCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworICAgIEFTU0VSVCghbV9tYXBwZWRCdWZmZXIp
OworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRl
c3RSZWN0ICovKQoreworICAgIEludFNpemUgZGltZW5zaW9ucyA9IG1fdGV4dHVyZS0+c2l6ZSgp
OworCisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgbV9t
YXBwZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3Vi
SW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBk
aW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIG1fdGV4dHVyZS0+Zm9ybWF0
KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1
bTo6V1JJVEVfT05MWSkpOworCisgICAgaWYgKCFtX21hcHBlZEJ1ZmZlcikgeworICAgICAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhkaW1lbnNp
b25zLCBtX3RleHR1cmUtPmZvcm1hdCgpKTsKKyAgICAgICAgbV9idWZmZXIgPSBhZG9wdEFycmF5
UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKKyAgICB9CisKKyAgICBtX3RleHR1cmUtPmFs
bG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCit2b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OmRhdGFSZWN0KGNvbnN0IHZvaWQqIGRhdGEpCit7Cisg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMobV90
ZXh0dXJlLT5zaXplKCksIG1fdGV4dHVyZS0+Zm9ybWF0KCkpOworCisgICAgaWYgKG1fbWFwcGVk
QnVmZmVyKQorICAgICAgICBtZW1jcHkobV9tYXBwZWRCdWZmZXIsIGRhdGEsIGJ1ZmZlclNpemUp
OworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KG1fYnVmZmVyLmdldCgpLCBkYXRhLCBidWZmZXJT
aXplKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBBU1NFUlQo
bV90ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGlm
IChtX21hcHBlZEJ1ZmZlcikgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5z
aW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpKTsKKyAgICAgICAgR0xDKGNvbnRleHQsIGV4dGVuc2lvbnMtPnVubWFwVGV4U3Vi
SW1hZ2UyRENIUk9NSVVNKG1fbWFwcGVkQnVmZmVyKSk7CisgICAgICAgIG1fbWFwcGVkQnVmZmVy
ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBJbnRTaXplIGRpbWVuc2lvbnMgPSBtX3RleHR1
cmUtPnNpemUoKTsKKyAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgo
KSwgZGltZW5zaW9ucy5oZWlnaHQoKSwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1fYnVmZmVyLmdldCgpKSk7CisgICAgICAgIG1fYnVmZmVy
LmNsZWFyKCk7CisgICAgfQorfQorCiBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlk
ZW9MYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRl
b0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpAQCAtNTcsNiArMTA3LDcgQEAgVmlkZW9MYXll
ckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwg
VmlkZW9GcmFtZVByb3YKICAgICAsIG1fZnJhbWVGb3JtYXQoVmlkZW9GcmFtZUNocm9taXVtOjpJ
bnZhbGlkKQogICAgICwgbV9wcm92aWRlcihwcm92aWRlcikKICAgICAsIG1fcGxhbmVzKDApCisg
ICAgLCBtX2ZyYW1lKDApCiB7CiB9CiAKQEAgLTc0LDE3ICsxMjUsMTkgQEAgdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogewogICAgIExheWVyQ2hyb21pdW06OmNs
ZWFudXBSZXNvdXJjZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVz
OyArK2kpCi0gICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLmNsZWFyKCk7CisgICAgICAg
IG1fdGV4dHVyZXNbaV0uY2xlYXIoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4
dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpCiB7CisgICAgbV9mcmFtZSA9IDA7CisKICAgICBpZiAoIW1fZGVsZWdh
dGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYmIHRleHR1cmVzVmFsaWQoKSkgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUrKykg
ewotICAgICAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1f
dGV4dHVyZS5nZXQoKTsKKyAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1
cmVzW3BsYW5lXS0+dGV4dHVyZSgpOwogICAgICAgICAgICAgaWYgKCF0ZXgtPnJlc2VydmUodGV4
LT5zaXplKCksIHRleC0+Zm9ybWF0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcg
PSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzLDggKzE2NiwxMCBAQCB2b2lk
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWxs
b2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGFscmVh
ZHksIG9yCi0gICAgLy8gcmVhbGxvY2F0ZSB0ZXh0dXJlcyB0aGF0IGFyZSB0aGUgd3Jvbmcgc2l6
ZSBmb3IgdGhlIGZyYW1lLgorICAgIGlmIChmcmFtZS0+cGxhbmVzKCkgPiBNYXhQbGFuZXMpCisg
ICAgICAgIENSQVNIKCk7CisKKyAgICAvLyBSZXNlcnZlIHRleHR1cmVzIGZvciBwbGFuZXMgaWYg
dGhleSBhcmUgbm90IHJlc2VydmVkIGFscmVhZHkuCiAgICAgYm9vbCB0ZXh0dXJlc1Jlc2VydmVk
ID0gcmVzZXJ2ZVRleHR1cmVzKGZyYW1lLCB0ZXh0dXJlRm9ybWF0KTsKICAgICBpZiAoIXRleHR1
cmVzUmVzZXJ2ZWQpIHsKICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwpAQCAtMTIyLDIxICsx
NzcsMzQgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBsYW5lcy4KLSAgICBmb3IgKHVuc2lnbmVkIHBsYW5l
ID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKLSAgICAgICAgVGV4dHVy
ZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwotICAgICAgICBBU1NFUlQodGV4dHVyZS5t
X3RleHR1cmUpOwotICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxh
bmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkpOwotICAgICAgICB1cGRhdGVUZXh0dXJl
KGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCksIHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5l
KSk7Ci0gICAgfQotCisgICAgbV9mcmFtZSA9IGZyYW1lOwogICAgIG1fcGxhbmVzID0gZnJhbWUt
PnBsYW5lcygpOwotICAgIEFTU0VSVChtX3BsYW5lcyA8PSBNYXhQbGFuZXMpOwogCiAgICAgbV91
cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYm91bmRzKCkpOwogICAgIHJlc2V0
TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eSgpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJhbWUpOworICAgIC8vIENvcHkgcGxhbmVz
IHRvIG1hcHBlZCBidWZmZXJzLgorICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8
IG1fZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKQorICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS0+
ZGF0YVJlY3QobV9mcmFtZS0+ZGF0YShwbGFuZSkpOworCisgICAgbV9wcm92aWRlci0+cHV0Q3Vy
cmVudEZyYW1lKG1fZnJhbWUpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVy
KQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNp
Z25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKKyAgICAgICAgSW50
UmVjdCByZWN0KEludFBvaW50KCksIG1fdGV4dHVyZXNbcGxhbmVdLT52aXNpYmxlU2l6ZSgpKTsK
KyAgICAgICAgaGFuZGxlci5oYW5kbGUobV90ZXh0dXJlc1twbGFuZV0uZ2V0KCksIHJlY3QsIHJl
Y3QpOworICAgIH0KIH0KIAogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtMTQ3LDExICsyMTUsMTEgQEAgdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIHZp
ZGVvTGF5ZXItPnNldFNraXBzRHJhdyhtX3NraXBzRHJhdyk7CiAgICAgdmlkZW9MYXllci0+c2V0
RnJhbWVGb3JtYXQobV9mcmFtZUZvcm1hdCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fcGxhbmVzOyArK2kpIHsKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW2ldLm1fdGV4dHVyZSkg
eworICAgICAgICBpZiAoIW1fdGV4dHVyZXNbaV0pIHsKICAgICAgICAgICAgIHZpZGVvTGF5ZXIt
PnNldFNraXBzRHJhdyh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIHZpZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUtPnRl
eHR1cmVJZCgpLCBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ld
Lm1fdmlzaWJsZVNpemUpOworICAgICAgICB2aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIG1fdGV4
dHVyZXNbaV0tPnRleHR1cmUoKS0+dGV4dHVyZUlkKCksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUo
KS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ldLT52aXNpYmxlU2l6ZSgpKTsKICAgICB9CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9wbGFuZXM7IGkgPCBNYXhQbGFuZXM7ICsraSkKICAgICAgICAgdmlk
ZW9MYXllci0+c2V0VGV4dHVyZShpLCAwLCBJbnRTaXplKCksIEludFNpemUoKSk7CkBAIC0xNjAs
MTAgKzIyOCw4IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKiBsYXllcikKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpzZXRMYXllclRyZWVI
b3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsKICAgICBpZiAoaG9zdCAmJiBsYXllclRyZWVI
b3N0KCkgIT0gaG9zdCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxh
bmVzOyArK2kpIHsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV92aXNpYmxlU2l6ZSA9IElu
dFNpemUoKTsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlID0gTWFuYWdlZFRl
eHR1cmU6OmNyZWF0ZShob3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkpOwotICAgICAgICB9
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsraSkKKyAgICAg
ICAgICAgIG1fdGV4dHVyZXNbaV0gPSBVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKSk7CiAgICAgfQogCiAg
ICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChob3N0KTsKQEAgLTE4NSw4ICsyNTEs
MTAgQEAgR0MzRGVudW0gVmlkZW9MYXllckNocm9taXVtOjpkZXRlcm1pbmVUZXh0dXJlRm9ybWF0
KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnIKIAogYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06
OnRleHR1cmVzVmFsaWQoKQogeworICAgIEFTU0VSVChsYXllclRyZWVIb3N0KCkpOworCiAgICAg
Zm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKLSAg
ICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS5n
ZXQoKTsKKyAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLT50
ZXh0dXJlKCk7CiAgICAgICAgIGlmICghdGV4LT5pc1ZhbGlkKHRleC0+c2l6ZSgpLCB0ZXgtPmZv
cm1hdCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMDMsMTkgKzI3
MSwyMCBAQCBib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFZp
ZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIEdDM0RlbgogCiAgICAgZm9yICh1bnNpZ25lZCBwbGFu
ZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CiAgICAgICAgIEludFNp
emUgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5l
KTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdKTsKKyAgICAgICAgQVNTRVJUKG1f
dGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCkpOwogCiAgICAgICAgIC8vIElmIHRoZSByZW5kZXJl
ciBjYW5ub3QgaGFuZGxlIHRoaXMgbGFyZ2Ugb2YgYSB0ZXh0dXJlLCByZXR1cm4gZmFsc2UuCiAg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBp
bXBsZW1lbnRlZC4KICAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUuaXNaZXJvKCkgfHwg
cmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpID4gbWF4VGV4dHVyZVNpemUgfHwgcmVxdWlyZWRU
ZXh0dXJlU2l6ZS5oZWlnaHQoKSA+IG1heFRleHR1cmVTaXplKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChtX3RleHR1cmVzW3BsYW5lXS5t
X3RleHR1cmUtPnNpemUoKSAhPSByZXF1aXJlZFRleHR1cmVTaXplKQotICAgICAgICAgICAgbV90
ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwg
cGxhbmUpOworICAgICAgICBpZiAobV90ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUoKS0+c2l6ZSgp
ICE9IHJlcXVpcmVkVGV4dHVyZVNpemUpIHsKKyAgICAgICAgICAgIEludFNpemUgdmlzaWJsZVNp
emUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBsYW5lKTsKKyAgICAgICAgICAgIG1fdGV4
dHVyZXNbcGxhbmVdLT5zZXRWaXNpYmxlU2l6ZSh2aXNpYmxlU2l6ZSk7CisgICAgICAgIH0KIAot
ICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnJlc2VydmUocmVxdWlyZWRUZXh0
dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0
dXJlKCktPnJlc2VydmUocmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDUsMjggKzMxNCw2IEBAIEludFNpemUgVmlkZW9M
YXllckNocm9taXVtOjpjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVt
KiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQp
OwogfQogCi12b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlJiB0
ZXh0dXJlLCBjb25zdCB2b2lkKiBkYXRhKSBjb25zdAotewotICAgIEFTU0VSVChjb250ZXh0KTsK
LSAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwotCi0gICAgdGV4dHVyZS5tX3RleHR1cmUt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KLSAgICBHQzNEZW51bSBmb3JtYXQg
PSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7Ci0gICAgSW50U2l6ZSBkaW1lbnNpb25zID0g
dGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKLQotICAgIHZvaWQqIG1lbSA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKS0+bWFwVGV4
U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAw
LCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9P
TkxZKTsKLSAgICBpZiAobWVtKSB7Ci0gICAgICAgIG1lbWNweShtZW0sIGRhdGEsIGRpbWVuc2lv
bnMud2lkdGgoKSAqIGRpbWVuc2lvbnMuaGVpZ2h0KCkpOwotICAgICAgICBHTEMoY29udGV4dCwg
c3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkpLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShtZW0pKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBJZiBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0gZmFpbHMsIHRoZW4gZG8gdGhlIHNs
b3dlciB0ZXhTdWJJbWFnZTJECi0gICAgICAgIC8vIHVwbG9hZC4gVGhpcyBkb2VzIHR3aWNlIHRo
ZSBjb3BpZXMgYXMgbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBvbmUKLSAgICAgICAgLy8gaW4g
dGhlIGNvbW1hbmQgYnVmZmVyIGFuZCBhbm90aGVyIHRvIHRoZSB0ZXh0dXJlLgotICAgICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgp
LCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBkYXRhKSk7Ci0gICAg
fQotfQotCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVsZWFzZVByb3ZpZGVyKCkKIHsKICAg
ICBtX3Byb3ZpZGVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggNDkwNTcy
Mi4uZDE5YTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTQzLDYgKzQzLDMz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBhIFZpZGVv
IGVsZW1lbnQuCiBjbGFzcyBWaWRlb0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1
bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRl
eHR1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXBkYXRl
clRleHR1cmUodGV4dHVyZSkpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRl
clRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkg
eyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQ
cmVwYXJlUmVjdCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdm9pZCBk
YXRhUmVjdChjb25zdCB2b2lkKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOworCisgICAgICAgIHZvaWQgc2V0VmlzaWJsZVNpemUoSW50U2l6ZSYgc2l6
ZSkgeyBtX3Zpc2libGVTaXplID0gc2l6ZTsgfQorICAgICAgICBJbnRTaXplJiB2aXNpYmxlU2l6
ZSgpIHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGV4
cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
OworCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICBJ
bnRTaXplIG1fdmlzaWJsZVNpemU7CisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVyOwor
ICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICB9OwogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRl
KiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAsNyArNzcsOSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwor
ICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIoKTsKQEAgLTYzLDE4
ICs5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMo
KTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1Y3QgVGV4dHVyZSB7Ci0gICAgICAgIEludFNpemUgbV92
aXNpYmxlU2l6ZTsKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7Ci0g
ICAgfTsKLQogICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqLCBWaWRlb0Zy
YW1lUHJvdmlkZXIqKTsKIAogICAgIHN0YXRpYyBHQzNEZW51bSBkZXRlcm1pbmVUZXh0dXJlRm9y
bWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1
dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25lZCBwbGFuZSk7
CiAgICAgYm9vbCB0ZXh0dXJlc1ZhbGlkKCk7CiAgICAgYm9vbCByZXNlcnZlVGV4dHVyZXMoY29u
c3QgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9p
ZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRl
eHR1cmUmLCBjb25zdCB2b2lkKikgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0
ZXJzKCk7CiAKQEAgLTgzLDggKzEwNiwxMCBAQCBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVQcm92
aWRlciogbV9wcm92aWRlcjsKIAogICAgIGVudW0geyBNYXhQbGFuZXMgPSAzIH07Ci0gICAgVGV4
dHVyZSBtX3RleHR1cmVzW01heFBsYW5lc107CisgICAgUmVmUHRyPFVwZGF0ZXJUZXh0dXJlPiBt
X3RleHR1cmVzW01heFBsYW5lc107CiAgICAgdW5zaWduZWQgbV9wbGFuZXM7CisKKyAgICBWaWRl
b0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcAppbmRleCAyNzZmM2M5Li43ZmU0M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0
dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQorewor
fQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUo
KQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJj
ZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8V2Vi
R0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNocm9t
aXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2ICs2Nyw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2Vi
R0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1
cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9k
cmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpj
cmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY2LDcgKzgyLDcgQEAgYm9vbCBXZWJHTExheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChjb250ZXh0KCkgJiYgY29u
dGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBH
cmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJD
b250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQp
CiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUsNiAr
MTExLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRl
eHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogYm9vbCBXZWJHTExheWVy
Q2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdl
QnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRlcmVyQ29u
dGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5k
ZXggNjM3NGI5ZS4uYzMzYjRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTM2
LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDEyICs0NiwzMCBAQCBjbGFzcyBXZWJHTExheWVy
Q2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2ViR0wgY2Fu
dmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1
bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVXBkYXRlclRleHR1cmUo
bGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShXZWJHTExheWVyQ2hy
b21pdW0qKTsKKworICAgICAgICBXZWJHTExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgfTsK
KwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogPSAwKTsKIAogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwog
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCopOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENo
YW5nZWQoKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXIqKTsKIApAQCAtNzEsNiArOTAsOCBAQCBwcml2YXRlOgogICAgIC8vIEEgcmVmZXJlbmNlIGlz
IG5vdCBoZWxkIGhlcmUsIGJlY2F1c2UgdGhlIERyYXdpbmdCdWZmZXIgYWxyZWFkeSBob2xkcwog
ICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRoZSBXZWJHTExheWVyQ2hyb21pdW0uCiAgICAgRHJhd2lu
Z0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOworCisgICAgUmVmUHRyPFVwZGF0ZXJUZXh0dXJlPiBt
X3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggYmFlNmZiMy4uNTg5OWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CkBAIC0zNCwxMSArMzQsNTggQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24u
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNp
bmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRs
ZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIoKQorICAgIDogbV9yZXNvdXJjZXMoMCkKK3sKK30KKwor
Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxl
cigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjpo
YW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7Cisg
ICAgaWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICBtX3Jlc291cmNlcysr
OworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVS
ZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0
b3IoYWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhh
bmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisg
ICAgICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OlBh
aW50SGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7Cit9CisK
K0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKK3sKK30KKwor
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNSZWN0KHNv
dXJjZVJlY3QpOworICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7Cit9CisKIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6
OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYg
c2V0dGluZ3MpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9
IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMjk0
LDcgKzM0MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRp
Y19jYXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1t
ZWRpYXRlbHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIXJvb3RM
YXllcigpKQogICAgICAgICByZXR1cm47CkBAIC0zMDIsMTIgKzM0OSwxMiBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOwor
ICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0g
ICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7
CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlIiwgdGhp
cywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICBy
b290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTMxNiwyNCArMzYzLDc3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVy
KQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsK
ICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlz
IGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQg
YWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGlu
ZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwot
ICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFzc2VydCBm
aXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8gcHJlcGFy
ZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRp
bWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAmJiAhbV9s
YXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmFw
cGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByb290UmVuZGVy
U3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RSZW5kZXJTdXJm
YWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXll
ciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlz
dCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVI
b3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1f
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwg
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKLSAg
ICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0KTsKKyAgICBhcHBlbmRWaXNpYmxlTGF5
ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1fbGF5ZXJVcGRhdGVMaXN0KTsKKworICAg
IGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXll
ckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5
ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB9Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVI
b3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKQoreworICAgIE5lZWRSZXNvdXJjZUhhbmRs
ZXIgaGFuZGxlcjsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAg
IHJldHVybiBoYW5kbGVyLnJlc291cmNlcygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVy
U3VyZmFjZUxheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBv
c2l0b3JSZXNvdXJjZXMiLCB0aGlzLCAwKTsKKyAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIGhh
bmRsZXIoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KGhhbmRsZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cygpCit7
CisgICAgaWYgKCFyb290TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZpZXdw
b3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFpbnRDb250ZW50
cyhyb290TGF5ZXIoKSk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRz
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0OjpwYWludENvbnRlbnRzIiwgdGhpcywgMCk7CisKKyAgICBmb3IgKGludCBsYXllcklu
ZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1s
YXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0
ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZE
aXJ0eSgpOworCisgICAgICAgIFBhaW50SGFuZGxlciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOwor
ICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKKyAgICB9
Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJv
bWl1bSogbGF5ZXIsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKK3sKKyAgICAvLyBGb3Igbm9ybWFs
IGxheWVycywgdGhlc2UgY29uZGl0aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tl
ZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVuZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCisgICAgLy8g
Rm9yIG1hc2tzIGFuZCByZXBsaWNhcyBob3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVj
ayB0aGVtIGhlcmUuCisgICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVy
LT5vcGFjaXR5KCkgfHwgIWxheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdXBkYXRlTGlzdC5hcHBlbmQobGF5ZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJl
bmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6
IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVy
IHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxy
ZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlz
IHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM0MiwzNCArNDQyLDM0IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9t
aXVtKiByZW5kZXJTCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsK
ICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9z
dCh0aGlzKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29u
dGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkt
PnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAgICBM
YXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FM
YXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKIAogICAgICAgICByZXBsaWNhTGF5ZXIt
PnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHJlcGxpY2FMYXllci0+cGFpbnRDb250
ZW50c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwg
dXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsK
ICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3Qo
dGhpcyk7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxl
TGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+
Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigp
LT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVy
KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAg
fQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExh
eWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojph
cHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxp
c3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXgg
PSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsg
LS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxh
eWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZv
ciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7
IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFj
ZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJm
YWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VS
VChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmxheWVyTGlz
dCgpLnNpemUoKSk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgp
KTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7
Ci0gICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZh
Y2VMYXllcik7CisgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShy
ZW5kZXJTdXJmYWNlTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGNvbnN0IExheWVyTGlz
dCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7CiAgICAgICAgIEFTU0VS
VChsYXllckxpc3Quc2l6ZSgpKTsKQEAgLTM4Niw1MCArNDg2LDI5IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0CiAgICAgICAgICAgICBBU1NFUlQobGF5ZXItPm9wYWNpdHkoKSk7CiAgICAgICAg
ICAgICBBU1NFUlQoIWxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpOwogCi0gICAgICAgICAgICBs
YXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVM
YXllcihsYXllciwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxl
ciYgaGFuZGxlcikKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Qu
c2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAg
ICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFj
ZUluZGV4XS5nZXQoKTsKLSAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJm
YWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VS
VChyZW5kZXJTdXJmYWNlKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmxheWVyTGlz
dCgpLnNpemUoKSk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgp
KTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAg
ICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VM
YXllci0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+
cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRl
cik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJl
cGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNl
TGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29u
c3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKLSAg
ICAgICAgQVNTRVJUKGxheWVyTGlzdC5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGxh
eWVySW5kZXggPSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4
KSB7Ci0gICAgICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IGxheWVyTGlzdFtsYXllcklu
ZGV4XS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChsYXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkgIT0gcmVuZGVyU3VyZmFjZSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
Y29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGludCBsYXllckluZGV4ID0g
bV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllcklu
ZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3Rb
bGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKGhhbmRsZXIpOwogICAgIH0KIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVu
ZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFj
ZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAg
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsK
KyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVhcigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFj
ZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXpl
KCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9y
ZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NF
UlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1
cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJT
dXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBw
bHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBhNzkzY2NhLi42ODBiNDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7Ci1jbGFzcyBDQ1Rl
eHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50
ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC0xNzcsOSArMTc2LDEyIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAot
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKTsKKyAg
ICBib29sIG5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7Cisg
ICAgdm9pZCBwYWludENvbnRlbnRzKCk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsK
ICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYp
OwogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZv
aWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0xODksMTIgKzE5MSw1
MCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAg
Y2xhc3MgTmVlZFJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKyAg
ICAgICAgdmlydHVhbCB+TmVlZFJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICBpbnQgcmVz
b3VyY2VzKCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IGludCBtX3Jlc291cmNlczsKKyAgICB9OworCisgICAgY2xhc3MgUHJlcGFyZVJlc291cmNlSGFu
ZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKik7CisgICAgICAgIHZpcnR1YWwgflByZXBhcmVSZXNvdXJjZUhhbmRsZXIo
KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0
OworICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICB9OworCisgICAg
Y2xhc3MgUGFpbnRIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIg
eworICAgIHB1YmxpYzoKKyAgICAgICAgUGFpbnRIYW5kbGVyKENDUHJveHkqKTsKKyAgICAgICAg
dmlydHVhbCB+UGFpbnRIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94
eSogbV9wcm94eTsKKyAgICB9OworCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gTGF5ZXJMaXN0OwogCi0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3Qg
TGF5ZXJMaXN0Jik7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFj
ZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJv
bWl1bSosIExheWVyTGlzdCYpOworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZv
aWQgYXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMo
TGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0q
KTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xl
YXJQZW5kaW5nVXBkYXRlKCk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKQEAg
LTIxMCw3ICsyNTAsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jv
b3RMYXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFu
YWdlcjsKIAotICAgIExheWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0Owog
CiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTYyMzBlYS4u
MWM1MzE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5
X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzgsNiArNzksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZv
cmUgdXNpbmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0
IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhv
b2tzCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBkZGMwMWMxLi45MzIxZTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzEsNyArMzEs
NiBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CkBAIC0xNDgsMTUgKzE0NywxOSBAQCB2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29t
bWl0KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworCisgICAgLy8g
UHJlcGFyZSBjb21wb3NpdG9yIHJlc291cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5l
ZWRzQ29tcG9zaXRvclJlc291cmNlcygpKQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBh
cmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgbV9s
YXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CisKICAgICAvLyBDb21taXQgaW1tZWRpYXRl
bHkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwotCisgICAgICAgIHdoaWxlICht
X3RleHR1cmVVcGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEp
KSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVy
LnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUo
KSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1f
bGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogCkBAIC0yMDksNiArMjEyLDExIEBAIHZvaWQgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKIH0KIAor
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCit7CisgICAgbV90ZXh0dXJlVXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5n
IHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNzMs
NyArMjgxLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7
CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRh
dGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKaW5kZXggZWRhYjYxZi4uNmQ5YTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2
ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNj
L0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw2ICs1NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVy
c0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpAQCAtODIs
NiArODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0OwogICAg
IGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0aW5nLgog
ICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7CisKKyAgICBDQ1RleHR1
cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5n
bGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlLi5hNjFjM2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCkBAIC0zNywxMSArMzgsOCBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVy
ZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQot
ICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9lbnRyeUluZGV4KDApCitDQ1Rl
eHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKCkKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0
b3IpOwogfQogCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCkBAIC02Niwy
MyArNjQsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0
CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJ
bmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4
IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRy
eSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVw
ZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnku
bV9kZXN0UmVjdCk7Ci0gICAgfQorICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgIGlmICgh
bV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICht
YXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgpOworICAgICAgICBlbnRyeS5t
X3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5t
X2Rlc3RSZWN0KTsKKyAgICAgICAgbV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9CiAKLSAg
ICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVh
cigpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7
CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRl
eCA9IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCBiZjc5YWM5Li5hYjY1OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1Rl
eHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxv
Y2F0b3IqKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyKCk7CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIo
KTsKIAogICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CkBAIC00OSw4
ICs0OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcigpIHsgcmV0dXJuIG1fYWxsb2NhdG9yOyB9Ci0KIHByaXZhdGU6CiAg
ICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsKICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogbV90ZXh0dXJlOwpAQCAtNTgsOCArNTUsNiBAQCBwcml2YXRlOgogICAgICAgICBJbnRS
ZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yOwotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBt
X2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDk1YzZiNWQu
LjBiNzczMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNSw3ICszNSw2IEBA
CiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVh
ZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBA
IC0yODYsNiArMjg1LDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFy
dGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChtX3N0YXJ0ZWQpOworCisgICAgVXBkYXRlRW50cnkqIGVudHJ5ID0gbmV3IFVwZGF0ZUVu
dHJ5OworICAgIGVudHJ5LT5tX3RleHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJj
ZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisK
KyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9z
c1RocmVhZEFjY2VzcyhlbnRyeSkpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hB
bGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1w
bFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzc0LDcgKzM4NywxNyBAQCB2b2lkIENDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVC
ZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZh
bHNlOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVy
VHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+
bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21w
b3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQo
ImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRp
b247CisgICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJl
YWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxU
aHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNv
bXBsZXRpb24ud2FpdCgpOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250
ZW50cygpOwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5p
bWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBp
cyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2Fs
bCBzZXROZWVkc0NvbW1pdApAQCAtMzk4LDEzICs0MjEsNDEgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVn
aW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVu
Y2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnBy
ZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVz
b3VyY2VzT25PbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29t
cGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwor
ICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBjb21wbGV0aW9uLT5zaWdu
YWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJl
cGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBt
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBj
b21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0
dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5KiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBkZWxldGUgZW50
cnk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkLmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRy
eS0+bV9kZXN0UmVjdCk7CisKKyAgICBkZWxldGUgZW50cnk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
Q29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoIW1fY29tbWl0Q29t
cGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKG1fc2NoZWR1
bGVyT25JbXBsVGhyZWFkLT5jb21taXRQZW5kaW5nKCkpOwogICAgIGlmICghbV9sYXllclRyZWVI
b3N0SW1wbCkgewogICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNDEyLDM2ICs0NjMsMjggQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29t
cGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1f
Y29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFT
U0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0
ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
OwotCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwog
fQogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAog
ewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7CisgICAgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDAp
OwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAgICAg
c3RhdGljIGNvbnN0IGludCBVcGRhdGVzUGVyRnJhbWUgPSA5OTk5OTsKLSAgICBtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFt
ZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsK
ICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0Iiwg
dGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
KTsKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNN
b3JlVXBkYXRlcygpKTsKKyAgICBBU1NFUlQoIW1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQu
aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgQVNTRVJUKG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkKTsKIAotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNs
ZWFyKCk7CisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwogCiAKICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCmluZGV4IDFkZjM3NDYuLmFiYTM0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCkBAIC02Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1w
bGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBs
VGhyZWFkKCk7CkBAIC03OCw2ICs4MCwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAKKyAgICBzdHJ1Y3QgVXBkYXRl
RW50cnkgeworICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3RleHR1cmU7
CisgICAgICAgIEludFJlY3QgbV9zb3VyY2VSZWN0OworICAgICAgICBJbnRSZWN0IG1fZGVzdFJl
Y3Q7CisgICAgfTsKKwogICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVhZAogICAgIHZvaWQgYmVn
aW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0Pik7CiAgICAgdm9pZCBkaWRDb21taXRB
bmREcmF3RnJhbWUoKTsKQEAgLTkyLDYgKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQ
YXNzT3duUHRyPENDVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09u
SW1wbFRocmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9t
Q0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKKyAgICB2b2lk
IHByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwor
ICAgIHZvaWQgdXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChVcGRhdGVFbnRyeSopOwogICAgIHZv
aWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAg
ICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAg
ICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
KTsKQEAgLTEyNywxMCArMTM3LDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQgd2hlbiB0aGUg
bWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1pdCB0byBjb21wbGV0ZS4KICAgICBDQ0Nv
bXBsZXRpb25FdmVudCogbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7Ci0gICAg
T3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21t
aXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJ
c05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVy
IG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwCmluZGV4IDIyMDljOGEuLjE4ZmVkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuY3BwCkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJ
bXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25z
dCBJbnQKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMoY29udGVudFJlY3Qs
IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBtX3Rp
bGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICBmbG9hdCBzaWdu
ID0gRmxvYXRRdWFkKGNvbnRlbnRSZWN0KS5pc0NvdW50ZXJjbG9ja3dpc2UoKSA/IC0xIDogMTsK
KyAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8g
R3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwog
ICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgQ0NMYXll
clF1YWQ6OkVkZ2UgcHJldkVkZ2VYID0gY29udGVudFF1YWQubGVmdCgpOwogCkBAIC0zNDMsNiAr
MzQ0LDkgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQKIAogICAgICAgICAgICAgaWYgKHRpbGUg
JiYgdGlsZS0+dGV4dHVyZUlkKCkpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGlsZS0+dGV4dHVyZUlkKCkpOwor
ICAgICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7CisKICAgICAgICAgICAgICAgICBs
YXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGdsb2JhbFRyYW5zZm9ybSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCks
IHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBxdWFkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4
TG9jYXRpb24oKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDRhNDE3OTYuLjg3NjY1MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1
ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9y
LmgiCkBAIC05MDQsNiArOTA1LDE0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0Vmlz
aWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9j
a0xheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JikgeyB9CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0KK307CisKIGNsYXNzIFRl
c3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgewog
cHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhv
c3RUZXN0KiB0ZXN0KQpAQCAtOTI3LDM3ICs5MzYsMTE2IEBAIHByaXZhdGU6CiAKIGNsYXNzIENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nIDogcHVibGljIENvbnRlbnRMYXll
ckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdh
dGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xhc3MgQ29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgcHVibGljOgorICAgICAgICBj
bGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAg
ICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0dXJlKENvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkK
KyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgICAgICwg
bV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsg
cmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgbmVl
ZFByZXBhcmVSZWN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+bmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wcmVwYXJlUmVjdCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3Qg
SW50UmVjdCYgLyogc291cmNlUmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wYWludENvbnRlbnRzUmVjdCgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3Qm
IC8qIGRlc3RSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVy
ZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7
CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRl
cjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nICpsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAgICB9CiAKLSAgICBpbnQg
cGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAg
ICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCA9
IDA7IH0KKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4
dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7CisgICAgICAgIH0KIAotICAgIGludCB1cGRhdGVDb3Vu
dCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQo
KSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9CisgICAgICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0
aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgICAg
ICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0g
LyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CisgICAgICAgIH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50
UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhl
bHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fbGF5ZXItPnBhaW50Q29udGVudHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXI7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IENvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikgOiBt
X2xheWVyKGxheWVyKSB7IH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyogbV9sYXllcjsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUgKmRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICB7Ci0gICAgICAgIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX3BhaW50
Q29udGVudHNDb3VudCsrOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikK
ICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAg
ICAgIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlci5nZXQoKTsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29u
dGVudHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1f
cGFpbnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBh
cmVSZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9w
cmVwYXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KCkgeyBtX3Bh
aW50Q29udGVudHNSZWN0Q291bnQrKzsgfQorICAgIGludCBwYWludENvbnRlbnRzUmVjdENvdW50
KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0
ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50
KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0KKworICAgIGludCBuZWVkUHJlcGFyZVJl
Y3QoKSB7IHJldHVybiBtX25lZWRQcmVwYXJlUmVjdDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxp
Y2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0
ZSAqZGVsZWdhdGUpCisgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3Qp
CiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9u
ZWVkUHJlcGFyZVJlY3QobmVlZFByZXBhcmVSZWN0KQogICAgICAgICAsIG1fcGFpbnRDb250ZW50
c0NvdW50KDApCi0gICAgICAgICwgbV91cGRhdGVDb3VudCgwKQorICAgICAgICAsIG1fcHJlcGFy
ZVJlY3RDb3VudCgwKQorICAgICAgICAsIG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCgwKQorICAg
ICAgICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAgICAgewogICAgICAgICBzZXRCb3VuZHMoSW50
U2l6ZSgxMCwgMTApKTsKICAgICB9CiAKKyAgICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI+IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI7CisgICAgYm9vbCBtX25lZWRQcmVw
YXJlUmVjdDsKICAgICBpbnQgbV9wYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRl
Q291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV9wYWludENvbnRl
bnRzUmVjdENvdW50OworICAgIGludCBtX3VwZGF0ZVJlY3RDb3VudDsKIH07CiAKIC8vIExheWVy
IG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRv
ciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC05NjUsNyAr
MTA1Myw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIDogcHVibGlj
IENDTGF5ZXJUcmVlSG9zdFRlc3QgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RP
cGFjaXR5Q2hhbmdlKCkKICAgICAgICAgOiBtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUodGhp
cykKLSAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKSkKKyAg
ICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlLCB0cnVlKSkKICAg
ICB7CiAgICAgfQogCkBAIC05ODQsMTMgKzEwNzIsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGFmdGVyVGVzdCgpCiAgICAgewotICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0
eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIC8vIHBhaW50Q29udGVu
dHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgogICAgICAgICBFWFBFQ1RfRVEoMSwg
bV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8g
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBz
YW1lCi0gICAgICAgIC8vIGFtb3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCku
Ci0gICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3Vu
dCgpLAotICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgp
KTsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50c1JlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcHJlcGFyZVJlY3QoKS4K
KyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgp
LAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVj
dENvdW50KCkpOworCisgICAgICAgIC8vIHVwZGF0ZVJlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50
c1JlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250
ZW50c1JlY3RDb3VudCgpLAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51
cGRhdGVSZWN0Q291bnQoKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTAwMyw0ICsxMDk2LDQ5
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSwgcnVuTXVsdGlUaHJl
YWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCB3aGVuIG5lZWRQcmVwYXJlUmVjdCgpIHJldHVybnMgZmFsc2UuCitjbGFzcyBD
Q0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RU
ZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCgpCisg
ICAgICAgIDogbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUsIGZhbHNlKSkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFJvb3RMYXllcihtX3VwZGF0ZUNoZWNrTGF5ZXIpOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFZpZXdwb3J0KEludFNpemUoMTAsIDEwKSk7CisKKyAgICAgICAgcG9zdFNldE5l
ZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKKyAgICB7CisgICAgICAg
IGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7
CisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNl
LgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRz
Q291bnQoKSk7CisKKyAgICAgICAgLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90IGhhdmUgYmVl
biBjYWxsZWQuCisgICAgICAgIEVYUEVDVF9FUSgwLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBh
cmVSZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENv
bnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWlu
dENvbnRlbnRzUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5
ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0xheWVy
RGVsZWdhdGUgbV9kZWxlZ2F0ZTsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc+IG1fdXBkYXRlQ2hlY2tMYXllcjsKK307CisKK1RFU1RfRihDQ0xheWVy
VHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCwgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVz
dCh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116293</attachid>
            <date>2011-11-22 16:52:08 -0800</date>
            <delta_ts>2011-12-11 13:43:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initialize-frame-resources.diff</filename>
            <type>text/plain</type>
            <size>94422</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggZGQ5MzE5MS4uMDc5MDVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6VGV4
dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICA6IExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUodGV4dHVyZSkKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiB7
CiB9CkBAIC00NSw5ICs0NSwxMSBAQCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpU
ZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICBBU1NFUlQodGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyPiBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFn
ZSkKQEAgLTc3LDcgKzc5LDcgQEAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9y
bWF0IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWQKICAgICAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1
cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogfQogCi12b2lkIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250
ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMsIGZsb2F0
IGNvbnRlbnRzU2NhbGUpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBh
aW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRp
bGVTaXplLCBpbnQgYm9yZGVyVGV4ZWxzLCBmbG9hdCBjb250ZW50c1NjYWxlKQogewogICAgIG1f
dGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKIApAQCAtODgsMTUgKzkwLDEz
IEBAIHZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cHJlcGFyZVRvVXBkYXRl
KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0CiAgICAgUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlRleHRPcHRpb24gdGV4dE9wdGlvbiA9CiAgICAgICAgIGJvcmRlclRleGVscyA/IFBsYXRmb3Jt
Q2FudmFzOjpQYWludGVyOjpHcmF5c2NhbGVUZXh0IDogUGxhdGZvcm1DYW52YXM6OlBhaW50ZXI6
OlN1YnBpeGVsVGV4dDsKICAgICBQbGF0Zm9ybUNhbnZhczo6UGFpbnRlciBjYW52YXNQYWludGVy
KCZtX2NhbnZhcywgdGV4dE9wdGlvbik7Ci0gICAgcGFpbnRDb250ZW50cygqY2FudmFzUGFpbnRl
ci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKKyAgICBwYWludCgqY2Fu
dmFzUGFpbnRlci5jb250ZXh0KCksIGNvbnRlbnRSZWN0LCBjb250ZW50c1NjYWxlKTsKIH0KIAot
dm9pZCBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBN
YW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6
OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBm
b3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQogewogICAgIFBsYXRmb3JtQ2FudmFzOjpBdXRvTG9ja2VyIGxvY2tlcigmbV9jYW52YXMpOwot
Ci0gICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKLSAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgbV90ZXhTdWJJ
bWFnZS51cGxvYWQobG9ja2VyLnBpeGVscygpLCBjb250ZW50UmVjdCgpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IDk3NTUyMmMuLjJlOTFkYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgKQEAgLTQwLDEyICs0MCwxMiBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFs
IGJpdG1hcC4KIGNsYXNzIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgY2xhc3MgVGV4dHVyZSA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBjbGFzcyBUZXh0dXJl
IDogcHVibGljIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgVGV4dHVyZShCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFz
c093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTks
OCArNTksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0
dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0
IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7
Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVB
bGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBi
b3JkZXJUZXhlbHMsIGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZvaWQgdXBkYXRlVGV4dHVy
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCB1bnNpZ25lZCBmb3JtYXQsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hy
b21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
Q2hyb21pdW0uY3BwCmluZGV4IDQ0OTQ1ODYuLjM5ZDJkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcApAQCAtNDQsNiArNDQsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4
dHVyZShDYW52YXMyRExheWVyQ2hyb21pdW0qIGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikK
K3sKK30KKworQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJU
ZXh0dXJlKCkKK3sKK30KKwordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0
dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgbV9sYXll
ci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOworfQorCiBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXMyRExheWVy
Q2hyb21pdW0oY29udGV4dCkpOwpAQCAtNTIsNiArNjYsNyBAQCBQYXNzUmVmUHRyPENhbnZhczJE
TGF5ZXJDaHJvbWl1bT4gQ2FudmFzMkRMYXllckNocm9taXVtOjpjcmVhdGUoR3JhcGhpY3NDb250
ZXh0MwogQ2FudmFzMkRMYXllckNocm9taXVtOjpDYW52YXMyRExheWVyQ2hyb21pdW0oR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgOiBDYW52YXNMYXllckNocm9taXVtKDApCiAgICAg
LCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdXBkYXRlclRleHR1cmUoVXBkYXRlclRleHR1
cmU6OmNyZWF0ZSh0aGlzKSkKIHsKIH0KIApAQCAtNjUsNyArODAsNyBAQCBib29sIENhbnZhczJE
TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKICAgICAgICAgICAgICYmIChtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpID09IEdy
YXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4
dHVyZVVwZGF0ZXImKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKQogewogICAgIGlmIChtX2RpcnR5UmVjdC5pc0VtcHR5KCkgfHwgIWRyYXdz
Q29udGVudCgpKQogICAgICAgICByZXR1cm47CkBAIC04NSw2ICsxMDAsMTEgQEAgdm9pZCBDYW52
YXMyRExheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBDQ1RleHQKICAgICByZXNldE5lZWRzRGlzcGxheSgpOwogfQogCit2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVV
cGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRl
clRleHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogdm9pZCBDYW52YXMy
RExheWVyQ2hyb21pdW06OmNvbnRlbnRDaGFuZ2VkKCkKIHsKICAgICBpZiAobGF5ZXJUcmVlSG9z
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCA0NTdiZDU2Li5lODZh
NjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDMsMTYgKzQzLDM2
IEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwogLy8gQSBsYXllciBjb250YWluaW5nIGFuIGFj
Y2VsZXJhdGVkIDJkIGNhbnZhcwogY2xhc3MgQ2FudmFzMkRMYXllckNocm9taXVtIDogcHVibGlj
IENhbnZhc0xheWVyQ2hyb21pdW0gewogcHVibGljOgorICAgIGNsYXNzIFVwZGF0ZXJUZXh0dXJl
IDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAg
ICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShDYW52YXMyRExh
eWVyQ2hyb21pdW0qIGxheWVyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFVwZGF0ZXJUZXh0dXJlKGxheWVyKSk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIH5VcGRhdGVyVGV4dHVyZSgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZXhwbGljaXQgVXBkYXRl
clRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisKKyAgICAgICAgQ2FudmFzMkRMYXll
ckNocm9taXVtKiBtX2xheWVyOworICAgIH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52
YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1
YWwgfkNhbnZhczJETGF5ZXJDaHJvbWl1bSgpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRl
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhH
cmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2b2lkIHVwZGF0ZUNv
bXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JS
ZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudENoYW5nZWQoKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDYW52YXMyRExh
eWVyQ2hyb21pdW0oR3JhcGhpY3NDb250ZXh0M0QqKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCog
bV9jb250ZXh0OworCisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0ZXJUZXh0dXJl
OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApp
bmRleCA1ZmE2Nzg1Li5jNjFlYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcApAQCAtMzYsNiArMzYsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0dXJlKFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpIDogbV90ZXh0dXJlKHRleHR1cmUpCit7Cit9CisKK0Nh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKK3sKK30KKworYm9v
bCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpuZWVkUHJlcGFyZVJlY3QoKQor
eworICAgIHJldHVybiAhbV90ZXh0dXJlLT50ZXh0dXJlSWQoKTsKK30KKwordm9pZCBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAv
KiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBt
X3RleHR1cmUtPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCiAgICAgOiBtX3BhaW50ZXIocGFpbnRl
cikKIHsKQEAgLTQ1LDcgKzYzLDcgQEAgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6fkNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIENhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKK3ZvaWQgQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSkKIHsKICAgICBjb250ZXh0LnRy
YW5zbGF0ZSgtY29udGVudFJlY3QueCgpLCAtY29udGVudFJlY3QueSgpKTsKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYThmZWZmMy4uODg2ZDEw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1ZGUgIkxh
eWVyVGV4dHVyZVVwZGF0ZXIuaCIKKyNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM5LDEyICs0MCwyOCBAQCBjbGFzcyBMYXllclBhaW50ZXJD
aHJvbWl1bTsKIC8vIEEgTGF5ZXJUZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZh
cy4KIGNsYXNzIENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CiBwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflRleHR1
cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1
cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJl
UmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywg
Y29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pOworCisgICAgcHJvdGVjdGVkOgorICAgICAg
ICBleHBsaWNpdCBUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKKworICAgIHBy
aXZhdGU6CisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgIH07
CisKICAgICB2aXJ0dWFsIH5DYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKIHByb3RlY3Rl
ZDoKICAgICBleHBsaWNpdCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5
ZXJQYWludGVyQ2hyb21pdW0+KTsKIAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7
CisgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZWMzNmEyZC4uMDBkMzg1YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIENv
bnRlbnRMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKICAgICBUaWxlZExheWVyQ2hy
b21pdW06OmNsZWFudXBSZXNvdXJjZXMoKTsKIH0KIAotdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cHJl
cGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7CiAgICAgdXBkYXRlVGlsZVNpemVBbmRUaWxpbmdPcHRp
b24oKTsKIApAQCAtMTEyLDYgKzExMiwyMCBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpw
YWludENvbnRlbnRzSWZEaXJ0eSgpCiAgICAgcmVzZXROZWVkc0Rpc3BsYXkoKTsKIH0KIAordm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIEFT
U0VSVChkcmF3c0NvbnRlbnQoKSk7CisKKyAgICBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QgPSB2
aXNpYmxlTGF5ZXJSZWN0KCk7CisgICAgaWYgKGxheWVyUmVjdC5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmICghZHJhd3NDb250ZW50KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHBhaW50Q29udGVudHMobGF5ZXJSZWN0KTsKK30KKwogYm9vbCBDb250ZW50TGF5ZXJDaHJv
bWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9kZWxlZ2F0ZSAmJiBt
X2RlbGVnYXRlLT5kcmF3c0NvbnRlbnQoKSAmJiBUaWxlZExheWVyQ2hyb21pdW06OmRyYXdzQ29u
dGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggYjgzNGU2Ny4uYzVl
OWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkNvbnRlbnRMYXllckNocm9taXVtKCk7CiAKKyAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzSWZEaXJ0eSgpOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAppbmRleCBmMmQ3ZTJkLi45ZWVmYjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIEZyYW1lQnVmZmVyKCk7CiAgICAg
fkZyYW1lQnVmZmVyKCk7CiAKLSAgICBTa0NhbnZhcyogaW5pdGlhbGl6ZShHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSopOworICAgIFNrQ2FudmFz
KiBpbml0aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiwgTWFuYWdlZFRleHR1cmUqKTsKIAogcHJp
dmF0ZToKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwpAQCAtNjYsMTIgKzY2LDEy
IEBAIEZyYW1lQnVmZmVyOjp+RnJhbWVCdWZmZXIoKQogICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZUZyYW1lYnVmZmVyKG1fZmJvKTsKIH0KIAotU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0aWFs
aXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQorU2tDYW52YXMqIEZyYW1lQnVmZmVyOjppbml0
aWFsaXplKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSkKIHsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1fZmJvID0gbV9jb250ZXh0LT5j
cmVhdGVGcmFtZWJ1ZmZlcigpOwogICAgIG1fY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBo
aWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pOwotICAgIHRleHR1cmUtPmZyYW1lYnVm
ZmVyVGV4dHVyZTJEKG1fY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBjb250ZXh0LT5mcmFtZWJ1
ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBoaWNzQ29u
dGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUtPnRleHR1cmVJZCgpLCAwKTsKIAogICAgIC8vIENyZWF0ZSBhIHNraWEgZ3B1IGNh
bnZhcy4KICAgICBHckNvbnRleHQqIGdyQ29udGV4dCA9IG1fY29udGV4dC0+Z3JDb250ZXh0KCk7
CkBAIC05Niw3ICs5Niw3IEBAIFNrQ2FudmFzKiBGcmFtZUJ1ZmZlcjo6aW5pdGlhbGl6ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvcioKIH0gLy8gbmFtZXNwYWNl
CiAKIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVy
ZTo6VGV4dHVyZShGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIq
IHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQotICAg
IDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgIDogQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQogICAgICwgbV90ZXh0dXJlVXBkYXRl
cih0ZXh0dXJlVXBkYXRlcikKIHsKIH0KQEAgLTEwNSw5ICsxMDUsMjMgQEAgRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJl
QWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9j
YXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgLy8gTWFrZSBzdXJl
IFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgorICAgIGNvbnRleHQtPm1ha2VDb250
ZXh0Q3VycmVudCgpOworICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdM
IHN0YXRlLgorICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKKworICAg
IEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKworICAgIC8vIENyZWF0ZSBhbiBhY2Nl
bGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KKyAgICBGcmFtZUJ1ZmZlciBidWZmZXI7CisgICAg
U2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIHRleHR1cmUoKSk7
CisKKyAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBjYW52
YXMsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBz
byB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KKyAg
ICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWlu
dGVyQ2hyb21pdW0+IHBhaW50ZXIpCkBAIC0xMzUsMjYgKzE0OSwxNCBAQCBMYXllclRleHR1cmVV
cGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcAogICAgIHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBOwogfQogCi12b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBG
cmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBTa0NhbnZhcyogY2FudmFzLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICAv
LyBNYWtlIHN1cmUgU0tJQSB1c2VzIHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4
dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0gICAgLy8gTm90aWZ5IFNLSUEgdG8gc3luYyBpdHMg
aW50ZXJuYWwgR0wgc3RhdGUuCi0gICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4
dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgot
ICAgIEZyYW1lQnVmZmVyIGJ1ZmZlcjsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmlu
aXRpYWxpemUoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKTsKLQogICAgIGNhbnZhcy0+Y2xp
cFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2Yg
Y29udGVudFJlY3QgdG8gdGhhdCBvZiBkZXN0UmVjdC4KICAgICAvLyBOb3RlIHRoYXQgZGVzdFJl
Y3QgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byBzb3VyY2VSZWN0LgogICAgIGNhbnZhcy0+dHJhbnNs
YXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCkgKyBkZXN0UmVjdC54KCksCiAg
ICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSAr
IGRlc3RSZWN0LnkoKSk7CiAgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKLQotICAgIC8vIEZsdXNo
IFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0
aGUgdGV4dHVyZS4KLSAgICBjb250ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAwNmI2MmQx
Li5hOGZmODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsMTYgKzMyLDE4IEBA
CiAKICNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAKK2Ns
YXNzIFNrQ2FudmFzOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBjbGFzcyBUZXh0dXJlIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIGNsYXNzIFRleHR1cmUgOiBw
dWJsaWMgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBUZXh0dXJlKEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4
dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlcjsgfQpAQCAtNTUsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uOyB9CiAgICAgdmly
dHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1
cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApp
bmRleCBkYTE4MzhiLi5iYTlhNWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTQ5LDE5ICs0OSwzNCBAQCBwdWJsaWM6CiAgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRleHR1
cmUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxN
YW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkKLSAgICAgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAg
ICAgICAgICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKICAgICAgICAgewog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBU
ZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogICAgICAgICB7Ci0gICAgICAgICAg
ICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBhbGxvY2F0b3Is
IHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICAgICAgbV90ZXh0dXJl
LT5hbGxvY2F0ZVRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAg
ICAgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQs
IHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+
dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBk
YXRlcjsgfQogCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAg
ICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIqIG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgfTsK
IApAQCAtODUsMTUgKzEwMCwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHByZXBh
cmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGls
ZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8p
CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29udGVu
dFJlY3QgKi8sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQogICAgIHsKICAgICAgICAgbV90ZXhTdWJJbWFn
ZS5zZXRTdWJJbWFnZVNpemUodGlsZVNpemUpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCB1bnNpZ25lZCBmb3Jt
YXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQog
ICAgIHsKLSAgICAgICAgdGV4dHVyZS0+YmluZFRleHR1cmUoY29udGV4dCwgYWxsb2NhdG9yKTsK
LQogICAgICAgICAvLyBTb3VyY2UgcmVjdCBzaG91bGQgbmV2ZXIgZ28gb3V0c2lkZSB0aGUgaW1h
Z2UgcGl4ZWxzLCBldmVuIGlmIHRoaXMKICAgICAgICAgLy8gaXMgcmVxdWVzdGVkIGJlY2F1c2Ug
dGhlIHRleHR1cmUgZXh0ZW5kcyBvdXRzaWRlIHRoZSBpbWFnZS4KICAgICAgICAgSW50UmVjdCBj
bGlwcGVkU291cmNlUmVjdCA9IHNvdXJjZVJlY3Q7CkBAIC0xMDMsNyArMTE2LDcgQEAgcHVibGlj
OgogICAgICAgICBjbGlwcGVkRGVzdFJlY3QubW92ZShjbGlwcGVkU291cmNlUmVjdC5sb2NhdGlv
bigpIC0gc291cmNlUmVjdC5sb2NhdGlvbigpKTsKICAgICAgICAgY2xpcHBlZERlc3RSZWN0LnNl
dFNpemUoY2xpcHBlZFNvdXJjZVJlY3Quc2l6ZSgpKTsKIAotICAgICAgICBtX3RleFN1YkltYWdl
LnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3Qs
IGNsaXBwZWREZXN0UmVjdCwgdGV4dHVyZS0+Zm9ybWF0KCksIGNvbnRleHQpOworICAgICAgICBt
X3RleFN1YkltYWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBl
ZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0UmVjdCwgZm9ybWF0LCBjb250ZXh0KTsKICAgICB9CiAK
ICAgICB2b2lkIHVwZGF0ZUZyb21JbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKQEAg
LTE2OCw3ICsxODEsNyBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHMoSW1h
Z2UqIGNvbnRlbnRzKQogICAgIHNldE9wYXF1ZSghbV9jb250ZW50cy0+Y3VycmVudEZyYW1lSGFz
QWxwaGEoKSk7CiB9CiAKLXZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZE
aXJ0eSgpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgp
CiB7CiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV90ZXh0dXJl
VXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVu
dEZyYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRleCA1ZmU0ZjI2Li5mNmVi
YzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaApAQCAtNTMsNyArNTMsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIGJv
b2wgZHJhd3NDb250ZW50KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJ
ZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNDb250ZW50c1NjYWxlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNl
dENvbnRlbnRzKEltYWdlKiBpbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggNzEzZGZiMi4u
ZGRkMzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtMzYsNiArMzYsNyBAQAogCiAjaW5jbHVk
ZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUg
IkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlByb2dyYW1CaW5kaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3VyZmFjZUNocm9taXVt
LmgiCkBAIC01Myw3ICs1NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXll
ckltcGw7CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3Q7Ci1jbGFzcyBDQ1RleHR1cmVVcGRhdGVyOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiAKIGNsYXNzIENDTGF5ZXJEZWxlZ2F0ZSB7CkBAIC0x
NjEsOCArMTYxLDkgQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyB0eXBpY2FsbHkg
bmVlZCB0byBiZSBvdmVyd3JpdHRlbiBieSBkZXJpdmVkIGNsYXNzZXMuCiAgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2
b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50c0lmRGlydHkoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVy
OjpIYW5kbGVyJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldElzTWFzayhib29sKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGJpbmRDb250ZW50c1RleHR1cmUoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaAppbmRleCBiZjc1Y2YyLi45MTk5YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
CiAKLSNpbmNsdWRlICJNYW5hZ2VkVGV4dHVyZS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMz
RC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTM4LDYgKzM3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBJbnRSZWN0
OwogY2xhc3MgSW50U2l6ZTsKK2NsYXNzIE1hbmFnZWRUZXh0dXJlOwogY2xhc3MgVGV4dHVyZUFs
bG9jYXRvcjsKIGNsYXNzIFRleHR1cmVNYW5hZ2VyOwogCkBAIC00OCwxNCArNDgsMTggQEAgcHVi
bGljOgogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCi0gICAg
ICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKLSAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIGV4
cGxpY2l0IFRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkgOiBtX3Rl
eHR1cmUodGV4dHVyZSkgeyB9CisgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1
cmUoKSB7IHJldHVybiAwOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3Qo
KSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVj
dCAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
ID0gMDsKKyAgICB9OworCisgICAgY2xhc3MgSGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5IYW5kbGVyKCkgeyB9OwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAgT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qs
IGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAogICAgIHZpcnR1YWwgfkxh
eWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KQEAgLTc4LDcgKzgyLDcgQEAgcHVibGljOgogICAgIC8v
IFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVk
IHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0Lngg
aXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1h
dCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgLyogY29udGVudFJlY3Qg
Ki8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICov
LCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYg
LyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRl
eHR1cmUuY3BwCmluZGV4IDViYmZmNmEuLmM3NGM5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5j
cHAKQEAgLTgwLDExICs4MCwxNiBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjp1bnJlc2VydmUoKQog
ICAgIG1fdGV4dHVyZU1hbmFnZXItPnVucHJvdGVjdFRleHR1cmUobV90b2tlbik7CiB9CiAKLXZv
aWQgTWFuYWdlZFRleHR1cmU6OmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCit2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxv
Y2F0ZVRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvcikKIHsKICAgICBBU1NFUlQobV90ZXh0dXJlTWFuYWdlci0+aGFzVGV4dHVyZSht
X3Rva2VuKSk7CiAgICAgaWYgKCFtX3RleHR1cmVJZCkKICAgICAgICAgbV90ZXh0dXJlSWQgPSBt
X3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZVRleHR1cmUoYWxsb2NhdG9yLCBtX3Rva2VuKTsKK30K
Kwordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBhbGxvY2F0ZVRleHR1
cmUoY29udGV4dCwgYWxsb2NhdG9yKTsKICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1
cmUuaAppbmRleCA0ZDQzODA5Li5kNzNjODc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKQEAgLTU1
LDYgKzU1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV90ZXh0dXJlTWFuYWdlci0+aXNQ
cm90ZWN0ZWQobV90b2tlbik7CiAgICAgfQogCisgICAgdm9pZCBhbGxvY2F0ZVRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CiAgICAgdm9pZCBiaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9T
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCmluZGV4IGI3NTE1YmYuLjRhYWUwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1NrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00OCwxMiArNDgsMTIg
QEAgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6flNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoKQogewogfQogCi12b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZs
b2F0IGNvbnRlbnRzU2NhbGUpCit2b2lkIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCBjb250ZW50
c1NjYWxlKQogewogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBtX3BpY3R1cmUuYmVnaW5SZWNvcmRp
bmcoY29udGVudFJlY3Qud2lkdGgoKSwgY29udGVudFJlY3QuaGVpZ2h0KCkpOwogICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgcGxhdGZvcm1Db250ZXh0KGNhbnZhcyk7CiAgICAgR3JhcGhpY3NDb250
ZXh0IGdyYXBoaWNzQ29udGV4dCgmcGxhdGZvcm1Db250ZXh0KTsKLSAgICBwYWludENvbnRlbnRz
KGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOworICAgIHBhaW50
KGdyYXBoaWNzQ29udGV4dCwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwogICAgIG1fcGlj
dHVyZS5lbmRSZWNvcmRpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IDQ0MGY4YjAuLmFlZmJmYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1NrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Ta1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIGV4cGxpY2l0IFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4pOwogCi0gICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJv
cmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAgICAgdm9pZCBkcmF3UGljdHVyZShT
a0NhbnZhcyopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggNDc0NWNmMy4uMmQ2ZmFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBA
IC0xNjUsMTAgKzE2NSwxMCBAQCB2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVl
SG9zdChDQ0xheWVyVHJlZUhvc3QqIGhvc3QpCiAgICAgICAgIGlzTm9uQ29tcG9zaXRlZENvbnRl
bnQoKSA/IENDTGF5ZXJUaWxpbmdEYXRhOjpOb0JvcmRlclRleGVscyA6IENDTGF5ZXJUaWxpbmdE
YXRhOjpIYXNCb3JkZXJUZXhlbHMpOwogfQogCi12b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0
dXJlVXBkYXRlciYgdXBkYXRlcikKK3ZvaWQgVGlsZWRMYXllckNocm9taXVtOjpmb3JFYWNoQ29t
cG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7
CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0IHR1cm5lZCBv
ZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRhdGVkIG1pZC11
cGRhdGUuCi0gICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1fcmVxdWVzdGVkVXBkYXRlUmVjdC5pc0Vt
cHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkpCisgICAgaWYgKG1fc2tpcHNEcmF3IHx8IG1f
cmVxdWVzdGVkVXBkYXRlUmVjdC5pc0VtcHR5KCkgfHwgIW1fdGlsZXItPm51bVRpbGVzKCkgfHwg
bV9wYWludFJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnQgbGVmdCwg
dG9wLCByaWdodCwgYm90dG9tOwpAQCAtMjA4LDE2ICsyMDgsOSBAQCB2b2lkIFRpbGVkTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgQwogICAgICAgICAgICAgaWYgKHBhaW50T2Zmc2V0LnkoKSArIGRlc3RSZWN0LmhlaWdo
dCgpID4gbV9wYWludFJlY3QuaGVpZ2h0KCkpCiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKIAot
ICAgICAgICAgICAgdGlsZS0+bWFuYWdlZFRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4dCwg
dXBkYXRlci5hbGxvY2F0b3IoKSk7Ci0gICAgICAgICAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9
IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8gR3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6
IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwotICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNv
bnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwotICAgICAgICAgICAg
R0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikp
OwotCi0gICAgICAgICAgICB1cGRhdGVyLmFwcGVuZCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIGhhbmRsZXIuaGFuZGxlKHRpbGUtPnRleHR1cmUo
KSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICB9CiAgICAgfQotCi0gICAgbV91cGRh
dGVSZWN0ID0gRmxvYXRSZWN0KG1fdGlsZXItPmNvbnRlbnRSZWN0VG9MYXllclJlY3QobV9wYWlu
dFJlY3QpKTsKIH0KIAogdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OnNldFRpbGluZ09wdGlvbihU
aWxpbmdPcHRpb24gdGlsaW5nT3B0aW9uKQpAQCAtMzgxLDE1ICszNzQsOSBAQCB2b2lkIFRpbGVk
TGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
KQogICAgIG1fcmVxdWVzdGVkVXBkYXRlUmVjdCA9IGNvbnRlbnRSZWN0OwogCiAgICAgbV9wYWlu
dFJlY3QgPSBtX3RpbGVyLT5sYXllclJlY3RUb0NvbnRlbnRSZWN0KGRpcnR5TGF5ZXJSZWN0KTsK
LSAgICBpZiAoZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQorICAgIGlmIChtX3BhaW50UmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIENhbGxpbmcgcHJlcGFyZVRvVXBk
YXRlKCkgY2FsbHMgaW50byBXZWJLaXQgdG8gcGFpbnQsIHdoaWNoIG1heSBoYXZlIHRoZSBzaWRl
Ci0gICAgLy8gZWZmZWN0IG9mIGRpc2FibGluZyBjb21wb3NpdGluZywgd2hpY2ggY2F1c2VzIG91
ciByZWZlcmVuY2UgdG8gdGhlIHRleHR1cmUgdXBkYXRlciB0byBiZSBkZWxldGVkLgotICAgIC8v
IEhvd2V2ZXIsIHdlIGNhbid0IGZyZWUgdGhlIG1lbW9yeSBiYWNraW5nIHRoZSBHcmFwaGljc0Nv
bnRleHQgdW50aWwgdGhlIHBhaW50IGZpbmlzaGVzLAotICAgIC8vIHNvIHdlIGdyYWIgYSBsb2Nh
bCByZWZlcmVuY2UgaGVyZSB0byBob2xkIHRoZSB1cGRhdGVyIGFsaXZlIHVudGlsIHRoZSBwYWlu
dCBjb21wbGV0ZXMuCi0gICAgUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHByb3RlY3Rvcih0
ZXh0dXJlVXBkYXRlcigpKTsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT5wcmVwYXJlVG9VcGRhdGUo
bV9wYWludFJlY3QsIG1fdGlsZXItPnRpbGVTaXplKCksIG1fdGlsZXItPmhhc0JvcmRlclRleGVs
cygpLCBjb250ZW50c1NjYWxlKCkpOwogICAgIG1fdGlsZXItPmNvbnRlbnRSZWN0VG9UaWxlSW5k
aWNlcyhtX3JlcXVlc3RlZFVwZGF0ZVJlY3QsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAg
ICAgZm9yIChpbnQgaiA9IHRvcDsgaiA8PSBib3R0b207ICsraikgewogICAgICAgICBmb3IgKGlu
dCBpID0gbGVmdDsgaSA8PSByaWdodDsgKytpKSB7CkBAIC00MTQsMTMgKzQwMSwyNSBAQCB2b2lk
IFRpbGVkTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KQogICAgICAgICAgICAgdGlsZS0+Y2xlYXJEaXJ0eSgpOwogCiAgICAgICAgICAgICB0
aWxlLT5tX3VwZGF0ZVJlY3QgPSBzb3VyY2VSZWN0OwotICAgICAgICAgICAgaWYgKHNvdXJjZVJl
Y3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICB0
aWxlLT50ZXh0dXJlKCktPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOwogICAgICAgICB9CiAgICAg
fQogfQogCit2b2lkIFRpbGVkTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCkKK3sKKyAgICBpZiAobV9za2lwc0RyYXcgfHwgbV9yZXF1ZXN0ZWRV
cGRhdGVSZWN0LmlzRW1wdHkoKSB8fCAhbV90aWxlci0+bnVtVGlsZXMoKSB8fCBtX3BhaW50UmVj
dC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIENhbGxpbmcgcGFpbnRDb250
ZW50cygpIGNhbGxzIGludG8gV2ViS2l0IHRvIHBhaW50LCB3aGljaCBtYXkgaGF2ZSB0aGUgc2lk
ZQorICAgIC8vIGVmZmVjdCBvZiBkaXNhYmxpbmcgY29tcG9zaXRpbmcsIHdoaWNoIGNhdXNlcyBv
dXIgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dXJlIHVwZGF0ZXIgdG8gYmUgZGVsZXRlZC4KKyAgICAv
LyBIb3dldmVyLCB3ZSBjYW4ndCBmcmVlIHRoZSBtZW1vcnkgYmFja2luZyB0aGUgR3JhcGhpY3ND
b250ZXh0IHVudGlsIHRoZSBwYWludCBmaW5pc2hlcywKKyAgICAvLyBzbyB3ZSBncmFiIGEgbG9j
YWwgcmVmZXJlbmNlIGhlcmUgdG8gaG9sZCB0aGUgdXBkYXRlciBhbGl2ZSB1bnRpbCB0aGUgcGFp
bnQgY29tcGxldGVzLgorICAgIFJlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBwcm90ZWN0b3Io
dGV4dHVyZVVwZGF0ZXIoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50cyht
X3BhaW50UmVjdCwgbV90aWxlci0+dGlsZVNpemUoKSwgbV90aWxlci0+aGFzQm9yZGVyVGV4ZWxz
KCksIGNvbnRlbnRzU2NhbGUoKSk7CisKKyAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QobV90
aWxlci0+Y29udGVudFJlY3RUb0xheWVyUmVjdChtX3BhaW50UmVjdCkpOworfQorCisKIH0KICNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5oCmluZGV4IGYwYjU0OWUuLjgyOGQyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflRpbGVkTGF5ZXJD
aHJvbWl1bSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
R3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdmlydHVhbCB2b2lk
IGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJc01hc2soYm9vbCk7CiAKICAgICB2aXJ0dWFsIHZvaWQg
cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwpAQCAtNjgsOCArNjgsMTAgQEAgcHJvdGVj
dGVkOgogCiAgICAgLy8gU2V0IGludmFsaWRhdGlvbnMgdG8gYmUgcG90ZW50aWFsbHkgcmVwYWlu
dGVkIGR1cmluZyB1cGRhdGUoKS4KICAgICB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0KTsKLSAgICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0
ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgorICAgIC8vIFByZXBhcmUg
dG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QuCiAgICAg
dm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpOworICAgIC8v
IFBhaW50IGNvbnRlbnRzIG5lZWRlZCB0byB1cGRhdGUgdGV4dHVyZXMgdGhhdCBpbnRlcnNlY3Qg
d2l0aCBjb250ZW50UmVjdC4KKyAgICB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYg
Y29udGVudFJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RWaXNpYmxlVGlsZVRleHR1
cmVzKCk7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHJpdmF0ZToKIAogICAgIFRleHR1cmVNYW5hZ2Vy
KiB0ZXh0dXJlTWFuYWdlcigpIGNvbnN0OwogCi0gICAgLy8gVGVtcG9yYXJ5IHN0YXRlIGhlbGQg
YmV0d2VlbiBwcmVwYXJlVG9VcGRhdGUoKSBhbmQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygp
LgorICAgIC8vIFRlbXBvcmFyeSBzdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkg
YW5kIHBhaW50Q29udGVudHMoKS4KICAgICBJbnRSZWN0IG1fcmVxdWVzdGVkVXBkYXRlUmVjdDsK
ICAgICAvLyBTdGF0ZSBoZWxkIGJldHdlZW4gcHJlcGFyZVRvVXBkYXRlKCkgYW5kIHB1c2hQcm9w
ZXJ0aWVzVG8oKS4gVGhpcyByZXByZXNlbnRzIHRoZSBhcmVhCiAgICAgLy8gb2YgdGhlIGxheWVy
IHRoYXQgaXMgYWN0dWFsbHkgcmUtcGFpbnRlZCBieSBXZWJLaXQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXll
ckNocm9taXVtLmNwcAppbmRleCBlNmJjNzc1Li43ZTQwMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTQwLDExICs0MCw2MSBAQAogI2luY2x1ZGUgIlZpZGVvRnJhbWVD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIlZpZGVvRnJhbWVQcm92aWRlci5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1
ZGUgImNjL0NDVmlkZW9MYXllckltcGwuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitWaWRl
b0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRy
PE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJlKQorICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAg
LCBtX21hcHBlZEJ1ZmZlcigwKQoreworfQorCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQoreworICAgIEFTU0VSVCghbV9tYXBwZWRCdWZmZXIp
OworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRl
c3RSZWN0ICovKQoreworICAgIEludFNpemUgZGltZW5zaW9ucyA9IG1fdGV4dHVyZS0+c2l6ZSgp
OworCisgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxF
eHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgbV9t
YXBwZWRCdWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZXh0ZW5zaW9ucy0+bWFwVGV4U3Vi
SW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBk
aW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIG1fdGV4dHVyZS0+Zm9ybWF0
KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBFeHRlbnNpb25zM0RDaHJvbWl1
bTo6V1JJVEVfT05MWSkpOworCisgICAgaWYgKCFtX21hcHBlZEJ1ZmZlcikgeworICAgICAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhkaW1lbnNp
b25zLCBtX3RleHR1cmUtPmZvcm1hdCgpKTsKKyAgICAgICAgbV9idWZmZXIgPSBhZG9wdEFycmF5
UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKKyAgICB9CisKKyAgICBtX3RleHR1cmUtPmFs
bG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOworfQorCit2b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OmRhdGFSZWN0KGNvbnN0IHZvaWQqIGRhdGEpCit7Cisg
ICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMobV90
ZXh0dXJlLT5zaXplKCksIG1fdGV4dHVyZS0+Zm9ybWF0KCkpOworCisgICAgaWYgKG1fbWFwcGVk
QnVmZmVyKQorICAgICAgICBtZW1jcHkobV9tYXBwZWRCdWZmZXIsIGRhdGEsIGJ1ZmZlclNpemUp
OworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KG1fYnVmZmVyLmdldCgpLCBkYXRhLCBidWZmZXJT
aXplKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBBU1NFUlQo
bV90ZXh0dXJlLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhp
Y3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4dHVyZS0+dGV4dHVyZUlkKCkpOworICAgIGlm
IChtX21hcHBlZEJ1ZmZlcikgeworICAgICAgICBFeHRlbnNpb25zM0RDaHJvbWl1bSogZXh0ZW5z
aW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpKTsKKyAgICAgICAgR0xDKGNvbnRleHQsIGV4dGVuc2lvbnMtPnVubWFwVGV4U3Vi
SW1hZ2UyRENIUk9NSVVNKG1fbWFwcGVkQnVmZmVyKSk7CisgICAgICAgIG1fbWFwcGVkQnVmZmVy
ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgICBJbnRTaXplIGRpbWVuc2lvbnMgPSBtX3RleHR1
cmUtPnNpemUoKTsKKyAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFN1YkltYWdlMkQo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIDAsIDAsIDAsIGRpbWVuc2lvbnMud2lkdGgo
KSwgZGltZW5zaW9ucy5oZWlnaHQoKSwgbV90ZXh0dXJlLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIG1fYnVmZmVyLmdldCgpKSk7CisgICAgICAgIG1fYnVmZmVy
LmNsZWFyKCk7CisgICAgfQorfQorCiBQYXNzUmVmUHRyPFZpZGVvTGF5ZXJDaHJvbWl1bT4gVmlk
ZW9MYXllckNocm9taXVtOjpjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaWRl
b0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQogewpAQCAtNTcsNiArMTA3LDcgQEAgVmlkZW9MYXll
ckNocm9taXVtOjpWaWRlb0xheWVyQ2hyb21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwg
VmlkZW9GcmFtZVByb3YKICAgICAsIG1fZnJhbWVGb3JtYXQoVmlkZW9GcmFtZUNocm9taXVtOjpJ
bnZhbGlkKQogICAgICwgbV9wcm92aWRlcihwcm92aWRlcikKICAgICAsIG1fcGxhbmVzKDApCisg
ICAgLCBtX2ZyYW1lKDApCiB7CiB9CiAKQEAgLTc0LDE3ICsxMjUsMTkgQEAgdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJjZXMoKQogewogICAgIExheWVyQ2hyb21pdW06OmNs
ZWFudXBSZXNvdXJjZXMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVz
OyArK2kpCi0gICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlLmNsZWFyKCk7CisgICAgICAg
IG1fdGV4dHVyZXNbaV0uY2xlYXIoKTsKIH0KIAotdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIENDVGV4
dHVyZVVwZGF0ZXImIHVwZGF0ZXIpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRv
VXBkYXRlSWZEaXJ0eSgpCiB7CisgICAgbV9mcmFtZSA9IDA7CisKICAgICBpZiAoIW1fZGVsZWdh
dGUgfHwgIW1fcHJvdmlkZXIgfHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpZiAobV9kaXJ0eVJlY3QuaXNFbXB0eSgpICYmIHRleHR1cmVzVmFsaWQoKSkgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUrKykg
ewotICAgICAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1f
dGV4dHVyZS5nZXQoKTsKKyAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1
cmVzW3BsYW5lXS0+dGV4dHVyZSgpOwogICAgICAgICAgICAgaWYgKCF0ZXgtPnJlc2VydmUodGV4
LT5zaXplKCksIHRleC0+Zm9ybWF0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcg
PSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTEzLDggKzE2NiwxMCBAQCB2b2lk
IFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgQwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWxs
b2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5lcyBpZiB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGFscmVh
ZHksIG9yCi0gICAgLy8gcmVhbGxvY2F0ZSB0ZXh0dXJlcyB0aGF0IGFyZSB0aGUgd3Jvbmcgc2l6
ZSBmb3IgdGhlIGZyYW1lLgorICAgIGlmIChmcmFtZS0+cGxhbmVzKCkgPiBNYXhQbGFuZXMpCisg
ICAgICAgIENSQVNIKCk7CisKKyAgICAvLyBSZXNlcnZlIHRleHR1cmVzIGZvciBwbGFuZXMgaWYg
dGhleSBhcmUgbm90IHJlc2VydmVkIGFscmVhZHkuCiAgICAgYm9vbCB0ZXh0dXJlc1Jlc2VydmVk
ID0gcmVzZXJ2ZVRleHR1cmVzKGZyYW1lLCB0ZXh0dXJlRm9ybWF0KTsKICAgICBpZiAoIXRleHR1
cmVzUmVzZXJ2ZWQpIHsKICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwpAQCAtMTIyLDIxICsx
NzcsMzQgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJj
ZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIEMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJlIHBsYW5lcy4KLSAgICBmb3IgKHVuc2lnbmVkIHBsYW5l
ID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspIHsKLSAgICAgICAgVGV4dHVy
ZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNbcGxhbmVdOwotICAgICAgICBBU1NFUlQodGV4dHVyZS5t
X3RleHR1cmUpOwotICAgICAgICBBU1NFUlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxh
bmUpID09IHRleHR1cmUubV90ZXh0dXJlLT5zaXplKCkpOwotICAgICAgICB1cGRhdGVUZXh0dXJl
KGNvbnRleHQsIHVwZGF0ZXIuYWxsb2NhdG9yKCksIHRleHR1cmUsIGZyYW1lLT5kYXRhKHBsYW5l
KSk7Ci0gICAgfQotCisgICAgbV9mcmFtZSA9IGZyYW1lOwogICAgIG1fcGxhbmVzID0gZnJhbWUt
PnBsYW5lcygpOwotICAgIEFTU0VSVChtX3BsYW5lcyA8PSBNYXhQbGFuZXMpOwogCiAgICAgbV91
cGRhdGVSZWN0ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYm91bmRzKCkpOwogICAgIHJlc2V0
TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwYWludENvbnRl
bnRzSWZEaXJ0eSgpCit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUoZnJhbWUpOworICAgIC8vIENvcHkgcGxhbmVz
IHRvIG1hcHBlZCBidWZmZXJzLgorICAgIGZvciAodW5zaWduZWQgcGxhbmUgPSAwOyBwbGFuZSA8
IG1fZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKQorICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS0+
ZGF0YVJlY3QobV9mcmFtZS0+ZGF0YShwbGFuZSkpOworCisgICAgbV9wcm92aWRlci0+cHV0Q3Vy
cmVudEZyYW1lKG1fZnJhbWUpOworfQorCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6Zm9yRWFj
aENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVy
KQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNp
Z25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKKyAgICAgICAgSW50
UmVjdCByZWN0KEludFBvaW50KCksIG1fdGV4dHVyZXNbcGxhbmVdLT52aXNpYmxlU2l6ZSgpKTsK
KyAgICAgICAgaGFuZGxlci5oYW5kbGUobV90ZXh0dXJlc1twbGFuZV0uZ2V0KCksIHJlY3QsIHJl
Y3QpOworICAgIH0KIH0KIAogdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVz
VG8oQ0NMYXllckltcGwqIGxheWVyKQpAQCAtMTQ3LDExICsyMTUsMTEgQEAgdm9pZCBWaWRlb0xh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIHZp
ZGVvTGF5ZXItPnNldFNraXBzRHJhdyhtX3NraXBzRHJhdyk7CiAgICAgdmlkZW9MYXllci0+c2V0
RnJhbWVGb3JtYXQobV9mcmFtZUZvcm1hdCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fcGxhbmVzOyArK2kpIHsKLSAgICAgICAgaWYgKCFtX3RleHR1cmVzW2ldLm1fdGV4dHVyZSkg
eworICAgICAgICBpZiAoIW1fdGV4dHVyZXNbaV0pIHsKICAgICAgICAgICAgIHZpZGVvTGF5ZXIt
PnNldFNraXBzRHJhdyh0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIHZpZGVvTGF5ZXItPnNldFRleHR1cmUoaSwgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUtPnRl
eHR1cmVJZCgpLCBtX3RleHR1cmVzW2ldLm1fdGV4dHVyZS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ld
Lm1fdmlzaWJsZVNpemUpOworICAgICAgICB2aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIG1fdGV4
dHVyZXNbaV0tPnRleHR1cmUoKS0+dGV4dHVyZUlkKCksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUo
KS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ldLT52aXNpYmxlU2l6ZSgpKTsKICAgICB9CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gbV9wbGFuZXM7IGkgPCBNYXhQbGFuZXM7ICsraSkKICAgICAgICAgdmlk
ZW9MYXllci0+c2V0VGV4dHVyZShpLCAwLCBJbnRTaXplKCksIEludFNpemUoKSk7CkBAIC0xNjAs
MTAgKzIyOCw4IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKEND
TGF5ZXJJbXBsKiBsYXllcikKIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpzZXRMYXllclRyZWVI
b3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHsKICAgICBpZiAoaG9zdCAmJiBsYXllclRyZWVI
b3N0KCkgIT0gaG9zdCkgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxh
bmVzOyArK2kpIHsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV92aXNpYmxlU2l6ZSA9IElu
dFNpemUoKTsKLSAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlID0gTWFuYWdlZFRl
eHR1cmU6OmNyZWF0ZShob3N0LT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkpOwotICAgICAgICB9
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsraSkKKyAgICAg
ICAgICAgIG1fdGV4dHVyZXNbaV0gPSBVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKE1hbmFnZWRUZXh0
dXJlOjpjcmVhdGUoaG9zdC0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKSk7CiAgICAgfQogCiAg
ICAgTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdChob3N0KTsKQEAgLTE4NSw4ICsyNTEs
MTAgQEAgR0MzRGVudW0gVmlkZW9MYXllckNocm9taXVtOjpkZXRlcm1pbmVUZXh0dXJlRm9ybWF0
KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnIKIAogYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06
OnRleHR1cmVzVmFsaWQoKQogeworICAgIEFTU0VSVChsYXllclRyZWVIb3N0KCkpOworCiAgICAg
Zm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKLSAg
ICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS5n
ZXQoKTsKKyAgICAgICAgTWFuYWdlZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLT50
ZXh0dXJlKCk7CiAgICAgICAgIGlmICghdGV4LT5pc1ZhbGlkKHRleC0+c2l6ZSgpLCB0ZXgtPmZv
cm1hdCgpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMDMsMTkgKzI3
MSwyMCBAQCBib29sIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFZp
ZGVvRnJhbWVDaHJvbWl1bSogZnJhbWUsIEdDM0RlbgogCiAgICAgZm9yICh1bnNpZ25lZCBwbGFu
ZSA9IDA7IHBsYW5lIDwgZnJhbWUtPnBsYW5lcygpOyBwbGFuZSsrKSB7CiAgICAgICAgIEludFNp
emUgcmVxdWlyZWRUZXh0dXJlU2l6ZSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5l
KTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdKTsKKyAgICAgICAgQVNTRVJUKG1f
dGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCkpOwogCiAgICAgICAgIC8vIElmIHRoZSByZW5kZXJl
ciBjYW5ub3QgaGFuZGxlIHRoaXMgbGFyZ2Ugb2YgYSB0ZXh0dXJlLCByZXR1cm4gZmFsc2UuCiAg
ICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBp
bXBsZW1lbnRlZC4KICAgICAgICAgaWYgKHJlcXVpcmVkVGV4dHVyZVNpemUuaXNaZXJvKCkgfHwg
cmVxdWlyZWRUZXh0dXJlU2l6ZS53aWR0aCgpID4gbWF4VGV4dHVyZVNpemUgfHwgcmVxdWlyZWRU
ZXh0dXJlU2l6ZS5oZWlnaHQoKSA+IG1heFRleHR1cmVTaXplKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgICAgIGlmICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChtX3RleHR1cmVzW3BsYW5lXS5t
X3RleHR1cmUtPnNpemUoKSAhPSByZXF1aXJlZFRleHR1cmVTaXplKQotICAgICAgICAgICAgbV90
ZXh0dXJlc1twbGFuZV0ubV92aXNpYmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwg
cGxhbmUpOworICAgICAgICBpZiAobV90ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUoKS0+c2l6ZSgp
ICE9IHJlcXVpcmVkVGV4dHVyZVNpemUpIHsKKyAgICAgICAgICAgIEludFNpemUgdmlzaWJsZVNp
emUgPSBjb21wdXRlVmlzaWJsZVNpemUoZnJhbWUsIHBsYW5lKTsKKyAgICAgICAgICAgIG1fdGV4
dHVyZXNbcGxhbmVdLT5zZXRWaXNpYmxlU2l6ZSh2aXNpYmxlU2l6ZSk7CisgICAgICAgIH0KIAot
ICAgICAgICBtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnJlc2VydmUocmVxdWlyZWRUZXh0
dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0
dXJlKCktPnJlc2VydmUocmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAg
fQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNDUsMjggKzMxNCw2IEBAIEludFNpemUgVmlkZW9M
YXllckNocm9taXVtOjpjb21wdXRlVmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVt
KiBmcmFtZSwKICAgICByZXR1cm4gSW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQp
OwogfQogCi12b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlJiB0
ZXh0dXJlLCBjb25zdCB2b2lkKiBkYXRhKSBjb25zdAotewotICAgIEFTU0VSVChjb250ZXh0KTsK
LSAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwotCi0gICAgdGV4dHVyZS5tX3RleHR1cmUt
PmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KLSAgICBHQzNEZW51bSBmb3JtYXQg
PSB0ZXh0dXJlLm1fdGV4dHVyZS0+Zm9ybWF0KCk7Ci0gICAgSW50U2l6ZSBkaW1lbnNpb25zID0g
dGV4dHVyZS5tX3RleHR1cmUtPnNpemUoKTsKLQotICAgIHZvaWQqIG1lbSA9IHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRENocm9taXVtKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKS0+bWFwVGV4
U3ViSW1hZ2UyRENIUk9NSVVNKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAw
LCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhp
Y3NDb250ZXh0M0Q6OlVOU0lHTkVEX0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9P
TkxZKTsKLSAgICBpZiAobWVtKSB7Ci0gICAgICAgIG1lbWNweShtZW0sIGRhdGEsIGRpbWVuc2lv
bnMud2lkdGgoKSAqIGRpbWVuc2lvbnMuaGVpZ2h0KCkpOwotICAgICAgICBHTEMoY29udGV4dCwg
c3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkpLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShtZW0pKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBJZiBtYXBUZXhTdWJJbWFnZTJEQ0hST01JVU0gZmFpbHMsIHRoZW4gZG8gdGhlIHNs
b3dlciB0ZXhTdWJJbWFnZTJECi0gICAgICAgIC8vIHVwbG9hZC4gVGhpcyBkb2VzIHR3aWNlIHRo
ZSBjb3BpZXMgYXMgbWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNLCBvbmUKLSAgICAgICAgLy8gaW4g
dGhlIGNvbW1hbmQgYnVmZmVyIGFuZCBhbm90aGVyIHRvIHRoZSB0ZXh0dXJlLgotICAgICAgICBH
TEMoY29udGV4dCwgY29udGV4dC0+dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgp
LCBmb3JtYXQsIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9CWVRFLCBkYXRhKSk7Ci0gICAg
fQotfQotCiB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cmVsZWFzZVByb3ZpZGVyKCkKIHsKICAg
ICBtX3Byb3ZpZGVyID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggNDkwNTcy
Mi4uZmE0NTY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmgKQEAgLTQzLDYgKzQzLDMz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEEgTGF5ZXIgdGhhdCBjb250YWlucyBhIFZpZGVv
IGVsZW1lbnQuCiBjbGFzcyBWaWRlb0xheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1
bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRl
eHR1cmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRl
clRleHR1cmUodGV4dHVyZSkpOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB+VXBkYXRl
clRleHR1cmUoKTsKKworICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkg
eyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQ
cmVwYXJlUmVjdCgpIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdm9pZCBk
YXRhUmVjdChjb25zdCB2b2lkKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVj
dCYgZGVzdFJlY3QpOworCisgICAgICAgIHZvaWQgc2V0VmlzaWJsZVNpemUoSW50U2l6ZSYgc2l6
ZSkgeyBtX3Zpc2libGVTaXplID0gc2l6ZTsgfQorICAgICAgICBJbnRTaXplJiB2aXNpYmxlU2l6
ZSgpIHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGV4
cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
OworCisgICAgICAgIE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOworICAgICAgICBJ
bnRTaXplIG1fdmlzaWJsZVNpemU7CisgICAgICAgIHVpbnQ4X3QqIG1fbWFwcGVkQnVmZmVyOwor
ICAgICAgICBPd25BcnJheVB0cjx1aW50OF90PiBtX2J1ZmZlcjsKKyAgICB9OwogCiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VmlkZW9MYXllckNocm9taXVtPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRl
KiA9IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmlkZW9GcmFtZVByb3ZpZGVyKiA9IDApOwpAQCAtNTAsNyArNzcsOSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q0NMYXllckltcGw+IGNyZWF0ZUNDTGF5ZXJJbXBsKCk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCosIENDVGV4dHVyZVVwZGF0ZXImKTsKKyAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVRvVXBk
YXRlSWZEaXJ0eSgpOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwor
ICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCByZWxlYXNlUHJvdmlkZXIoKTsKQEAgLTYzLDE4
ICs5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMo
KTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1Y3QgVGV4dHVyZSB7Ci0gICAgICAgIEludFNpemUgbV92
aXNpYmxlU2l6ZTsKLSAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7Ci0g
ICAgfTsKLQogICAgIFZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqLCBWaWRlb0Zy
YW1lUHJvdmlkZXIqKTsKIAogICAgIHN0YXRpYyBHQzNEZW51bSBkZXRlcm1pbmVUZXh0dXJlRm9y
bWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSopOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1
dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRlb0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25lZCBwbGFuZSk7
CiAgICAgYm9vbCB0ZXh0dXJlc1ZhbGlkKCk7CiAgICAgYm9vbCByZXNlcnZlVGV4dHVyZXMoY29u
c3QgVmlkZW9GcmFtZUNocm9taXVtKiwgR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9p
ZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRl
eHR1cmUmLCBjb25zdCB2b2lkKikgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0
ZXJzKCk7CiAKQEAgLTgzLDggKzEwNiwxMCBAQCBwcml2YXRlOgogICAgIFZpZGVvRnJhbWVQcm92
aWRlciogbV9wcm92aWRlcjsKIAogICAgIGVudW0geyBNYXhQbGFuZXMgPSAzIH07Ci0gICAgVGV4
dHVyZSBtX3RleHR1cmVzW01heFBsYW5lc107CisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBt
X3RleHR1cmVzW01heFBsYW5lc107CiAgICAgdW5zaWduZWQgbV9wbGFuZXM7CisKKyAgICBWaWRl
b0ZyYW1lQ2hyb21pdW0qIG1fZnJhbWU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9t
aXVtLmNwcAppbmRleCAyNzZmM2M5Li43ZmU0M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTM5LDkgKzM5LDI0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0Qu
aCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2
ZW50LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK1dlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0
dXJlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgOiBtX2xheWVyKGxheWVyKQorewor
fQorCitXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUo
KQoreworfQorCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0
ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJj
ZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fbGF5ZXIt
PnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7Cit9CisKIFBhc3NSZWZQdHI8V2Vi
R0xMYXllckNocm9taXVtPiBXZWJHTExheWVyQ2hyb21pdW06OmNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUqIGRlbGVnYXRlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR0xMYXllckNocm9t
aXVtKGRlbGVnYXRlKSk7CkBAIC01Miw2ICs2Nyw3IEBAIFdlYkdMTGF5ZXJDaHJvbWl1bTo6V2Vi
R0xMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCiAgICAgLCBtX3RleHR1
cmVDaGFuZ2VkKHRydWUpCiAgICAgLCBtX3RleHR1cmVVcGRhdGVkKGZhbHNlKQogICAgICwgbV9k
cmF3aW5nQnVmZmVyKDApCisgICAgLCBtX3VwZGF0ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpj
cmVhdGUodGhpcykpCiB7CiB9CiAKQEAgLTY2LDcgKzgyLDcgQEAgYm9vbCBXZWJHTExheWVyQ2hy
b21pdW06OmRyYXdzQ29udGVudCgpIGNvbnN0CiAgICAgcmV0dXJuIChjb250ZXh0KCkgJiYgY29u
dGV4dCgpLT5nZXRFeHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBH
cmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIFdlYkdMTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogcmVuZGVyZXJD
b250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJikKK3ZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvbnRleHQp
CiB7CiAgICAgaWYgKCFkcmF3c0NvbnRlbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTUsNiAr
MTExLDExIEBAIHZvaWQgV2ViR0xMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiByZW5kZXJlckNvCiAgICAgfQogfQogCit2b2lkIFdlYkdM
TGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJiBoYW5kbGVyKQoreworICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRl
eHR1cmUuZ2V0KCksIEludFJlY3QoKSwgSW50UmVjdCgpKTsKK30KKwogYm9vbCBXZWJHTExheWVy
Q2hyb21pdW06OnBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZmZXIqIGltYWdl
QnVmZmVyKQogewogICAgIGlmIChtX3RleHR1cmVVcGRhdGVkIHx8ICFsYXllclJlbmRlcmVyQ29u
dGV4dCgpIHx8ICFkcmF3c0NvbnRlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5k
ZXggNjM3NGI5ZS4uNTRiMjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTM2
LDYgKzM2LDcgQEAKIAogI2luY2x1ZGUgIkNhbnZhc0xheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJEcmF3aW5nQnVmZmVyLmgiCisjaW5jbHVkZSAiTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDEyICs0NiwzMCBAQCBjbGFzcyBXZWJHTExheWVy
Q2hyb21pdW1SYXRlTGltaXRUYXNrOwogLy8gQSBMYXllciBjb250YWluaW5nIGEgV2ViR0wgY2Fu
dmFzCiBjbGFzcyBXZWJHTExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFzTGF5ZXJDaHJvbWl1
bSB7CiBwdWJsaWM6CisgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgUGFzc093
blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKFdlYkdMTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVXBkYXRlclRleHR1cmUo
bGF5ZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShXZWJHTExheWVyQ2hy
b21pdW0qKTsKKworICAgICAgICBXZWJHTExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgfTsK
KwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkdMTGF5ZXJDaHJvbWl1bT4gY3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogPSAwKTsKIAogICAgIHZpcnR1YWwgfldlYkdMTGF5ZXJDaHJvbWl1bSgpOwog
CiAgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NUZXh0dXJl
VXBkYXRlciYpOworICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0Nv
bnRleHQzRCopOworICAgIHZpcnR1YWwgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExh
eWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudENo
YW5nZWQoKTsKICAgICBib29sIHBhaW50UmVuZGVyZWRSZXN1bHRzVG9DYW52YXMoSW1hZ2VCdWZm
ZXIqKTsKIApAQCAtNzEsNiArOTAsOCBAQCBwcml2YXRlOgogICAgIC8vIEEgcmVmZXJlbmNlIGlz
IG5vdCBoZWxkIGhlcmUsIGJlY2F1c2UgdGhlIERyYXdpbmdCdWZmZXIgYWxyZWFkeSBob2xkcwog
ICAgIC8vIGEgcmVmZXJlbmNlIHRvIHRoZSBXZWJHTExheWVyQ2hyb21pdW0uCiAgICAgRHJhd2lu
Z0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOworCisgICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBt
X3VwZGF0ZXJUZXh0dXJlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAK
aW5kZXggYmFlNmZiMy4uNTg5OWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CkBAIC0zNCwxMSArMzQsNTggQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24u
aCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNp
bmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkUHJveHkuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRs
ZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIoKQorICAgIDogbV9yZXNvdXJjZXMoMCkKK3sKK30KKwor
Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxl
cigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjpo
YW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7Cisg
ICAgaWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICBtX3Jlc291cmNlcysr
OworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVS
ZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0
b3IoYWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhh
bmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJl
ZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisg
ICAgICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJj
ZVJlY3QsIGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OlBh
aW50SGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKKyAgICA6IG1fcHJveHkocHJveHkpCit7Cit9CisK
K0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKK3sKK30KKwor
dm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNSZWN0KHNv
dXJjZVJlY3QpOworICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7Cit9CisKIFBhc3NSZWZQdHI8Q0NMYXllclRyZWVIb3N0PiBDQ0xheWVyVHJlZUhvc3Q6
OmNyZWF0ZShDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwgY29uc3QgQ0NTZXR0aW5ncyYg
c2V0dGluZ3MpCiB7CiAgICAgUmVmUHRyPENDTGF5ZXJUcmVlSG9zdD4gbGF5ZXJUcmVlSG9zdCA9
IGFkb3B0UmVmKG5ldyBDQ0xheWVyVHJlZUhvc3QoY2xpZW50LCBzZXR0aW5ncykpOwpAQCAtMjk0
LDcgKzM0MSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0Ojpjb21wb3NpdGUoKQogICAgIHN0YXRp
Y19jYXN0PENDU2luZ2xlVGhyZWFkUHJveHkqPihtX3Byb3h5LmdldCgpKS0+Y29tcG9zaXRlSW1t
ZWRpYXRlbHkoKTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCit2
b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIXJvb3RM
YXllcigpKQogICAgICAgICByZXR1cm47CkBAIC0zMDIsMTIgKzM0OSwxMiBAQCB2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKICAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOwor
ICAgIHByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0g
ICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7
CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlIiwgdGhp
cywgMCk7CiAKICAgICBpZiAoIXJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpKQogICAgICAgICBy
b290TGF5ZXItPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKQEAgLTMxNiwyNCArMzYzLDc3IEBAIHZv
aWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVy
KQogICAgIEludFJlY3Qgcm9vdENsaXBSZWN0KEludFBvaW50KCksIHZpZXdwb3J0U2l6ZSgpKTsK
ICAgICByb290TGF5ZXItPnNldENsaXBSZWN0KHJvb3RDbGlwUmVjdCk7CiAKLSAgICAvLyBUaGlz
IGFzc2VydCBmaXJlcyBpZiB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzIHdhc24ndCBjYWxsZWQg
YWZ0ZXIKLSAgICAvLyB1cGRhdGVMYXllcnMuIE9ubHkgb25lIHVwZGF0ZSBjYW4gYmUgcGVuZGlu
ZyBhdCBhbnkgZ2l2ZW4gdGltZS4KLSAgICBBU1NFUlQoIW1fdXBkYXRlTGlzdC5zaXplKCkpOwot
ICAgIG1fdXBkYXRlTGlzdC5hcHBlbmQocm9vdExheWVyKTsKKyAgICAvLyBUaGlzIGFzc2VydCBm
aXJlcyBpZiBjb21taXRDb21wbGV0ZSB3YXNuJ3QgY2FsbGVkIGFmdGVyCisgICAgLy8gcHJlcGFy
ZVRvVXBkYXRlLiBPbmx5IG9uZSB1cGRhdGUgY2FuIGJlIHBlbmRpbmcgYXQgYW55IGdpdmVuIHRp
bWUuCisgICAgQVNTRVJUKCFtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAmJiAhbV9s
YXllclVwZGF0ZUxpc3Quc2l6ZSgpKTsKKyAgICBtX3JlbmRlclN1cmZhY2VVcGRhdGVMaXN0LmFw
cGVuZChyb290TGF5ZXIpOwogCiAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByb290UmVuZGVy
U3VyZmFjZSA9IHJvb3RMYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIHJvb3RSZW5kZXJTdXJm
YWNlLT5jbGVhckxheWVyTGlzdCgpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7CiAgICAgewotICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1
cGRhdGVMYXllcnM6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7Ci0gICAgICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXll
ciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1fdXBkYXRlTGlz
dCwgcm9vdFJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpLCBsYXllclJlbmRlcmVyQ2FwYWJpbGl0
aWVzKCkubWF4VGV4dHVyZVNpemUpOworICAgICAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVI
b3N0OjpwcmVwYXJlVG9VcGRhdGU6OmNhbGNEcmF3RXRjIiwgdGhpcywgMCk7CisgICAgICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIG1f
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwg
bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CiAKLSAg
ICBwYWludExheWVyQ29udGVudHMobV91cGRhdGVMaXN0KTsKKyAgICBhcHBlbmRWaXNpYmxlTGF5
ZXJzKG1fcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1fbGF5ZXJVcGRhdGVMaXN0KTsKKworICAg
IGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXll
ckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5
ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKKyAgICAgICAgbGF5ZXIt
PnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB9Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVI
b3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKQoreworICAgIE5lZWRSZXNvdXJjZUhhbmRs
ZXIgaGFuZGxlcjsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAg
IHJldHVybiBoYW5kbGVyLnJlc291cmNlcygpOwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6
cGFpbnRNYXNrQW5kUmVwbGljYUZvclJlbmRlclN1cmZhY2UoTGF5ZXJDaHJvbWl1bSogcmVuZGVy
U3VyZmFjZUxheWVyKQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBv
c2l0b3JSZXNvdXJjZXMiLCB0aGlzLCAwKTsKKyAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIGhh
bmRsZXIoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KGhhbmRsZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cygpCit7
CisgICAgaWYgKCFyb290TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZpZXdw
b3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFpbnRDb250ZW50
cyhyb290TGF5ZXIoKSk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRz
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0OjpwYWludENvbnRlbnRzIiwgdGhpcywgMCk7CisKKyAgICBmb3IgKGludCBsYXllcklu
ZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1s
YXllckluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0
ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5wYWludENvbnRlbnRzSWZE
aXJ0eSgpOworCisgICAgICAgIFBhaW50SGFuZGxlciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOwor
ICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKKyAgICB9
Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJv
bWl1bSogbGF5ZXIsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKK3sKKyAgICAvLyBGb3Igbm9ybWFs
IGxheWVycywgdGhlc2UgY29uZGl0aW9ucyBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tl
ZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVuZGVyIHN1cmZhY2UgbGF5ZXIgbGlzdHMuCisgICAgLy8g
Rm9yIG1hc2tzIGFuZCByZXBsaWNhcyBob3dldmVyLCB3ZSBtYXkgc3RpbGwgbmVlZCB0byBjaGVj
ayB0aGVtIGhlcmUuCisgICAgaWYgKGxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkgfHwgIWxheWVy
LT5vcGFjaXR5KCkgfHwgIWxheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdXBkYXRlTGlzdC5hcHBlbmQobGF5ZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9z
dDo6YXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qIHJl
bmRlclN1cmZhY2VMYXllciwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KQogewogICAgIC8vIE5vdGU6
IE1hc2tzIGFuZCByZXBsaWNhcyBvbmx5IGV4aXN0IGZvciBsYXllcnMgdGhhdCBvd24gcmVuZGVy
IHN1cmZhY2VzLiBJZiB3ZSByZWFjaCB0aGlzIHBvaW50CiAgICAgLy8gaW4gY29kZSwgd2UgYWxy
ZWFkeSBrbm93IHRoYXQgYXQgbGVhc3Qgc29tZXRoaW5nIHdpbGwgYmUgZHJhd24gaW50byB0aGlz
IHJlbmRlciBzdXJmYWNlLCBzbyB0aGUKQEAgLTM0MiwzNCArNDQyLDM0IEBAIHZvaWQgQ0NMYXll
clRyZWVIb3N0OjpwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShMYXllckNocm9t
aXVtKiByZW5kZXJTCiAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkpIHsK
ICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0TGF5ZXJUcmVlSG9z
dCh0aGlzKTsKICAgICAgICAgcmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKS0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIHJlbmRlclN1cmZhY2VMYXllci0+Y29u
dGVudEJvdW5kcygpKSk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCkt
PnBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgICAgIGFwcGVuZFZpc2libGVMYXllcihyZW5k
ZXJTdXJmYWNlTGF5ZXItPm1hc2tMYXllcigpLCB1cGRhdGVMaXN0KTsKICAgICB9CiAKICAgICBM
YXllckNocm9taXVtKiByZXBsaWNhTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlcGxpY2FM
YXllcigpOwogICAgIGlmIChyZXBsaWNhTGF5ZXIpIHsKIAogICAgICAgICByZXBsaWNhTGF5ZXIt
PnNldExheWVyVHJlZUhvc3QodGhpcyk7Ci0gICAgICAgIHJlcGxpY2FMYXllci0+cGFpbnRDb250
ZW50c0lmRGlydHkoKTsKKyAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVyKHJlcGxpY2FMYXllciwg
dXBkYXRlTGlzdCk7CiAKICAgICAgICAgaWYgKHJlcGxpY2FMYXllci0+bWFza0xheWVyKCkpIHsK
ICAgICAgICAgICAgIHJlcGxpY2FMYXllci0+bWFza0xheWVyKCktPnNldExheWVyVHJlZUhvc3Qo
dGhpcyk7CiAgICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigpLT5zZXRWaXNpYmxl
TGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgcmVwbGljYUxheWVyLT5tYXNrTGF5ZXIoKS0+
Y29udGVudEJvdW5kcygpKSk7Ci0gICAgICAgICAgICByZXBsaWNhTGF5ZXItPm1hc2tMYXllcigp
LT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOworICAgICAgICAgICAgYXBwZW5kVmlzaWJsZUxheWVy
KHJlcGxpY2FMYXllci0+bWFza0xheWVyKCksIHVwZGF0ZUxpc3QpOwogICAgICAgICB9CiAgICAg
fQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IExh
eWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojph
cHBlbmRWaXNpYmxlTGF5ZXJzKGNvbnN0IExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZVVwZGF0ZUxp
c3QsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXgg
PSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsg
LS1zdXJmYWNlSW5kZXgpIHsKLSAgICAgICAgTGF5ZXJDaHJvbWl1bSogcmVuZGVyU3VyZmFjZUxh
eWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOworICAgIGZv
ciAoaW50IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LnNpemUoKSAtIDE7
IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJv
bWl1bSogcmVuZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3Rbc3VyZmFj
ZUluZGV4XS5nZXQoKTsKICAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJm
YWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CiAgICAgICAgIEFTU0VS
VChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmxheWVyTGlz
dCgpLnNpemUoKSk7CiAgICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgp
KTsKIAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXItPnNldExheWVyVHJlZUhvc3QodGhpcyk7
Ci0gICAgICAgIHBhaW50TWFza0FuZFJlcGxpY2FGb3JSZW5kZXJTdXJmYWNlKHJlbmRlclN1cmZh
Y2VMYXllcik7CisgICAgICAgIGFwcGVuZE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFjZShy
ZW5kZXJTdXJmYWNlTGF5ZXIsIHVwZGF0ZUxpc3QpOwogCiAgICAgICAgIGNvbnN0IExheWVyTGlz
dCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7CiAgICAgICAgIEFTU0VS
VChsYXllckxpc3Quc2l6ZSgpKTsKQEAgLTM4Niw1MCArNDg2LDI5IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludExheWVyQ29udGVudHMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0CiAgICAgICAgICAgICBBU1NFUlQobGF5ZXItPm9wYWNpdHkoKSk7CiAgICAgICAg
ICAgICBBU1NFUlQoIWxheWVyLT5ib3VuZHMoKS5pc0VtcHR5KCkpOwogCi0gICAgICAgICAgICBs
YXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICAgICAgICAgIGFwcGVuZFZpc2libGVM
YXllcihsYXllciwgdXBkYXRlTGlzdCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBDQ1RleHR1cmVVcGRhdGVyJiB1cGRhdGVyKQordm9pZCBDQ0xheWVyVHJlZUhv
c3Q6OmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxl
ciYgaGFuZGxlcikKIHsKLSAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSBtX3VwZGF0ZUxpc3Qu
c2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgewotICAgICAg
ICBMYXllckNocm9taXVtKiByZW5kZXJTdXJmYWNlTGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFj
ZUluZGV4XS5nZXQoKTsKLSAgICAgICAgUmVuZGVyU3VyZmFjZUNocm9taXVtKiByZW5kZXJTdXJm
YWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIEFTU0VS
VChyZW5kZXJTdXJmYWNlKTsKLSAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UtPmxheWVyTGlz
dCgpLnNpemUoKSk7Ci0gICAgICAgIEFTU0VSVChyZW5kZXJTdXJmYWNlLT5kcmF3T3BhY2l0eSgp
KTsKLQotICAgICAgICBpZiAocmVuZGVyU3VyZmFjZUxheWVyLT5tYXNrTGF5ZXIoKSkKLSAgICAg
ICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+bWFza0xheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JS
ZXNvdXJjZXMoY29udGV4dCwgdXBkYXRlcik7Ci0KLSAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VM
YXllci0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlclN1cmZhY2VMYXllci0+
cmVwbGljYUxheWVyKCktPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgdXBkYXRl
cik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChyZW5kZXJTdXJmYWNlTGF5ZXItPnJl
cGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKSkKLSAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNl
TGF5ZXItPnJlcGxpY2FMYXllcigpLT5tYXNrTGF5ZXIoKS0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhjb250ZXh0LCB1cGRhdGVyKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY29u
c3QgTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKTsKLSAg
ICAgICAgQVNTRVJUKGxheWVyTGlzdC5zaXplKCkpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGxh
eWVySW5kZXggPSAwOyBsYXllckluZGV4IDwgbGF5ZXJMaXN0LnNpemUoKTsgKytsYXllckluZGV4
KSB7Ci0gICAgICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IGxheWVyTGlzdFtsYXllcklu
ZGV4XS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChsYXllci0+cmVuZGVyU3VyZmFjZSgpICYmIGxh
eWVyLT5yZW5kZXJTdXJmYWNlKCkgIT0gcmVuZGVyU3VyZmFjZSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMo
Y29udGV4dCwgdXBkYXRlcik7Ci0gICAgICAgIH0KKyAgICBmb3IgKGludCBsYXllckluZGV4ID0g
bV9sYXllclVwZGF0ZUxpc3Quc2l6ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllcklu
ZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3Rb
bGF5ZXJJbmRleF0uZ2V0KCk7CisgICAgICAgIGxheWVyLT5mb3JFYWNoQ29tcG9zaXRvclJlc291
cmNlKGhhbmRsZXIpOwogICAgIH0KIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmNsZWFyUGVu
ZGluZ1VwZGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3Qgc3VyZmFjZUluZGV4ID0gMDsgc3VyZmFj
ZUluZGV4IDwgbV91cGRhdGVMaXN0LnNpemUoKTsgKytzdXJmYWNlSW5kZXgpIHsKLSAgICAgICAg
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX3VwZGF0ZUxpc3Rbc3VyZmFjZUluZGV4XS5nZXQoKTsK
KyAgICBtX2xheWVyVXBkYXRlTGlzdC5jbGVhcigpOworCisgICAgZm9yIChzaXplX3Qgc3VyZmFj
ZUluZGV4ID0gMDsgc3VyZmFjZUluZGV4IDwgbV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdC5zaXpl
KCk7ICsrc3VyZmFjZUluZGV4KSB7CisgICAgICAgIExheWVyQ2hyb21pdW0qIGxheWVyID0gbV9y
ZW5kZXJTdXJmYWNlVXBkYXRlTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwogICAgICAgICBBU1NF
UlQobGF5ZXItPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgICAgIGxheWVyLT5jbGVhclJlbmRlclN1
cmZhY2UoKTsKICAgICB9Ci0gICAgbV91cGRhdGVMaXN0LmNsZWFyKCk7CisgICAgbV9yZW5kZXJT
dXJmYWNlVXBkYXRlTGlzdC5jbGVhcigpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBw
bHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0JiBpbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
clRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCBhNzkzY2NhLi42ODBiNDgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBHckNvbnRleHQ7CiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGw7Ci1jbGFzcyBDQ1Rl
eHR1cmVVcGRhdGVyOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBMYXllclBhaW50
ZXJDaHJvbWl1bTsKIGNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CkBAIC0xNzcsOSArMTc2LDEyIEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAot
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoKTsKKyAg
ICBib29sIG5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7Cisg
ICAgdm9pZCBwYWludENvbnRlbnRzKCk7CiAKLSAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBDQ1RleHR1cmVVcGRhdGVyJik7CisgICAgdm9pZCBm
b3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsK
ICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYp
OwogICAgIHZvaWQgc3RhcnRSYXRlTGltaXRlcihHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZv
aWQgc3RvcFJhdGVMaW1pdGVyKEdyYXBoaWNzQ29udGV4dDNEKik7CkBAIC0xODksMTIgKzE5MSw1
MCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6CisgICAg
Y2xhc3MgTmVlZFJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpI
YW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKyAg
ICAgICAgdmlydHVhbCB+TmVlZFJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICBpbnQgcmVz
b3VyY2VzKCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IGludCBtX3Jlc291cmNlczsKKyAgICB9OworCisgICAgY2xhc3MgUHJlcGFyZVJlc291cmNlSGFu
ZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0
dXJlQWxsb2NhdG9yKik7CisgICAgICAgIHZpcnR1YWwgflByZXBhcmVSZXNvdXJjZUhhbmRsZXIo
KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0
OworICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICB9OworCisgICAg
Y2xhc3MgUGFpbnRIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIg
eworICAgIHB1YmxpYzoKKyAgICAgICAgUGFpbnRIYW5kbGVyKENDUHJveHkqKTsKKyAgICAgICAg
dmlydHVhbCB+UGFpbnRIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwg
Y29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgQ0NQcm94
eSogbV9wcm94eTsKKyAgICB9OworCiAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPExheWVyQ2hy
b21pdW0+ID4gTGF5ZXJMaXN0OwogCi0gICAgdm9pZCBwYWludExheWVyQ29udGVudHMoY29uc3Qg
TGF5ZXJMaXN0Jik7Ci0gICAgdm9pZCBwYWludE1hc2tBbmRSZXBsaWNhRm9yUmVuZGVyU3VyZmFj
ZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBhcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJv
bWl1bSosIExheWVyTGlzdCYpOworICAgIHZvaWQgYXBwZW5kTWFza0FuZFJlcGxpY2FGb3JSZW5k
ZXJTdXJmYWNlKExheWVyQ2hyb21pdW0qLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOworICAgIHZv
aWQgYXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnMo
TGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0q
KTsKKyAgICB2b2lkIHBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSopOwogICAgIHZvaWQgY2xl
YXJQZW5kaW5nVXBkYXRlKCk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKQEAg
LTIxMCw3ICsyNTAsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jv
b3RMYXllcjsKICAgICBPd25QdHI8VGV4dHVyZU1hbmFnZXI+IG1fY29udGVudHNUZXh0dXJlTWFu
YWdlcjsKIAotICAgIExheWVyTGlzdCBtX3VwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fcmVu
ZGVyU3VyZmFjZVVwZGF0ZUxpc3Q7CisgICAgTGF5ZXJMaXN0IG1fbGF5ZXJVcGRhdGVMaXN0Owog
CiAgICAgQ0NTZXR0aW5ncyBtX3NldHRpbmdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Byb3h5LmgKaW5kZXggYTYyMzBlYS4u
MWM1MzE3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI2RlZmluZSBDQ1Byb3h5
X2gKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJMYXllclRleHR1cmVVcGRhdGVy
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzgsNiArNzksOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOyAvLyBNdXN0IGJlIGNhbGxlZCBiZWZv
cmUgdXNpbmcgdGhlIHByb3h5LgogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOyAvLyBNdXN0
IGJlIGNhbGxlZCBiZWZvcmUgZGVsZXRpbmcgdGhlIHByb3h5LgogCisgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKwogICAgIC8vIERlYnVnIGhv
b2tzCiAjaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBib29sIGlzTWFpblRocmVhZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAppbmRleCBkZGMwMWMxLi45MzIxZTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcApAQCAtMzEsNyArMzEs
NiBAQAogI2luY2x1ZGUgIlRyYWNlRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3QuaCIKICNpbmNsdWRlICJjYy9DQ1Njcm9sbENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJjYy9D
Q1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXVEY7CkBAIC0xNDgsMTUgKzE0NywxOSBAQCB2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OnNldE5lZWRzQW5pbWF0ZSgpCiB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29t
bWl0KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFkKCkpOworCisgICAgLy8g
UHJlcGFyZSBjb21wb3NpdG9yIHJlc291cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5l
ZWRzQ29tcG9zaXRvclJlc291cmNlcygpKQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBh
cmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9s
YXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgbV9s
YXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CisKICAgICAvLyBDb21taXQgaW1tZWRpYXRl
bHkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwotCisgICAgICAgIHdoaWxlICht
X3RleHR1cmVVcGRhdGVyLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEp
KSB7IH0KICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZCht
X2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICAgICAgQ0NUZXh0dXJlVXBkYXRlciB1cGRh
dGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKLSAg
ICAgICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKSwgdXBkYXRlcik7Ci0gICAgICAgIHdoaWxlICh1cGRhdGVy
LnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KICAgICAgICAg
bV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJsZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUo
KSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+ZmluaXNoQ29tbWl0T25JbXBsVGhyZWFkKG1f
bGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogCkBAIC0yMDksNiArMjEyLDExIEBAIHZvaWQgQ0NT
aW5nbGVUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9sYXllclRyZWVIb3N0ID0gMDsKIH0KIAor
dm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCit7CisgICAgbV90ZXh0dXJlVXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291cmNl
UmVjdCwgZGVzdFJlY3QpOworfQorCiAvLyBDYWxsZWQgYnkgdGhlIGxlZ2FjeSBzY2hlZHVsaW5n
IHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2VzIHRoZSBzY2hlZHVsaW5nKQogdm9p
ZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21wb3NpdGVJbW1lZGlhdGVseSgpCiB7CkBAIC0yNzMs
NyArMjgxLDcgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojpjb21taXRJZk5lZWRlZCgpCiB7
CiAgICAgQVNTRVJUKENDUHJveHk6OmlzTWFpblRocmVhZCgpKTsKIAotICAgIG1fbGF5ZXJUcmVl
SG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRh
dGUoKTsKIAogICAgIGRvQ29tbWl0KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFBy
b3h5LmgKaW5kZXggZWRhYjYxZi4uNmQ5YTEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhy
ZWFkUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2
ZW50LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNj
L0NDUHJveHkuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NCw2ICs1NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc3RhcnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9z
dEltcGxDbGllbnQgaW1wbGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVy
c0NvbXBsZXRlT25JbXBsVGhyZWFkKCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQpAQCAtODIs
NiArODQsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9ncmFwaGljc0NvbnRleHRMb3N0OwogICAg
IGludCBtX3RpbWVzUmVjcmVhdGVTaG91bGRGYWlsOyAvLyBVc2VkIGR1cmluZyB0ZXN0aW5nLgog
ICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWU7CisKKyAgICBDQ1RleHR1
cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAvLyBGb3IgdXNlIGluIHRoZSBzaW5n
bGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBpdCBwcmV0ZW5kcyB0aGF0IHRoZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRleCA4NzQ1YzRlLi5hNjFjM2JiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogCisjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiTGF5ZXJUZXh0dXJl
VXBkYXRlci5oIgogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCkBAIC0zNywxMSArMzgsOCBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVy
ZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQot
ICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQotICAgICwgbV9lbnRyeUluZGV4KDApCitDQ1Rl
eHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKCkKIHsKLSAgICBBU1NFUlQobV9hbGxvY2F0
b3IpOwogfQogCiBDQ1RleHR1cmVVcGRhdGVyOjp+Q0NUZXh0dXJlVXBkYXRlcigpCkBAIC02Niwy
MyArNjQsMjAgQEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjpoYXNNb3JlVXBkYXRlcygpIGNvbnN0
CiAKIGJvb2wgQ0NUZXh0dXJlVXBkYXRlcjo6dXBkYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBzaXplX3QgY291bnQpCiB7Ci0gICAgc2l6ZV90IG1heEluZGV4ID0gbWluKG1fZW50cnlJ
bmRleCArIGNvdW50LCBtX2VudHJpZXMuc2l6ZSgpKTsKLSAgICBmb3IgKDsgbV9lbnRyeUluZGV4
IDwgbWF4SW5kZXg7ICsrbV9lbnRyeUluZGV4KSB7Ci0gICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRy
eSA9IG1fZW50cmllc1ttX2VudHJ5SW5kZXhdOwotICAgICAgICBlbnRyeS5tX3RleHR1cmUtPnVw
ZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnku
bV9kZXN0UmVjdCk7Ci0gICAgfQorICAgIHdoaWxlIChjb3VudC0tKSB7CisgICAgICAgIGlmICgh
bV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICht
YXhJbmRleCA8IG1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBVcGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgpOworICAgICAgICBlbnRyeS5t
X3RleHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5t
X2Rlc3RSZWN0KTsKKyAgICAgICAgbV9lbnRyaWVzLnJlbW92ZUxhc3QoKTsKKyAgICB9CiAKLSAg
ICAvLyBJZiBubyBlbnRyaWVzIGxlZnQgdG8gcHJvY2VzcywgYXV0by1jbGVhci4KLSAgICBjbGVh
cigpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9lbnRyaWVzLnNpemUoKSA+IDA7
CiB9CiAKIHZvaWQgQ0NUZXh0dXJlVXBkYXRlcjo6Y2xlYXIoKQogewotICAgIG1fZW50cnlJbmRl
eCA9IDA7CiAgICAgbV9lbnRyaWVzLmNsZWFyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuaAppbmRleCBiZjc5YWM5Li5hYjY1OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5oCkBAIC0zMywxMSArMzMsMTAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
R3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBUZXh0dXJlQWxsb2NhdG9yOwogCiBjbGFzcyBDQ1Rl
eHR1cmVVcGRhdGVyIHsKIHB1YmxpYzoKLSAgICBDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxv
Y2F0b3IqKTsKKyAgICBDQ1RleHR1cmVVcGRhdGVyKCk7CiAgICAgfkNDVGV4dHVyZVVwZGF0ZXIo
KTsKIAogICAgIHZvaWQgYXBwZW5kKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CkBAIC00OSw4
ICs0OCw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXIoKTsKIAotICAgIFRleHR1cmVBbGxv
Y2F0b3IqIGFsbG9jYXRvcigpIHsgcmV0dXJuIG1fYWxsb2NhdG9yOyB9Ci0KIHByaXZhdGU6CiAg
ICAgc3RydWN0IFVwZGF0ZUVudHJ5IHsKICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogbV90ZXh0dXJlOwpAQCAtNTgsOCArNTUsNiBAQCBwcml2YXRlOgogICAgICAgICBJbnRS
ZWN0IG1fZGVzdFJlY3Q7CiAgICAgfTsKIAotICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yOwotICAgIHNpemVfdCBtX2VudHJ5SW5kZXg7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBt
X2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCmluZGV4IDk1YzZiNWQu
LjBiNzczMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCkBAIC0zNSw3ICszNSw2IEBA
CiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Njb3BlZFRocmVh
ZFByb3h5LmgiCiAjaW5jbHVkZSAiY2MvQ0NTY3JvbGxDb250cm9sbGVyLmgiCi0jaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBA
IC0yODYsNiArMjg1LDIwIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c3RvcCgpCiAgICAgbV9zdGFy
dGVkID0gZmFsc2U7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
Ojp1cGRhdGUiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChtX3N0YXJ0ZWQpOworCisgICAgVXBkYXRlRW50cnkqIGVudHJ5ID0gbmV3IFVwZGF0ZUVu
dHJ5OworICAgIGVudHJ5LT5tX3RleHR1cmUgPSB0ZXh0dXJlOworICAgIGVudHJ5LT5tX3NvdXJj
ZVJlY3QgPSBzb3VyY2VSZWN0OworICAgIGVudHJ5LT5tX2Rlc3RSZWN0ID0gZGVzdFJlY3Q7CisK
KyAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0
aGlzLCAmQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9z
c1RocmVhZEFjY2VzcyhlbnRyeSkpKTsKK30KKwogdm9pZCBDQ1RocmVhZFByb3h5OjpmaW5pc2hB
bGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCiB7
CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OmZpbmlzaEFsbFJlbmRlcmluZ09uSW1w
bFRocmVhZCIsIHRoaXMsIDApOwpAQCAtMzc0LDcgKzM4NywxNyBAQCB2b2lkIENDVGhyZWFkUHJv
eHk6OmJlZ2luRnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVC
ZWdpblRpbQogICAgIC8vIHVwZGF0ZUxheWVycy4KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZh
bHNlOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVy
VHJlZUhvc3QtPnByZXBhcmVUb1VwZGF0ZSgpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+
bmVlZHNDb21wb3NpdG9yUmVzb3VyY2VzKCkpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21w
b3NpdG9yIHJlc291cmNlcyByZXF1aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQo
ImFsbG9jYXRlIiwgdGhpcywgMCk7CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRp
b247CisgICAgICAgIENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJl
YWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxU
aHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNv
bXBsZXRpb24ud2FpdCgpOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250
ZW50cygpOwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5p
bWF0ZSwgd2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBp
cyB0cnVlIG5vdywgaXQgbWVhbnMgc2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2Fs
bCBzZXROZWVkc0NvbW1pdApAQCAtMzk4LDEzICs0MjEsNDEgQEAgdm9pZCBDQ1RocmVhZFByb3h5
OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVn
aW5UaW0KICAgICBBU1NFUlQobV9sYXN0RXhlY3V0ZWRCZWdpbkZyYW1lQW5kQ29tbWl0U2VxdWVu
Y2VOdW1iZXIgPT0gc2VxdWVuY2VOdW1iZXIpOwogfQogCit2b2lkIENDVGhyZWFkUHJveHk6OnBy
ZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxl
dGlvbikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVz
b3VyY2VzT25PbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fY29tbWl0Q29t
cGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwor
ICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBjb21wbGV0aW9uLT5zaWdu
YWwoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cHJl
cGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBt
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSk7CisKKyAgICBj
b21wbGV0aW9uLT5zaWduYWwoKTsKK30KKwordm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0
dXJlT25JbXBsVGhyZWFkKFVwZGF0ZUVudHJ5KiBlbnRyeSkKK3sKKyAgICBBU1NFUlQoIW1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKKyAgICBBU1NFUlQoaXNJbXBsVGhyZWFk
KCkpOworICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkgeworICAgICAgICBkZWxldGUgZW50
cnk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkLmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRy
eS0+bV9kZXN0UmVjdCk7CisKKyAgICBkZWxldGUgZW50cnk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6YmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBj
b21wbGV0aW9uKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1l
Q29tcGxldGVPbkltcGxUaHJlYWQiLCB0aGlzLCAwKTsKICAgICBBU1NFUlQoIW1fY29tbWl0Q29t
cGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKICAgICBBU1NFUlQoaXNJbXBsVGhyZWFkKCkpOwog
ICAgIEFTU0VSVChtX3NjaGVkdWxlck9uSW1wbFRocmVhZCk7Ci0gICAgQVNTRVJUKG1fc2NoZWR1
bGVyT25JbXBsVGhyZWFkLT5jb21taXRQZW5kaW5nKCkpOwogICAgIGlmICghbV9sYXllclRyZWVI
b3N0SW1wbCkgewogICAgICAgICBjb21wbGV0aW9uLT5zaWduYWwoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtNDEyLDM2ICs0NjMsMjggQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29t
cGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24KIAogICAgIG1f
Y29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkID0gY29tcGxldGlvbjsKIAotICAgIEFT
U0VSVCghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpOwotICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3IENDVGV4dHVyZVVwZGF0
ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpKTsKLSAg
ICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMobV9sYXllclRyZWVI
b3N0SW1wbC0+Y29udGV4dCgpLCAqbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQp
OwotCiAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPmJlZ2luRnJhbWVDb21wbGV0ZSgpOwog
fQogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAog
ewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7CisgICAgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXJPbklt
cGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMoKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpzY2hl
ZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NU
aHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcyIsIHRoaXMsIDAp
OwotICAgIEFTU0VSVChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCk7CiAgICAg
c3RhdGljIGNvbnN0IGludCBVcGRhdGVzUGVyRnJhbWUgPSA5OTk5OTsKLSAgICBtX2N1cnJlbnRU
ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFt
ZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsK
ICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0Iiwg
dGhpcywgMCk7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFk
KTsKLSAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNN
b3JlVXBkYXRlcygpKTsKKyAgICBBU1NFUlQoIW1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQu
aGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgQVNTRVJUKG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25J
bXBsVGhyZWFkKTsKIAotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNs
ZWFyKCk7CisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwogCiAKICAg
ICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCmluZGV4IDFkZjM3NDYuLmFiYTM0NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisjaW5jbHVk
ZSAiY2MvQ0NUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogCkBAIC02Miw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmlzaWJsZShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGUoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKIAogICAgIC8vIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgaW1w
bGVtZW50YXRpb24KICAgICB2aXJ0dWFsIHZvaWQgb25Td2FwQnVmZmVyc0NvbXBsZXRlT25JbXBs
VGhyZWFkKCk7CkBAIC03OCw2ICs4MCwxMiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxp
Y2l0IENDVGhyZWFkUHJveHkoQ0NMYXllclRyZWVIb3N0Kik7CiAKKyAgICBzdHJ1Y3QgVXBkYXRl
RW50cnkgeworICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiBtX3RleHR1cmU7
CisgICAgICAgIEludFJlY3QgbV9zb3VyY2VSZWN0OworICAgICAgICBJbnRSZWN0IG1fZGVzdFJl
Y3Q7CisgICAgfTsKKwogICAgIC8vIENhbGxlZCBvbiBtYWluIHRocmVhZAogICAgIHZvaWQgYmVn
aW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGlt
ZSwgUGFzc093blB0cjxDQ1Njcm9sbEFuZFNjYWxlU2V0Pik7CiAgICAgdm9pZCBkaWRDb21taXRB
bmREcmF3RnJhbWUoKTsKQEAgLTkyLDYgKzEwMCw4IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQ
YXNzT3duUHRyPENDVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09u
SW1wbFRocmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9t
Q0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKKyAgICB2b2lk
IHByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwor
ICAgIHZvaWQgdXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChVcGRhdGVFbnRyeSopOwogICAgIHZv
aWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAg
ICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CiAg
ICAgdm9pZCBmaW5pc2hBbGxSZW5kZXJpbmdPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQq
KTsKQEAgLTEyNywxMCArMTM3LDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQgd2hlbiB0aGUg
bWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1pdCB0byBjb21wbGV0ZS4KICAgICBDQ0Nv
bXBsZXRpb25FdmVudCogbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7Ci0gICAg
T3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21t
aXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJ
c05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVy
IG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGls
ZWRMYXllckltcGwuY3BwCmluZGV4IDIyMDljOGEuLjE4ZmVkMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGlsZWRMYXllckltcGwuY3BwCkBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJ
bXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25z
dCBJbnQKICAgICBtX3RpbGVyLT5jb250ZW50UmVjdFRvVGlsZUluZGljZXMoY29udGVudFJlY3Qs
IGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSBtX3Rp
bGVyLT5jb250ZW50UmVjdFRvTGF5ZXJSZWN0KGNvbnRlbnRSZWN0KTsKICAgICBmbG9hdCBzaWdu
ID0gRmxvYXRRdWFkKGNvbnRlbnRSZWN0KS5pc0NvdW50ZXJjbG9ja3dpc2UoKSA/IC0xIDogMTsK
KyAgICBjb25zdCBHQzNEaW50IGZpbHRlciA9IG1fdGlsZXItPmhhc0JvcmRlclRleGVscygpID8g
R3JhcGhpY3NDb250ZXh0M0Q6OkxJTkVBUiA6IEdyYXBoaWNzQ29udGV4dDNEOjpORUFSRVNUOwog
ICAgIGZvciAoaW50IGogPSB0b3A7IGogPD0gYm90dG9tOyArK2opIHsKICAgICAgICAgQ0NMYXll
clF1YWQ6OkVkZ2UgcHJldkVkZ2VYID0gY29udGVudFF1YWQubGVmdCgpOwogCkBAIC0zNDMsNiAr
MzQ0LDkgQEAgdm9pZCBDQ1RpbGVkTGF5ZXJJbXBsOjpkcmF3VGlsZXMoTGF5ZXJSZW5kZXJlckNo
cm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnQKIAogICAgICAgICAgICAgaWYgKHRpbGUg
JiYgdGlsZS0+dGV4dHVyZUlkKCkpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGlsZS0+dGV4dHVyZUlkKCkpOwor
ICAgICAgICAgICAgICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhQYXJhbWV0ZXJpKEdyYXBo
aWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV9NSU5f
RklMVEVSLCBmaWx0ZXIpKTsKKyAgICAgICAgICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7CisKICAgICAgICAgICAgICAgICBs
YXllclJlbmRlcmVyLT5kcmF3VGV4dHVyZWRRdWFkKGdsb2JhbFRyYW5zZm9ybSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVSZWN0LndpZHRoKCks
IHRpbGVSZWN0LmhlaWdodCgpLCBvcGFjaXR5LCBxdWFkLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS0+dmVydGV4U2hhZGVyKCkubWF0cml4
TG9jYXRpb24oKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDRhNDE3OTYuLjkzMDViNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgogI2lu
Y2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1
ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSAiTW9ja1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJDb21wb3NpdG9y
LmgiCkBAIC05MDQsNiArOTA1LDE0IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0U2V0Vmlz
aWJsZSwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorY2xhc3MgTW9j
a0xheWVyRGVsZWdhdGUgOiBwdWJsaWMgQ0NMYXllckRlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0
JikgeyB9CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcHJlc2VydmVzM0QoKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlTeW5jUmVxdWlyZWQoKSB7IH0KK307CisKIGNsYXNzIFRl
c3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZSA6IHB1YmxpYyBDQ0xheWVyRGVsZWdhdGUgewog
cHVibGljOgogICAgIFRlc3RPcGFjaXR5Q2hhbmdlTGF5ZXJEZWxlZ2F0ZShDQ0xheWVyVHJlZUhv
c3RUZXN0KiB0ZXN0KQpAQCAtOTI3LDM3ICs5MzYsMTE2IEBAIHByaXZhdGU6CiAKIGNsYXNzIENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nIDogcHVibGljIENvbnRlbnRMYXll
ckNocm9taXVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdh
dGUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVU
cmFja2luZyhkZWxlZ2F0ZSkpOyB9CisgICAgY2xhc3MgQ29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgcHVibGljOgorICAgICAgICBj
bGFzcyBUZXh0dXJlIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAg
ICAgICBwdWJsaWM6CisgICAgICAgICAgICBUZXh0dXJlKENvbnRlbnRMYXllclRleHR1cmVVcGRh
dGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkK
KyAgICAgICAgICAgICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICAgICAgICAgICAgICwg
bV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsg
cmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgbmVl
ZFByZXBhcmVSZWN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+bmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wcmVwYXJlUmVjdCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoY29uc3Qg
SW50UmVjdCYgLyogc291cmNlUmVjdCAqLykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wYWludENvbnRlbnRzUmVjdCgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3Qm
IC8qIGRlc3RSZWN0ICovKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVy
ZVVwZGF0ZXItPmxheWVyKCktPnVwZGF0ZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICBwcml2YXRlOgorICAgICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7
CisgICAgICAgICAgICBDb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRl
cjsKKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJU
ZXh0dXJlVXBkYXRlcj4gY3JlYXRlKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nICpsYXllcikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
b250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllcikpOworICAgICAgICB9CiAKLSAgICBpbnQg
cGFpbnRDb250ZW50c0NvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzQ291bnQ7IH0KLSAg
ICB2b2lkIHJlc2V0UGFpbnRDb250ZW50c0NvdW50KCkgeyBtX3BhaW50Q29udGVudHNDb3VudCA9
IDA7IH0KKyAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZSh0aGlzLCBNYW5hZ2VkVGV4
dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7CisgICAgICAgIH0KIAotICAgIGludCB1cGRhdGVDb3Vu
dCgpIHsgcmV0dXJuIG1fdXBkYXRlQ291bnQ7IH0KLSAgICB2b2lkIHJlc2V0VXBkYXRlQ291bnQo
KSB7IG1fdXBkYXRlQ291bnQgPSAwOyB9CisgICAgICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0
aW9uOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKQorICAgICAg
ICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0g
LyogdGV4dHVyZUZvcm1hdCAqLykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CisgICAgICAgIH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50
UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhl
bHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fbGF5ZXItPnBhaW50Q29udGVudHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIENvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBsYXllcigpIHsgcmV0dXJuIG1fbGF5ZXI7
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGV4cGxpY2l0IENvbnRlbnRMYXllclRleHR1cmVV
cGRhdGVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nICpsYXllcikgOiBt
X2xheWVyKGxheWVyKSB7IH0KKworICAgICAgICBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyogbV9sYXllcjsKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdh
dGUgKmRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICB7Ci0gICAgICAgIENvbnRl
bnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eSgpOwotICAgICAgICBtX3BhaW50
Q29udGVudHNDb3VudCsrOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgQ0NUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikKKyAgICB2
aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikK
ICAgICB7Ci0gICAgICAgIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVz
b3VyY2VzKGNvbnRleHQsIHVwZGF0ZXIpOwotICAgICAgICBtX3VwZGF0ZUNvdW50Kys7CisgICAg
ICAgIG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXIgPSBDb250ZW50TGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Y3JlYXRlKHRoaXMpOwogICAgIH0KKyAgICB2aXJ0dWFsIExheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGF5ZXJUZXh0dXJl
VXBkYXRlci5nZXQoKTsgfQorCisgICAgdm9pZCBwYWludENvbnRlbnRzKCkgeyBtX3BhaW50Q29u
dGVudHNDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNDb3VudCgpIHsgcmV0dXJuIG1f
cGFpbnRDb250ZW50c0NvdW50OyB9CisKKyAgICB2b2lkIHByZXBhcmVSZWN0KCkgeyBtX3ByZXBh
cmVSZWN0Q291bnQrKzsgfQorICAgIGludCBwcmVwYXJlUmVjdENvdW50KCkgeyByZXR1cm4gbV9w
cmVwYXJlUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHBhaW50Q29udGVudHNSZWN0KCkgeyBtX3Bh
aW50Q29udGVudHNSZWN0Q291bnQrKzsgfQorICAgIGludCBwYWludENvbnRlbnRzUmVjdENvdW50
KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzUmVjdENvdW50OyB9CisKKyAgICB2b2lkIHVwZGF0
ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0KKyAgICBpbnQgdXBkYXRlUmVjdENvdW50
KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0KKworICAgIGludCBuZWVkUHJlcGFyZVJl
Y3QoKSB7IHJldHVybiBtX25lZWRQcmVwYXJlUmVjdDsgfQogCiBwcml2YXRlOgotICAgIGV4cGxp
Y2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0
ZSAqZGVsZWdhdGUpCisgICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3Qp
CiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0oZGVsZWdhdGUpCisgICAgICAgICwgbV9u
ZWVkUHJlcGFyZVJlY3QobmVlZFByZXBhcmVSZWN0KQogICAgICAgICAsIG1fcGFpbnRDb250ZW50
c0NvdW50KDApCi0gICAgICAgICwgbV91cGRhdGVDb3VudCgwKQorICAgICAgICAsIG1fcHJlcGFy
ZVJlY3RDb3VudCgwKQorICAgICAgICAsIG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCgwKQorICAg
ICAgICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAgICAgewogICAgICAgICBzZXRCb3VuZHMoSW50
U2l6ZSgxMCwgMTApKTsKICAgICB9CiAKKyAgICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVw
ZGF0ZXI+IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI7CisgICAgYm9vbCBtX25lZWRQcmVw
YXJlUmVjdDsKICAgICBpbnQgbV9wYWludENvbnRlbnRzQ291bnQ7Ci0gICAgaW50IG1fdXBkYXRl
Q291bnQ7CisgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV9wYWludENvbnRl
bnRzUmVjdENvdW50OworICAgIGludCBtX3VwZGF0ZVJlY3RDb3VudDsKIH07CiAKIC8vIExheWVy
IG9wYWNpdHkgY2hhbmdlIGR1cmluZyBwYWludCBzaG91bGQgbm90IHByZXZlbnQgY29tcG9zaXRv
ciByZXNvdXJjZXMgZnJvbSBiZWluZyB1cGRhdGVkIGR1cmluZyBjb21taXQuCkBAIC05NjUsNyAr
MTA1Myw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIDogcHVibGlj
IENDTGF5ZXJUcmVlSG9zdFRlc3QgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RP
cGFjaXR5Q2hhbmdlKCkKICAgICAgICAgOiBtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUodGhp
cykKLSAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKSkKKyAg
ICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlLCB0cnVlKSkKICAg
ICB7CiAgICAgfQogCkBAIC05ODQsMTMgKzEwNzIsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVh
bCB2b2lkIGFmdGVyVGVzdCgpCiAgICAgewotICAgICAgICAvLyBwYWludENvbnRlbnRzSWZEaXJ0
eSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9uY2UuCisgICAgICAgIC8vIHBhaW50Q29udGVu
dHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgogICAgICAgICBFWFBFQ1RfRVEoMSwg
bV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CiAKLSAgICAgICAgLy8g
dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBz
YW1lCi0gICAgICAgIC8vIGFtb3V0IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNJZkRpcnR5KCku
Ci0gICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNDb3Vu
dCgpLAotICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVDb3VudCgp
KTsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50c1JlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxl
ZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcHJlcGFyZVJlY3QoKS4K
KyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgp
LAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVj
dENvdW50KCkpOworCisgICAgICAgIC8vIHVwZGF0ZVJlY3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNh
bGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQgb2YgdGltZXMgYXMgcGFpbnRDb250ZW50
c1JlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250
ZW50c1JlY3RDb3VudCgpLAorICAgICAgICAgICAgICAgICAgbV91cGRhdGVDaGVja0xheWVyLT51
cGRhdGVSZWN0Q291bnQoKSk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTAwMyw0ICsxMDk2LDQ5
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0T3BhY2l0eUNoYW5nZSwgcnVuTXVsdGlUaHJl
YWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAorLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90
IGJlIGNhbGxlZCB3aGVuIG5lZWRQcmVwYXJlUmVjdCgpIHJldHVybnMgZmFsc2UuCitjbGFzcyBD
Q0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCA6IHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RU
ZXN0IHsKK3B1YmxpYzoKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCgpCisg
ICAgICAgIDogbV91cGRhdGVDaGVja0xheWVyKENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nOjpjcmVhdGUoJm1fZGVsZWdhdGUsIGZhbHNlKSkKKyAgICB7CisgICAgfQorCisg
ICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBtX2xheWVyVHJlZUhv
c3QtPnNldFJvb3RMYXllcihtX3VwZGF0ZUNoZWNrTGF5ZXIpOworICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPnNldFZpZXdwb3J0KEludFNpemUoMTAsIDEwKSk7CisKKyAgICAgICAgcG9zdFNldE5l
ZWRzQ29tbWl0VG9NYWluVGhyZWFkKCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1p
dENvbXBsZXRlT25DQ1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKikKKyAgICB7CisgICAgICAg
IGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7
CisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNl
LgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRz
Q291bnQoKSk7CisKKyAgICAgICAgLy8gcHJlcGFyZVJlY3QoKSBzaG91bGQgbm90IGhhdmUgYmVl
biBjYWxsZWQuCisgICAgICAgIEVYUEVDVF9FUSgwLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBh
cmVSZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJl
ZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENv
bnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWlu
dENvbnRlbnRzUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5
ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgTW9ja0xheWVy
RGVsZWdhdGUgbV9kZWxlZ2F0ZTsKKyAgICBSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc+IG1fdXBkYXRlQ2hlY2tMYXllcjsKK307CisKK1RFU1RfRihDQ0xheWVy
VHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCwgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVz
dCh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118711</attachid>
            <date>2011-12-11 13:43:56 -0800</date>
            <delta_ts>2011-12-28 11:33:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initialize-frame-resources.diff</filename>
            <type>text/plain</type>
            <size>59383</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggMzdiYTM0Ni4uOGVhNDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ1LDkgKzQ1LDExIEBAIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVj
dChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4
dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiBQYXNzUmVmUHRy
PEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVy
LCBib29sIHVzZU1hcFRleFN1YkltYWdlKQpAQCAtOTEsMTIgKzkzLDEwIEBAIHZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwKICAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRz
KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwog
fQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2NhbnZh
cyk7Ci0KLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotICAg
IG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291
cmNlUmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggMTMwZGVkNC4uMmU5MWRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJl
VXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBM
YXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVhbCBT
YW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3Jt
YXQpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQg
Y29udGVudHNTY2FsZSk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRl
eHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAg
ICAgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRl
ckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmlu
ZGV4IGM4MDRkNGMuLmRmMDBlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00Myw3ICs0Myw3
IEBAIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRl
eHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzCiB7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCkKIHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlV
c2VCeXRlcyhzb3VyY2VSZWN0LnNpemUoKSwgdGV4dHVyZSgpLT5mb3JtYXQoKSk7CiAgICAgbV9w
aXhlbERhdGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKQEAgLTUx
LDkgKzUxLDEwIEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAgdGV4dHVyZVVwZGF0ZXIo
KS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgpLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQordm9pZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlKCktPmJp
bmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4
dHVyZUlkKCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBBU1NFUlQobV9waXhlbERh
dGEuZ2V0KCkpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRl
eHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CiAg
ICAgbV9waXhlbERhdGEuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1h
cFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA3NDk4MTQ4Li5lYzdh
YzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBwdWJs
aWM6CiAgICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlciosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzMkRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZTQzMjMyNi4uZTA0ZjE4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Q2FudmFzMkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC01Myw3ICs1Myw3
IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVy
ZSgpCiB7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6
dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykK
K3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0
IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogewogICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXgg
YmViZTg3YS4uZTg2YTYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAg
LTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJl
KCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJl
KENhbnZhczJETGF5ZXJDaHJvbWl1bSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1
cmVVcGRhdGVyLmNwcAppbmRleCAxZjNiNjQ0Li43NmFmZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtNDQsNiArNDQsMTYgQEAgQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6flRleHR1cmUoKQogewogfQogCitib29sIENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6Om5lZWRQcmVwYXJlUmVjdCgpCit7CisgICAg
cmV0dXJuICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworfQorCit2b2lkIENhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJj
ZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fdGV4dHVy
ZS0+YWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Cit9CisKIENhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI6OkNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXll
clBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikKICAgICA6IG1fcGFpbnRlcihwYWludGVyKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGJlOWZmMTMuLmVi
MzYyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTQ1
LDcgKzQ1LDEwIEBAIHB1YmxpYzoKIAogICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdldCgpOyB9CiAKLSAgICAgcHJvdGVjdGVkOgor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVj
dCAqLyk7CisKKyAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGV4cGxpY2l0IFRleHR1cmUoUGFzc093
blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCiAgICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIuY3BwCmluZGV4IDQyNmQ2OTQuLjllZWZiNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmNwcApAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgRnJhbWVCdWZmZXIoKTsKICAg
ICB+RnJhbWVCdWZmZXIoKTsKIAotICAgIFNrQ2FudmFzKiBpbml0aWFsaXplKEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRUZXh0dXJlKik7CisgICAgU2tDYW52
YXMqIGluaXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqLCBNYW5hZ2VkVGV4dHVyZSopOwogCiBw
cml2YXRlOgogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CkBAIC02NiwxMiArNjYs
MTIgQEAgRnJhbWVCdWZmZXI6On5GcmFtZUJ1ZmZlcigpCiAgICAgICAgIG1fY29udGV4dC0+ZGVs
ZXRlRnJhbWVidWZmZXIobV9mYm8pOwogfQogCi1Ta0NhbnZhcyogRnJhbWVCdWZmZXI6OmluaXRp
YWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUpCitTa0NhbnZhcyogRnJhbWVCdWZmZXI6Omlu
aXRpYWxpemUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0
dXJlKQogewogICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CiAgICAgbV9mYm8gPSBtX2NvbnRleHQt
PmNyZWF0ZUZyYW1lYnVmZmVyKCk7CiAgICAgbV9jb250ZXh0LT5iaW5kRnJhbWVidWZmZXIoR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBtX2Zibyk7Ci0gICAgdGV4dHVyZS0+ZnJhbWVi
dWZmZXJUZXh0dXJlMkQobV9jb250ZXh0LCBhbGxvY2F0b3IpOworICAgIGNvbnRleHQtPmZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3JhcGhpY3ND
b250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgdGV4dHVyZS0+dGV4dHVyZUlkKCksIDApOwogCiAgICAgLy8gQ3JlYXRlIGEgc2tpYSBncHUg
Y2FudmFzLgogICAgIEdyQ29udGV4dCogZ3JDb250ZXh0ID0gbV9jb250ZXh0LT5nckNvbnRleHQo
KTsKQEAgLTEwNSw5ICsxMDUsMjMgQEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9p
ZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6
OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRhdGVy
KCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CisgICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVj
dCBHTCBjb250ZXh0LgorICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOworICAgIC8v
IE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdMIHN0YXRlLgorICAgIGNvbnRleHQt
PmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKKworICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRl
eHR1cmVJZCgpKTsKKworICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJh
dyBvbi4KKyAgICBGcmFtZUJ1ZmZlciBidWZmZXI7CisgICAgU2tDYW52YXMqIGNhbnZhcyA9IGJ1
ZmZlci5pbml0aWFsaXplKGNvbnRleHQsIHRleHR1cmUoKSk7CisKKyAgICB0ZXh0dXJlVXBkYXRl
cigpLT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCBjYW52YXMsIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKKworICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBzbyB0aGF0IGFsbCB0aGUgcmVuZGVy
ZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KKyAgICBjb250ZXh0LT5nckNvbnRleHQo
KS0+Zmx1c2goKTsKIH0KIAogUGFzc1JlZlB0cjxGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI+IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIp
CkBAIC0xMzUsMjYgKzE0OSwxNCBAQCBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxG
b3JtYXQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcAogICAgIHJldHVy
biBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOwogfQogCi12b2lk
IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4
dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFs
bG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICAvLyBNYWtlIHN1cmUgU0tJQSB1c2Vz
IHRoZSBjb3JyZWN0IEdMIGNvbnRleHQuCi0gICAgY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50
KCk7Ci0gICAgLy8gTm90aWZ5IFNLSUEgdG8gc3luYyBpdHMgaW50ZXJuYWwgR0wgc3RhdGUuCi0g
ICAgY29udGV4dC0+Z3JDb250ZXh0KCktPnJlc2V0Q29udGV4dCgpOwotCi0gICAgLy8gQ3JlYXRl
IGFuIGFjY2VsZXJhdGVkIGNhbnZhcyB0byBkcmF3IG9uLgotICAgIEZyYW1lQnVmZmVyIGJ1ZmZl
cjsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gYnVmZmVyLmluaXRpYWxpemUoY29udGV4dCwgYWxs
b2NhdG9yLCB0ZXh0dXJlKTsKLQogICAgIGNhbnZhcy0+Y2xpcFJlY3QoU2tSZWN0KGRlc3RSZWN0
KSk7CiAgICAgLy8gVHJhbnNsYXRlIHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBv
ZiBkZXN0UmVjdC4KICAgICAvLyBOb3RlIHRoYXQgZGVzdFJlY3QgaXMgZGVmaW5lZCByZWxhdGl2
ZSB0byBzb3VyY2VSZWN0LgogICAgIGNhbnZhcy0+dHJhbnNsYXRlKGNvbnRlbnRSZWN0KCkueCgp
IC0gc291cmNlUmVjdC54KCkgKyBkZXN0UmVjdC54KCksCiAgICAgICAgICAgICAgICAgICAgICAg
Y29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0LnkoKSArIGRlc3RSZWN0LnkoKSk7CiAgICAg
ZHJhd1BpY3R1cmUoY2FudmFzKTsKLQotICAgIC8vIEZsdXNoIFNLSUEgY29udGV4dCBzbyB0aGF0
IGFsbCB0aGUgcmVuZGVyZWQgc3R1ZmYgYXBwZWFycyBvbiB0aGUgdGV4dHVyZS4KLSAgICBjb250
ZXh0LT5nckNvbnRleHQoKS0+Zmx1c2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBiMmMxNDAxLi5hOGZmODVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaApAQCAtMzIsNiArMzIsOCBAQAogCiAjaW5jbHVkZSAiU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogCitjbGFzcyBTa0NhbnZhczsKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciB7
CkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICAgICAgVGV4dHVyZShGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0
dXJlPik7CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0
ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU1LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRv
cERvd25PcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBs
ZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKLSAgICB2b2lkIHVwZGF0ZVRl
eHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIE1hbmFnZWRU
ZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOworICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBTa0Nh
bnZhcyosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggODcyOTExMS4uZjkyYTEzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC01NCw5ICs1NCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRl
eHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAg
ICAgICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICBjb250ZXh0
LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50
ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJl
UmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC04NSwxNSArODcsMTMgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJH
QkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOwogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxv
YXQgLyogY29udGVudHNTY2FsZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhj
b25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pCiAgICAg
ewogICAgICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0aWxlU2l6ZSk7CiAgICAg
fQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1hbmFnZWRUZXh0dXJlKiB0
ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIHVuc2lnbmVkIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgewotICAgICAgICB0ZXh0dXJlLT5iaW5kVGV4dHVy
ZShjb250ZXh0LCBhbGxvY2F0b3IpOwotCiAgICAgICAgIC8vIFNvdXJjZSByZWN0IHNob3VsZCBu
ZXZlciBnbyBvdXRzaWRlIHRoZSBpbWFnZSBwaXhlbHMsIGV2ZW4gaWYgdGhpcwogICAgICAgICAv
LyBpcyByZXF1ZXN0ZWQgYmVjYXVzZSB0aGUgdGV4dHVyZSBleHRlbmRzIG91dHNpZGUgdGhlIGlt
YWdlLgogICAgICAgICBJbnRSZWN0IGNsaXBwZWRTb3VyY2VSZWN0ID0gc291cmNlUmVjdDsKQEAg
LTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5tb3ZlKGNs
aXBwZWRTb3VyY2VSZWN0LmxvY2F0aW9uKCkgLSBzb3VyY2VSZWN0LmxvY2F0aW9uKCkpOwogICAg
ICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0U2l6ZShjbGlwcGVkU291cmNlUmVjdC5zaXplKCkpOwog
Ci0gICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1hZ2UucGl4ZWxzKCksIGltYWdlUmVj
dCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCB0ZXh0dXJlLT5mb3JtYXQo
KSwgY29udGV4dCk7CisgICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1hZ2UucGl4ZWxz
KCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCBmb3Jt
YXQsIGNvbnRleHQpOwogICAgIH0KIAogICAgIHZvaWQgdXBkYXRlRnJvbUltYWdlKE5hdGl2ZUlt
YWdlUHRyIG5hdGl2ZUltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4IGFl
OGY2NDcuLmNmNDkzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTUwLDgg
KzUwLDE0IEBAIHB1YmxpYzoKIAogICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0
dXJlKCkgeyByZXR1cm4gMDsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChj
b25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKyAgICAg
ICAgLy8gcHJlcGFyZVJlY3QoKSB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIHRoaXMgcmV0dXJucyB0
cnVlLgorICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCkgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICAgICAgLy8gVGhpcyBydW5zIHN5bmNocm9ub3VzbHkgb24gdGhlIGltcGwgdGhy
ZWFkIHdpdGggc2FmZSBhY2Nlc3MgdG8gbWFpbiB0aHJlYWQgcmVzb3VyY2VzLgorICAgICAgICB2
aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2Nh
dG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyog
ZGVzdFJlY3QgKi8pIHsgfQorICAgICAgICAvLyBUaGlzIHJ1bnMgb24gdGhlIG1haW4gdGhyZWFk
IGFmdGVyIGNhbGxzIHRvIG5lZWRQcmVwYXJlUmVjdCgpIGFuZCBwcmVwYXJlUmVjdCgpIGJ1dCBi
ZWZvcmUgdXBkYXRlUmVjdCgpLgorICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykgeyB9CisgICAgICAgIC8vIFRoaXMg
cnVucyBhc3luY2hyb25vdXNseSBvbiB0aGUgaW1wbCB0aHJlYWQuIEFjY2VzcyB0byBtYWluIHRo
cmVhZCByZXNvdXJjZXMgaXMgdW5zYWZlLgorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KSA9IDA7CiAgICAgfTsKIAogICAgIGNsYXNzIEhhbmRsZXIgewpAQCAt
ODEsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBj
b21wb25lbnQgb3JkZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCiAgICAgLy8gSWYgdGhlIGZvcm1h
dCBpcyBUZXhlbEZvcm1hdEJHUkEsIHZlYzQueCBpcyBibHVlIGFuZCB2ZWM0LnogaXMgcmVkLgog
ICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51
bSB0ZXh0dXJlRm9ybWF0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29u
c3QgSW50UmVjdCYgLyogY29udGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXpl
ICovLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgLyogY29u
dGVudFJlY3QgKi8sIGNvbnN0IEludFNpemUmIC8qIHRpbGVTaXplICovLCBpbnQgLyogYm9yZGVy
VGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKSB7IH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAppbmRleCBjYmRmZTAzLi5lZTE4
MDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9NYW5hZ2VkVGV4dHVyZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCkBAIC04MCwxMSArODAsMTYgQEAgdm9pZCBN
YW5hZ2VkVGV4dHVyZTo6dW5yZXNlcnZlKCkKICAgICBtX3RleHR1cmVNYW5hZ2VyLT51bnByb3Rl
Y3RUZXh0dXJlKG1fdG9rZW4pOwogfQogCi12b2lkIE1hbmFnZWRUZXh0dXJlOjpiaW5kVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9y
KQordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiB7CiAgICAgQVNTRVJUKG1f
dGV4dHVyZU1hbmFnZXItPmhhc1RleHR1cmUobV90b2tlbikpOwogICAgIGlmICghbV90ZXh0dXJl
SWQpCiAgICAgICAgIG1fdGV4dHVyZUlkID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdGVUZXh0
dXJlKGFsbG9jYXRvciwgbV90b2tlbik7Cit9CisKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRU
ZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCit7CisgICAgYWxsb2NhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CiAgICAg
Y29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIG1fdGV4
dHVyZUlkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXggNGQ0MzgwOS4uZDczYzg3NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFu
YWdlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC01NSw2ICs1NSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fdGV4dHVyZU1hbmFnZXItPmlzUHJvdGVjdGVkKG1fdG9rZW4pOwogICAgIH0KIAor
ICAgIHZvaWQgYWxsb2NhdGVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciopOwogICAgIHZvaWQgYmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJl
QWxsb2NhdG9yKik7CiAgICAgdm9pZCBmcmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVvTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggM2Q4YjQ5NS4uN2JlYzdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9WaWRlb0xheWVyQ2hyb21pdW0u
Y3BwCkBAIC00MCwyMyArNDAsNTkgQEAKICNpbmNsdWRlICJWaWRlb0ZyYW1lQ2hyb21pdW0uaCIK
ICNpbmNsdWRlICJWaWRlb0ZyYW1lUHJvdmlkZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1Zp
ZGVvTGF5ZXJJbXBsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotVmlkZW9MYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6VXBkYXRlclRleHR1cmUoVmlkZW9MYXllckNocm9taXVtKiBs
YXllcikKLSAgICA6IG1fbGF5ZXIobGF5ZXIpCitWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpVcGRhdGVyVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0dXJl
KQorICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX21hcHBlZEJ1ZmZlcigwKQogewog
fQogCiBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUo
KQogeworICAgIEFTU0VSVCghbV9tYXBwZWRCdWZmZXIpOwogfQogCi12b2lkIFZpZGVvTGF5ZXJD
aHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit2b2lkIFZpZGVvTGF5
ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8q
IHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogewotICAgIG1f
bGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAg
ICBJbnRTaXplIGRpbWVuc2lvbnMgPSBtX3RleHR1cmUtPnNpemUoKTsKKworICAgIEV4dGVuc2lv
bnMzRENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21p
dW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIG1fbWFwcGVkQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTShH
cmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGltZW5zaW9ucy53aWR0aCgp
LCBkaW1lbnNpb25zLmhlaWdodCgpLCBtX3RleHR1cmUtPmZvcm1hdCgpLCBHcmFwaGljc0NvbnRl
eHQzRDo6VU5TSUdORURfQllURSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsK
KworICAgIGlmICghbV9tYXBwZWRCdWZmZXIpIHsKKyAgICAgICAgc2l6ZV90IGJ1ZmZlclNpemUg
PSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoZGltZW5zaW9ucywgbV90ZXh0dXJlLT5m
b3JtYXQoKSk7CisgICAgICAgIG1fYnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcgdWludDhfdFti
dWZmZXJTaXplXSk7CisgICAgfQorCisgICAgbV90ZXh0dXJlLT5hbGxvY2F0ZVRleHR1cmUoY29u
dGV4dCwgYWxsb2NhdG9yKTsKK30KKwordm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OlVwZGF0ZXJU
ZXh0dXJlOjpkYXRhUmVjdChjb25zdCB2b2lkKiBkYXRhKQoreworICAgIHNpemVfdCBidWZmZXJT
aXplID0gVGV4dHVyZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKG1fdGV4dHVyZS0+c2l6ZSgpLCBt
X3RleHR1cmUtPmZvcm1hdCgpKTsKKworICAgIGlmIChtX21hcHBlZEJ1ZmZlcikKKyAgICAgICAg
bWVtY3B5KG1fbWFwcGVkQnVmZmVyLCBkYXRhLCBidWZmZXJTaXplKTsKKyAgICBlbHNlCisgICAg
ICAgIG1lbWNweShtX2J1ZmZlci5nZXQoKSwgZGF0YSwgYnVmZmVyU2l6ZSk7Cit9CisKK3ZvaWQg
VmlkZW9MYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3Qg
SW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZS0+dGV4dHVy
ZUlkKCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCBtX3RleHR1cmUtPnRleHR1cmVJZCgpKTsKKyAgICBpZiAobV9tYXBwZWRCdWZmZXIp
IHsKKyAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2Fz
dDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAg
ICAgIEdMQyhjb250ZXh0LCBleHRlbnNpb25zLT51bm1hcFRleFN1YkltYWdlMkRDSFJPTUlVTSht
X21hcHBlZEJ1ZmZlcikpOworICAgICAgICBtX21hcHBlZEJ1ZmZlciA9IDA7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgSW50U2l6ZSBkaW1lbnNpb25zID0gbV90ZXh0dXJlLT5zaXplKCk7CisgICAg
ICAgIEdMQyhjb250ZXh0LCBjb250ZXh0LT50ZXhTdWJJbWFnZTJEKEdyYXBoaWNzQ29udGV4dDNE
OjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCksIGRpbWVuc2lvbnMuaGVp
Z2h0KCksIG1fdGV4dHVyZS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpVTlNJR05FRF9C
WVRFLCBtX2J1ZmZlci5nZXQoKSkpOworICAgICAgICBtX2J1ZmZlci5jbGVhcigpOworICAgIH0K
IH0KIAogUGFzc1JlZlB0cjxWaWRlb0xheWVyQ2hyb21pdW0+IFZpZGVvTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsCkBAIC03Miw3ICsxMDgsNyBAQCBWaWRl
b0xheWVyQ2hyb21pdW06OlZpZGVvTGF5ZXJDaHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqIGRlbGVn
YXRlLCBWaWRlb0ZyYW1lUHJvdgogICAgICwgbV9wcm92aWRlcihwcm92aWRlcikKICAgICAsIG1f
cGxhbmVzKDApCiAgICAgLCBtX25hdGl2ZVRleHR1cmVJZCgwKQotICAgICwgbV91cGRhdGVyVGV4
dHVyZShVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9mcmFtZSgwKQogewog
fQogCkBAIC05MCwxNyArMTI2LDE5IEBAIHZvaWQgVmlkZW9MYXllckNocm9taXVtOjpjbGVhbnVw
UmVzb3VyY2VzKCkKIHsKICAgICBMYXllckNocm9taXVtOjpjbGVhbnVwUmVzb3VyY2VzKCk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IE1heFBsYW5lczsgKytpKQotICAgICAgICBtX3Rl
eHR1cmVzW2ldLm1fdGV4dHVyZS5jbGVhcigpOworICAgICAgICBtX3RleHR1cmVzW2ldLmNsZWFy
KCk7CiB9CiAKLXZvaWQgVmlkZW9MYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IpCit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpCiB7
CisgICAgbV9mcmFtZSA9IDA7CisKICAgICBpZiAoIW1fZGVsZWdhdGUgfHwgIW1fcHJvdmlkZXIg
fHwgIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbmVlZHNE
aXNwbGF5ICYmIHRleHR1cmVzVmFsaWQoKSkgewogICAgICAgICBmb3IgKHVuc2lnbmVkIHBsYW5l
ID0gMDsgcGxhbmUgPCBtX3BsYW5lczsgcGxhbmUrKykgewotICAgICAgICAgICAgTWFuYWdlZFRl
eHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAg
ICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXggPSBtX3RleHR1cmVzW3BsYW5lXS0+dGV4dHVyZSgpOwog
ICAgICAgICAgICAgaWYgKCF0ZXgtPnJlc2VydmUodGV4LT5zaXplKCksIHRleC0+Zm9ybWF0KCkp
KSB7CiAgICAgICAgICAgICAgICAgbV9za2lwc0RyYXcgPSB0cnVlOwogICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTM4LDggKzE3NiwxMCBAQCB2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQWxsb2NhdGUgdGV4dHVyZXMgZm9yIHBsYW5l
cyBpZiB0aGV5IGFyZSBub3QgYWxsb2NhdGVkIGFscmVhZHksIG9yCi0gICAgLy8gcmVhbGxvY2F0
ZSB0ZXh0dXJlcyB0aGF0IGFyZSB0aGUgd3Jvbmcgc2l6ZSBmb3IgdGhlIGZyYW1lLgorICAgIGlm
IChmcmFtZS0+cGxhbmVzKCkgPiBNYXhQbGFuZXMpCisgICAgICAgIENSQVNIKCk7CisKKyAgICAv
LyBSZXNlcnZlIHRleHR1cmVzIGZvciBwbGFuZXMgaWYgdGhleSBhcmUgbm90IHJlc2VydmVkIGFs
cmVhZHkuCiAgICAgYm9vbCB0ZXh0dXJlc1Jlc2VydmVkID0gcmVzZXJ2ZVRleHR1cmVzKGZyYW1l
LCB0ZXh0dXJlRm9ybWF0KTsKICAgICBpZiAoIXRleHR1cmVzUmVzZXJ2ZWQpIHsKICAgICAgICAg
bV9za2lwc0RyYXcgPSB0cnVlOwpAQCAtMTQ3LDI2ICsxODcsMzQgQEAgdm9pZCBWaWRlb0xheWVy
Q2hyb21pdW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFVwZGF0ZSB0ZXh0dXJl
IHBsYW5lcy4KLSAgICBmb3IgKHVuc2lnbmVkIHBsYW5lID0gMDsgcGxhbmUgPCBmcmFtZS0+cGxh
bmVzKCk7IHBsYW5lKyspIHsKLSAgICAgICAgVGV4dHVyZSYgdGV4dHVyZSA9IG1fdGV4dHVyZXNb
cGxhbmVdOwotICAgICAgICBBU1NFUlQodGV4dHVyZS5tX3RleHR1cmUpOwotICAgICAgICBBU1NF
UlQoZnJhbWUtPnJlcXVpcmVkVGV4dHVyZVNpemUocGxhbmUpID09IHRleHR1cmUubV90ZXh0dXJl
LT5zaXplKCkpOwotICAgICAgICB1cGRhdGVUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4
dHVyZSwgZnJhbWUtPmRhdGEocGxhbmUpKTsKLSAgICB9Ci0KKyAgICBtX2ZyYW1lID0gZnJhbWU7
CiAgICAgbV9wbGFuZXMgPSBmcmFtZS0+cGxhbmVzKCk7Ci0gICAgQVNTRVJUKG1fcGxhbmVzIDw9
IE1heFBsYW5lcyk7CiAKICAgICBtX3VwZGF0ZVJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgp
LCBib3VuZHMoKSk7CiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBmYWxzZTsKK30KIAotICAgIG1fcHJv
dmlkZXItPnB1dEN1cnJlbnRGcmFtZShmcmFtZSk7Cit2b2lkIFZpZGVvTGF5ZXJDaHJvbWl1bTo6
cGFpbnRDb250ZW50c0lmRGlydHkoKQoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgLy8gQ29weSBwbGFuZXMgdG8gbWFwcGVkIGJ1ZmZlcnMuCisgICAgZm9yICh1
bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgbV9mcmFtZS0+cGxhbmVzKCk7IHBsYW5lKyspCisg
ICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT5kYXRhUmVjdChtX2ZyYW1lLT5kYXRhKHBsYW5lKSk7
CisKKyAgICBtX3Byb3ZpZGVyLT5wdXRDdXJyZW50RnJhbWUobV9mcmFtZSk7CiB9CiAKIHZvaWQg
VmlkZW9MYXllckNocm9taXVtOjpmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OkhhbmRsZXImIGhhbmRsZXIpCiB7Ci0gICAgaGFuZGxlci5oYW5kbGUobV91cGRh
dGVyVGV4dHVyZS5nZXQoKSwgSW50UmVjdCgpLCBJbnRSZWN0KCkpOworICAgIGlmICghbV9mcmFt
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5l
IDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKKyAgICAgICAgSW50UmVjdCByZWN0KEludFBvaW50KCks
IG1fdGV4dHVyZXNbcGxhbmVdLT52aXNpYmxlU2l6ZSgpKTsKKyAgICAgICAgaGFuZGxlci5oYW5k
bGUobV90ZXh0dXJlc1twbGFuZV0uZ2V0KCksIHJlY3QsIHJlY3QpOworICAgIH0KIH0KIAogdm9p
ZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVy
KQpAQCAtMTc3LDExICsyMjUsMTEgQEAgdm9pZCBWaWRlb0xheWVyQ2hyb21pdW06OnB1c2hQcm9w
ZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIHZpZGVvTGF5ZXItPnNldFNraXBzRHJh
dyhtX3NraXBzRHJhdyk7CiAgICAgdmlkZW9MYXllci0+c2V0RnJhbWVGb3JtYXQobV9mcmFtZUZv
cm1hdCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbmVzOyArK2kpIHsKLSAg
ICAgICAgaWYgKCFtX3RleHR1cmVzW2ldLm1fdGV4dHVyZSkgeworICAgICAgICBpZiAoIW1fdGV4
dHVyZXNbaV0pIHsKICAgICAgICAgICAgIHZpZGVvTGF5ZXItPnNldFNraXBzRHJhdyh0cnVlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHZpZGVvTGF5ZXItPnNldFRl
eHR1cmUoaSwgbV90ZXh0dXJlc1tpXS5tX3RleHR1cmUtPnRleHR1cmVJZCgpLCBtX3RleHR1cmVz
W2ldLm1fdGV4dHVyZS0+c2l6ZSgpLCBtX3RleHR1cmVzW2ldLm1fdmlzaWJsZVNpemUpOworICAg
ICAgICB2aWRlb0xheWVyLT5zZXRUZXh0dXJlKGksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUoKS0+
dGV4dHVyZUlkKCksIG1fdGV4dHVyZXNbaV0tPnRleHR1cmUoKS0+c2l6ZSgpLCBtX3RleHR1cmVz
W2ldLT52aXNpYmxlU2l6ZSgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wbGFu
ZXM7IGkgPCBNYXhQbGFuZXM7ICsraSkKICAgICAgICAgdmlkZW9MYXllci0+c2V0VGV4dHVyZShp
LCAwLCBJbnRTaXplKCksIEludFNpemUoKSk7CkBAIC0xOTIsMTAgKzI0MCw4IEBAIHZvaWQgVmlk
ZW9MYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIHZv
aWQgVmlkZW9MYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCog
aG9zdCkKIHsKICAgICBpZiAoaG9zdCAmJiBsYXllclRyZWVIb3N0KCkgIT0gaG9zdCkgewotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgTWF4UGxhbmVzOyArK2kpIHsKLSAgICAgICAg
ICAgIG1fdGV4dHVyZXNbaV0ubV92aXNpYmxlU2l6ZSA9IEludFNpemUoKTsKLSAgICAgICAgICAg
IG1fdGV4dHVyZXNbaV0ubV90ZXh0dXJlID0gTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShob3N0LT5j
b250ZW50c1RleHR1cmVNYW5hZ2VyKCkpOwotICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBNYXhQbGFuZXM7ICsraSkKKyAgICAgICAgICAgIG1fdGV4dHVyZXNbaV0g
PSBVcGRhdGVyVGV4dHVyZTo6Y3JlYXRlKE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUoaG9zdC0+Y29u
dGVudHNUZXh0dXJlTWFuYWdlcigpKSk7CiAgICAgfQogCiAgICAgTGF5ZXJDaHJvbWl1bTo6c2V0
TGF5ZXJUcmVlSG9zdChob3N0KTsKQEAgLTIxOSw4ICsyNjUsMTAgQEAgR0MzRGVudW0gVmlkZW9M
YXllckNocm9taXVtOjpkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJv
bWl1bSogZnIKIAogYm9vbCBWaWRlb0xheWVyQ2hyb21pdW06OnRleHR1cmVzVmFsaWQoKQogewor
ICAgIEFTU0VSVChsYXllclRyZWVIb3N0KCkpOworCiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9
IDA7IHBsYW5lIDwgbV9wbGFuZXM7IHBsYW5lKyspIHsKLSAgICAgICAgTWFuYWdlZFRleHR1cmUq
IHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLm1fdGV4dHVyZS5nZXQoKTsKKyAgICAgICAgTWFuYWdl
ZFRleHR1cmUqIHRleCA9IG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCk7CiAgICAgICAgIGlm
ICghdGV4LT5pc1ZhbGlkKHRleC0+c2l6ZSgpLCB0ZXgtPmZvcm1hdCgpKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMzcsMTkgKzI4NSwyMCBAQCBib29sIFZpZGVvTGF5
ZXJDaHJvbWl1bTo6cmVzZXJ2ZVRleHR1cmVzKGNvbnN0IFZpZGVvRnJhbWVDaHJvbWl1bSogZnJh
bWUsIEdDM0RlbgogCiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZSA9IDA7IHBsYW5lIDwgZnJhbWUt
PnBsYW5lcygpOyBwbGFuZSsrKSB7CiAgICAgICAgIEludFNpemUgcmVxdWlyZWRUZXh0dXJlU2l6
ZSA9IGZyYW1lLT5yZXF1aXJlZFRleHR1cmVTaXplKHBsYW5lKTsKKyAgICAgICAgQVNTRVJUKG1f
dGV4dHVyZXNbcGxhbmVdKTsKKyAgICAgICAgQVNTRVJUKG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0
dXJlKCkpOwogCiAgICAgICAgIC8vIElmIHRoZSByZW5kZXJlciBjYW5ub3QgaGFuZGxlIHRoaXMg
bGFyZ2Ugb2YgYSB0ZXh0dXJlLCByZXR1cm4gZmFsc2UuCiAgICAgICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyB0ZXN0IHdoZW4gdGlsZWQgbGF5ZXJzIGFyZSBpbXBsZW1lbnRlZC4KICAgICAgICAg
aWYgKHJlcXVpcmVkVGV4dHVyZVNpemUuaXNaZXJvKCkgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS53
aWR0aCgpID4gbWF4VGV4dHVyZVNpemUgfHwgcmVxdWlyZWRUZXh0dXJlU2l6ZS5oZWlnaHQoKSA+
IG1heFRleHR1cmVTaXplKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlm
ICghbV90ZXh0dXJlc1twbGFuZV0ubV90ZXh0dXJlKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIGlmIChtX3RleHR1cmVzW3BsYW5lXS5tX3RleHR1cmUtPnNpemUoKSAhPSBy
ZXF1aXJlZFRleHR1cmVTaXplKQotICAgICAgICAgICAgbV90ZXh0dXJlc1twbGFuZV0ubV92aXNp
YmxlU2l6ZSA9IGNvbXB1dGVWaXNpYmxlU2l6ZShmcmFtZSwgcGxhbmUpOworICAgICAgICBpZiAo
bV90ZXh0dXJlc1twbGFuZV0tPnRleHR1cmUoKS0+c2l6ZSgpICE9IHJlcXVpcmVkVGV4dHVyZVNp
emUpIHsKKyAgICAgICAgICAgIEludFNpemUgdmlzaWJsZVNpemUgPSBjb21wdXRlVmlzaWJsZVNp
emUoZnJhbWUsIHBsYW5lKTsKKyAgICAgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT5zZXRWaXNp
YmxlU2l6ZSh2aXNpYmxlU2l6ZSk7CisgICAgICAgIH0KIAotICAgICAgICBtX3RleHR1cmVzW3Bs
YW5lXS5tX3RleHR1cmUtPnJlc2VydmUocmVxdWlyZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1h
dCk7CisgICAgICAgIG1fdGV4dHVyZXNbcGxhbmVdLT50ZXh0dXJlKCktPnJlc2VydmUocmVxdWly
ZWRUZXh0dXJlU2l6ZSwgdGV4dHVyZUZvcm1hdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7
CkBAIC0yNzksMjggKzMyOCw2IEBAIEludFNpemUgVmlkZW9MYXllckNocm9taXVtOjpjb21wdXRl
VmlzaWJsZVNpemUoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiBmcmFtZSwKICAgICByZXR1cm4g
SW50U2l6ZSh2aXNpYmxlV2lkdGgsIHZpc2libGVIZWlnaHQpOwogfQogCi12b2lkIFZpZGVvTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlJiB0ZXh0dXJlLCBjb25zdCB2b2lkKiBk
YXRhKSBjb25zdAotewotICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICBBU1NFUlQodGV4dHVyZS5t
X3RleHR1cmUpOwotCi0gICAgdGV4dHVyZS5tX3RleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQs
IGFsbG9jYXRvcik7Ci0KLSAgICBHQzNEZW51bSBmb3JtYXQgPSB0ZXh0dXJlLm1fdGV4dHVyZS0+
Zm9ybWF0KCk7Ci0gICAgSW50U2l6ZSBkaW1lbnNpb25zID0gdGV4dHVyZS5tX3RleHR1cmUtPnNp
emUoKTsKLQotICAgIHZvaWQqIG1lbSA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKS0+bWFwVGV4U3ViSW1hZ2UyRENIUk9NSVVNKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwLCAwLCAwLCBkaW1lbnNpb25zLndpZHRoKCks
IGRpbWVuc2lvbnMuaGVpZ2h0KCksIGZvcm1hdCwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVE
X0JZVEUsIEV4dGVuc2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKTsKLSAgICBpZiAobWVtKSB7
Ci0gICAgICAgIG1lbWNweShtZW0sIGRhdGEsIGRpbWVuc2lvbnMud2lkdGgoKSAqIGRpbWVuc2lv
bnMuaGVpZ2h0KCkpOwotICAgICAgICBHTEMoY29udGV4dCwgc3RhdGljX2Nhc3Q8RXh0ZW5zaW9u
czNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpLT51bm1hcFRleFN1YkltYWdl
MkRDSFJPTUlVTShtZW0pKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBJZiBtYXBUZXhTdWJJ
bWFnZTJEQ0hST01JVU0gZmFpbHMsIHRoZW4gZG8gdGhlIHNsb3dlciB0ZXhTdWJJbWFnZTJECi0g
ICAgICAgIC8vIHVwbG9hZC4gVGhpcyBkb2VzIHR3aWNlIHRoZSBjb3BpZXMgYXMgbWFwVGV4U3Vi
SW1hZ2UyRENIUk9NSVVNLCBvbmUKLSAgICAgICAgLy8gaW4gdGhlIGNvbW1hbmQgYnVmZmVyIGFu
ZCBhbm90aGVyIHRvIHRoZSB0ZXh0dXJlLgotICAgICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+
dGV4U3ViSW1hZ2UyRChHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgMCwgMCwgMCwgZGlt
ZW5zaW9ucy53aWR0aCgpLCBkaW1lbnNpb25zLmhlaWdodCgpLCBmb3JtYXQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpVTlNJR05FRF9CWVRFLCBkYXRhKSk7Ci0gICAgfQotfQotCiB2b2lkIFZpZGVvTGF5
ZXJDaHJvbWl1bTo6cmVsZWFzZVByb3ZpZGVyKCkKIHsKICAgICBtX3Byb3ZpZGVyID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1ZpZGVv
TGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVmlkZW9MYXllckNocm9taXVtLmgKaW5kZXggODMzYjc2OS4uMzUxZjhmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVmlkZW9MYXllckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VmlkZW9MYXllckNocm9taXVtLmgKQEAgLTQ1LDE5ICs0NSwzMCBAQCBjbGFzcyBWaWRlb0xheWVy
Q2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVXBk
YXRlclRleHR1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRl
KFZpZGVvTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVw
ZGF0ZXJUZXh0dXJlPiBjcmVhdGUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVy
ZShsYXllcikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBVcGRhdGVyVGV4dHVy
ZSh0ZXh0dXJlKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVy
ZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVy
ZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBu
ZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZv
aWQgZGF0YVJlY3QoY29uc3Qgdm9pZCopOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVj
dChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICB2b2lkIHNldFZpc2libGVTaXplKEludFNpemUm
IHNpemUpIHsgbV92aXNpYmxlU2l6ZSA9IHNpemU7IH0KKyAgICAgICAgSW50U2l6ZSYgdmlzaWJs
ZVNpemUoKSB7IHJldHVybiBtX3Zpc2libGVTaXplOyB9CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShWaWRlb0xheWVyQ2hyb21pdW0qKTsKKyAgICAgICAg
ZXhwbGljaXQgVXBkYXRlclRleHR1cmUoUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCi0g
ICAgICAgIFZpZGVvTGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICAgICAgT3duUHRyPE1hbmFn
ZWRUZXh0dXJlPiBtX3RleHR1cmU7CisgICAgICAgIEludFNpemUgbV92aXNpYmxlU2l6ZTsKKyAg
ICAgICAgdWludDhfdCogbV9tYXBwZWRCdWZmZXI7CisgICAgICAgIE93bkFycmF5UHRyPHVpbnQ4
X3Q+IG1fYnVmZmVyOwogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxWaWRlb0xheWVy
Q2hyb21pdW0+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqID0gMCwKQEAgLTY2LDcgKzc3LDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xh
eWVySW1wbCgpOwogCi0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJl
VG9VcGRhdGVJZkRpcnR5KCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5
KCk7CiAgICAgdmlydHVhbCB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTgwLDE4ICs5MiwxMiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsKIAogcHJpdmF0ZToKLSAgICBzdHJ1
Y3QgVGV4dHVyZSB7Ci0gICAgICAgIEludFNpemUgbV92aXNpYmxlU2l6ZTsKLSAgICAgICAgT3du
UHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7Ci0gICAgfTsKLQogICAgIFZpZGVvTGF5ZXJD
aHJvbWl1bShDQ0xheWVyRGVsZWdhdGUqLCBWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAogICAgIHN0
YXRpYyBHQzNEZW51bSBkZXRlcm1pbmVUZXh0dXJlRm9ybWF0KGNvbnN0IFZpZGVvRnJhbWVDaHJv
bWl1bSopOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBWaWRl
b0ZyYW1lQ2hyb21pdW0qLCB1bnNpZ25lZCBwbGFuZSk7CiAgICAgYm9vbCB0ZXh0dXJlc1ZhbGlk
KCk7CiAgICAgYm9vbCByZXNlcnZlVGV4dHVyZXMoY29uc3QgVmlkZW9GcmFtZUNocm9taXVtKiwg
R0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlKEdyYXBoaWNz
Q29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmUmLCBjb25zdCB2b2lkKikgY29u
c3Q7CiAKICAgICB2b2lkIHJlc2V0RnJhbWVQYXJhbWV0ZXJzKCk7CiAKQEAgLTEwMCwxNCArMTA2
LDE0IEBAIHByaXZhdGU6CiAgICAgVmlkZW9GcmFtZVByb3ZpZGVyKiBtX3Byb3ZpZGVyOwogCiAg
ICAgZW51bSB7IE1heFBsYW5lcyA9IDMgfTsKLSAgICBUZXh0dXJlIG1fdGV4dHVyZXNbTWF4UGxh
bmVzXTsKKyAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1fdGV4dHVyZXNbTWF4UGxhbmVzXTsK
ICAgICB1bnNpZ25lZCBtX3BsYW5lczsKIAogICAgIHVuc2lnbmVkIG1fbmF0aXZlVGV4dHVyZUlk
OwogICAgIEludFNpemUgbV9uYXRpdmVUZXh0dXJlU2l6ZTsKICAgICBJbnRTaXplIG1fbmF0aXZl
VGV4dHVyZVZpc2libGVTaXplOwogCi0gICAgT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBtX3VwZGF0
ZXJUZXh0dXJlOworICAgIFZpZGVvRnJhbWVDaHJvbWl1bSogbV9mcmFtZTsKIH07CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdM
TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDE3YzZkMDYuLjNmNGIwNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcApAQCAtNTIsNyArNTIsNyBAQCBXZWJHTExheWVy
Q2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp+VXBkYXRlclRleHR1cmUoKQogewogfQogCi12b2lk
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBz
b3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3ZvaWQgV2ViR0xM
YXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVj
dCYgLyogZGVzdFJlY3QgKi8pCiB7CiAgICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291
cmNlcyhjb250ZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKaW5kZXggZDQ4OTFk
MC4uNTRiMjdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmgKQEAgLTU1LDcgKzU1LDcg
QEAgcHVibGljOgogCiAgICAgICAgIHZpcnR1YWwgflVwZGF0ZXJUZXh0dXJlKCk7CiAKLSAgICAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCos
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0dXJlKFdlYkdMTGF5ZXJD
aHJvbWl1bSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggZjM5ZjdmZC4u
YzY1ODQ1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC00OSwxOCArNDks
NDkgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmFueUxheWVyVHJlZUhvc3RJbnN0YW5jZUV4aXN0
cygpCiAgICAgcmV0dXJuIG51bUxheWVyVHJlZUluc3RhbmNlcyA+IDA7CiB9CiAKLUNDTGF5ZXJU
cmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6VXBkYXRlSGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKK0ND
TGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6TmVlZFJlc291cmNlSGFuZGxlcigp
CisgICAgOiBtX3Jlc291cmNlcygwKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNv
dXJjZUhhbmRsZXI6On5OZWVkUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25z
dCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBh
cmVSZWN0KCkpCisgICAgICAgIG1fcmVzb3VyY2VzKys7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6
UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6UHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQorICAgIDogbV9j
b250ZXh0KGNvbnRleHQpCisgICAgLCBtX2FsbG9jYXRvcihhbGxvY2F0b3IpCit7Cit9CisKK0ND
TGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFuZGxlcjo6flByZXBhcmVSZXNvdXJjZUhh
bmRsZXIoKQoreworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6UHJlcGFyZVJlc291cmNlSGFu
ZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIGlm
ICh0ZXh0dXJlLT5uZWVkUHJlcGFyZVJlY3QoKSkKKyAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJl
Y3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworfQorCitD
Q0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6UGFpbnRIYW5kbGVyKENDUHJveHkqIHByb3h5
KQogICAgIDogbV9wcm94eShwcm94eSkKIHsKIH0KIAotQ0NMYXllclRyZWVIb3N0OjpVcGRhdGVI
YW5kbGVyOjp+VXBkYXRlSGFuZGxlcigpCitDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6
flBhaW50SGFuZGxlcigpCiB7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5k
bGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIENDTGF5
ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCiB7Ci0gICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CisgICAg
dGV4dHVyZS0+cGFpbnRDb250ZW50c1JlY3Qoc291cmNlUmVjdCk7CiAgICAgbV9wcm94eS0+dXBk
YXRlKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKIH0KIApAQCAtMzc0LDcgKzQwNSwy
MSBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0q
IHJvb3RMYXllcikKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXll
cnMoKQorYm9vbCBDQ0xheWVyVHJlZUhvc3Q6Om5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpCit7
CisgICAgTmVlZFJlc291cmNlSGFuZGxlciBoYW5kbGVyOworICAgIGZvckVhY2hDb21wb3NpdG9y
UmVzb3VyY2UoaGFuZGxlcik7CisgICAgcmV0dXJuIGhhbmRsZXIucmVzb3VyY2VzKCk7Cit9CisK
K3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQoreworICAg
IFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2Vz
IiwgdGhpcywgMCk7CisgICAgUHJlcGFyZVJlc291cmNlSGFuZGxlciBoYW5kbGVyKGNvbnRleHQs
IGFsbG9jYXRvcik7CisgICAgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKK30K
Kwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoKQogewogICAgIGlmICghcm9v
dExheWVyKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTM4MiwxOCArNDI3LDE4IEBAIHZvaWQgQ0NM
YXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMoKQogICAgIGlmICh2aWV3cG9ydFNpemUoKS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7
CisgICAgcGFpbnRDb250ZW50cyhyb290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVI
b3N0Ojp1cGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQordm9pZCBDQ0xheWVy
VHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAg
IFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOwor
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMiLCB0aGlzLCAw
KTsKIAogICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkg
LSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKICAgICAgICAgTGF5ZXJDaHJv
bWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKICAgICAg
ICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7CiAKLSAgICAgICAgVXBkYXRlSGFuZGxl
ciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOworICAgICAgICBQYWludEhhbmRsZXIgaGFuZGxlciht
X3Byb3h5LmdldCgpKTsKICAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
aGFuZGxlcik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAppbmRleCA5ZTQx
YWQyLi5jMzJlMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaApAQCAtMTg4LDcgKzE4
OCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCk7
CiAKICAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZSgpOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKCk7
CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKTsKKyAgICB2b2lkIHByZXBhcmVD
b21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciop
OworICAgIHZvaWQgcGFpbnRDb250ZW50cygpOwogCiAgICAgdm9pZCBmb3JFYWNoQ29tcG9zaXRv
clJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5
U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxBbmRTY2FsZVNldCYpOwpAQCAtMjAwLDEwICsy
MDIsMzUgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgaW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgot
ICAgIGNsYXNzIFVwZGF0ZUhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFu
ZGxlciB7CisgICAgY2xhc3MgTmVlZFJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpIYW5kbGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFVwZGF0ZUhhbmRsZXIo
Q0NQcm94eSopOwotICAgICAgICB2aXJ0dWFsIH5VcGRhdGVIYW5kbGVyKCk7CisgICAgICAgIE5l
ZWRSZXNvdXJjZUhhbmRsZXIoKTsKKyAgICAgICAgdmlydHVhbCB+TmVlZFJlc291cmNlSGFuZGxl
cigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKKworICAgICAgICBpbnQgcmVzb3VyY2VzKCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0K
KworICAgIHByaXZhdGU6CisgICAgICAgIGludCBtX3Jlc291cmNlczsKKyAgICB9OworCisgICAg
Y2xhc3MgUHJlcGFyZVJlc291cmNlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVy
OjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgICAgIHZpcnR1YWwg
flByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBHcmFw
aGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2Fs
bG9jYXRvcjsKKyAgICB9OworCisgICAgY2xhc3MgUGFpbnRIYW5kbGVyIDogcHVibGljIExheWVy
VGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUGFpbnRIYW5k
bGVyKENDUHJveHkqKTsKKyAgICAgICAgdmlydHVhbCB+UGFpbnRIYW5kbGVyKCk7CiAKICAgICAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCkBAIC0y
MTgsNyArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZFZpc2libGVMYXllcnMoY29u
c3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVM
aXN0KTsKIAogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qKTsKLSAgICB2
b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKik7CisgICAgdm9pZCBwYWludENvbnRlbnRz
KExheWVyQ2hyb21pdW0qKTsKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwogCiAgICAg
aW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFk
UHJveHkuY3BwCmluZGV4IDJkM2Q3YzIuLjkyNzMzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xNDgsMTYgKzE0OCwxNyBAQCB2b2lkIENDU2luZ2xlVGhy
ZWFkUHJveHk6OmRvQ29tbWl0KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWluVGhyZWFk
KCkpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIgPSBhZG9wdFB0cihuZXcgQ0NUZXh0
dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3Io
KSkpOworICAgIC8vIFByZXBhcmUgY29tcG9zaXRvciByZXNvdXJjZXMKKyAgICBpZiAobV9sYXll
clRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKSkKKyAgICAgICAgbV9sYXllclRy
ZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigp
KTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRy
ZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CiAKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKICAg
ICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xh
eWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwotCi0gICAgICAgIHdoaWxlIChtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlci0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
MSkpIHsgfQorICAgICAgICB3aGlsZSAobV90ZXh0dXJlVXBkYXRlci51cGRhdGUobV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+
YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAgICAg
ICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNp
YmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVh
ZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKQEAgLTE3Myw4ICsxNzQsNiBAQCB2b2lkIEND
U2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0
LT5jb21taXRDb21wbGV0ZSgpOwogICAgIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1l
ID0gdHJ1ZTsKLQotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyLmNsZWFyKCk7CiB9CiAKIHZv
aWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQpAQCAtMjE1LDEyICsyMTQs
MTAgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKIAogdm9pZCBDQ1NpbmdsZVRo
cmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwg
Y29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0g
ICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyKTsKLQogICAgIGlmIChtX2xheWVyVHJl
ZUhvc3RJbXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMpCi0gICAgICAgIG1fY3Vy
cmVudFRleHR1cmVVcGRhdGVyLT5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3Qp
OworICAgICAgICBtX3RleHR1cmVVcGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CiAgICAgZWxzZQotICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPmFsbG9jYXRv
cigpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3Qo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9
CiAKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSBy
ZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgKaW5kZXggZDViYzEzMS4uNzgzYThkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2lu
Z2xlVGhyZWFkUHJveHkuaApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiY2MvQ0NDb21w
bGV0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5j
bHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NM
YXllclRyZWVIb3N0OwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIAogY2xhc3MgQ0NTaW5nbGVU
aHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsK
IHB1YmxpYzoKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV90aW1lc1JlY3Jl
YXRlU2hvdWxkRmFpbDsgLy8gVXNlZCBkdXJpbmcgdGVzdGluZy4KICAgICBib29sIG1fbmV4dEZy
YW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lOwogCi0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+
IG1fY3VycmVudFRleHR1cmVVcGRhdGVyOworICAgIENDVGV4dHVyZVVwZGF0ZXIgbV90ZXh0dXJl
VXBkYXRlcjsKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJ
biBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVy
ZVVwZGF0ZXIuY3BwCmluZGV4IGRmNzcyNDQuLmE2MWMzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0zOCwxMCArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0
ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2Nh
dG9yKQorQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcigpCiB7Ci0gICAgQVNTRVJU
KG1fYWxsb2NhdG9yKTsKIH0KIAogQ0NUZXh0dXJlVXBkYXRlcjo6fkNDVGV4dHVyZVVwZGF0ZXIo
KQpAQCAtNzEsNyArNjksNyBAQCBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllcy5sYXN0KCk7Ci0g
ICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvciwg
ZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAgZW50cnkubV90
ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9k
ZXN0UmVjdCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Rl
eHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggYzM3YWYzNC4uYWI2NTllYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJl
VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzMsMTEgKzMzLDEwIEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRv
cjsKIAogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgQ0NUZXh0dXJlVXBk
YXRlcihUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgQ0NUZXh0dXJlVXBkYXRlcigpOwogICAgIH5D
Q1RleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVy
OjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpOwpAQCAtNDksOCArNDgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCk7CiAK
LSAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IoKSB7IHJldHVybiBtX2FsbG9jYXRvcjsg
fQotCiBwcml2YXRlOgogICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7CiAgICAgICAgIExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqIG1fdGV4dHVyZTsKQEAgLTU4LDcgKzU1LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0OwogICAgIH07CiAKLSAgICBUZXh0dXJlQWxs
b2NhdG9yKiBtX2FsbG9jYXRvcjsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggOWZhYjhkOS4uZWZhYWIyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM4OCw3ICszODgsMTYgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91
YmxlIGZyYW1lQmVnaW5UaW0KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCiAgICAg
bV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKLSAgICBtX2xheWVyVHJlZUhvc3Qt
PnVwZGF0ZUxheWVycygpOworCisgICAgaWYgKG1fbGF5ZXJUcmVlSG9zdC0+bmVlZHNDb21wb3Np
dG9yUmVzb3VyY2VzKCkpIHsKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSBjb21wb3NpdG9yIHJlc291
cmNlcyByZXF1aXJlIGZvciBmcmFtZS4KKyAgICAgICAgVFJBQ0VfRVZFTlQoImFsbG9jYXRlIiwg
dGhpcywgMCk7CisgICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247CisgICAgICAg
IENDUHJveHk6OmltcGxUaHJlYWQoKS0+cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMs
ICZDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQsIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pKSk7CisgICAgICAgIGNvbXBsZXRpb24ud2Fp
dCgpOworICAgIH0KKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygpOwogCiAg
ICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwgd2Ugc2V0
IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVlIG5vdywg
aXQgbWVhbnMgc2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXROZWVkc0Nv
bW1pdApAQCAtNDEyLDYgKzQyMSwyMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVB
bmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQogICAgIEFT
U0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJlciA9PSBz
ZXF1ZW5jZU51bWJlcik7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVz
b3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQoreworICAg
IFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbk9uSW1w
bFRocmVhZCIsIHRoaXMsIDApOworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9uRXZlbnRP
bkltcGxUaHJlYWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgaWYgKCFtX2xh
eWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRv
clJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIGNvbXBsZXRpb24tPnNp
Z25hbCgpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbkltcGxUaHJl
YWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCiB7CiAgICAgQVNTRVJUKCFtX2NvbW1p
dENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CkBAIC00MTksMTAgKzQ0Myw3IEBAIHZvaWQg
Q0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0
ZUVudHJ5PiBlbnRyeSkKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCi0g
ICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQdHIobmV3
IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkpKTsKLQotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5h
cHBlbmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVz
dFJlY3QpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuYXBwZW5kKGVudHJ5LT5t
X3RleHR1cmUsIGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsKIH0KIAog
dm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCkBAIC00NDMsMjkgKzQ2NCwyMyBAQCB2b2lkIENDVGhy
ZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVu
dCogY29tcGxldGlvbgogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0
ZXMoKSBjb25zdAogewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7CisgICAgcmV0dXJuIG1fdGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMoKTsKIH0KIAogdm9pZCBDQ1RocmVh
ZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2VzKCkKIHsKICAgICBUUkFD
RV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNl
cyIsIHRoaXMsIDApOwogICAgIHN0YXRpYyBjb25zdCBpbnQgVXBkYXRlc1BlckZyYW1lID0gOTk5
OTk7Ci0gICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLT51cGRh
dGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOworICAg
IG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmNvbnRleHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKIH0KIAogdm9pZCBDQ1RocmVhZFByb3h5Ojpz
Y2hlZHVsZWRBY3Rpb25Db21taXQoKQogewogICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5
OjpzY2hlZHVsZWRBY3Rpb25Db21taXQiLCB0aGlzLCAwKTsKKyAgICBBU1NFUlQoIW1fdGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMoKSk7CiAgICAgQVNTRVJUKG1fY29t
bWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKIAotICAgIGlmIChtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZCkgewotICAgICAgICBBU1NFUlQoIW1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpKTsKLSAgICAgICAgbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKLSAgICB9CisgICAgbV90ZXh0
dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwogCiAgICAgbV9sYXllclRyZWVIb3N0SW1w
bC0+YmVnaW5Db21taXQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDMyNjYzOTAu
LmYxMjQ0YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgogI2luY2x1ZGUgImNjL0NDU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBk
YXRlci5oIgogI2luY2x1ZGUgImNjL0NDVGhyZWFkLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5o
PgogCkBAIC05OSw2ICsxMDAsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFzc093blB0cjxD
Q1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQo
KTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CisgICAgdm9pZCBwcmVwYXJlRnJh
bWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4pOwogICAgIHZv
aWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAg
ICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CkBA
IC0xMzUsMTAgKzEzNywxMSBAQCBwcml2YXRlOgogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4g
dGhyZWFkIGlzIHdhaXRpbmcgb24gYSBjb21taXQgdG8gY29tcGxldGUuCiAgICAgQ0NDb21wbGV0
aW9uRXZlbnQqIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkOwotICAgIE93blB0
cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsK
IAogICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxkIHBvc3QgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXds
eUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOworCisgICAgQ0NUZXh0dXJlVXBkYXRlciBtX3Rl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggMWZjMWJmNS4u
NDMxM2ZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC05NjYsMTIgKzk2NiwyMiBAQCBwdWJsaWM6CiAKICAgICAg
ICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1
cmUuZ2V0KCk7IH0KIAotICAgICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0
IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgbmVl
ZFByZXBhcmVSZWN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+bmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wcmVwYXJlUmVjdCgpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnBh
aW50Q29udGVudHNSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+dXBkYXRlUmVjdCgp
OwogICAgICAgICAgICAgfQpAQCAtMTAxMSw5ICsxMDIxLDkgQEAgcHVibGljOgogICAgICAgICBD
b250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyogbV9sYXllcjsKICAgICB9Owog
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmc+IGNyZWF0ZShDQ0xheWVyRGVsZWdhdGUqIGRlbGVnYXRlKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NM
YXllckRlbGVnYXRlKiBkZWxlZ2F0ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3QpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRy
YWNraW5nKGRlbGVnYXRlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExh
eWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoZGVsZWdhdGUsIG5lZWRQcmVwYXJlUmVjdCkp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBD
Q0xheWVyVHJlZUhvc3QqKQpAQCAtMTAyOCwyMiArMTAzOCwzMSBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBwcmVwYXJlUmVjdCgpIHsgbV9wcmVwYXJlUmVjdENvdW50Kys7IH0KICAgICBpbnQgcHJlcGFy
ZVJlY3RDb3VudCgpIHsgcmV0dXJuIG1fcHJlcGFyZVJlY3RDb3VudDsgfQogCisgICAgdm9pZCBw
YWludENvbnRlbnRzUmVjdCgpIHsgbV9wYWludENvbnRlbnRzUmVjdENvdW50Kys7IH0KKyAgICBp
bnQgcGFpbnRDb250ZW50c1JlY3RDb3VudCgpIHsgcmV0dXJuIG1fcGFpbnRDb250ZW50c1JlY3RD
b3VudDsgfQorCiAgICAgdm9pZCB1cGRhdGVSZWN0KCkgeyBtX3VwZGF0ZVJlY3RDb3VudCsrOyB9
CiAgICAgaW50IHVwZGF0ZVJlY3RDb3VudCgpIHsgcmV0dXJuIG1fdXBkYXRlUmVjdENvdW50OyB9
CiAKKyAgICBpbnQgbmVlZFByZXBhcmVSZWN0KCkgeyByZXR1cm4gbV9uZWVkUHJlcGFyZVJlY3Q7
IH0KKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRh
dGVUcmFja2luZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlKQorICAgIGV4cGxpY2l0IENvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdh
dGUsIGJvb2wgbmVlZFByZXBhcmVSZWN0KQogICAgICAgICA6IENvbnRlbnRMYXllckNocm9taXVt
KGRlbGVnYXRlKQorICAgICAgICAsIG1fbmVlZFByZXBhcmVSZWN0KG5lZWRQcmVwYXJlUmVjdCkK
ICAgICAgICAgLCBtX3BhaW50Q29udGVudHNDb3VudCgwKQogICAgICAgICAsIG1fcHJlcGFyZVJl
Y3RDb3VudCgwKQorICAgICAgICAsIG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCgwKQogICAgICAg
ICAsIG1fdXBkYXRlUmVjdENvdW50KDApCiAgICAgewogICAgICAgICBzZXRCb3VuZHMoSW50U2l6
ZSgxMCwgMTApKTsKICAgICB9CiAKICAgICBSZWZQdHI8Q29udGVudExheWVyVGV4dHVyZVVwZGF0
ZXI+IG1fY29udGVudExheWVyVGV4dHVyZVVwZGF0ZXI7CisgICAgYm9vbCBtX25lZWRQcmVwYXJl
UmVjdDsKICAgICBpbnQgbV9wYWludENvbnRlbnRzQ291bnQ7CiAgICAgaW50IG1fcHJlcGFyZVJl
Y3RDb3VudDsKKyAgICBpbnQgbV9wYWludENvbnRlbnRzUmVjdENvdW50OwogICAgIGludCBtX3Vw
ZGF0ZVJlY3RDb3VudDsKIH07CiAKQEAgLTEwNTIsNyArMTA3MSw3IEBAIGNsYXNzIENDTGF5ZXJU
cmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qgewog
cHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlKCkKICAgICAgICAg
OiBtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUodGhpcykKLSAgICAgICAgLCBtX3VwZGF0ZUNo
ZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgm
bV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlKSkKKyAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5
ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0
T3BhY2l0eUNoYW5nZURlbGVnYXRlLCB0cnVlKSkKICAgICB7CiAgICAgfQogCkBAIC0xMDc3LDYg
KzEwOTYsMTEgQEAgcHVibGljOgogICAgICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNob3Vs
ZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCiAgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBh
cyBwcmVwYXJlUmVjdCgpLgogICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5w
cmVwYXJlUmVjdENvdW50KCksCisgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXIt
PnBhaW50Q29udGVudHNSZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgpIHNo
b3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1l
cyBhcyBwYWludENvbnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVj
a0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCksCiAgICAgICAgICAgICAgICAgICBtX3Vw
ZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKIAogICAgICAgICAvLyBjbGVhciBt
X3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NMYXllclRyZWVIb3N0IGRpZXMuCkBAIC0xMDkzLDQgKzEx
MTcsNDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlLCBydW5NdWx0
aVRocmVhZCkKICAgICBydW5UZXN0KHRydWUpOwogfQogCisvLyBwcmVwYXJlUmVjdCgpIHNob3Vs
ZCBub3QgYmUgY2FsbGVkIHdoZW4gbmVlZFByZXBhcmVSZWN0KCkgcmV0dXJucyBmYWxzZS4KK2Ns
YXNzIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0IDogcHVibGljIENDTGF5ZXJUcmVl
SG9zdFRlc3QgeworcHVibGljOgorICAgIENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0
KCkKKyAgICAgICAgOiBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRo
VXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV9kZWxlZ2F0ZSwgZmFsc2UpKQorICAgIHsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKG1fdXBkYXRlQ2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5
ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnQoSW50U2l6ZSgxMCwgMTApKTsKKworICAgICAgICBwb3N0
U2V0TmVlZHNDb21taXRUb01haW5UaHJlYWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQg
Y29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHsKKyAg
ICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQor
ICAgIHsKKyAgICAgICAgLy8gcGFpbnRDb250ZW50cygpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVk
IG9uY2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29u
dGVudHNDb3VudCgpKTsKKworICAgICAgICAvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgaGF2
ZSBiZWVuIGNhbGxlZC4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fdXBkYXRlQ2hlY2tMYXllci0+
cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBh
aW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXIt
PnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hl
Y2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBNb2Nr
TGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOworICAgIFJlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOworfTsKKworVEVTVF9GKEND
TGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBy
dW5UZXN0KHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggMWMy
MjQxZi4uOTNjZmI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
IAogICAgICAgICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90
ZXh0dXJlLmdldCgpOyB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IElu
dFJlY3QmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120686</attachid>
            <date>2011-12-28 11:33:09 -0800</date>
            <delta_ts>2011-12-29 07:24:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initialize-frame-resources.diff</filename>
            <type>text/plain</type>
            <size>52822</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggMzdiYTM0Ni4uOGVhNDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ1LDkgKzQ1LDExIEBAIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVj
dChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4
dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiBQYXNzUmVmUHRy
PEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVy
LCBib29sIHVzZU1hcFRleFN1YkltYWdlKQpAQCAtOTEsMTIgKzkzLDEwIEBAIHZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwKICAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRz
KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwog
fQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2NhbnZh
cyk7Ci0KLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotICAg
IG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291
cmNlUmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggZTVmY2Y2NC4uMTkzODg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJl
VXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVk
VGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVu
dHNTY2FsZSk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGM4
MDRkNGMuLmRmMDBlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUo
Qml0bWFwU2tQaWN0dXJlQ2FudmFzCiB7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkK
IHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRl
cyhzb3VyY2VSZWN0LnNpemUoKSwgdGV4dHVyZSgpLT5mb3JtYXQoKSk7CiAgICAgbV9waXhlbERh
dGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKQEAgLTUxLDkgKzUx
LDEwIEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFp
bnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgpLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlKCktPmJpbmRUZXh0
dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlk
KCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0
KCkpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRl
eHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CiAgICAgbV9w
aXhlbERhdGEuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA2OWI5MDVjLi41NjFhODI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAg
ICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcios
IFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggN2QzYmYwNy4uNjVmODhmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC00Nyw4ICs0Nyw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKK0NhbnZh
czJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJE
TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
CiAgICAgOiBtX2xheWVyKGxheWVyKQorICAgICwgbV90ZXh0dXJlKHRleHR1cmUpCiB7CiB9CiAK
QEAgLTU2LDkgKzU3LDE5IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
On5VcGRhdGVyVGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK2Jvb2wgQ2FudmFzMkRMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKIHsKLSAgICBtX2xheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgcmV0dXJu
ICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworfQorCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX3RleHR1cmUtPmFsbG9jYXRl
KGFsbG9jYXRvcik7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7Cisg
ICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKIH0KIAogUGFz
c1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQpAQCAt
NzIsNyArODMsNiBAQCBDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1
bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSQogICAgICwgbV9zaXplKHNpemUp
CiAgICAgLCBtX2JhY2tUZXh0dXJlSWQoMCkKICAgICAsIG1fZmJvKDApCi0gICAgLCBtX3VwZGF0
ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiAgICAgR0xDKG1fY29u
dGV4dCwgbV9mYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwogfQpAQCAtMTAy
LDEyICsxMTIsMTIgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgp
IGNvbnN0CiAgICAgICAgICYmIG1fY29udGV4dCAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9f
RVJST1IpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lm
RGlydHkoKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGly
dHkoKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZnJvbnRUZXh0dXJlLT5yZXNlcnZlKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEp
OworICAgIG1fdXBkYXRlclRleHR1cmUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3NpemUsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKTsKIAogICAgIGlmICghbmVlZHNEaXNwbGF5KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTEzNywxNyArMTQ3LDE1IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVt
OjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHZvaWQgQ2FudmFzMkRM
YXllckNocm9taXVtOjpzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1h
bmFnZXIpCiB7CiAgICAgaWYgKHRleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX2Zyb250VGV4dHVy
ZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOworICAgICAgICBtX3Vw
ZGF0ZXJUZXh0dXJlID0gVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzLCBNYW5hZ2VkVGV4dHVy
ZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Zyb250VGV4
dHVyZS5jbGVhcigpOworICAgICAgICBtX3VwZGF0ZXJUZXh0dXJlLmNsZWFyKCk7CiB9CiAKLXZv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yICphbGxvY2F0b3IpCit2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9m
cm9udFRleHR1cmUtPmlzVmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0
LCBhbGxvY2F0b3IpOworICAgIEFTU0VSVChtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0dXJlKCktPnRl
eHR1cmVJZCgpKTsKKyAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgbV91cGRhdGVyVGV4dHVyZS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CiAK
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX2JhY2tUZXh0dXJlSWQsIDApKTsKQEAgLTE1OCw2ICsxNjYsOSBAQCB2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dAogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewor
ICAgIGlmICghbV9iYWNrVGV4dHVyZUlkIHx8ICFtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0dXJlKCkt
PmlzVmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3Qo
KSwgSW50UmVjdCgpKTsKIH0KIApAQCAtMTY2LDE3ICsxNzcsMTcgQEAgdm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIENh
bnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwogCiAgICAgQ0NDYW52
YXNMYXllckltcGwqIGNhbnZhc0xheWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwq
PihsYXllcik7Ci0gICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX2Zyb250VGV4dHVyZS0+
dGV4dHVyZUlkKCkpOworICAgIGNhbnZhc0xheWVyLT5zZXRUZXh0dXJlSWQobV91cGRhdGVyVGV4
dHVyZS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CiB9CiAKIHZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjp1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKQogewotICAgIG1fZnJvbnRUZXh0dXJl
LT51bnJlc2VydmUoKTsKKyAgICBtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0dXJlKCktPnVucmVzZXJ2
ZSgpOwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygp
CiB7Ci0gICAgbV9mcm9udFRleHR1cmUuY2xlYXIoKTsKKyAgICBtX3VwZGF0ZXJUZXh0dXJlLmNs
ZWFyKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggYmZj
NWQ1OC4uZTEwODg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQ2
LDE5ICs0NiwyNCBAQCBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFz
TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKENhbnZhczJETGF5ZXJDaHJv
bWl1bSogbGF5ZXIpCisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBj
cmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllciwgUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4gdGV4dHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBVcGRhdGVyVGV4dHVyZShsYXllciwgdGV4dHVyZSkpOwogICAgICAgICB9CiAKICAgICAgICAg
dmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVj
dCAqLyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVz
dFJlY3QgKi8pOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1
cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0
dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsK
IAogICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgICAgIE93blB0
cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IEludFNpemUmKTsKQEAgLTY5LDEwICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopOwotICAgIHZvaWQgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAg
ICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CkBA
IC04OSw3ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgdW5zaWdu
ZWQgbV9iYWNrVGV4dHVyZUlkOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mYm87Ci0gICAgT3du
UHRyPE1hbmFnZWRUZXh0dXJlPiBtX2Zyb250VGV4dHVyZTsKICAgICBPd25QdHI8VXBkYXRlclRl
eHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDFmM2I2NDQuLjk0MjFkNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00NCw2ICs0NCwxNiBAQCBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKK2Jvb2wg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKK3sK
KyAgICByZXR1cm4gIW1fdGV4dHVyZS0+dGV4dHVyZUlkKCk7Cit9CisKK3ZvaWQgQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJl
Y3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fdGV4dHVyZS0+
YWxsb2NhdGUoYWxsb2NhdG9yKTsKK30KKwogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBw
YWludGVyKQogICAgIDogbV9wYWludGVyKHBhaW50ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYmU5ZmYxMy4uZWIzNjI2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDUsNyArNDUsMTAgQEAgcHVibGlj
OgogCiAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBt
X3RleHR1cmUuZ2V0KCk7IH0KIAotICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgYm9v
bCBuZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNv
dXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKTsKKworICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
Pik7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggOGYy
ZGU4YS4uYjFkNmRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zOCwxMiAr
MzgsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUGFzc093blB0cjxTa0NhbnZh
cz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQogewotICAgIC8vIEFs
bG9jYXRlIHNvIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIHRleHR1cmUgaWQuCi0gICAgdGV4dHVyZS0+
YWxsb2NhdGUoYWxsb2NhdG9yKTsKLQogICAgIEdyQ29udGV4dCogZ3JDb250ZXh0ID0gY29udGV4
dC0+Z3JDb250ZXh0KCk7CiAgICAgSW50U2l6ZSBjYW52YXNTaXplID0gdGV4dHVyZS0+c2l6ZSgp
OwogICAgIEdyUGxhdGZvcm1UZXh0dXJlRGVzYyB0ZXh0dXJlRGVzYzsKQEAgLTY3LDkgKzYzLDkg
QEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0
KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cisg
ICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPiBwYWludGVyKQpAQCAtOTcsMTUgKzkzLDE3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNh
bXBsZWRUZXhlbEZvcm1hdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
CiAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJlICp0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICBBU1NF
UlQodGV4dHVyZS0+dGV4dHVyZUlkKCkpOworCiAgICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0
aGUgY29ycmVjdCBHTCBjb250ZXh0LgogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdMIHN0YXRlLgogICAg
IGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKIAogICAgIC8vIENyZWF0ZSBh
biBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KLSAgICBPd25QdHI8U2tDYW52YXM+IGNh
bnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVy
ZSk7CisgICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZh
cyhjb250ZXh0LCB0ZXh0dXJlKTsKIAogICAgIGNhbnZhcy0+Y2xpcFJlY3QoU2tSZWN0KGRlc3RS
ZWN0KSk7CiAgICAgLy8gVGhlIGNvbXBvc2l0b3IgZXhwZWN0cyB0aGUgdGV4dHVyZXMgdG8gYmUg
dXBzaWRlLWRvd24gc28gaXQgY2FuIGZsaXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXgg
MjFhZTNkZC4uZTM3YTk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMyLDYgKzMy
LDggQEAKIAogI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
IAorY2xhc3MgU2tDYW52YXM7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewpAQCAtNDEsNyArNDMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0
dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IElu
dFJlY3QmIC8qIGRlc3RSZWN0ICovKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7
IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC01NCw3ICs1Niw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVh
dGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3Jt
YXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZvaWQg
dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
TWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIE1hbmFnZWRUZXh0dXJlICosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggN2M4MWI2NS4u
ODY4YjE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBAIC01NCw5ICs1NCwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRl
c3RSZWN0KQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQz
RCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRl
eHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CisgICAgICAgICAgICBBU1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAg
ICAgICAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8y
RCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgICAgICAgICB0ZXh0dXJlVXBkYXRlcigp
LT51cGRhdGVUZXh0dXJlUmVjdChjb250ZXh0LCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBzb3VyY2VS
ZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CkBAIC04MywxNSArODUs
MTMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBs
ZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3Jt
YXRCR1JBOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRl
clRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIGludCAvKiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRz
U2NhbGUgKi8pCiAgICAgewogICAgICAgICBtX3RleFN1YkltYWdlLnNldFN1YkltYWdlU2l6ZSh0
aWxlU2l6ZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIE1h
bmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2lnbmVkIGZvcm1hdCwgY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgewotICAgICAgICB0ZXh0
dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotCiAgICAgICAgIC8vIFNvdXJj
ZSByZWN0IHNob3VsZCBuZXZlciBnbyBvdXRzaWRlIHRoZSBpbWFnZSBwaXhlbHMsIGV2ZW4gaWYg
dGhpcwogICAgICAgICAvLyBpcyByZXF1ZXN0ZWQgYmVjYXVzZSB0aGUgdGV4dHVyZSBleHRlbmRz
IG91dHNpZGUgdGhlIGltYWdlLgogICAgICAgICBJbnRSZWN0IGNsaXBwZWRTb3VyY2VSZWN0ID0g
c291cmNlUmVjdDsKQEAgLTEwMSw3ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNsaXBwZWRE
ZXN0UmVjdC5tb3ZlKGNsaXBwZWRTb3VyY2VSZWN0LmxvY2F0aW9uKCkgLSBzb3VyY2VSZWN0Lmxv
Y2F0aW9uKCkpOwogICAgICAgICBjbGlwcGVkRGVzdFJlY3Quc2V0U2l6ZShjbGlwcGVkU291cmNl
UmVjdC5zaXplKCkpOwogCi0gICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2FkKG1faW1hZ2UucGl4
ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBlZERlc3RSZWN0LCB0
ZXh0dXJlLT5mb3JtYXQoKSwgY29udGV4dCk7CisgICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2Fk
KG1faW1hZ2UucGl4ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBl
ZERlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogICAgIH0KIAogICAgIHZvaWQgdXBkYXRlRnJv
bUltYWdlKE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBk
YXRlci5oCmluZGV4IGQwMDYzZWIuLmE2NjdkMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyLmgKQEAgLTQ5LDggKzQ5LDE1IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVy
ZSgpIHsgfQogCiAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJl
dHVybiAwOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChjb25zdCBJbnRSZWN0
JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3Qo
R3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKKworICAgICAgICAvLyBwcmVw
YXJlUmVjdCgpIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgdGhpcyByZXR1cm5zIHRydWUuCisgICAg
ICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBmYWxzZTsgfQorICAg
ICAgICAvLyBUaGlzIHJ1bnMgc3luY2hyb25vdXNseSBvbiB0aGUgaW1wbCB0aHJlYWQgd2l0aCBz
YWZlIGFjY2VzcyB0byBtYWluIHRocmVhZCByZXNvdXJjZXMuCisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25z
dCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAq
LykgeyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBvbiB0aGUgbWFpbiB0aHJlYWQgYWZ0ZXIgY2Fs
bHMgdG8gbmVlZFByZXBhcmVSZWN0KCkgYW5kIHByZXBhcmVSZWN0KCkgYnV0IGJlZm9yZSB1cGRh
dGVSZWN0KCkuCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKSB7IH0KKyAgICAgICAgLy8gVGhpcyBydW5zIGFzeW5j
aHJvbm91c2x5IG9uIHRoZSBpbXBsIHRocmVhZC4gQWNjZXNzIHRvIG1haW4gdGhyZWFkIHJlc291
cmNlcyBpcyB1bnNhZmUuCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpID0gMDsKICAgICB9OwogCiAgICAgY2xhc3MgSGFuZGxlciB7CkBAIC03Myw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbXBvbmVudCBv
cmRlciBpbiB0aGUgc2FtcGxlZCB0ZXhlbC4KICAgICAvLyBJZiB0aGUgZm9ybWF0IGlzIFRleGVs
Rm9ybWF0QkdSQSwgdmVjNC54IGlzIGJsdWUgYW5kIHZlYzQueiBpcyByZWQuCiAgICAgdmlydHVh
bCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVG
b3JtYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0
JiAvKiBjb250ZW50UmVjdCAqLywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAv
KiBib3JkZXJUZXhlbHMgKi8sIGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiAvKiBjb250ZW50UmVjdCAq
LywgY29uc3QgSW50U2l6ZSYgLyogdGlsZVNpemUgKi8sIGludCAvKiBib3JkZXJUZXhlbHMgKi8s
IGZsb2F0IC8qIGNvbnRlbnRzU2NhbGUgKi8pIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vV2ViR0xMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNWJlMGZiYS4uZGZkNGIx
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
V2ViR0xMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCkBAIC01Miw3ICs1Miw3IEBAIFdl
YkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6On5VcGRhdGVyVGV4dHVyZSgpCiB7CiB9
CiAKLXZvaWQgV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQordm9p
ZCBXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25z
dCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKIHsKICAgICBtX2xheWVyLT51cGRhdGVDb21wb3Np
dG9yUmVzb3VyY2VzKGNvbnRleHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAppbmRl
eCAyMGJlYzlmLi4wZjRhZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaApAQCAtNTUs
NyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsK
IAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRl
eHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29u
dGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoV2Vi
R0xMYXllckNocm9taXVtKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA4
NjI0YWQ4Li45N2RjZDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQ5
LDE4ICs0OSw0OSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdDo6YW55TGF5ZXJUcmVlSG9zdEluc3Rh
bmNlRXhpc3RzKCkKICAgICByZXR1cm4gbnVtTGF5ZXJUcmVlSW5zdGFuY2VzID4gMDsKIH0KIAot
Q0NMYXllclRyZWVIb3N0OjpVcGRhdGVIYW5kbGVyOjpVcGRhdGVIYW5kbGVyKENDUHJveHkqIHBy
b3h5KQorQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjpOZWVkUmVzb3VyY2VI
YW5kbGVyKCkKKyAgICA6IG1fcmVzb3VyY2VzKDApCit7Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6
TmVlZFJlc291cmNlSGFuZGxlcjo6fk5lZWRSZXNvdXJjZUhhbmRsZXIoKQoreworfQorCit2b2lk
IENDTGF5ZXJUcmVlSG9zdDo6TmVlZFJlc291cmNlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3Qg
Ki8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIGlmICh0ZXh0dXJlLT5u
ZWVkUHJlcGFyZVJlY3QoKSkKKyAgICAgICAgbV9yZXNvdXJjZXMrKzsKK30KKworQ0NMYXllclRy
ZWVIb3N0OjpQcmVwYXJlUmVzb3VyY2VIYW5kbGVyOjpQcmVwYXJlUmVzb3VyY2VIYW5kbGVyKEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCisg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKK3sK
K30KKworQ0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVzb3VyY2VIYW5kbGVyOjp+UHJlcGFyZVJl
c291cmNlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpQcmVwYXJlUmVz
b3VyY2VIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVy
ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit7
CisgICAgaWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICB0ZXh0dXJlLT5w
cmVwYXJlUmVjdChtX2NvbnRleHQsIG1fYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7
Cit9CisKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRIYW5kbGVyOjpQYWludEhhbmRsZXIoQ0NQcm94
eSogcHJveHkpCiAgICAgOiBtX3Byb3h5KHByb3h5KQogewogfQogCi1DQ0xheWVyVHJlZUhvc3Q6
OlVwZGF0ZUhhbmRsZXI6On5VcGRhdGVIYW5kbGVyKCkKK0NDTGF5ZXJUcmVlSG9zdDo6UGFpbnRI
YW5kbGVyOjp+UGFpbnRIYW5kbGVyKCkKIHsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlVw
ZGF0ZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3Zv
aWQgQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChzb3VyY2VSZWN0
KTsKKyAgICB0ZXh0dXJlLT5wYWludENvbnRlbnRzUmVjdChzb3VyY2VSZWN0KTsKICAgICBtX3By
b3h5LT51cGRhdGUodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCkBAIC0zOTgs
MzQgKzQyOSwxNCBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZVRvVXBkYXRlKExheWVy
Q2hyb21pdW0qIHJvb3RMYXllcikKICAgICB9CiAKICAgICBhcHBlbmRWaXNpYmxlTGF5ZXJzKG1f
cmVuZGVyU3VyZmFjZVVwZGF0ZUxpc3QsIG1fbGF5ZXJVcGRhdGVMaXN0KTsKLX0KLQotdm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycygpCi17Ci0gICAgaWYgKCFyb290TGF5ZXIoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgdXBkYXRlTGF5ZXJzKHJvb3RMYXllcigpKTsKLX0KLQotdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIp
Ci17Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzIiwgdGhp
cywgMCk7CiAKICAgICBmb3IgKGludCBsYXllckluZGV4ID0gbV9sYXllclVwZGF0ZUxpc3Quc2l6
ZSgpIC0gMTsgbGF5ZXJJbmRleCA+PSAwIDsgLS1sYXllckluZGV4KSB7CiAgICAgICAgIExheWVy
Q2hyb21pdW0qIGxheWVyID0gbV9sYXllclVwZGF0ZUxpc3RbbGF5ZXJJbmRleF0uZ2V0KCk7CiAg
ICAgICAgIGxheWVyLT5wcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7Ci0gICAgICAgIGxheWVyLT5w
YWludENvbnRlbnRzSWZEaXJ0eSgpOwotCi0gICAgICAgIFVwZGF0ZUhhbmRsZXIgaGFuZGxlciht
X3Byb3h5LmdldCgpKTsKLSAgICAgICAgbGF5ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
aGFuZGxlcik7CiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVVwZGF0ZUxh
eWVycygpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVByZXBhcmVUb1VwZGF0ZSgpCiB7CiAg
ICAgaWYgKCFyb290TGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMzLDEyICs0NDQsMTIg
QEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmlkbGVVcGRhdGVMYXllcnMoKQogICAgIGlmICh2aWV3
cG9ydFNpemUoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlkbGVVcGRhdGVM
YXllcnMocm9vdExheWVyKCkpOworICAgIGlkbGVQcmVwYXJlVG9VcGRhdGUocm9vdExheWVyKCkp
OwogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVVwZGF0ZUxheWVycyhMYXllckNocm9t
aXVtKiByb290TGF5ZXIpCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVByZXBhcmVUb1VwZGF0
ZShMYXllckNocm9taXVtKiByb290TGF5ZXIpCiB7Ci0gICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJU
cmVlSG9zdDo6aWRsZVVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworICAgIFRSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3Q6OmlkbGVQcmVwYXJlVG9VcGRhdGUiLCB0aGlzLCAwKTsKIAogICAgIGlm
ICghbV90cmlnZ2VySWRsZVBhaW50cykKICAgICAgICAgcmV0dXJuOwpAQCAtNDU3LDEzICs0Njgs
NDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OmlkbGVVcGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1
bSogcm9vdExheWVyKQogICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlz
dC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKICAgICAgICAg
TGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQo
KTsKICAgICAgICAgbGF5ZXItPmlkbGVQcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CisgICAgfQor
CisgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1h
eExpbWl0Qnl0ZXMpOworfQorCitib29sIENDTGF5ZXJUcmVlSG9zdDo6bmVlZHNDb21wb3NpdG9y
UmVzb3VyY2VzKCkKK3sKKyAgICBOZWVkUmVzb3VyY2VIYW5kbGVyIGhhbmRsZXI7CisgICAgZm9y
RWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKKyAgICByZXR1cm4gaGFuZGxlci5yZXNv
dXJjZXMoKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnByZXBhcmVDb21wb3NpdG9yUmVz
b3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IpCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBv
c2l0b3JSZXNvdXJjZXMiLCB0aGlzLCAwKTsKKyAgICBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIGhh
bmRsZXIoY29udGV4dCwgYWxsb2NhdG9yKTsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNl
KGhhbmRsZXIpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cGFpbnRDb250ZW50cygpCit7
CisgICAgaWYgKCFyb290TGF5ZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHZpZXdw
b3J0U2l6ZSgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcGFpbnRDb250ZW50
cyhyb290TGF5ZXIoKSk7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRz
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKKworICAgIGZvciAoaW50IGxheWVySW5k
ZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxh
eWVySW5kZXgpIHsKKyAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRl
TGlzdFtsYXllckluZGV4XS5nZXQoKTsKICAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRp
cnR5KCk7CiAKLSAgICAgICAgVXBkYXRlSGFuZGxlciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOwor
ICAgICAgICBQYWludEhhbmRsZXIgaGFuZGxlcihtX3Byb3h5LmdldCgpKTsKICAgICAgICAgbGF5
ZXItPmZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7CiAgICAgfQotCi0gICAgbV9j
b250ZW50c1RleHR1cmVNYW5hZ2VyLT5zZXRNYXhNZW1vcnlMaW1pdEJ5dGVzKG1heExpbWl0Qnl0
ZXMpOwogfQogCiB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6YXBwZW5kVmlzaWJsZUxheWVyKExheWVy
Q2hyb21pdW0qIGxheWVyLCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdC5oCmluZGV4IDk0OTFmMmEuLjcwMjM2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCkBAIC0xOTEsOCArMTkxLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEhhdmVXaGVl
bEV2ZW50SGFuZGxlcnMoYm9vbCk7CiAKICAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZSgpOwotICAg
IHZvaWQgdXBkYXRlTGF5ZXJzKCk7Ci0gICAgdm9pZCBpZGxlVXBkYXRlTGF5ZXJzKCk7CisgICAg
dm9pZCBpZGxlUHJlcGFyZVRvVXBkYXRlKCk7CisgICAgYm9vbCBuZWVkc0NvbXBvc2l0b3JSZXNv
dXJjZXMoKTsKKyAgICB2b2lkIHByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBoaWNzQ29u
dGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgcGFpbnRDb250ZW50cygpOwog
CiAgICAgdm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6
OkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U2Nyb2xsQW5kU2NhbGUoY29uc3QgQ0NTY3JvbGxB
bmRTY2FsZVNldCYpOwpAQCAtMjA0LDEwICsyMDYsMzUgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wg
aW5pdGlhbGl6ZSgpOwogCiBwcml2YXRlOgotICAgIGNsYXNzIFVwZGF0ZUhhbmRsZXIgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgY2xhc3MgTmVlZFJlc291cmNl
SGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFVwZGF0ZUhhbmRsZXIoQ0NQcm94eSopOwotICAgICAgICB2aXJ0dWFsIH5V
cGRhdGVIYW5kbGVyKCk7CisgICAgICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIoKTsKKyAgICAgICAg
dmlydHVhbCB+TmVlZFJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgICAgICBpbnQgcmVzb3VyY2Vz
KCkgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGludCBt
X3Jlc291cmNlczsKKyAgICB9OworCisgICAgY2xhc3MgUHJlcGFyZVJlc291cmNlSGFuZGxlciA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxs
b2NhdG9yKik7CisgICAgICAgIHZpcnR1YWwgflByZXBhcmVSZXNvdXJjZUhhbmRsZXIoKTsKKwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUq
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAg
ICAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKKyAgICB9OworCisgICAgY2xhc3Mg
UGFpbnRIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAg
IHB1YmxpYzoKKyAgICAgICAgUGFpbnRIYW5kbGVyKENDUHJveHkqKTsKKyAgICAgICAgdmlydHVh
bCB+UGFpbnRIYW5kbGVyKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOwogCkBAIC0yMjIsOCArMjQ5LDkgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGFwcGVuZFZpc2libGVMYXllcnMoY29uc3QgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlVXBk
YXRlTGlzdCwgTGF5ZXJMaXN0JiB1cGRhdGVMaXN0KTsKIAogICAgIHZvaWQgcHJlcGFyZVRvVXBk
YXRlKExheWVyQ2hyb21pdW0qKTsKLSAgICB2b2lkIHVwZGF0ZUxheWVycyhMYXllckNocm9taXVt
Kik7Ci0gICAgdm9pZCBpZGxlVXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKKyAgICB2b2lk
IGlkbGVQcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgcGFpbnRDb250
ZW50cyhMYXllckNocm9taXVtKik7CisKICAgICB2b2lkIGNsZWFyUGVuZGluZ1VwZGF0ZSgpOwog
CiAgICAgaW50IG1fY29tcG9zaXRvcklkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xl
VGhyZWFkUHJveHkuY3BwCmluZGV4IDE0MjBmNzIuLmUzOGFjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwCkBAIC0xNDgsMTcgKzE0OCwyNSBAQCB2b2lkIENDU2lu
Z2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKIHsKICAgICBBU1NFUlQoQ0NQcm94eTo6aXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIgPSBhZG9wdFB0cihuZXcg
Q0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxv
Y2F0b3IoKSkpOworICAgIC8vIFByZXBhcmUgY29tcG9zaXRvciByZXNvdXJjZXMKKyAgICBpZiAo
bV9sYXllclRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKSkKKyAgICAgICAgbV9s
YXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJ
bXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvcigpKTsKIAotICAgIG1fbGF5ZXJUcmVlSG9zdC0+dXBkYXRlTGF5ZXJzKCk7Ci0gICAgbV9s
YXllclRyZWVIb3N0LT5pZGxlVXBkYXRlTGF5ZXJzKCk7CisgICAgbV9sYXllclRyZWVIb3N0LT5w
YWludENvbnRlbnRzKCk7CisKKyAgICAvLyBJZGxlIHVwZGF0ZQorICAgIG1fbGF5ZXJUcmVlSG9z
dC0+aWRsZVByZXBhcmVUb1VwZGF0ZSgpOworICAgIC8vIFByZXBhcmUgY29tcG9zaXRvciByZXNv
dXJjZXMKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMo
KSkKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyht
X2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
bnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250
ZW50cygpOwogCiAgICAgLy8gQ29tbWl0IGltbWVkaWF0ZWx5CiAgICAgewogICAgICAgICBEZWJ1
Z1Njb3BlZFNldEltcGxUaHJlYWQgaW1wbDsKICAgICAgICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
YmVnaW5Db21taXQoKTsKLQotICAgICAgICB3aGlsZSAobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIt
PnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIDEpKSB7IH0KKyAgICAgICAg
d2hpbGUgKG1fdGV4dHVyZVVwZGF0ZXIudXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgMSkpIHsgfQogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmJlZ2luQ29tbWl0T25JbXBs
VGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwogICAgICAgICBtX2xheWVyVHJlZUhv
c3RJbXBsLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdC0+dmlzaWJsZSgpKTsKICAgICAgICAg
bV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7CkBAIC0xNzQsOCArMTgyLDYgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5
Ojpkb0NvbW1pdCgpCiAgICAgfQogICAgIG1fbGF5ZXJUcmVlSG9zdC0+Y29tbWl0Q29tcGxldGUo
KTsKICAgICBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0ZWRGcmFtZSA9IHRydWU7Ci0KLSAgICBt
X2N1cnJlbnRUZXh0dXJlVXBkYXRlci5jbGVhcigpOwogfQogCiB2b2lkIENDU2luZ2xlVGhyZWFk
UHJveHk6OnNldE5lZWRzQ29tbWl0KCkKQEAgLTIxNiwxMiArMjIyLDEwIEBAIHZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6c3RvcCgpCiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6dXBkYXRl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIEFTU0VSVChtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlcik7Ci0KICAgICBpZiAobV9sYXllclRyZWVIb3N0SW1wbC0+c2V0dGlu
Z3MoKS5kZWxheVRleHR1cmVVcGRhdGVzKQotICAgICAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRl
ci0+YXBwZW5kKHRleHR1cmUsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgbV90ZXh0
dXJlVXBkYXRlci5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgIGVs
c2UKLSAgICAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250
ZXh0KCksIG1fY3VycmVudFRleHR1cmVVcGRhdGVyLT5hbGxvY2F0b3IoKSwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOworICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRleHQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiAvLyBDYWxsZWQgYnkg
dGhlIGxlZ2FjeSBzY2hlZHVsaW5nIHBhdGggKGUuZy4gd2hlcmUgcmVuZGVyX3dpZGdldCBkb2Vz
IHRoZSBzY2hlZHVsaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCmluZGV4
IGQ1YmMxMzEuLjc4M2E4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgK
QEAgLTI4LDEyICsyOCwxMiBAQAogI2luY2x1ZGUgImNjL0NDQ29tcGxldGlvbkV2ZW50LmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHku
aCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLWNs
YXNzIENDVGV4dHVyZVVwZGF0ZXI7CiAKIGNsYXNzIENDU2luZ2xlVGhyZWFkUHJveHkgOiBwdWJs
aWMgQ0NQcm94eSwgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6CkBAIC04NSw3
ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fdGltZXNSZWNyZWF0ZVNob3VsZEZhaWw7IC8v
IFVzZWQgZHVyaW5nIHRlc3RpbmcuCiAgICAgYm9vbCBtX25leHRGcmFtZUlzTmV3bHlDb21taXR0
ZWRGcmFtZTsKIAotICAgIE93blB0cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlcjsKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXI7CiB9OwogCiAv
LyBGb3IgdXNlIGluIHRoZSBzaW5nbGUtdGhyZWFkZWQgY2FzZS4gSW4gZGVidWcgYnVpbGRzLCBp
dCBwcmV0ZW5kcyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAppbmRl
eCBkZjc3MjQ0Li5hNjFjM2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcApA
QCAtMzgsMTAgKzM4LDggQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DQ1RleHR1cmVVcGRhdGVyOjpDQ1RleHR1cmVVcGRhdGVyKFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikKLSAgICA6IG1fYWxsb2NhdG9yKGFsbG9jYXRvcikKK0NDVGV4dHVyZVVw
ZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoKQogewotICAgIEFTU0VSVChtX2FsbG9jYXRvcik7CiB9
CiAKIENDVGV4dHVyZVVwZGF0ZXI6On5DQ1RleHR1cmVVcGRhdGVyKCkKQEAgLTcxLDcgKzY5LDcg
QEAgYm9vbCBDQ1RleHR1cmVVcGRhdGVyOjp1cGRhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIHNpemVfdCBjb3VudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBV
cGRhdGVFbnRyeSYgZW50cnkgPSBtX2VudHJpZXMubGFzdCgpOwotICAgICAgICBlbnRyeS5tX3Rl
eHR1cmUtPnVwZGF0ZVJlY3QoY29udGV4dCwgbV9hbGxvY2F0b3IsIGVudHJ5Lm1fc291cmNlUmVj
dCwgZW50cnkubV9kZXN0UmVjdCk7CisgICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVj
dChjb250ZXh0LCBlbnRyeS5tX3NvdXJjZVJlY3QsIGVudHJ5Lm1fZGVzdFJlY3QpOwogICAgICAg
ICBtX2VudHJpZXMucmVtb3ZlTGFzdCgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBk
YXRlci5oCmluZGV4IGMzN2FmMzQuLmFiNjU5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmgKQEAgLTMzLDExICszMywxMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBH
cmFwaGljc0NvbnRleHQzRDsKLWNsYXNzIFRleHR1cmVBbGxvY2F0b3I7CiAKIGNsYXNzIENDVGV4
dHVyZVVwZGF0ZXIgewogcHVibGljOgotICAgIENDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9j
YXRvciopOworICAgIENDVGV4dHVyZVVwZGF0ZXIoKTsKICAgICB+Q0NUZXh0dXJlVXBkYXRlcigp
OwogCiAgICAgdm9pZCBhcHBlbmQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKQEAgLTQ5LDgg
KzQ4LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhcigpOwogCi0gICAgVGV4dHVyZUFsbG9j
YXRvciogYWxsb2NhdG9yKCkgeyByZXR1cm4gbV9hbGxvY2F0b3I7IH0KLQogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgVXBkYXRlRW50cnkgewogICAgICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiBtX3RleHR1cmU7CkBAIC01OCw3ICs1NSw2IEBAIHByaXZhdGU6CiAgICAgICAgIEludFJl
Y3QgbV9kZXN0UmVjdDsKICAgICB9OwogCi0gICAgVGV4dHVyZUFsbG9jYXRvciogbV9hbGxvY2F0
b3I7CiAgICAgVmVjdG9yPFVwZGF0ZUVudHJ5PiBtX2VudHJpZXM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
VGhyZWFkUHJveHkuY3BwCmluZGV4IDRlMDRjYzguLjc2MGMwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuY3BwCkBAIC0zOTEsOCArMzkxLDI1IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVn
aW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGlt
CiAgICAgbV9jb21taXRSZXF1ZXN0ZWQgPSBmYWxzZTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdC0+
cHJlcGFyZVRvVXBkYXRlKCk7Ci0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsK
LSAgICBtX2xheWVyVHJlZUhvc3QtPmlkbGVVcGRhdGVMYXllcnMoKTsKKyAgICBpZiAobV9sYXll
clRyZWVIb3N0LT5uZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKSkgeworICAgICAgICAvLyBJbml0
aWFsaXplIGNvbXBvc2l0b3IgcmVzb3VyY2VzIHJlcXVpcmUgZm9yIGZyYW1lLgorICAgICAgICBU
UkFDRV9FVkVOVCgiYWxsb2NhdGUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NDb21wbGV0aW9uRXZl
bnQgY29tcGxldGlvbjsKKyAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhj
cmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291
cmNlc09uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsK
KyAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CisgICAgfQorICAgIG1fbGF5ZXJUcmVlSG9zdC0+
cGFpbnRDb250ZW50cygpOworCisgICAgLy8gSWRsZSB1cGRhdGUKKyAgICBtX2xheWVyVHJlZUhv
c3QtPmlkbGVQcmVwYXJlVG9VcGRhdGUoKTsKKyAgICBpZiAobV9sYXllclRyZWVIb3N0LT5uZWVk
c0NvbXBvc2l0b3JSZXNvdXJjZXMoKSkgeworICAgICAgICAvLyBJbml0aWFsaXplIGNvbXBvc2l0
b3IgcmVzb3VyY2VzIHJlcXVpcmUgZm9yIGZyYW1lLgorICAgICAgICBUUkFDRV9FVkVOVCgiYWxs
b2NhdGUiLCB0aGlzLCAwKTsKKyAgICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsK
KyAgICAgICAgQ0NQcm94eTo6aW1wbFRocmVhZCgpLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRh
c2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVh
ZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29tcGxl
dGlvbi53YWl0KCk7CisgICAgfQorICAgIG1fbGF5ZXJUcmVlSG9zdC0+cGFpbnRDb250ZW50cygp
OwogCiAgICAgLy8gQmVmb3JlIGFwcGx5aW5nIHNjcm9sbHMgYW5kIGNhbGxpbmcgYW5pbWF0ZSwg
d2Ugc2V0IG1fYW5pbWF0ZVJlcXVlc3RlZCB0byBmYWxzZS4KICAgICAvLyBJZiBpdCBpcyB0cnVl
IG5vdywgaXQgbWVhbnMgc2V0TmVlZEFuaW1hdGUgd2FzIGNhbGxlZCBhZ2Fpbi4gQ2FsbCBzZXRO
ZWVkc0NvbW1pdApAQCAtNDE2LDYgKzQzMywyMSBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVBbmRDb21taXQoaW50IHNlcXVlbmNlTnVtYmVyLCBkb3VibGUgZnJhbWVCZWdpblRpbQog
ICAgIEFTU0VSVChtX2xhc3RFeGVjdXRlZEJlZ2luRnJhbWVBbmRDb21taXRTZXF1ZW5jZU51bWJl
ciA9PSBzZXF1ZW5jZU51bWJlcik7CiB9CiAKK3ZvaWQgQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZy
YW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21wbGV0aW9uKQor
eworICAgIFRSQUNFX0VWRU5UKCJDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNP
bk9uSW1wbFRocmVhZCIsIHRoaXMsIDApOworICAgIEFTU0VSVCghbV9jb21taXRDb21wbGV0aW9u
RXZlbnRPbkltcGxUaHJlYWQpOworICAgIEFTU0VSVChpc0ltcGxUaHJlYWQoKSk7CisgICAgaWYg
KCFtX2xheWVyVHJlZUhvc3RJbXBsKSB7CisgICAgICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlQ29t
cG9zaXRvclJlc291cmNlcyhtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIG1fbGF5ZXJU
cmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKTsKKworICAgIGNvbXBsZXRp
b24tPnNpZ25hbCgpOworfQorCiB2b2lkIENDVGhyZWFkUHJveHk6OnVwZGF0ZVRleHR1cmVPbklt
cGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4gZW50cnkpCiB7CiAgICAgQVNTRVJUKCFt
X2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CkBAIC00MjMsMTAgKzQ1NSw3IEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRy
PFVwZGF0ZUVudHJ5PiBlbnRyeSkKICAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQpCi0gICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkID0gYWRvcHRQ
dHIobmV3IENDVGV4dHVyZVVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0
dXJlQWxsb2NhdG9yKCkpKTsKLQotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhy
ZWFkLT5hcHBlbmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnkt
Pm1fZGVzdFJlY3QpOworICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuYXBwZW5kKGVu
dHJ5LT5tX3RleHR1cmUsIGVudHJ5LT5tX3NvdXJjZVJlY3QsIGVudHJ5LT5tX2Rlc3RSZWN0KTsK
IH0KIAogdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQo
Q0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCkBAIC00NDcsOSArNDc2LDcgQEAgdm9pZCBD
Q1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9u
RXZlbnQqIGNvbXBsZXRpb24KIAogYm9vbCBDQ1RocmVhZFByb3h5OjpoYXNNb3JlUmVzb3VyY2VV
cGRhdGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBs
VGhyZWFkKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkLT5oYXNNb3JlVXBkYXRlcygpOworICAgIHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmhhc01vcmVVcGRhdGVzKCk7CiB9CiAKIGJvb2wgQ0NU
aHJlYWRQcm94eTo6Y2FuRHJhdygpCkBAIC00NjQsMjAgKzQ5MSwxNiBAQCB2b2lkIENDVGhyZWFk
UHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMoKQogewogICAgIFRSQUNF
X0VWRU5UKCJDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25VcGRhdGVNb3JlUmVzb3VyY2Vz
IiwgdGhpcywgMCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBVcGRhdGVzUGVyRnJhbWUgPSA5OTk5
OTsKLSAgICBpZiAoIW1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkKQotICAgICAg
ICByZXR1cm47Ci0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPnVwZGF0
ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CisgICAg
bV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+
Y29udGV4dCgpLCBVcGRhdGVzUGVyRnJhbWUpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OnNj
aGVkdWxlZEFjdGlvbkNvbW1pdCgpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6
OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCIsIHRoaXMsIDApOworICAgIEFTU0VSVCghbV90ZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC5oYXNNb3JlVXBkYXRlcygpKTsKICAgICBBU1NFUlQobV9jb21t
aXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQpOwogCi0gICAgaWYgKG1fY3VycmVudFRleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkKSB7Ci0gICAgICAgIEFTU0VSVCghbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCkpOwotICAgICAgICBtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5jbGVhcigpOwotICAgIH0KKyAgICBtX3RleHR1
cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBs
LT5iZWdpbkNvbW1pdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggYmM1MzQ4OC4u
NGNjYmY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
CiAjaW5jbHVkZSAiY2MvQ0NTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJjYy9DQ1RleHR1cmVVcGRh
dGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKQEAgLTEwMCw2ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGFzc093blB0cjxD
Q1RocmVhZDo6VGFzaz4gY3JlYXRlQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tPbkltcGxUaHJlYWQo
KTsKICAgICB2b2lkIG9idGFpbkJlZ2luRnJhbWVBbmRDb21taXRUYXNrRnJvbUNDVGhyZWFkKEND
Q29tcGxldGlvbkV2ZW50KiwgQ0NUaHJlYWQ6OlRhc2sqKik7CisgICAgdm9pZCBwcmVwYXJlRnJh
bWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHVw
ZGF0ZVRleHR1cmVPbkltcGxUaHJlYWQoUGFzc093blB0cjxVcGRhdGVFbnRyeT4pOwogICAgIHZv
aWQgYmVnaW5GcmFtZUNvbXBsZXRlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAg
ICAgdm9pZCByZXF1ZXN0UmVhZGJhY2tPbkltcGxUaHJlYWQoUmVhZGJhY2tSZXF1ZXN0Kik7CkBA
IC0xMzYsMTAgKzEzOCwxMSBAQCBwcml2YXRlOgogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG1haW4g
dGhyZWFkIGlzIHdhaXRpbmcgb24gYSBjb21taXQgdG8gY29tcGxldGUuCiAgICAgQ0NDb21wbGV0
aW9uRXZlbnQqIG1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkOwotICAgIE93blB0
cjxDQ1RleHR1cmVVcGRhdGVyPiBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZDsK
IAogICAgIC8vIFNldCB3aGVuIHRoZSBuZXh0IGRyYXcgc2hvdWxkIHBvc3QgZGlkQ29tbWl0QW5k
RHJhd0ZyYW1lIHRvIHRoZSBtYWluIHRocmVhZC4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXds
eUNvbW1pdHRlZEZyYW1lT25JbXBsVGhyZWFkOworCisgICAgQ0NUZXh0dXJlVXBkYXRlciBtX3Rl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggNTE2YjNkYy4u
YjNjMjE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC05NDgsMTIgKzk0OCwyMiBAQCBwdWJsaWM6CiAKICAgICAg
ICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1
cmUuZ2V0KCk7IH0KIAotICAgICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0
IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAgICAgICAgICB2aXJ0dWFsIGJvb2wgbmVl
ZFByZXBhcmVSZWN0KCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbV90
ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+bmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5wcmVwYXJlUmVjdCgpOwogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRl
eHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKKyAgICAgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludENvbnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnBh
aW50Q29udGVudHNSZWN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgLyogc291
cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+dXBkYXRlUmVjdCgp
OwogICAgICAgICAgICAgfQpAQCAtOTkxLDkgKzEwMDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIENv
bnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKiBtX2xheWVyOwogICAgIH07CiAK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IGNyZWF0ZShDQ0xh
eWVyRGVsZWdhdGUqIGRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmcoZGVsZWdhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5
ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSwgbmVlZFByZXBhcmVSZWN0KSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IEND
TGF5ZXJUcmVlSG9zdCopCkBAIC0xMDI2LDI2ICsxMDM2LDM1IEBAIHB1YmxpYzoKICAgICB2b2lk
IHByZXBhcmVSZWN0KCkgeyBtX3ByZXBhcmVSZWN0Q291bnQrKzsgfQogICAgIGludCBwcmVwYXJl
UmVjdENvdW50KCkgeyByZXR1cm4gbV9wcmVwYXJlUmVjdENvdW50OyB9CiAKKyAgICB2b2lkIHBh
aW50Q29udGVudHNSZWN0KCkgeyBtX3BhaW50Q29udGVudHNSZWN0Q291bnQrKzsgfQorICAgIGlu
dCBwYWludENvbnRlbnRzUmVjdENvdW50KCkgeyByZXR1cm4gbV9wYWludENvbnRlbnRzUmVjdENv
dW50OyB9CisKICAgICB2b2lkIHVwZGF0ZVJlY3QoKSB7IG1fdXBkYXRlUmVjdENvdW50Kys7IH0K
ICAgICBpbnQgdXBkYXRlUmVjdENvdW50KCkgeyByZXR1cm4gbV91cGRhdGVSZWN0Q291bnQ7IH0K
IAorICAgIGludCBuZWVkUHJlcGFyZVJlY3QoKSB7IHJldHVybiBtX25lZWRQcmVwYXJlUmVjdDsg
fQorCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0
ZVRyYWNraW5nKENDTGF5ZXJEZWxlZ2F0ZSAqZGVsZWdhdGUpCisgICAgZXhwbGljaXQgQ29udGVu
dExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0
ZSwgYm9vbCBuZWVkUHJlcGFyZVJlY3QpCiAgICAgICAgIDogQ29udGVudExheWVyQ2hyb21pdW0o
ZGVsZWdhdGUpCisgICAgICAgICwgbV9uZWVkUHJlcGFyZVJlY3QobmVlZFByZXBhcmVSZWN0KQog
ICAgICAgICAsIG1fcHJlcGFyZVRvVXBkYXRlQ291bnQoMCkKICAgICAgICAgLCBtX2lkbGVQcmVw
YXJlVG9VcGRhdGVDb3VudCgwKQogICAgICAgICAsIG1fcGFpbnRDb250ZW50c0NvdW50KDApCiAg
ICAgICAgICwgbV9wcmVwYXJlUmVjdENvdW50KDApCisgICAgICAgICwgbV9wYWludENvbnRlbnRz
UmVjdENvdW50KDApCiAgICAgICAgICwgbV91cGRhdGVSZWN0Q291bnQoMCkKICAgICB7CiAgICAg
ICAgIHNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxDb250
ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9jb250ZW50TGF5ZXJUZXh0dXJlVXBkYXRlcjsKKyAg
ICBib29sIG1fbmVlZFByZXBhcmVSZWN0OwogICAgIGludCBtX3ByZXBhcmVUb1VwZGF0ZUNvdW50
OwogICAgIGludCBtX2lkbGVQcmVwYXJlVG9VcGRhdGVDb3VudDsKICAgICBpbnQgbV9wYWludENv
bnRlbnRzQ291bnQ7CiAgICAgaW50IG1fcHJlcGFyZVJlY3RDb3VudDsKKyAgICBpbnQgbV9wYWlu
dENvbnRlbnRzUmVjdENvdW50OwogICAgIGludCBtX3VwZGF0ZVJlY3RDb3VudDsKIH07CiAKQEAg
LTEwNTQsNyArMTA3Myw3IEBAIGNsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdl
IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVl
SG9zdFRlc3RPcGFjaXR5Q2hhbmdlKCkKICAgICAgICAgOiBtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVs
ZWdhdGUodGhpcykKLSAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hy
b21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVn
YXRlKSkKKyAgICAgICAgLCBtX3VwZGF0ZUNoZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1X
aXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgmbV90ZXN0T3BhY2l0eUNoYW5nZURlbGVnYXRlLCB0
cnVlKSkKICAgICB7CiAgICAgfQogCkBAIC0xMDg1LDYgKzExMDQsMTEgQEAgcHVibGljOgogICAg
ICAgICAvLyBwYWludENvbnRlbnRzUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBz
YW1lCiAgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwcmVwYXJlUmVjdCgpLgogICAgICAg
ICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50KCksCisgICAg
ICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQo
KSk7CisKKyAgICAgICAgLy8gdXBkYXRlUmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRo
ZSBzYW1lCisgICAgICAgIC8vIGFtb3VudCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzUmVjdCgp
LgorICAgICAgICBFWFBFQ1RfRVEobV91cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVj
dENvdW50KCksCiAgICAgICAgICAgICAgICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJl
Y3RDb3VudCgpKTsKIAogICAgICAgICAvLyBjbGVhciBtX3VwZGF0ZUNoZWNrTGF5ZXIgc28gQ0NM
YXllclRyZWVIb3N0IGRpZXMuCkBAIC0xMTAxLDQgKzExMjUsNTUgQEAgVEVTVF9GKENDTGF5ZXJU
cmVlSG9zdFRlc3RPcGFjaXR5Q2hhbmdlLCBydW5NdWx0aVRocmVhZCkKICAgICBydW5UZXN0KHRy
dWUpOwogfQogCisvLyBwcmVwYXJlUmVjdCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gbmVl
ZFByZXBhcmVSZWN0KCkgcmV0dXJucyBmYWxzZS4KK2NsYXNzIENDTGF5ZXJUcmVlSG9zdFRlc3RO
b1ByZXBhcmVSZWN0IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3QgeworcHVibGljOgorICAg
IENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0KCkKKyAgICAgICAgOiBtX3VwZGF0ZUNo
ZWNrTGF5ZXIoQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc6OmNyZWF0ZSgm
bV9kZWxlZ2F0ZSwgZmFsc2UpKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVn
aW5UZXN0KCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1f
dXBkYXRlQ2hlY2tMYXllcik7CisgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Vmlld3BvcnQo
SW50U2l6ZSgxMCwgMTApKTsKKworICAgICAgICBwb3N0U2V0TmVlZHNDb21taXRUb01haW5UaHJl
YWQoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFk
KENDTGF5ZXJUcmVlSG9zdEltcGwqKQorICAgIHsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0K
KworICAgIHZpcnR1YWwgdm9pZCBhZnRlclRlc3QoKQorICAgIHsKKyAgICAgICAgLy8gcHJlcGFy
ZVRvVXBkYXRlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25jZS4KKyAgICAgICAgRVhQRUNU
X0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+cHJlcGFyZVRvVXBkYXRlQ291bnQoKSk7CisKKyAg
ICAgICAgLy8gaWRsZVByZXBhcmVUb1VwZGF0ZSgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIG9u
Y2UuCisgICAgICAgIEVYUEVDVF9FUSgxLCBtX3VwZGF0ZUNoZWNrTGF5ZXItPmlkbGVQcmVwYXJl
VG9VcGRhdGVDb3VudCgpKTsKKworICAgICAgICAvLyBwYWludENvbnRlbnRzKCkgc2hvdWxkIGhh
dmUgYmVlbiBjYWxsZWQgdHdpY2UuCisgICAgICAgIEVYUEVDVF9FUSgyLCBtX3VwZGF0ZUNoZWNr
TGF5ZXItPnBhaW50Q29udGVudHNDb3VudCgpKTsKKworICAgICAgICAvLyBwcmVwYXJlUmVjdCgp
IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNhbGxlZC4KKyAgICAgICAgRVhQRUNUX0VRKDAsIG1fdXBk
YXRlQ2hlY2tMYXllci0+cHJlcGFyZVJlY3RDb3VudCgpKTsKKworICAgICAgICAvLyB1cGRhdGVS
ZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50
IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3Vw
ZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0Q291bnQoKSwKKyAgICAgICAgICAgICAg
ICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVjdENvdW50KCkpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBNb2NrTGF5ZXJEZWxlZ2F0ZSBtX2RlbGVnYXRlOworICAgIFJlZlB0cjxDb250
ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gbV91cGRhdGVDaGVja0xheWVyOwor
fTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3ROb1ByZXBhcmVSZWN0LCBydW5NdWx0aVRo
cmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQorCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1U
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggNmZkNTZkOS4uZTJiMzgwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC03OCwxNCArNzgsMzAgQEAgcHVibGljOgogICAgIE1PQ0tfTUVUSE9EMyhkZWxldGVUZXh0
dXJlLCB2b2lkKHVuc2lnbmVkLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pKTsKIH07CiAKK2Ns
YXNzIE1vY2tQcmVwYXJlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5k
bGVyIHsKK3B1YmxpYzoKKyAgICBNb2NrUHJlcGFyZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikgOiBtX2NvbnRleHQoY29udGV4
dCksIG1fYWxsb2NhdG9yKGFsbG9jYXRvcikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
KExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNv
dXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHsKKyAgICAgICAgaWYgKHRl
eHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJl
Y3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OworICAgIFRleHR1
cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworfTsKKwogY2xhc3MgTW9ja1VwZGF0ZUhhbmRsZXIg
OiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CiBwdWJsaWM6CiAgICAgTW9j
a1VwZGF0ZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvcikgOiBtX2NvbnRleHQoY29udGV4dCksIG1fYWxsb2NhdG9yKGFsbG9jYXRv
cikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KQogICAgIHsKLSAgICAgICAgdGV4dHVyZS0+cHJlcGFyZVJlY3Qoc291cmNlUmVj
dCk7Ci0gICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwg
c291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVS
ZWN0KCkpCisgICAgICAgICAgICB0ZXh0dXJlLT5wcmVwYXJlUmVjdChtX2NvbnRleHQsIG1fYWxs
b2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJl
Y3QobV9jb250ZXh0LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgfQogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21p
dW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9t
aXVtVGVzdC5jcHAKaW5kZXggZmVhMGI5Yy4uYTVlYWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpIHsgfQogCiAg
ICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1
cmUuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3Qm
KSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVjdCYpIHsgfQogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX3RleHR1cmU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120745</attachid>
            <date>2011-12-29 07:24:12 -0800</date>
            <delta_ts>2012-01-04 15:24:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initialize-frame-resources.diff</filename>
            <type>text/plain</type>
            <size>52263</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggMzdiYTM0Ni4uOGVhNDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ1LDkgKzQ1LDExIEBAIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVj
dChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4
dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiBQYXNzUmVmUHRy
PEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVy
LCBib29sIHVzZU1hcFRleFN1YkltYWdlKQpAQCAtOTEsMTIgKzkzLDEwIEBAIHZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwKICAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRz
KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwog
fQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2NhbnZh
cyk7Ci0KLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotICAg
IG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291
cmNlUmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggZTVmY2Y2NC4uMTkzODg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJl
VXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVk
VGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVu
dHNTY2FsZSk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGM4
MDRkNGMuLmRmMDBlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUo
Qml0bWFwU2tQaWN0dXJlQ2FudmFzCiB7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkK
IHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRl
cyhzb3VyY2VSZWN0LnNpemUoKSwgdGV4dHVyZSgpLT5mb3JtYXQoKSk7CiAgICAgbV9waXhlbERh
dGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKQEAgLTUxLDkgKzUx
LDEwIEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFp
bnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgpLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlKCktPmJpbmRUZXh0
dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlk
KCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0
KCkpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRl
eHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CiAgICAgbV9w
aXhlbERhdGEuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA2OWI5MDVjLi41NjFhODI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAg
ICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcios
IFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggN2QzYmYwNy4uNjVmODhmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC00Nyw4ICs0Nyw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKK0NhbnZh
czJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJE
TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
CiAgICAgOiBtX2xheWVyKGxheWVyKQorICAgICwgbV90ZXh0dXJlKHRleHR1cmUpCiB7CiB9CiAK
QEAgLTU2LDkgKzU3LDE5IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
On5VcGRhdGVyVGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK2Jvb2wgQ2FudmFzMkRMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKIHsKLSAgICBtX2xheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgcmV0dXJu
ICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworfQorCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX3RleHR1cmUtPmFsbG9jYXRl
KGFsbG9jYXRvcik7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7Cisg
ICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKIH0KIAogUGFz
c1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQpAQCAt
NzIsNyArODMsNiBAQCBDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1
bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSQogICAgICwgbV9zaXplKHNpemUp
CiAgICAgLCBtX2JhY2tUZXh0dXJlSWQoMCkKICAgICAsIG1fZmJvKDApCi0gICAgLCBtX3VwZGF0
ZXJUZXh0dXJlKFVwZGF0ZXJUZXh0dXJlOjpjcmVhdGUodGhpcykpCiB7CiAgICAgR0xDKG1fY29u
dGV4dCwgbV9mYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkpOwogfQpAQCAtMTAy
LDEyICsxMTIsMTIgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdzQ29udGVudCgp
IGNvbnN0CiAgICAgICAgICYmIG1fY29udGV4dCAmJiAobV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRleHQzRDo6Tk9f
RVJST1IpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lm
RGlydHkoKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZUlmRGly
dHkoKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fZnJvbnRUZXh0dXJlLT5yZXNlcnZlKG1fc2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEp
OworICAgIG1fdXBkYXRlclRleHR1cmUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3NpemUsIEdyYXBo
aWNzQ29udGV4dDNEOjpSR0JBKTsKIAogICAgIGlmICghbmVlZHNEaXNwbGF5KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTEzNywxNyArMTQ3LDE1IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVt
OjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHZvaWQgQ2FudmFzMkRM
YXllckNocm9taXVtOjpzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1h
bmFnZXIpCiB7CiAgICAgaWYgKHRleHR1cmVNYW5hZ2VyKQotICAgICAgICBtX2Zyb250VGV4dHVy
ZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIpOworICAgICAgICBtX3Vw
ZGF0ZXJUZXh0dXJlID0gVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlzLCBNYW5hZ2VkVGV4dHVy
ZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKSk7CiAgICAgZWxzZQotICAgICAgICBtX2Zyb250VGV4
dHVyZS5jbGVhcigpOworICAgICAgICBtX3VwZGF0ZXJUZXh0dXJlLmNsZWFyKCk7CiB9CiAKLXZv
aWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yICphbGxvY2F0b3IpCit2b2lk
IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICBpZiAoIW1fYmFja1RleHR1cmVJZCB8fCAhbV9m
cm9udFRleHR1cmUtPmlzVmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0
LCBhbGxvY2F0b3IpOworICAgIEFTU0VSVChtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0dXJlKCktPnRl
eHR1cmVJZCgpKTsKKyAgICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6
VEVYVFVSRV8yRCwgbV91cGRhdGVyVGV4dHVyZS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CiAK
ICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4
dDNEOjpGUkFNRUJVRkZFUiwgbV9mYm8pKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJh
bWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGlj
c0NvbnRleHQzRDo6Q09MT1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCBtX2JhY2tUZXh0dXJlSWQsIDApKTsKQEAgLTE1OCw2ICsxNjYsOSBAQCB2b2lkIENhbnZh
czJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dAogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBv
c2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogewor
ICAgIGlmICghbV9iYWNrVGV4dHVyZUlkIHx8ICFtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0dXJlKCkt
PmlzVmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCisgICAgICAgIHJldHVy
bjsKKwogICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIEludFJlY3Qo
KSwgSW50UmVjdCgpKTsKIH0KIApAQCAtMTY2LDE3ICsxNzcsMTcgQEAgdm9pZCBDYW52YXMyRExh
eWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxheWVyKQogICAgIENh
bnZhc0xheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8obGF5ZXIpOwogCiAgICAgQ0NDYW52
YXNMYXllckltcGwqIGNhbnZhc0xheWVyID0gc3RhdGljX2Nhc3Q8Q0NDYW52YXNMYXllckltcGwq
PihsYXllcik7Ci0gICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX2Zyb250VGV4dHVyZS0+
dGV4dHVyZUlkKCkpOworICAgIGNhbnZhc0xheWVyLT5zZXRUZXh0dXJlSWQobV91cGRhdGVyVGV4
dHVyZS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CiB9CiAKIHZvaWQgQ2FudmFzMkRMYXllckNo
cm9taXVtOjp1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKQogewotICAgIG1fZnJvbnRUZXh0dXJl
LT51bnJlc2VydmUoKTsKKyAgICBtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0dXJlKCktPnVucmVzZXJ2
ZSgpOwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y2xlYW51cFJlc291cmNlcygp
CiB7Ci0gICAgbV9mcm9udFRleHR1cmUuY2xlYXIoKTsKKyAgICBtX3VwZGF0ZXJUZXh0dXJlLmNs
ZWFyKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKaW5kZXggYmZj
NWQ1OC4uZTEwODg3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckNocm9taXVtLmgKQEAgLTQ2
LDE5ICs0NiwyNCBAQCBjbGFzcyBDYW52YXMyRExheWVyQ2hyb21pdW0gOiBwdWJsaWMgQ2FudmFz
TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgY2xhc3MgVXBkYXRlclRleHR1cmUgOiBwdWJs
aWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc093blB0cjxVcGRhdGVyVGV4dHVyZT4gY3JlYXRlKENhbnZhczJETGF5ZXJDaHJv
bWl1bSogbGF5ZXIpCisgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBj
cmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllciwgUGFzc093blB0cjxNYW5hZ2VkVGV4
dHVyZT4gdGV4dHVyZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBVcGRhdGVyVGV4dHVyZShsYXllcikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBVcGRhdGVyVGV4dHVyZShsYXllciwgdGV4dHVyZSkpOwogICAgICAgICB9CiAKICAgICAgICAg
dmlydHVhbCB+VXBkYXRlclRleHR1cmUoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
UmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwg
TWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KKwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgbmVlZFByZXBhcmVSZWN0KCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBj
b25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVj
dCAqLyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVz
dFJlY3QgKi8pOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1
cmUoQ2FudmFzMkRMYXllckNocm9taXVtKik7CisgICAgICAgIGV4cGxpY2l0IFVwZGF0ZXJUZXh0
dXJlKENhbnZhczJETGF5ZXJDaHJvbWl1bSosIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsK
IAogICAgICAgICBDYW52YXMyRExheWVyQ2hyb21pdW0qIG1fbGF5ZXI7CisgICAgICAgIE93blB0
cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwogICAgIH07CiAKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IEludFNpemUmKTsKQEAgLTY5LDEwICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KCk7CisgICAgdmly
dHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCopOwotICAgIHZvaWQgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAg
ICB2b2lkIHVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShMYXllclRleHR1cmVVcGRh
dGVyOjpIYW5kbGVyJik7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXll
ckltcGwqKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5yZXNlcnZlQ29udGVudHNUZXh0dXJlKCk7CkBA
IC04OSw3ICs5NCw2IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgdW5zaWdu
ZWQgbV9iYWNrVGV4dHVyZUlkOwogICAgIFBsYXRmb3JtM0RPYmplY3QgbV9mYm87Ci0gICAgT3du
UHRyPE1hbmFnZWRUZXh0dXJlPiBtX2Zyb250VGV4dHVyZTsKICAgICBPd25QdHI8VXBkYXRlclRl
eHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDFmM2I2NDQuLjk0MjFkNzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00NCw2ICs0NCwxNiBAQCBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKK2Jvb2wg
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKK3sK
KyAgICByZXR1cm4gIW1fdGV4dHVyZS0+dGV4dHVyZUlkKCk7Cit9CisKK3ZvaWQgQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJl
Y3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQoreworICAgIG1fdGV4dHVyZS0+
YWxsb2NhdGUoYWxsb2NhdG9yKTsKK30KKwogQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBw
YWludGVyKQogICAgIDogbV9wYWludGVyKHBhaW50ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYmU5ZmYxMy4uZWIzNjI2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDUsNyArNDUsMTAgQEAgcHVibGlj
OgogCiAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBt
X3RleHR1cmUuZ2V0KCk7IH0KIAotICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgYm9v
bCBuZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNv
dXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKTsKKworICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgZXhwbGljaXQgVGV4dHVyZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJl
Pik7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Zy
YW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggOGYy
ZGU4YS4uYTc1ZjU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFt
ZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zOCwxMiAr
MzgsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgUGFzc093blB0cjxTa0NhbnZh
cz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKQogewotICAgIC8vIEFs
bG9jYXRlIHNvIHRoYXQgd2UgaGF2ZSBhIHZhbGlkIHRleHR1cmUgaWQuCi0gICAgdGV4dHVyZS0+
YWxsb2NhdGUoYWxsb2NhdG9yKTsKLQogICAgIEdyQ29udGV4dCogZ3JDb250ZXh0ID0gY29udGV4
dC0+Z3JDb250ZXh0KCk7CiAgICAgSW50U2l6ZSBjYW52YXNTaXplID0gdGV4dHVyZS0+c2l6ZSgp
OwogICAgIEdyUGxhdGZvcm1UZXh0dXJlRGVzYyB0ZXh0dXJlRGVzYzsKQEAgLTY3LDkgKzYzLDkg
QEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0
KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7Cisg
ICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIFBhc3NSZWZQdHI8RnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPiBwYWludGVyKQpAQCAtOTcsMTUgKzkzLDE3IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNh
bXBsZWRUZXhlbEZvcm1hdCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
CiAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7
CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
Ojp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVj
dCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKKyAgICBBU1NF
UlQodGV4dHVyZS0+dGV4dHVyZUlkKCkpOworCiAgICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0
aGUgY29ycmVjdCBHTCBjb250ZXh0LgogICAgIGNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgp
OwogICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMgaXRzIGludGVybmFsIEdMIHN0YXRlLgogICAg
IGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENvbnRleHQoKTsKIAogICAgIC8vIENyZWF0ZSBh
biBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBvbi4KLSAgICBPd25QdHI8U2tDYW52YXM+IGNh
bnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFzKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVy
ZSk7CisgICAgT3duUHRyPFNrQ2FudmFzPiBjYW52YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZh
cyhjb250ZXh0LCB0ZXh0dXJlKTsKIAogICAgIGNhbnZhcy0+Y2xpcFJlY3QoU2tSZWN0KGRlc3RS
ZWN0KSk7CiAgICAgLy8gVGhlIGNvbXBvc2l0b3IgZXhwZWN0cyB0aGUgdGV4dHVyZXMgdG8gYmUg
dXBzaWRlLWRvd24gc28gaXQgY2FuIGZsaXAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXgg
MjFhZTNkZC4uNmQyYWQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTMyLDYgKzMy
LDggQEAKIAogI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
IAorY2xhc3MgU2tDYW52YXM7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWVC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVy
ZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewpAQCAtNDEsNyArNDMsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0
dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFw
aGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IElu
dFJlY3QmIC8qIGRlc3RSZWN0ICovKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIEZyYW1lQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7
IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBAIC01NCw3ICs1Niw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVh
dGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3Jt
YXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwotICAgIHZvaWQg
dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwg
TWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0
JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQz
RCosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRleCA3YzgxYjY1Li44
NjhiMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTU0LDkgKzU0LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3Iq
IGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKICAgICAgICAgewotICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4
dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RS
ZWN0KTsKKyAgICAgICAgICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJE
LCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCkt
PnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRleHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKQEAgLTgzLDE1ICs4NSwx
MyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxl
ZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1h
dEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50
UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVy
VGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1NjYWxlICovKQorICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNT
Y2FsZSAqLykKICAgICB7CiAgICAgICAgIG1fdGV4U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRp
bGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFu
YWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1
cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7Ci0KICAgICAgICAgLy8gU291cmNl
IHJlY3Qgc2hvdWxkIG5ldmVyIGdvIG91dHNpZGUgdGhlIGltYWdlIHBpeGVscywgZXZlbiBpZiB0
aGlzCiAgICAgICAgIC8vIGlzIHJlcXVlc3RlZCBiZWNhdXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMg
b3V0c2lkZSB0aGUgaW1hZ2UuCiAgICAgICAgIEludFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBz
b3VyY2VSZWN0OwpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2xpcHBlZERl
c3RSZWN0Lm1vdmUoY2xpcHBlZFNvdXJjZVJlY3QubG9jYXRpb24oKSAtIHNvdXJjZVJlY3QubG9j
YXRpb24oKSk7CiAgICAgICAgIGNsaXBwZWREZXN0UmVjdC5zZXRTaXplKGNsaXBwZWRTb3VyY2VS
ZWN0LnNpemUoKSk7CiAKLSAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhl
bHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRl
eHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQo
bV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVk
RGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CiAgICAgfQogCiAgICAgdm9pZCB1cGRhdGVGcm9t
SW1hZ2UoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyLmgKaW5kZXggZDAwNjNlYi4uYTY2N2QwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXIuaApAQCAtNDksOCArNDksMTUgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJl
KCkgeyB9CiAKICAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0
dXJuIDA7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8pIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOworCisgICAgICAgIC8vIHByZXBh
cmVSZWN0KCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiB0aGlzIHJldHVybnMgdHJ1ZS4KKyAgICAg
ICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAgIC8vIFRoaXMgcnVucyBzeW5jaHJvbm91c2x5IG9uIHRoZSBpbXBsIHRocmVhZCB3aXRoIHNh
ZmUgYWNjZXNzIHRvIG1haW4gdGhyZWFkIHJlc291cmNlcy4KKyAgICAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICov
KSB7IH0KKyAgICAgICAgLy8gVGhpcyBydW5zIG9uIHRoZSBtYWluIHRocmVhZCBhZnRlciBjYWxs
cyB0byBuZWVkUHJlcGFyZVJlY3QoKSBhbmQgcHJlcGFyZVJlY3QoKSBidXQgYmVmb3JlIHVwZGF0
ZVJlY3QoKS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IElu
dFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQorICAgICAgICAvLyBUaGlzIHJ1bnMgYXN5bmNo
cm9ub3VzbHkgb24gdGhlIGltcGwgdGhyZWFkLiBBY2Nlc3MgdG8gbWFpbiB0aHJlYWQgcmVzb3Vy
Y2VzIGlzIHVuc2FmZS4KKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkgPSAwOwogICAgIH07CiAKICAgICBjbGFzcyBIYW5kbGVyIHsKQEAgLTczLDcgKzgwLDcg
QEAgcHVibGljOgogICAgIC8vIFRoaXMgZm9ybWF0IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9y
ZGVyIGluIHRoZSBzYW1wbGVkIHRleGVsLgogICAgIC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxG
b3JtYXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQgdmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFs
IFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZv
cm1hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3Qm
IC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8q
IGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICov
LCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywg
ZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVtLmNwcAppbmRleCA1YmUwZmJhLi5kZmQ0YjEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9X
ZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV2Vi
R0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVyZTo6flVwZGF0ZXJUZXh0dXJlKCkKIHsKIH0K
IAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OlVwZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdy
YXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit2b2lk
IFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0
IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogewogICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoY29udGV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IDIwYmVjOWYuLjBmNGFmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC01NSw3
ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICB2aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4
dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShXZWJH
TExheWVyQ2hyb21pdW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDg2
MjRhZDguLjk3ZGNkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcApAQCAtNDks
MTggKzQ5LDQ5IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFu
Y2VFeGlzdHMoKQogICAgIHJldHVybiBudW1MYXllclRyZWVJbnN0YW5jZXMgPiAwOwogfQogCi1D
Q0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6OlVwZGF0ZUhhbmRsZXIoQ0NQcm94eSogcHJv
eHkpCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNvdXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhh
bmRsZXIoKQorICAgIDogbV9yZXNvdXJjZXMoMCkKK3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpO
ZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291cmNlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQg
Q0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAq
LywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7CisgICAgaWYgKHRleHR1cmUtPm5l
ZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICBtX3Jlc291cmNlcysrOworfQorCitDQ0xheWVyVHJl
ZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAg
ICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQorewor
fQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVz
b3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNv
dXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJl
LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sK
KyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVSZWN0KCkpCisgICAgICAgIHRleHR1cmUtPnBy
ZXBhcmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsK
K30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6OlBhaW50SGFuZGxlcihDQ1Byb3h5
KiBwcm94eSkKICAgICA6IG1fcHJveHkocHJveHkpCiB7CiB9CiAKLUNDTGF5ZXJUcmVlSG9zdDo6
VXBkYXRlSGFuZGxlcjo6flVwZGF0ZUhhbmRsZXIoKQorQ0NMYXllclRyZWVIb3N0OjpQYWludEhh
bmRsZXI6On5QYWludEhhbmRsZXIoKQogewogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6VXBk
YXRlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KHNvdXJjZVJlY3Qp
OworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNSZWN0KHNvdXJjZVJlY3QpOwogICAgIG1fcHJv
eHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKQEAgLTM5OCwz
NCArNDI5LDE0IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlVG9VcGRhdGUoTGF5ZXJD
aHJvbWl1bSogcm9vdExheWVyKQogICAgIH0KIAogICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9y
ZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV9sYXllclVwZGF0ZUxpc3QpOwotfQotCi12b2lkIEND
TGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkKLXsKLSAgICBpZiAoIXJvb3RMYXllcigpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICB1cGRhdGVMYXllcnMocm9vdExheWVyKCkpOwotfQotCi12b2lk
IENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikK
LXsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlz
LCAwKTsKIAogICAgIGZvciAoaW50IGxheWVySW5kZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXpl
KCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxheWVySW5kZXgpIHsKICAgICAgICAgTGF5ZXJD
aHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRlTGlzdFtsYXllckluZGV4XS5nZXQoKTsKICAg
ICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKLSAgICAgICAgbGF5ZXItPnBh
aW50Q29udGVudHNJZkRpcnR5KCk7Ci0KLSAgICAgICAgVXBkYXRlSGFuZGxlciBoYW5kbGVyKG1f
cHJveHkuZ2V0KCkpOwotICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSho
YW5kbGVyKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjppZGxlVXBkYXRlTGF5
ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjppZGxlUHJlcGFyZVRvVXBkYXRlKCkKIHsKICAg
ICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICByZXR1cm47CkBAIC00MzMsMTIgKzQ0NCwxMiBA
QCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVVwZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdw
b3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWRsZVVwZGF0ZUxh
eWVycyhyb290TGF5ZXIoKSk7CisgICAgaWRsZVByZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7
CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0OjppZGxlVXBkYXRlTGF5ZXJzKExheWVyQ2hyb21p
dW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjppZGxlUHJlcGFyZVRvVXBkYXRl
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0OjppZGxlVXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkND
TGF5ZXJUcmVlSG9zdDo6aWRsZVByZXBhcmVUb1VwZGF0ZSIsIHRoaXMsIDApOwogCiAgICAgaWYg
KCFtX3RyaWdnZXJJZGxlUGFpbnRzKQogICAgICAgICByZXR1cm47CkBAIC00NTcsMTMgKzQ2OCw0
NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVVwZGF0ZUxheWVycyhMYXllckNocm9taXVt
KiByb290TGF5ZXIpCiAgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0
LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgewogICAgICAgICBM
YXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgp
OwogICAgICAgICBsYXllci0+aWRsZVByZXBhcmVUb1VwZGF0ZUlmRGlydHkoKTsKKyAgICB9CisK
KyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4
TGltaXRCeXRlcyk7Cit9CisKK2Jvb2wgQ0NMYXllclRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JS
ZXNvdXJjZXMoKQoreworICAgIE5lZWRSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBmb3JF
YWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIpOworICAgIHJldHVybiBoYW5kbGVyLnJlc291
cmNlcygpOworfQorCit2b2lkIENDTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNv
dXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9j
YXRvcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9z
aXRvclJlc291cmNlcyIsIHRoaXMsIDApOworICAgIFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgaGFu
ZGxlcihjb250ZXh0LCBhbGxvY2F0b3IpOworICAgIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2Uo
aGFuZGxlcik7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpwYWludENvbnRlbnRzKCkKK3sK
KyAgICBpZiAoIXJvb3RMYXllcigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodmlld3Bv
cnRTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBwYWludENvbnRlbnRz
KHJvb3RMYXllcigpKTsKK30KKwordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMo
TGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQoreworICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJl
ZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRl
eCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5
ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVM
aXN0W2xheWVySW5kZXhdLmdldCgpOwogICAgICAgICBsYXllci0+cGFpbnRDb250ZW50c0lmRGly
dHkoKTsKIAotICAgICAgICBVcGRhdGVIYW5kbGVyIGhhbmRsZXIobV9wcm94eS5nZXQoKSk7Cisg
ICAgICAgIFBhaW50SGFuZGxlciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOwogICAgICAgICBsYXll
ci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICB9Ci0KLSAgICBtX2Nv
bnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRCeXRl
cyk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJD
aHJvbWl1bSogbGF5ZXIsIExheWVyTGlzdCYgdXBkYXRlTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKaW5kZXggOTQ5MWYyYS4uNzAyMzYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0LmgKQEAgLTE5MSw4ICsxOTEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGF2ZVdoZWVs
RXZlbnRIYW5kbGVycyhib29sKTsKIAogICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKCk7Ci0gICAg
dm9pZCB1cGRhdGVMYXllcnMoKTsKLSAgICB2b2lkIGlkbGVVcGRhdGVMYXllcnMoKTsKKyAgICB2
b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGUoKTsKKyAgICBib29sIG5lZWRzQ29tcG9zaXRvclJlc291
cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBwYWludENvbnRlbnRzKCk7CiAK
ICAgICB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFu
ZFNjYWxlU2V0Jik7CkBAIC0yMDQsMTAgKzIwNiwzNSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBp
bml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAgY2xhc3MgVXBkYXRlSGFuZGxlciA6IHB1Ymxp
YyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyIHsKKyAgICBjbGFzcyBOZWVkUmVzb3VyY2VI
YW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgVXBkYXRlSGFuZGxlcihDQ1Byb3h5Kik7Ci0gICAgICAgIHZpcnR1YWwgflVw
ZGF0ZUhhbmRsZXIoKTsKKyAgICAgICAgTmVlZFJlc291cmNlSGFuZGxlcigpOworICAgICAgICB2
aXJ0dWFsIH5OZWVkUmVzb3VyY2VIYW5kbGVyKCk7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgICAgIGludCByZXNvdXJjZXMo
KSB7IHJldHVybiBtX3Jlc291cmNlczsgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1f
cmVzb3VyY2VzOworICAgIH07CisKKyAgICBjbGFzcyBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIDog
cHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgUHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqKTsKKyAgICAgICAgdmlydHVhbCB+UHJlcGFyZVJlc291cmNlSGFuZGxlcigpOworCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSos
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAg
ICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2NhdG9yOworICAgIH07CisKKyAgICBjbGFzcyBQ
YWludEhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAg
cHVibGljOgorICAgICAgICBQYWludEhhbmRsZXIoQ0NQcm94eSopOworICAgICAgICB2aXJ0dWFs
IH5QYWludEhhbmRsZXIoKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4
dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJ
bnRSZWN0JiBkZXN0UmVjdCk7CiAKQEAgLTIyMiw4ICsyNDksOSBAQCBwcml2YXRlOgogICAgIHZv
aWQgYXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRh
dGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3QpOwogCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRh
dGUoTGF5ZXJDaHJvbWl1bSopOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0q
KTsKLSAgICB2b2lkIGlkbGVVcGRhdGVMYXllcnMoTGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQg
aWRsZVByZXBhcmVUb1VwZGF0ZShMYXllckNocm9taXVtKik7CisgICAgdm9pZCBwYWludENvbnRl
bnRzKExheWVyQ2hyb21pdW0qKTsKKwogICAgIHZvaWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAK
ICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5jcHAKaW5kZXggMTQyMGY3Mi4uZTM4YWNkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0OCwxNyArMTQ4LDI1IEBAIHZvaWQgQ0NTaW5n
bGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewogICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5U
aHJlYWQoKSk7CiAKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlciA9IGFkb3B0UHRyKG5ldyBD
Q1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9j
YXRvcigpKSk7CisgICAgLy8gUHJlcGFyZSBjb21wb3NpdG9yIHJlc291cmNlcworICAgIGlmICht
X2xheWVyVHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpKQorICAgICAgICBtX2xh
eWVyVHJlZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdElt
cGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2Nh
dG9yKCkpOwogCi0gICAgbV9sYXllclRyZWVIb3N0LT51cGRhdGVMYXllcnMoKTsKLSAgICBtX2xh
eWVyVHJlZUhvc3QtPmlkbGVVcGRhdGVMYXllcnMoKTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBh
aW50Q29udGVudHMoKTsKKworICAgIC8vIElkbGUgdXBkYXRlCisgICAgbV9sYXllclRyZWVIb3N0
LT5pZGxlUHJlcGFyZVRvVXBkYXRlKCk7CisgICAgLy8gUHJlcGFyZSBjb21wb3NpdG9yIHJlc291
cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRvclJlc291cmNlcygp
KQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1f
bGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVu
dHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRl
bnRzKCk7CiAKICAgICAvLyBDb21taXQgaW1tZWRpYXRlbHkKICAgICB7CiAgICAgICAgIERlYnVn
U2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAgICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5i
ZWdpbkNvbW1pdCgpOwotCi0gICAgICAgIHdoaWxlIChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+
dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgMSkpIHsgfQorICAgICAgICB3
aGlsZSAobV90ZXh0dXJlVXBkYXRlci51cGRhdGUobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4
dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxU
aHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQoKSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwogICAgICAgICBt
X2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJ
bXBsLmdldCgpKTsKQEAgLTE3NCw4ICsxODIsNiBAQCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6
OmRvQ29tbWl0KCkKICAgICB9CiAgICAgbV9sYXllclRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgp
OwogICAgIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lID0gdHJ1ZTsKLQotICAgIG1f
Y3VycmVudFRleHR1cmVVcGRhdGVyLmNsZWFyKCk7CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQ
cm94eTo6c2V0TmVlZHNDb21taXQoKQpAQCAtMjE2LDEyICsyMjIsMTAgQEAgdm9pZCBDQ1Npbmds
ZVRocmVhZFByb3h5OjpzdG9wKCkKIAogdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUo
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiB7Ci0gICAgQVNTRVJUKG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyKTsKLQogICAgIGlmIChtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5n
cygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMpCi0gICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVy
LT5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworICAgICAgICBtX3RleHR1
cmVVcGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgZWxz
ZQotICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRl
eHQoKSwgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXItPmFsbG9jYXRvcigpLCBzb3VyY2VSZWN0LCBk
ZXN0UmVjdCk7CisgICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1w
bC0+Y29udGV4dCgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAKIC8vIENhbGxlZCBieSB0
aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5nLiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMg
dGhlIHNjaGVkdWxpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXgg
ZDViYzEzMS4uNzgzYThkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApA
QCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAiY2MvQ0NDb21wbGV0aW9uRXZlbnQuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5o
IgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwotY2xh
c3MgQ0NUZXh0dXJlVXBkYXRlcjsKIAogY2xhc3MgQ0NTaW5nbGVUaHJlYWRQcm94eSA6IHB1Ymxp
YyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTg1LDcg
Kzg1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV90aW1lc1JlY3JlYXRlU2hvdWxkRmFpbDsgLy8g
VXNlZCBkdXJpbmcgdGVzdGluZy4KICAgICBib29sIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRl
ZEZyYW1lOwogCi0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVV
cGRhdGVyOworICAgIENDVGV4dHVyZVVwZGF0ZXIgbV90ZXh0dXJlVXBkYXRlcjsKIH07CiAKIC8v
IEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRlZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0
IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4
IGRmNzcyNDQuLmE2MWMzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBA
IC0zOCwxMCArMzgsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0b3IoYWxsb2NhdG9yKQorQ0NUZXh0dXJlVXBk
YXRlcjo6Q0NUZXh0dXJlVXBkYXRlcigpCiB7Ci0gICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0K
IAogQ0NUZXh0dXJlVXBkYXRlcjo6fkNDVGV4dHVyZVVwZGF0ZXIoKQpAQCAtNzEsNyArNjksNyBA
QCBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4
dCwgc2l6ZV90IGNvdW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFVw
ZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllcy5sYXN0KCk7Ci0gICAgICAgIGVudHJ5Lm1fdGV4
dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2FsbG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0
LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAgZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0
KGNvbnRleHQsIGVudHJ5Lm1fc291cmNlUmVjdCwgZW50cnkubV9kZXN0UmVjdCk7CiAgICAgICAg
IG1fZW50cmllcy5yZW1vdmVMYXN0KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRh
dGVyLmgKaW5kZXggYzM3YWYzNC4uYWI2NTllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0
ZXIuaApAQCAtMzMsMTEgKzMzLDEwIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdy
YXBoaWNzQ29udGV4dDNEOwotY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NUZXh0
dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgQ0NUZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2Nh
dG9yKik7CisgICAgQ0NUZXh0dXJlVXBkYXRlcigpOwogICAgIH5DQ1RleHR1cmVVcGRhdGVyKCk7
CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwpAQCAtNDksOCAr
NDgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3IoKSB7IHJldHVybiBtX2FsbG9jYXRvcjsgfQotCiBwcml2YXRlOgogICAg
IHN0cnVjdCBVcGRhdGVFbnRyeSB7CiAgICAgICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmUqIG1fdGV4dHVyZTsKQEAgLTU4LDcgKzU1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgSW50UmVj
dCBtX2Rlc3RSZWN0OwogICAgIH07CiAKLSAgICBUZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRv
cjsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1fZW50cmllczsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5jcHAKaW5kZXggNGUwNGNjOC4uNzYwYzBjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJl
YWRQcm94eS5jcHAKQEAgLTM5MSw4ICszOTEsMjUgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdp
bkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0K
ICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNlOwogCiAgICAgbV9sYXllclRyZWVIb3N0LT5w
cmVwYXJlVG9VcGRhdGUoKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwot
ICAgIG1fbGF5ZXJUcmVlSG9zdC0+aWRsZVVwZGF0ZUxheWVycygpOworICAgIGlmIChtX2xheWVy
VHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpKSB7CisgICAgICAgIC8vIEluaXRp
YWxpemUgY29tcG9zaXRvciByZXNvdXJjZXMgcmVxdWlyZSBmb3IgZnJhbWUuCisgICAgICAgIFRS
QUNFX0VWRU5UKCJhbGxvY2F0ZSIsIHRoaXMsIDApOworICAgICAgICBDQ0NvbXBsZXRpb25FdmVu
dCBjb21wbGV0aW9uOworICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNy
ZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3Vy
Y2VzT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOwor
ICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKKyAgICB9CisgICAgbV9sYXllclRyZWVIb3N0LT5w
YWludENvbnRlbnRzKCk7CisKKyAgICAvLyBJZGxlIHVwZGF0ZQorICAgIG1fbGF5ZXJUcmVlSG9z
dC0+aWRsZVByZXBhcmVUb1VwZGF0ZSgpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRz
Q29tcG9zaXRvclJlc291cmNlcygpKSB7CisgICAgICAgIC8vIEluaXRpYWxpemUgY29tcG9zaXRv
ciByZXNvdXJjZXMgcmVxdWlyZSBmb3IgZnJhbWUuCisgICAgICAgIFRSQUNFX0VWRU5UKCJhbGxv
Y2F0ZSIsIHRoaXMsIDApOworICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwor
ICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFz
ayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFk
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOworICAgICAgICBjb21wbGV0
aW9uLndhaXQoKTsKKyAgICB9CisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7
CiAKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Nyb2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3
ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRvIGZhbHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUg
bm93LCBpdCBtZWFucyBzZXROZWVkQW5pbWF0ZSB3YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5l
ZWRzQ29tbWl0CkBAIC00MTYsNiArNDMzLDIxIEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5G
cmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1iZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAg
ICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5GcmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVy
ID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIAordm9pZCBDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJh
bWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCit7
CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09u
T25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAgQVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25F
dmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJUKGlzSW1wbFRocmVhZCgpKTsKKyAgICBpZiAo
IW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKKyAgICAgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVDb21w
b3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRy
ZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAgY29tcGxldGlv
bi0+c2lnbmFsKCk7Cit9CisKIHZvaWQgQ0NUaHJlYWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1w
bFRocmVhZChQYXNzT3duUHRyPFVwZGF0ZUVudHJ5PiBlbnRyeSkKIHsKICAgICBBU1NFUlQoIW1f
Y29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhyZWFkKTsKQEAgLTQyMywxMCArNDU1LDcgQEAg
dm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8
VXBkYXRlRW50cnk+IGVudHJ5KQogICAgIGlmICghbV9sYXllclRyZWVIb3N0SW1wbCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVh
ZCkKLSAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0
cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1
cmVBbGxvY2F0b3IoKSkpOwotCi0gICAgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJl
YWQtPmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBlbnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+
bV9kZXN0UmVjdCk7CisgICAgbV90ZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC5hcHBlbmQoZW50
cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNlUmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOwog
fQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChD
Q0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikKQEAgLTQ0Nyw5ICs0NzYsNyBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25F
dmVudCogY29tcGxldGlvbgogCiBib29sIENDVGhyZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVw
ZGF0ZXMoKSBjb25zdAogewotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxU
aHJlYWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVVcGRhdGVzKCk7CisgICAgcmV0dXJuIG1fdGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuaGFzTW9yZVVwZGF0ZXMoKTsKIH0KIAogYm9vbCBDQ1Ro
cmVhZFByb3h5OjpjYW5EcmF3KCkKQEAgLTQ2NCwyMCArNDkxLDE2IEBAIHZvaWQgQ0NUaHJlYWRQ
cm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9yZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0Vf
RVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMi
LCB0aGlzLCAwKTsKICAgICBzdGF0aWMgY29uc3QgaW50IFVwZGF0ZXNQZXJGcmFtZSA9IDk5OTk5
OwotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCi0gICAgICAg
IHJldHVybjsKLSAgICBtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRl
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgVXBkYXRlc1BlckZyYW1lKTsKKyAgICBt
X3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLnVwZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5j
b250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CiB9CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2No
ZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBUUkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6
c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywgMCk7CisgICAgQVNTRVJUKCFtX3RleHR1cmVV
cGRhdGVyT25JbXBsVGhyZWFkLmhhc01vcmVVcGRhdGVzKCkpOwogICAgIEFTU0VSVChtX2NvbW1p
dENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CiAKLSAgICBpZiAobV9jdXJyZW50VGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQpIHsKLSAgICAgICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVwZGF0ZXMoKSk7Ci0gICAgICAgIG1fY3VycmVu
dFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNsZWFyKCk7Ci0gICAgfQorICAgIG1fdGV4dHVy
ZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwt
PmJlZ2luQ29tbWl0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuaAppbmRleCBiYzUzNDg4Li40
Y2NiZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIK
ICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
IApAQCAtMTAwLDYgKzEwMSw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXNzT3duUHRyPEND
VGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1lQW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgp
OwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFuZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0ND
b21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFzayoqKTsKKyAgICB2b2lkIHByZXBhcmVGcmFt
ZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOwogICAgIHZvaWQgdXBk
YXRlVGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0ZUVudHJ5Pik7CiAgICAgdm9p
ZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAg
ICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRocmVhZChSZWFkYmFja1JlcXVlc3QqKTsKQEAg
LTEzNiwxMCArMTM4LDExIEBAIHByaXZhdGU6CiAKICAgICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0
aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1pdCB0byBjb21wbGV0ZS4KICAgICBDQ0NvbXBsZXRp
b25FdmVudCogbV9jb21taXRDb21wbGV0aW9uRXZlbnRPbkltcGxUaHJlYWQ7Ci0gICAgT3duUHRy
PENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwog
CiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJhdyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmRE
cmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgogICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5
Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CisKKyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4
dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAppbmRleCA1MTZiM2RjLi5i
M2MyMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJU
cmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0VGVzdC5jcHAKQEAgLTk0OCwxMiArOTQ4LDIyIEBAIHB1YmxpYzoKIAogICAgICAg
ICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVy
ZS5nZXQoKTsgfQogCi0gICAgICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3Qg
SW50UmVjdCYgLyogc291cmNlUmVjdCAqLykKKyAgICAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVk
UHJlcGFyZVJlY3QoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBtX3Rl
eHR1cmVVcGRhdGVyLT5sYXllcigpLT5uZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNv
bnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCktPnByZXBhcmVSZWN0KCk7CiAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4
dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8s
IGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQorICAgICAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+cGFp
bnRDb250ZW50c1JlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3Vy
Y2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT51cGRhdGVSZWN0KCk7
CiAgICAgICAgICAgICB9CkBAIC05OTEsOSArMTAwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcqIG1fbGF5ZXI7CiAgICAgfTsKIAot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNr
aW5nPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5
ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsIGJvb2wgbmVlZFByZXBhcmVSZWN0KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFj
a2luZyhkZWxlZ2F0ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXll
ckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRlbGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NM
YXllclRyZWVIb3N0KikKQEAgLTEwMjYsMjYgKzEwMzYsMzUgQEAgcHVibGljOgogICAgIHZvaWQg
cHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RDb3VudCsrOyB9CiAgICAgaW50IHByZXBhcmVS
ZWN0Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVSZWN0Q291bnQ7IH0KIAorICAgIHZvaWQgcGFp
bnRDb250ZW50c1JlY3QoKSB7IG1fcGFpbnRDb250ZW50c1JlY3RDb3VudCsrOyB9CisgICAgaW50
IHBhaW50Q29udGVudHNSZWN0Q291bnQoKSB7IHJldHVybiBtX3BhaW50Q29udGVudHNSZWN0Q291
bnQ7IH0KKwogICAgIHZvaWQgdXBkYXRlUmVjdCgpIHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQog
ICAgIGludCB1cGRhdGVSZWN0Q291bnQoKSB7IHJldHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQog
CisgICAgaW50IG5lZWRQcmVwYXJlUmVjdCgpIHsgcmV0dXJuIG1fbmVlZFByZXBhcmVSZWN0OyB9
CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRl
VHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxlZ2F0ZSkKKyAgICBleHBsaWNpdCBDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRl
LCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICAgICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShk
ZWxlZ2F0ZSkKKyAgICAgICAgLCBtX25lZWRQcmVwYXJlUmVjdChuZWVkUHJlcGFyZVJlY3QpCiAg
ICAgICAgICwgbV9wcmVwYXJlVG9VcGRhdGVDb3VudCgwKQogICAgICAgICAsIG1faWRsZVByZXBh
cmVUb1VwZGF0ZUNvdW50KDApCiAgICAgICAgICwgbV9wYWludENvbnRlbnRzQ291bnQoMCkKICAg
ICAgICAgLCBtX3ByZXBhcmVSZWN0Q291bnQoMCkKKyAgICAgICAgLCBtX3BhaW50Q29udGVudHNS
ZWN0Q291bnQoMCkKICAgICAgICAgLCBtX3VwZGF0ZVJlY3RDb3VudCgwKQogICAgIHsKICAgICAg
ICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPENvbnRl
bnRMYXllclRleHR1cmVVcGRhdGVyPiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOworICAg
IGJvb2wgbV9uZWVkUHJlcGFyZVJlY3Q7CiAgICAgaW50IG1fcHJlcGFyZVRvVXBkYXRlQ291bnQ7
CiAgICAgaW50IG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50OwogICAgIGludCBtX3BhaW50Q29u
dGVudHNDb3VudDsKICAgICBpbnQgbV9wcmVwYXJlUmVjdENvdW50OworICAgIGludCBtX3BhaW50
Q29udGVudHNSZWN0Q291bnQ7CiAgICAgaW50IG1fdXBkYXRlUmVjdENvdW50OwogfTsKIApAQCAt
MTA1NCw3ICsxMDczLDcgQEAgY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2Ug
OiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRyZWVI
b3N0VGVzdE9wYWNpdHlDaGFuZ2UoKQogICAgICAgICA6IG1fdGVzdE9wYWNpdHlDaGFuZ2VEZWxl
Z2F0ZSh0aGlzKQotICAgICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJv
bWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdh
dGUpKQorICAgICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdp
dGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUsIHRy
dWUpKQogICAgIHsKICAgICB9CiAKQEAgLTEwODUsNiArMTEwNCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIC8vIHBhaW50Q29udGVudHNSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhlIHNh
bWUKICAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHByZXBhcmVSZWN0KCkuCiAgICAgICAg
IEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSwKKyAgICAg
ICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c1JlY3RDb3VudCgp
KTsKKworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhl
IHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0KCku
CisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNSZWN0
Q291bnQoKSwKICAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRlUmVj
dENvdW50KCkpOwogCiAgICAgICAgIC8vIGNsZWFyIG1fdXBkYXRlQ2hlY2tMYXllciBzbyBDQ0xh
eWVyVHJlZUhvc3QgZGllcy4KQEAgLTExMDEsNCArMTEyNSw1NSBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3QodHJ1
ZSk7CiB9CiAKKy8vIHByZXBhcmVSZWN0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBuZWVk
UHJlcGFyZVJlY3QoKSByZXR1cm5zIGZhbHNlLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdE5v
UHJlcGFyZVJlY3QgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CitwdWJsaWM6CisgICAg
Q0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QoKQorICAgICAgICA6IG1fdXBkYXRlQ2hl
Y2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZt
X2RlbGVnYXRlLCBmYWxzZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdp
blRlc3QoKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIobV91
cGRhdGVDaGVja0xheWVyKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydChJ
bnRTaXplKDEwLCAxMCkpOworCisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRocmVh
ZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQo
Q0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgeworICAgICAgICBlbmRUZXN0KCk7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisgICAgeworICAgICAgICAvLyBwcmVwYXJl
VG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1Rf
RVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlVG9VcGRhdGVDb3VudCgpKTsKKworICAg
ICAgICAvLyBpZGxlUHJlcGFyZVRvVXBkYXRlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgb25j
ZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+aWRsZVByZXBhcmVU
b1VwZGF0ZUNvdW50KCkpOworCisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCB0d2ljZS4KKyAgICAgICAgRVhQRUNUX0VRKDIsIG1fdXBkYXRlQ2hlY2tM
YXllci0+cGFpbnRDb250ZW50c0NvdW50KCkpOworCisgICAgICAgIC8vIHByZXBhcmVSZWN0KCkg
c2hvdWxkIG5vdCBoYXZlIGJlZW4gY2FsbGVkLgorICAgICAgICBFWFBFQ1RfRVEoMCwgbV91cGRh
dGVDaGVja0xheWVyLT5wcmVwYXJlUmVjdENvdW50KCkpOworCisgICAgICAgIC8vIHVwZGF0ZVJl
Y3QoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCB0aGUgc2FtZQorICAgICAgICAvLyBhbW91bnQg
b2YgdGltZXMgYXMgcGFpbnRDb250ZW50c1JlY3QoKS4KKyAgICAgICAgRVhQRUNUX0VRKG1fdXBk
YXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c1JlY3RDb3VudCgpLAorICAgICAgICAgICAgICAg
ICAgbV91cGRhdGVDaGVja0xheWVyLT51cGRhdGVSZWN0Q291bnQoKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIE1vY2tMYXllckRlbGVnYXRlIG1fZGVsZWdhdGU7CisgICAgUmVmUHRyPENvbnRl
bnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBtX3VwZGF0ZUNoZWNrTGF5ZXI7Cit9
OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QsIHJ1bk11bHRpVGhy
ZWFkKQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRl
c3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21p
dW1UZXN0LmNwcAppbmRleCA2ZmQ1NmQ5Li5mNTZhODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAK
QEAgLTg0LDggKzg0LDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCiAgICAgewotICAgICAgICB0ZXh0dXJlLT5w
cmVwYXJlUmVjdChzb3VyY2VSZWN0KTsKLSAgICAgICAgdGV4dHVyZS0+dXBkYXRlUmVjdChtX2Nv
bnRleHQsIG1fYWxsb2NhdG9yLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgIGlmICh0
ZXh0dXJlLT5uZWVkUHJlcGFyZVJlY3QoKSkKKyAgICAgICAgICAgIHRleHR1cmUtPnByZXBhcmVS
ZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKworICAg
ICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1fY29udGV4dCwgc291cmNlUmVjdCwgZGVzdFJlY3Qp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE0Myw2ICsxNDUsNyBAQCBURVNUX0YoQ2FudmFzMkRM
YXllckNocm9taXVtVGVzdCwgdGVzdEZ1bGxMaWZlY3ljbGUpCiAKICAgICBjYW52YXMtPmNvbnRl
bnRDaGFuZ2VkKCk7CiAgICAgRVhQRUNUX1RSVUUoY2FudmFzLT5uZWVkc0Rpc3BsYXkoKSk7Cisg
ICAgY2FudmFzLT5wcmVwYXJlVG9VcGRhdGVJZkRpcnR5KCk7CiAgICAgY2FudmFzLT5wYWludENv
bnRlbnRzSWZEaXJ0eSgpOwogICAgIEVYUEVDVF9GQUxTRShjYW52YXMtPm5lZWRzRGlzcGxheSgp
KTsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVk
TGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBmZWEwYjljLi5hNWVhZTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJl
KCkgeyB9CiAKICAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0
dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChH
cmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgSW50UmVjdCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9CiAKICAgICBw
cml2YXRlOgogICAgICAgICBPd25QdHI8TWFuYWdlZFRleHR1cmU+IG1fdGV4dHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121173</attachid>
            <date>2012-01-04 15:24:00 -0800</date>
            <delta_ts>2012-01-04 15:24:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>initialize-frame-resources.diff</filename>
            <type>text/plain</type>
            <size>52874</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Jp
dG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
aW5kZXggMzdiYTM0Ni4uOGVhNDFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKQEAgLTQ1LDkgKzQ1LDExIEBAIEJpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6On5UZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBC
aXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBCaXRt
YXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlVXBkYXRlcigpLT51cGRhdGVUZXh0dXJlUmVj
dChjb250ZXh0LCBhbGxvY2F0b3IsIHRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwor
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICBjb250ZXh0LT5iaW5kVGV4
dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgdGV4dHVyZSgpLT50ZXh0dXJlSWQo
KSk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgdGV4
dHVyZSgpLT5mb3JtYXQoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogfQogCiBQYXNzUmVmUHRy
PEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVy
LCBib29sIHVzZU1hcFRleFN1YkltYWdlKQpAQCAtOTEsMTIgKzkzLDEwIEBAIHZvaWQgQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50cyhjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwKICAgICBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRz
KCpjYW52YXNQYWludGVyLmNvbnRleHQoKSwgY29udGVudFJlY3QsIGNvbnRlbnRzU2NhbGUpOwog
fQogCi12b2lkIEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0
b3IsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3ZvaWQgQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHVuc2ln
bmVkIGZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVz
dFJlY3QpCiB7CiAgICAgUGxhdGZvcm1DYW52YXM6OkF1dG9Mb2NrZXIgbG9ja2VyKCZtX2NhbnZh
cyk7Ci0KLSAgICB0ZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwotICAg
IG1fdGV4U3ViSW1hZ2UudXBsb2FkKGxvY2tlci5waXhlbHMoKSwgY29udGVudFJlY3QoKSwgc291
cmNlUmVjdCwgZGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAgICBtX3Rl
eFN1YkltYWdlLnVwbG9hZChsb2NrZXIucGl4ZWxzKCksIGNvbnRlbnRSZWN0KCksIHNvdXJjZVJl
Y3QsIGRlc3RSZWN0LCBmb3JtYXQsIGNvbnRleHQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgK
aW5kZXggZTVmY2Y2NC4uMTkzODg1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFRleHR1cmUoQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8TWFu
YWdlZFRleHR1cmU+KTsKICAgICAgICAgdmlydHVhbCB+VGV4dHVyZSgpOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJl
VXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KQEAgLTU5LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAgICAgdmlydHVhbCBTYW1wbGVk
VGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVu
dHNTY2FsZSk7Ci0gICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCos
IFRleHR1cmVBbGxvY2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICB2b2lkIHVwZGF0ZVRleHR1cmVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgdW5zaWduZWQgZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBz
b3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKIHByaXZhdGU6CiAgICAgQml0
bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGM4
MDRkNGMuLmRmMDBlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIEJp
dG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU6OlRleHR1cmUo
Qml0bWFwU2tQaWN0dXJlQ2FudmFzCiB7CiB9CiAKLXZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYg
c291cmNlUmVjdCkKK3ZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkK
IHsKICAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRl
cyhzb3VyY2VSZWN0LnNpemUoKSwgdGV4dHVyZSgpLT5mb3JtYXQoKSk7CiAgICAgbV9waXhlbERh
dGEgPSBhZG9wdEFycmF5UHRyKG5ldyB1aW50OF90W2J1ZmZlclNpemVdKTsKQEAgLTUxLDkgKzUx
LDEwIEBAIHZvaWQgQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6cHJlcGFyZVJlY3QoY29uc3QgSW50UmVjCiAgICAgdGV4dHVyZVVwZGF0ZXIoKS0+cGFp
bnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgpLCBzb3VyY2VSZWN0KTsKIH0KIAotdm9pZCBCaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9p
ZCBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKIHsKLSAgICB0ZXh0dXJlKCktPmJpbmRUZXh0
dXJlKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgQVNTRVJUKHRleHR1cmUoKS0+dGV4dHVyZUlk
KCkpOworICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJF
XzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKICAgICBBU1NFUlQobV9waXhlbERhdGEuZ2V0
KCkpOwogICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRl
eHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LCBtX3BpeGVsRGF0YS5nZXQoKSk7CiAgICAgbV9w
aXhlbERhdGEuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcFNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCA2OWI5MDVjLi41NjFhODI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRt
YXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCkBAIC00Miw4ICs0Miw4IEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAg
ICAgICAgIFRleHR1cmUoQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcios
IFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJl
cGFyZVJlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEJpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIqIHRleHR1cmVVcGRhdGVyKCkgeyByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRM
YXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NhbnZhczJETGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOGUyY2JhNy4uNzkxMmMyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uY3BwCkBAIC00Nyw4ICs0Nyw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6VXBkYXRlclRleHR1cmUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXllcikKK0NhbnZh
czJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6OlVwZGF0ZXJUZXh0dXJlKENhbnZhczJE
TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUp
CiAgICAgOiBtX2xheWVyKGxheWVyKQorICAgICwgbV90ZXh0dXJlKHRleHR1cmUpCiB7CiB9CiAK
QEAgLTU2LDkgKzU3LDE5IEBAIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRleHR1cmU6
On5VcGRhdGVyVGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpV
cGRhdGVyVGV4dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4
dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICov
LCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK2Jvb2wgQ2FudmFzMkRMYXllckNocm9t
aXVtOjpVcGRhdGVyVGV4dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKIHsKLSAgICBtX2xheWVyLT51
cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKGNvbnRleHQsIGFsbG9jYXRvcik7CisgICAgcmV0dXJu
ICFtX3RleHR1cmUtPnRleHR1cmVJZCgpOworfQorCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6VXBkYXRlclRleHR1cmU6OnByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVy
ZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBj
b25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLykKK3sKKyAgICBtX3RleHR1cmUtPmFsbG9jYXRl
KGFsbG9jYXRvcik7Cit9CisKK3ZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpVcGRhdGVyVGV4
dHVyZTo6dXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3QgKi8pCit7Cisg
ICAgbV9sYXllci0+dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhjb250ZXh0KTsKIH0KIAogUGFz
c1JlZlB0cjxDYW52YXMyRExheWVyQ2hyb21pdW0+IENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRTaXplJiBzaXplKQpAQCAt
NzMsNyArODQsNiBAQCBDYW52YXMyRExheWVyQ2hyb21pdW06OkNhbnZhczJETGF5ZXJDaHJvbWl1
bShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgSQogICAgICwgbV9iYWNrVGV4dHVy
ZUlkKDApCiAgICAgLCBtX2ZibygwKQogICAgICwgbV91c2VEb3VibGVCdWZmZXJpbmcoQ0NQcm94
eTo6aGFzSW1wbFRocmVhZCgpKQotICAgICwgbV91cGRhdGVyVGV4dHVyZShVcGRhdGVyVGV4dHVy
ZTo6Y3JlYXRlKHRoaXMpKQogewogICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZlcmluZykKICAgICAg
ICAgR0xDKG1fY29udGV4dCwgbV9mYm8gPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCkp
OwpAQCAtMTA1LDEzICsxMTUsMTMgQEAgYm9vbCBDYW52YXMyRExheWVyQ2hyb21pdW06OmRyYXdz
Q29udGVudCgpIGNvbnN0CiAgICAgICAgICYmIG1fY29udGV4dCAmJiAobV9jb250ZXh0LT5nZXRF
eHRlbnNpb25zKCktPmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKSA9PSBHcmFwaGljc0NvbnRl
eHQzRDo6Tk9fRVJST1IpOwogfQogCi12b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6cGFpbnRD
b250ZW50c0lmRGlydHkoKQordm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnByZXBhcmVUb1Vw
ZGF0ZUlmRGlydHkoKQogewogICAgIGlmICghZHJhd3NDb250ZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZlcmluZykKLSAgICAgICAgbV9mcm9udFRleHR1
cmUtPnJlc2VydmUobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSk7CisgICAgICAgIG1f
dXBkYXRlclRleHR1cmUtPnRleHR1cmUoKS0+cmVzZXJ2ZShtX3NpemUsIEdyYXBoaWNzQ29udGV4
dDNEOjpSR0JBKTsKIAogICAgIGlmICghbmVlZHNEaXNwbGF5KCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTE0MSwxNyArMTUxLDE4IEBAIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpzZXRMYXll
clRyZWVIb3N0KENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKIHZvaWQgQ2FudmFzMkRMYXllckNocm9t
aXVtOjpzZXRUZXh0dXJlTWFuYWdlcihUZXh0dXJlTWFuYWdlciogdGV4dHVyZU1hbmFnZXIpCiB7
CiAgICAgaWYgKHRleHR1cmVNYW5hZ2VyICYmIG1fdXNlRG91YmxlQnVmZmVyaW5nKQotICAgICAg
ICBtX2Zyb250VGV4dHVyZSA9IE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUodGV4dHVyZU1hbmFnZXIp
OworICAgICAgICBtX3VwZGF0ZXJUZXh0dXJlID0gVXBkYXRlclRleHR1cmU6OmNyZWF0ZSh0aGlz
LCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmVNYW5hZ2VyKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2Zyb250VGV4dHVyZS5jbGVhcigpOworICAgICAgICBtX3VwZGF0ZXJUZXh0dXJlLmNs
ZWFyKCk7CiB9CiAKLXZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9y
UmVzb3VyY2VzKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yICph
bGxvY2F0b3IpCit2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKIHsKLSAgICBpZiAoIW1fYmFja1Rl
eHR1cmVJZCB8fCAhbV9mcm9udFRleHR1cmUgfHwgIW1fZnJvbnRUZXh0dXJlLT5pc1ZhbGlkKG1f
c2l6ZSwgR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpKQorICAgIGlmICghbV9iYWNrVGV4dHVyZUlk
IHx8ICFtX3VwZGF0ZXJUZXh0dXJlIHx8ICFtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0dXJlKCktPmlz
VmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fZnJvbnRUZXh0dXJlLT5iaW5kVGV4dHVyZShjb250ZXh0LCBhbGxvY2F0b3IpOwor
ICAgIEFTU0VSVChtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAg
ICBjb250ZXh0LT5iaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgbV91
cGRhdGVyVGV4dHVyZS0+dGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CiAKICAgICBHTEMoY29udGV4
dCwgY29udGV4dC0+YmluZEZyYW1lYnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgbV9mYm8pKTsKICAgICBHTEMoY29udGV4dCwgY29udGV4dC0+ZnJhbWVidWZmZXJUZXh0dXJl
MkQoR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSLCBHcmFwaGljc0NvbnRleHQzRDo6Q09M
T1JfQVRUQUNITUVOVDAsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCBtX2JhY2tUZXh0
dXJlSWQsIDApKTsKQEAgLTE2NCw2ICsxNzUsOSBAQCB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dAog
CiB2b2lkIENhbnZhczJETGF5ZXJDaHJvbWl1bTo6Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShM
YXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVyJiBoYW5kbGVyKQogeworICAgIGlmICghbV9iYWNr
VGV4dHVyZUlkIHx8ICFtX3VwZGF0ZXJUZXh0dXJlIHx8ICFtX3VwZGF0ZXJUZXh0dXJlLT50ZXh0
dXJlKCktPmlzVmFsaWQobV9zaXplLCBHcmFwaGljc0NvbnRleHQzRDo6UkdCQSkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGhhbmRsZXIuaGFuZGxlKG1fdXBkYXRlclRleHR1cmUuZ2V0KCksIElu
dFJlY3QoKSwgSW50UmVjdCgpKTsKIH0KIApAQCAtMTczLDcgKzE4Nyw3IEBAIHZvaWQgQ2FudmFz
MkRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIAog
ICAgIENDQ2FudmFzTGF5ZXJJbXBsKiBjYW52YXNMYXllciA9IHN0YXRpY19jYXN0PENDQ2FudmFz
TGF5ZXJJbXBsKj4obGF5ZXIpOwogICAgIGlmIChtX3VzZURvdWJsZUJ1ZmZlcmluZykKLSAgICAg
ICAgY2FudmFzTGF5ZXItPnNldFRleHR1cmVJZChtX2Zyb250VGV4dHVyZS0+dGV4dHVyZUlkKCkp
OworICAgICAgICBjYW52YXNMYXllci0+c2V0VGV4dHVyZUlkKG1fdXBkYXRlclRleHR1cmUtPnRl
eHR1cmUoKS0+dGV4dHVyZUlkKCkpOwogICAgIGVsc2UKICAgICAgICAgY2FudmFzTGF5ZXItPnNl
dFRleHR1cmVJZChtX2JhY2tUZXh0dXJlSWQpOwogfQpAQCAtMTgxLDEzICsxOTUsMTMgQEAgdm9p
ZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8oQ0NMYXllckltcGwqIGxh
eWVyKQogdm9pZCBDYW52YXMyRExheWVyQ2hyb21pdW06OnVucmVzZXJ2ZUNvbnRlbnRzVGV4dHVy
ZSgpCiB7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKQotICAgICAgICBtX2Zyb250VGV4
dHVyZS0+dW5yZXNlcnZlKCk7CisgICAgICAgIG1fdXBkYXRlclRleHR1cmUtPnRleHR1cmUoKS0+
dW5yZXNlcnZlKCk7CiB9CiAKIHZvaWQgQ2FudmFzMkRMYXllckNocm9taXVtOjpjbGVhbnVwUmVz
b3VyY2VzKCkKIHsKICAgICBpZiAobV91c2VEb3VibGVCdWZmZXJpbmcpCi0gICAgICAgIG1fZnJv
bnRUZXh0dXJlLmNsZWFyKCk7CisgICAgICAgIG1fdXBkYXRlclRleHR1cmUuY2xlYXIoKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAppbmRleCBkNDViYThjLi4zZDM0
MmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQ2hyb21pdW0uaApAQCAtNDYsMTkgKzQ2LDI0
IEBAIGNsYXNzIENhbnZhczJETGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDYW52YXNMYXllckNocm9t
aXVtIHsKIHB1YmxpYzoKICAgICBjbGFzcyBVcGRhdGVyVGV4dHVyZSA6IHB1YmxpYyBMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNz
T3duUHRyPFVwZGF0ZXJUZXh0dXJlPiBjcmVhdGUoQ2FudmFzMkRMYXllckNocm9taXVtKiBsYXll
cikKKyAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8VXBkYXRlclRleHR1cmU+IGNyZWF0ZShDYW52
YXMyRExheWVyQ2hyb21pdW0qIGxheWVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0ZXh0
dXJlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJU
ZXh0dXJlKGxheWVyKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFVwZGF0ZXJU
ZXh0dXJlKGxheWVyLCB0ZXh0dXJlKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5V
cGRhdGVyVGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4
dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQorCisgICAgICAgIHZp
cnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBh
cmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJ
bnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBkZXN0UmVjdCAqLyk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBVcGRhdGVyVGV4dHVyZShDYW52YXMy
RExheWVyQ2hyb21pdW0qKTsKKyAgICAgICAgZXhwbGljaXQgVXBkYXRlclRleHR1cmUoQ2FudmFz
MkRMYXllckNocm9taXVtKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4pOwogCiAgICAgICAg
IENhbnZhczJETGF5ZXJDaHJvbWl1bSogbV9sYXllcjsKKyAgICAgICAgT3duUHRyPE1hbmFnZWRU
ZXh0dXJlPiBtX3RleHR1cmU7CiAgICAgfTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhbnZh
czJETGF5ZXJDaHJvbWl1bT4gY3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50U2l6
ZSYpOwpAQCAtNjksMTAgKzc0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY29udGVu
dENoYW5nZWQoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c0lmRGlydHkoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cHJlcGFyZVRvVXBkYXRlSWZEaXJ0eSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyVHJl
ZUhvc3QoQ0NMYXllclRyZWVIb3N0Kik7Ci0gICAgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOworICAgIHZvaWQgdXBk
YXRlQ29tcG9zaXRvclJlc291cmNlcyhHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1YWwg
dm9pZCBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKExheWVyVGV4dHVyZVVwZGF0ZXI6OkhhbmRs
ZXImKTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCopOwog
ICAgIHZpcnR1YWwgdm9pZCB1bnJlc2VydmVDb250ZW50c1RleHR1cmUoKTsKQEAgLTkzLDcgKzk4
LDYgQEAgcHJpdmF0ZToKICAgICAvLyBjYW52YXMnIGJhY2tpbmcgdGV4dHVyZS4gVGhpcyBvcHRp
b24gc2hvdWxkIGJlIHVzZWQgd2l0aCB0aGUgY29tcG9zaXRvciBkb2Vzbid0CiAgICAgLy8gc3lu
Y2hyb25pemUgaXRzIGRyYXdzIHdpdGggdGhlIGNhbnZhcyB1cGRhdGVzLgogICAgIGJvb2wgbV91
c2VEb3VibGVCdWZmZXJpbmc7Ci0gICAgT3duUHRyPE1hbmFnZWRUZXh0dXJlPiBtX2Zyb250VGV4
dHVyZTsKICAgICBPd25QdHI8VXBkYXRlclRleHR1cmU+IG1fdXBkYXRlclRleHR1cmU7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9D
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IDFmM2I2
NDQuLjk0MjFkNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
Y3BwCkBAIC00NCw2ICs0NCwxNiBAQCBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJl
Ojp+VGV4dHVyZSgpCiB7CiB9CiAKK2Jvb2wgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZTo6bmVlZFByZXBhcmVSZWN0KCkKK3sKKyAgICByZXR1cm4gIW1fdGV4dHVyZS0+dGV4dHVy
ZUlkKCk7Cit9CisKK3ZvaWQgQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZTo6cHJl
cGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3Is
IGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RS
ZWN0ICovKQoreworICAgIG1fdGV4dHVyZS0+YWxsb2NhdGUoYWxsb2NhdG9yKTsKK30KKwogQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3du
UHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQogICAgIDogbV9wYWludGVyKHBhaW50
ZXIpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggYmU5
ZmYxMy4uZWIzNjI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aApAQCAtNDUsNyArNDUsMTAgQEAgcHVibGljOgogCiAgICAgICAgIHZpcnR1YWwgTWFuYWdlZFRl
eHR1cmUqIHRleHR1cmUoKSB7IHJldHVybiBtX3RleHR1cmUuZ2V0KCk7IH0KIAotICAgICBwcm90
ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9j
YXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8q
IGRlc3RSZWN0ICovKTsKKworICAgIHByb3RlY3RlZDoKICAgICAgICAgZXhwbGljaXQgVGV4dHVy
ZShQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPik7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggOGYyZGU4YS4uYTc1ZjU2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuY3BwCkBAIC0zOCwxMiArMzgsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgUGFzc093blB0cjxTa0NhbnZhcz4gY3JlYXRlQWNjZWxlcmF0ZWRDYW52YXMoR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZWRUZXh0
dXJlKiB0ZXh0dXJlKQogewotICAgIC8vIEFsbG9jYXRlIHNvIHRoYXQgd2UgaGF2ZSBhIHZhbGlk
IHRleHR1cmUgaWQuCi0gICAgdGV4dHVyZS0+YWxsb2NhdGUoYWxsb2NhdG9yKTsKLQogICAgIEdy
Q29udGV4dCogZ3JDb250ZXh0ID0gY29udGV4dC0+Z3JDb250ZXh0KCk7CiAgICAgSW50U2l6ZSBj
YW52YXNTaXplID0gdGV4dHVyZS0+c2l6ZSgpOwogICAgIEdyUGxhdGZvcm1UZXh0dXJlRGVzYyB0
ZXh0dXJlRGVzYzsKQEAgLTY3LDkgKzYzLDkgQEAgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp+VGV4dHVyZSgpCiB7CiB9CiAKLXZvaWQgRnJh
bWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjp1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9yKiBhbGxv
Y2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0
KQordm9pZCBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1cmVV
cGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSgp
LCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgdGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4
dHVyZVJlY3QoY29udGV4dCwgdGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CiB9CiAK
IFBhc3NSZWZQdHI8RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
PiBGcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQ
YXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiBwYWludGVyKQpAQCAtOTcsMTUgKzkzLDE3
IEBAIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBGcmFtZUJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwCiAgICAgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkE7CiB9CiAKLXZvaWQgRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBNYW5hZ2VkVGV4
dHVyZSogdGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpCit2b2lkIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6dXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIE1hbmFn
ZWRUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRS
ZWN0JiBkZXN0UmVjdCkKIHsKKyAgICBBU1NFUlQodGV4dHVyZS0+dGV4dHVyZUlkKCkpOworCiAg
ICAgLy8gTWFrZSBzdXJlIFNLSUEgdXNlcyB0aGUgY29ycmVjdCBHTCBjb250ZXh0LgogICAgIGNv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIC8vIE5vdGlmeSBTS0lBIHRvIHN5bmMg
aXRzIGludGVybmFsIEdMIHN0YXRlLgogICAgIGNvbnRleHQtPmdyQ29udGV4dCgpLT5yZXNldENv
bnRleHQoKTsKIAogICAgIC8vIENyZWF0ZSBhbiBhY2NlbGVyYXRlZCBjYW52YXMgdG8gZHJhdyBv
bi4KLSAgICBPd25QdHI8U2tDYW52YXM+IGNhbnZhcyA9IGNyZWF0ZUFjY2VsZXJhdGVkQ2FudmFz
KGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSk7CisgICAgT3duUHRyPFNrQ2FudmFzPiBjYW52
YXMgPSBjcmVhdGVBY2NlbGVyYXRlZENhbnZhcyhjb250ZXh0LCB0ZXh0dXJlKTsKIAogICAgIGNh
bnZhcy0+Y2xpcFJlY3QoU2tSZWN0KGRlc3RSZWN0KSk7CiAgICAgLy8gVGhlIGNvbXBvc2l0b3Ig
ZXhwZWN0cyB0aGUgdGV4dHVyZXMgdG8gYmUgdXBzaWRlLWRvd24gc28gaXQgY2FuIGZsaXAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1l
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggMjFhZTNkZC4uNmQyYWQ0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKQEAgLTMyLDYgKzMyLDggQEAKIAogI2luY2x1ZGUgIlNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKIAorY2xhc3MgU2tDYW52YXM7CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIgewpA
QCAtNDEsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRleHR1cmUoRnJhbWVCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVy
ZT4pOwogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IEludFJlY3Qm
IC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9CkBA
IC01NCw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRl
eHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1cmVNYW5hZ2VyKik7CiAg
ICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVt
IHRleHR1cmVGb3JtYXQpOwotICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250
ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJbnRSZWN0
JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgdm9pZCB1cGRhdGVU
ZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIE1hbmFnZWRUZXh0dXJlKiwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IEZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cihQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNo
cm9taXVtLmNwcAppbmRleCAxZTVjOTRjLi44YjZlYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTU0LDkgKzU0LDExIEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAg
ICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0Qq
IGNvbnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpCisgICAgICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICAgICAgewotICAgICAgICAgICAg
dGV4dHVyZVVwZGF0ZXIoKS0+dXBkYXRlVGV4dHVyZVJlY3QoY29udGV4dCwgYWxsb2NhdG9yLCB0
ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIEFTU0VSVCh0ZXh0
dXJlKCktPnRleHR1cmVJZCgpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB0ZXh0dXJlKCktPnRleHR1cmVJZCgpKTsKKyAg
ICAgICAgICAgIHRleHR1cmVVcGRhdGVyKCktPnVwZGF0ZVRleHR1cmVSZWN0KGNvbnRleHQsIHRl
eHR1cmUoKS0+Zm9ybWF0KCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKICAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKQEAgLTgzLDE1ICs4NSwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7CiAgICAgfQogCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IEludFNp
emUmIHRpbGVTaXplLCBpbnQgLyogYm9yZGVyVGV4ZWxzICovLCBmbG9hdCAvKiBjb250ZW50c1Nj
YWxlICovKQorICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8q
IGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgaW50IC8qIGJvcmRlclRl
eGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykKICAgICB7CiAgICAgICAgIG1fdGV4
U3ViSW1hZ2Uuc2V0U3ViSW1hZ2VTaXplKHRpbGVTaXplKTsKICAgICB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgTWFuYWdlZFRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQorICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgdW5zaWdu
ZWQgZm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0
UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUtPmJpbmRUZXh0dXJlKGNvbnRleHQsIGFsbG9j
YXRvcik7Ci0KICAgICAgICAgLy8gU291cmNlIHJlY3Qgc2hvdWxkIG5ldmVyIGdvIG91dHNpZGUg
dGhlIGltYWdlIHBpeGVscywgZXZlbiBpZiB0aGlzCiAgICAgICAgIC8vIGlzIHJlcXVlc3RlZCBi
ZWNhdXNlIHRoZSB0ZXh0dXJlIGV4dGVuZHMgb3V0c2lkZSB0aGUgaW1hZ2UuCiAgICAgICAgIElu
dFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBzb3VyY2VSZWN0OwpAQCAtMTAxLDcgKzEwMSw3IEBA
IHB1YmxpYzoKICAgICAgICAgY2xpcHBlZERlc3RSZWN0Lm1vdmUoY2xpcHBlZFNvdXJjZVJlY3Qu
bG9jYXRpb24oKSAtIHNvdXJjZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIGNsaXBwZWREZXN0
UmVjdC5zZXRTaXplKGNsaXBwZWRTb3VyY2VSZWN0LnNpemUoKSk7CiAKLSAgICAgICAgbV90ZXhT
dWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCksIGNsaXBwZWRTb3Vy
Y2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIHRleHR1cmUtPmZvcm1hdCgpLCBjb250ZXh0KTsKKyAg
ICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCks
IGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIGZvcm1hdCwgY29udGV4dCk7CiAg
ICAgfQogCiAgICAgdm9pZCB1cGRhdGVGcm9tSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1h
Z2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKaW5kZXggZDAwNjNlYi4uYTY2N2QwYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNDksOCArNDksMTUgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5UZXh0dXJlKCkgeyB9CiAKICAgICAgICAgdmlydHVhbCBNYW5h
Z2VkVGV4dHVyZSogdGV4dHVyZSgpIHsgcmV0dXJuIDA7IH0KLSAgICAgICAgdmlydHVhbCB2b2lk
IHByZXBhcmVSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkgPSAwOworCisgICAgICAgIC8vIHByZXBhcmVSZWN0KCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBp
ZiB0aGlzIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJlUmVj
dCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIC8vIFRoaXMgcnVucyBzeW5jaHJvbm91c2x5
IG9uIHRoZSBpbXBsIHRocmVhZCB3aXRoIHNhZmUgYWNjZXNzIHRvIG1haW4gdGhyZWFkIHJlc291
cmNlcy4KKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNv
bnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKSB7IH0KKyAgICAgICAgLy8gVGhpcyBydW5zIG9u
IHRoZSBtYWluIHRocmVhZCBhZnRlciBjYWxscyB0byBuZWVkUHJlcGFyZVJlY3QoKSBhbmQgcHJl
cGFyZVJlY3QoKSBidXQgYmVmb3JlIHVwZGF0ZVJlY3QoKS4KKyAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8pIHsgfQor
ICAgICAgICAvLyBUaGlzIHJ1bnMgYXN5bmNocm9ub3VzbHkgb24gdGhlIGltcGwgdGhyZWFkLiBB
Y2Nlc3MgdG8gbWFpbiB0aHJlYWQgcmVzb3VyY2VzIGlzIHVuc2FmZS4KKyAgICAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkgPSAwOwogICAgIH07CiAKICAgICBjbGFz
cyBIYW5kbGVyIHsKQEAgLTczLDcgKzgwLDcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgZm9ybWF0
IHNwZWNpZmllcyB0aGUgY29tcG9uZW50IG9yZGVyIGluIHRoZSBzYW1wbGVkIHRleGVsLgogICAg
IC8vIElmIHRoZSBmb3JtYXQgaXMgVGV4ZWxGb3JtYXRCR1JBLCB2ZWM0LnggaXMgYmx1ZSBhbmQg
dmVjNC56IGlzIHJlZC4KICAgICB2aXJ0dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4
ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBw
YWludENvbnRlbnRzKGNvbnN0IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRT
aXplJiAvKiB0aWxlU2l6ZSAqLywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29u
dGVudHNTY2FsZSAqLykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNvbnN0
IEludFJlY3QmIC8qIGNvbnRlbnRSZWN0ICovLCBjb25zdCBJbnRTaXplJiAvKiB0aWxlU2l6ZSAq
LywgaW50IC8qIGJvcmRlclRleGVscyAqLywgZmxvYXQgLyogY29udGVudHNTY2FsZSAqLykgeyB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vV2ViR0xMYXllckNocm9taXVt
LmNwcAppbmRleCAxMTFlNmM2Li5jYzY4ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgV2ViR0xMYXllckNocm9taXVtOjpVcGRhdGVyVGV4dHVy
ZTo6flVwZGF0ZXJUZXh0dXJlKCkKIHsKIH0KIAotdm9pZCBXZWJHTExheWVyQ2hyb21pdW06OlVw
ZGF0ZXJUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50
UmVjdCYgLyogZGVzdFJlY3QgKi8pCit2b2lkIFdlYkdMTGF5ZXJDaHJvbWl1bTo6VXBkYXRlclRl
eHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQogewog
ICAgIG1fbGF5ZXItPnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoY29udGV4dCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9XZWJHTExh
eWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1dlYkdMTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDIwYmVjOWYuLjBmNGFmZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dlYkdMTGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1dl
YkdMTGF5ZXJDaHJvbWl1bS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgICAgICB2
aXJ0dWFsIH5VcGRhdGVyVGV4dHVyZSgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVS
ZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBl
eHBsaWNpdCBVcGRhdGVyVGV4dHVyZShXZWJHTExheWVyQ2hyb21pdW0qKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3QuY3BwCmluZGV4IDg2MjRhZDguLjk3ZGNkNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0LmNwcApAQCAtNDksMTggKzQ5LDQ5IEBAIGJvb2wgQ0NMYXllclRyZWVI
b3N0OjphbnlMYXllclRyZWVIb3N0SW5zdGFuY2VFeGlzdHMoKQogICAgIHJldHVybiBudW1MYXll
clRyZWVJbnN0YW5jZXMgPiAwOwogfQogCi1DQ0xheWVyVHJlZUhvc3Q6OlVwZGF0ZUhhbmRsZXI6
OlVwZGF0ZUhhbmRsZXIoQ0NQcm94eSogcHJveHkpCitDQ0xheWVyVHJlZUhvc3Q6Ok5lZWRSZXNv
dXJjZUhhbmRsZXI6Ok5lZWRSZXNvdXJjZUhhbmRsZXIoKQorICAgIDogbV9yZXNvdXJjZXMoMCkK
K3sKK30KKworQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VIYW5kbGVyOjp+TmVlZFJlc291
cmNlSGFuZGxlcigpCit7Cit9CisKK3ZvaWQgQ0NMYXllclRyZWVIb3N0OjpOZWVkUmVzb3VyY2VI
YW5kbGVyOjpoYW5kbGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSogdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLywgY29uc3QgSW50UmVjdCYgLyogZGVzdFJlY3Qg
Ki8pCit7CisgICAgaWYgKHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICBtX3Jl
c291cmNlcysrOworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6
OlByZXBhcmVSZXNvdXJjZUhhbmRsZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1
cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKKyAgICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwg
bV9hbGxvY2F0b3IoYWxsb2NhdG9yKQoreworfQorCitDQ0xheWVyVHJlZUhvc3Q6OlByZXBhcmVS
ZXNvdXJjZUhhbmRsZXI6On5QcmVwYXJlUmVzb3VyY2VIYW5kbGVyKCkKK3sKK30KKwordm9pZCBD
Q0xheWVyVHJlZUhvc3Q6OlByZXBhcmVSZXNvdXJjZUhhbmRsZXI6OmhhbmRsZShMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBpZiAodGV4dHVyZS0+bmVlZFByZXBhcmVS
ZWN0KCkpCisgICAgICAgIHRleHR1cmUtPnByZXBhcmVSZWN0KG1fY29udGV4dCwgbV9hbGxvY2F0
b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKK30KKworQ0NMYXllclRyZWVIb3N0OjpQYWludEhh
bmRsZXI6OlBhaW50SGFuZGxlcihDQ1Byb3h5KiBwcm94eSkKICAgICA6IG1fcHJveHkocHJveHkp
CiB7CiB9CiAKLUNDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6flVwZGF0ZUhhbmRsZXIo
KQorQ0NMYXllclRyZWVIb3N0OjpQYWludEhhbmRsZXI6On5QYWludEhhbmRsZXIoKQogewogfQog
Ci12b2lkIENDTGF5ZXJUcmVlSG9zdDo6VXBkYXRlSGFuZGxlcjo6aGFuZGxlKExheWVyVGV4dHVy
ZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KQordm9pZCBDQ0xheWVyVHJlZUhvc3Q6OlBhaW50SGFuZGxl
cjo6aGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KQogewotICAgIHRleHR1
cmUtPnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOworICAgIHRleHR1cmUtPnBhaW50Q29udGVudHNS
ZWN0KHNvdXJjZVJlY3QpOwogICAgIG1fcHJveHktPnVwZGF0ZSh0ZXh0dXJlLCBzb3VyY2VSZWN0
LCBkZXN0UmVjdCk7CiB9CiAKQEAgLTM5OCwzNCArNDI5LDE0IEBAIHZvaWQgQ0NMYXllclRyZWVI
b3N0OjpwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogICAgIH0KIAog
ICAgIGFwcGVuZFZpc2libGVMYXllcnMobV9yZW5kZXJTdXJmYWNlVXBkYXRlTGlzdCwgbV9sYXll
clVwZGF0ZUxpc3QpOwotfQotCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKCkK
LXsKLSAgICBpZiAoIXJvb3RMYXllcigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAodmll
d3BvcnRTaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB1cGRhdGVMYXll
cnMocm9vdExheWVyKCkpOwotfQotCi12b2lkIENDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJz
KExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKLXsKLSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRy
ZWVIb3N0Ojp1cGRhdGVMYXllcnMiLCB0aGlzLCAwKTsKIAogICAgIGZvciAoaW50IGxheWVySW5k
ZXggPSBtX2xheWVyVXBkYXRlTGlzdC5zaXplKCkgLSAxOyBsYXllckluZGV4ID49IDAgOyAtLWxh
eWVySW5kZXgpIHsKICAgICAgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSBtX2xheWVyVXBkYXRl
TGlzdFtsYXllckluZGV4XS5nZXQoKTsKICAgICAgICAgbGF5ZXItPnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoKTsKLSAgICAgICAgbGF5ZXItPnBhaW50Q29udGVudHNJZkRpcnR5KCk7Ci0KLSAgICAg
ICAgVXBkYXRlSGFuZGxlciBoYW5kbGVyKG1fcHJveHkuZ2V0KCkpOwotICAgICAgICBsYXllci0+
Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZShoYW5kbGVyKTsKICAgICB9CiB9CiAKLXZvaWQgQ0NM
YXllclRyZWVIb3N0OjppZGxlVXBkYXRlTGF5ZXJzKCkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Ojpp
ZGxlUHJlcGFyZVRvVXBkYXRlKCkKIHsKICAgICBpZiAoIXJvb3RMYXllcigpKQogICAgICAgICBy
ZXR1cm47CkBAIC00MzMsMTIgKzQ0NCwxMiBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRsZVVw
ZGF0ZUxheWVycygpCiAgICAgaWYgKHZpZXdwb3J0U2l6ZSgpLmlzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWRsZVVwZGF0ZUxheWVycyhyb290TGF5ZXIoKSk7CisgICAgaWRsZVBy
ZXBhcmVUb1VwZGF0ZShyb290TGF5ZXIoKSk7CiB9CiAKLXZvaWQgQ0NMYXllclRyZWVIb3N0Ojpp
ZGxlVXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjppZGxlUHJlcGFyZVRvVXBkYXRlKExheWVyQ2hyb21pdW0qIHJvb3RMYXllcikKIHsK
LSAgICBUUkFDRV9FVkVOVCgiQ0NMYXllclRyZWVIb3N0OjppZGxlVXBkYXRlTGF5ZXJzIiwgdGhp
cywgMCk7CisgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6aWRsZVByZXBhcmVUb1Vw
ZGF0ZSIsIHRoaXMsIDApOwogCiAgICAgaWYgKCFtX3RyaWdnZXJJZGxlUGFpbnRzKQogICAgICAg
ICByZXR1cm47CkBAIC00NTcsMTMgKzQ2OCw0NyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdDo6aWRs
ZVVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIpCiAgICAgZm9yIChpbnQgbGF5
ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAtIDE7IGxheWVySW5kZXggPj0gMCA7
IC0tbGF5ZXJJbmRleCkgewogICAgICAgICBMYXllckNocm9taXVtKiBsYXllciA9IG1fbGF5ZXJV
cGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOwogICAgICAgICBsYXllci0+aWRsZVByZXBhcmVU
b1VwZGF0ZUlmRGlydHkoKTsKKyAgICB9CisKKyAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXIt
PnNldE1heE1lbW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRCeXRlcyk7Cit9CisKK2Jvb2wgQ0NMYXll
clRyZWVIb3N0OjpuZWVkc0NvbXBvc2l0b3JSZXNvdXJjZXMoKQoreworICAgIE5lZWRSZXNvdXJj
ZUhhbmRsZXIgaGFuZGxlcjsKKyAgICBmb3JFYWNoQ29tcG9zaXRvclJlc291cmNlKGhhbmRsZXIp
OworICAgIHJldHVybiBoYW5kbGVyLnJlc291cmNlcygpOworfQorCit2b2lkIENDTGF5ZXJUcmVl
SG9zdDo6cHJlcGFyZUNvbXBvc2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBUUkFDRV9FVkVOVCgiQ0NM
YXllclRyZWVIb3N0OjpwcmVwYXJlQ29tcG9zaXRvclJlc291cmNlcyIsIHRoaXMsIDApOworICAg
IFByZXBhcmVSZXNvdXJjZUhhbmRsZXIgaGFuZGxlcihjb250ZXh0LCBhbGxvY2F0b3IpOworICAg
IGZvckVhY2hDb21wb3NpdG9yUmVzb3VyY2UoaGFuZGxlcik7Cit9CisKK3ZvaWQgQ0NMYXllclRy
ZWVIb3N0OjpwYWludENvbnRlbnRzKCkKK3sKKyAgICBpZiAoIXJvb3RMYXllcigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAodmlld3BvcnRTaXplKCkuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwYWludENvbnRlbnRzKHJvb3RMYXllcigpKTsKK30KKwordm9pZCBDQ0xh
eWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQorewor
ICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyIsIHRoaXMsIDAp
OworCisgICAgZm9yIChpbnQgbGF5ZXJJbmRleCA9IG1fbGF5ZXJVcGRhdGVMaXN0LnNpemUoKSAt
IDE7IGxheWVySW5kZXggPj0gMCA7IC0tbGF5ZXJJbmRleCkgeworICAgICAgICBMYXllckNocm9t
aXVtKiBsYXllciA9IG1fbGF5ZXJVcGRhdGVMaXN0W2xheWVySW5kZXhdLmdldCgpOwogICAgICAg
ICBsYXllci0+cGFpbnRDb250ZW50c0lmRGlydHkoKTsKIAotICAgICAgICBVcGRhdGVIYW5kbGVy
IGhhbmRsZXIobV9wcm94eS5nZXQoKSk7CisgICAgICAgIFBhaW50SGFuZGxlciBoYW5kbGVyKG1f
cHJveHkuZ2V0KCkpOwogICAgICAgICBsYXllci0+Zm9yRWFjaENvbXBvc2l0b3JSZXNvdXJjZSho
YW5kbGVyKTsKICAgICB9Ci0KLSAgICBtX2NvbnRlbnRzVGV4dHVyZU1hbmFnZXItPnNldE1heE1l
bW9yeUxpbWl0Qnl0ZXMobWF4TGltaXRCeXRlcyk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0
OjphcHBlbmRWaXNpYmxlTGF5ZXIoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyTGlzdCYgdXBk
YXRlTGlzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggOTQ5MWYyYS4uNzAyMzYz
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTE5MSw4ICsxOTEsMTAgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKTsKIAogICAgIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKCk7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnMoKTsKLSAgICB2b2lk
IGlkbGVVcGRhdGVMYXllcnMoKTsKKyAgICB2b2lkIGlkbGVQcmVwYXJlVG9VcGRhdGUoKTsKKyAg
ICBib29sIG5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpOworICAgIHZvaWQgcHJlcGFyZUNvbXBv
c2l0b3JSZXNvdXJjZXMoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7Cisg
ICAgdm9pZCBwYWludENvbnRlbnRzKCk7CiAKICAgICB2b2lkIGZvckVhY2hDb21wb3NpdG9yUmVz
b3VyY2UoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTY3Jv
bGxBbmRTY2FsZShjb25zdCBDQ1Njcm9sbEFuZFNjYWxlU2V0Jik7CkBAIC0yMDQsMTAgKzIwNiwz
NSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpbml0aWFsaXplKCk7CiAKIHByaXZhdGU6Ci0gICAg
Y2xhc3MgVXBkYXRlSGFuZGxlciA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyOjpIYW5kbGVy
IHsKKyAgICBjbGFzcyBOZWVkUmVzb3VyY2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXI6OkhhbmRsZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgVXBkYXRlSGFuZGxlcihDQ1By
b3h5Kik7Ci0gICAgICAgIHZpcnR1YWwgflVwZGF0ZUhhbmRsZXIoKTsKKyAgICAgICAgTmVlZFJl
c291cmNlSGFuZGxlcigpOworICAgICAgICB2aXJ0dWFsIH5OZWVkUmVzb3VyY2VIYW5kbGVyKCk7
CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0
dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3Qp
OworCisgICAgICAgIGludCByZXNvdXJjZXMoKSB7IHJldHVybiBtX3Jlc291cmNlczsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgaW50IG1fcmVzb3VyY2VzOworICAgIH07CisKKyAgICBjbGFz
cyBQcmVwYXJlUmVzb3VyY2VIYW5kbGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXI6Okhh
bmRsZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgUHJlcGFyZVJlc291cmNlSGFuZGxlcihHcmFw
aGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKKyAgICAgICAgdmlydHVhbCB+UHJl
cGFyZVJlc291cmNlSGFuZGxlcigpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGUoTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNv
bnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIEdyYXBoaWNz
Q29udGV4dDNEKiBtX2NvbnRleHQ7CisgICAgICAgIFRleHR1cmVBbGxvY2F0b3IqIG1fYWxsb2Nh
dG9yOworICAgIH07CisKKyAgICBjbGFzcyBQYWludEhhbmRsZXIgOiBwdWJsaWMgTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6SGFuZGxlciB7CisgICAgcHVibGljOgorICAgICAgICBQYWludEhhbmRsZXIo
Q0NQcm94eSopOworICAgICAgICB2aXJ0dWFsIH5QYWludEhhbmRsZXIoKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlKExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CiAKQEAgLTIyMiw4
ICsyNDksOSBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kVmlzaWJsZUxheWVycyhjb25zdCBM
YXllckxpc3QmIHJlbmRlclN1cmZhY2VVcGRhdGVMaXN0LCBMYXllckxpc3QmIHVwZGF0ZUxpc3Qp
OwogCiAgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoTGF5ZXJDaHJvbWl1bSopOwotICAgIHZvaWQg
dXBkYXRlTGF5ZXJzKExheWVyQ2hyb21pdW0qKTsKLSAgICB2b2lkIGlkbGVVcGRhdGVMYXllcnMo
TGF5ZXJDaHJvbWl1bSopOworICAgIHZvaWQgaWRsZVByZXBhcmVUb1VwZGF0ZShMYXllckNocm9t
aXVtKik7CisgICAgdm9pZCBwYWludENvbnRlbnRzKExheWVyQ2hyb21pdW0qKTsKKwogICAgIHZv
aWQgY2xlYXJQZW5kaW5nVXBkYXRlKCk7CiAKICAgICBpbnQgbV9jb21wb3NpdG9ySWRlbnRpZmll
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKaW5kZXggMTQyMGY3Mi4u
ZTM4YWNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5jcHAKQEAgLTE0
OCwxNyArMTQ4LDI1IEBAIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6ZG9Db21taXQoKQogewog
ICAgIEFTU0VSVChDQ1Byb3h5Ojppc01haW5UaHJlYWQoKSk7CiAKLSAgICBtX2N1cnJlbnRUZXh0
dXJlVXBkYXRlciA9IGFkb3B0UHRyKG5ldyBDQ1RleHR1cmVVcGRhdGVyKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpKSk7CisgICAgLy8gUHJlcGFyZSBjb21w
b3NpdG9yIHJlc291cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRv
clJlc291cmNlcygpKQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnByZXBhcmVDb21wb3NpdG9y
UmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0
SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwogCi0gICAgbV9sYXllclRyZWVIb3N0
LT51cGRhdGVMYXllcnMoKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmlkbGVVcGRhdGVMYXllcnMo
KTsKKyAgICBtX2xheWVyVHJlZUhvc3QtPnBhaW50Q29udGVudHMoKTsKKworICAgIC8vIElkbGUg
dXBkYXRlCisgICAgbV9sYXllclRyZWVIb3N0LT5pZGxlUHJlcGFyZVRvVXBkYXRlKCk7CisgICAg
Ly8gUHJlcGFyZSBjb21wb3NpdG9yIHJlc291cmNlcworICAgIGlmIChtX2xheWVyVHJlZUhvc3Qt
Pm5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpKQorICAgICAgICBtX2xheWVyVHJlZUhvc3QtPnBy
ZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwg
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOworCisgICAg
bV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CiAKICAgICAvLyBDb21taXQgaW1tZWRp
YXRlbHkKICAgICB7CiAgICAgICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogICAg
ICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5iZWdpbkNvbW1pdCgpOwotCi0gICAgICAgIHdoaWxl
IChtX2N1cnJlbnRUZXh0dXJlVXBkYXRlci0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNv
bnRleHQoKSwgMSkpIHsgfQorICAgICAgICB3aGlsZSAobV90ZXh0dXJlVXBkYXRlci51cGRhdGUo
bV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCAxKSkgeyB9CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+YmVnaW5Db21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0SW1wbC5nZXQo
KSk7CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUobV9sYXllclRyZWVI
b3N0LT52aXNpYmxlKCkpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKQEAgLTE3NCw4ICsxODIsNiBA
QCB2b2lkIENDU2luZ2xlVGhyZWFkUHJveHk6OmRvQ29tbWl0KCkKICAgICB9CiAgICAgbV9sYXll
clRyZWVIb3N0LT5jb21taXRDb21wbGV0ZSgpOwogICAgIG1fbmV4dEZyYW1lSXNOZXdseUNvbW1p
dHRlZEZyYW1lID0gdHJ1ZTsKLQotICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyLmNsZWFyKCk7
CiB9CiAKIHZvaWQgQ0NTaW5nbGVUaHJlYWRQcm94eTo6c2V0TmVlZHNDb21taXQoKQpAQCAtMjE2
LDEyICsyMjIsMTAgQEAgdm9pZCBDQ1NpbmdsZVRocmVhZFByb3h5OjpzdG9wKCkKIAogdm9pZCBD
Q1NpbmdsZVRocmVhZFByb3h5Ojp1cGRhdGUoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJl
Y3QpCiB7Ci0gICAgQVNTRVJUKG1fY3VycmVudFRleHR1cmVVcGRhdGVyKTsKLQogICAgIGlmICht
X2xheWVyVHJlZUhvc3RJbXBsLT5zZXR0aW5ncygpLmRlbGF5VGV4dHVyZVVwZGF0ZXMpCi0gICAg
ICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyLT5hcHBlbmQodGV4dHVyZSwgc291cmNlUmVjdCwg
ZGVzdFJlY3QpOworICAgICAgICBtX3RleHR1cmVVcGRhdGVyLmFwcGVuZCh0ZXh0dXJlLCBzb3Vy
Y2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgZWxzZQotICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0
KG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQoKSwgbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXIt
PmFsbG9jYXRvcigpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAgIHRleHR1cmUtPnVw
ZGF0ZVJlY3QobV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGV4dCgpLCBzb3VyY2VSZWN0LCBkZXN0
UmVjdCk7CiB9CiAKIC8vIENhbGxlZCBieSB0aGUgbGVnYWN5IHNjaGVkdWxpbmcgcGF0aCAoZS5n
LiB3aGVyZSByZW5kZXJfd2lkZ2V0IGRvZXMgdGhlIHNjaGVkdWxpbmcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NpbmdsZVRocmVh
ZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NpbmdsZVRocmVhZFByb3h5LmgKaW5kZXggZDViYzEzMS4uNzgzYThkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaW5nbGVUaHJl
YWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2luZ2xlVGhyZWFkUHJveHkuaApAQCAtMjgsMTIgKzI4LDEyIEBACiAjaW5jbHVkZSAi
Y2MvQ0NDb21wbGV0aW9uRXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NQcm94eS5oIgorI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0
ZXIuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0OwotY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIAogY2xhc3Mg
Q0NTaW5nbGVUaHJlYWRQcm94eSA6IHB1YmxpYyBDQ1Byb3h5LCBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50IHsKIHB1YmxpYzoKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV90
aW1lc1JlY3JlYXRlU2hvdWxkRmFpbDsgLy8gVXNlZCBkdXJpbmcgdGVzdGluZy4KICAgICBib29s
IG1fbmV4dEZyYW1lSXNOZXdseUNvbW1pdHRlZEZyYW1lOwogCi0gICAgT3duUHRyPENDVGV4dHVy
ZVVwZGF0ZXI+IG1fY3VycmVudFRleHR1cmVVcGRhdGVyOworICAgIENDVGV4dHVyZVVwZGF0ZXIg
bV90ZXh0dXJlVXBkYXRlcjsKIH07CiAKIC8vIEZvciB1c2UgaW4gdGhlIHNpbmdsZS10aHJlYWRl
ZCBjYXNlLiBJbiBkZWJ1ZyBidWlsZHMsIGl0IHByZXRlbmRzIHRoYXQgdGhlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVV
cGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGV4dHVyZVVwZGF0ZXIuY3BwCmluZGV4IGRmNzcyNDQuLmE2MWMzYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGV4dHVyZVVw
ZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0zOCwxMCArMzgsOCBAQCB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUNDVGV4dHVyZVVwZGF0ZXI6OkNDVGV4
dHVyZVVwZGF0ZXIoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIDogbV9hbGxvY2F0
b3IoYWxsb2NhdG9yKQorQ0NUZXh0dXJlVXBkYXRlcjo6Q0NUZXh0dXJlVXBkYXRlcigpCiB7Ci0g
ICAgQVNTRVJUKG1fYWxsb2NhdG9yKTsKIH0KIAogQ0NUZXh0dXJlVXBkYXRlcjo6fkNDVGV4dHVy
ZVVwZGF0ZXIoKQpAQCAtNzEsNyArNjksNyBAQCBib29sIENDVGV4dHVyZVVwZGF0ZXI6OnVwZGF0
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc2l6ZV90IGNvdW50KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgICAgIFVwZGF0ZUVudHJ5JiBlbnRyeSA9IG1fZW50cmllcy5s
YXN0KCk7Ci0gICAgICAgIGVudHJ5Lm1fdGV4dHVyZS0+dXBkYXRlUmVjdChjb250ZXh0LCBtX2Fs
bG9jYXRvciwgZW50cnkubV9zb3VyY2VSZWN0LCBlbnRyeS5tX2Rlc3RSZWN0KTsKKyAgICAgICAg
ZW50cnkubV90ZXh0dXJlLT51cGRhdGVSZWN0KGNvbnRleHQsIGVudHJ5Lm1fc291cmNlUmVjdCwg
ZW50cnkubV9kZXN0UmVjdCk7CiAgICAgICAgIG1fZW50cmllcy5yZW1vdmVMYXN0KCk7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1RleHR1cmVVcGRhdGVyLmgKaW5kZXggYzM3YWYzNC4uYWI2NTllYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NUZXh0dXJlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDVGV4dHVyZVVwZGF0ZXIuaApAQCAtMzMsMTEgKzMzLDEwIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotY2xhc3MgVGV4dHVy
ZUFsbG9jYXRvcjsKIAogY2xhc3MgQ0NUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0gICAgQ0NU
ZXh0dXJlVXBkYXRlcihUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgQ0NUZXh0dXJlVXBkYXRlcigp
OwogICAgIH5DQ1RleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2b2lkIGFwcGVuZChMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50
UmVjdCYgZGVzdFJlY3QpOwpAQCAtNDksOCArNDgsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNs
ZWFyKCk7CiAKLSAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IoKSB7IHJldHVybiBtX2Fs
bG9jYXRvcjsgfQotCiBwcml2YXRlOgogICAgIHN0cnVjdCBVcGRhdGVFbnRyeSB7CiAgICAgICAg
IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqIG1fdGV4dHVyZTsKQEAgLTU4LDcgKzU1LDYg
QEAgcHJpdmF0ZToKICAgICAgICAgSW50UmVjdCBtX2Rlc3RSZWN0OwogICAgIH07CiAKLSAgICBU
ZXh0dXJlQWxsb2NhdG9yKiBtX2FsbG9jYXRvcjsKICAgICBWZWN0b3I8VXBkYXRlRW50cnk+IG1f
ZW50cmllczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKaW5kZXggNGUwNGNjOC4u
NzYwYzBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAKQEAgLTM5MSw4ICszOTEsMjUg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpiZWdpbkZyYW1lQW5kQ29tbWl0KGludCBzZXF1ZW5jZU51
bWJlciwgZG91YmxlIGZyYW1lQmVnaW5UaW0KICAgICBtX2NvbW1pdFJlcXVlc3RlZCA9IGZhbHNl
OwogCiAgICAgbV9sYXllclRyZWVIb3N0LT5wcmVwYXJlVG9VcGRhdGUoKTsKLSAgICBtX2xheWVy
VHJlZUhvc3QtPnVwZGF0ZUxheWVycygpOwotICAgIG1fbGF5ZXJUcmVlSG9zdC0+aWRsZVVwZGF0
ZUxheWVycygpOworICAgIGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRvclJlc291
cmNlcygpKSB7CisgICAgICAgIC8vIEluaXRpYWxpemUgY29tcG9zaXRvciByZXNvdXJjZXMgcmVx
dWlyZSBmb3IgZnJhbWUuCisgICAgICAgIFRSQUNFX0VWRU5UKCJhbGxvY2F0ZSIsIHRoaXMsIDAp
OworICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgICAgICBDQ1Byb3h5
OjppbXBsVGhyZWFkKCktPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJl
YWRQcm94eTo6cHJlcGFyZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKCZjb21wbGV0aW9uKSkpOworICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKKyAg
ICB9CisgICAgbV9sYXllclRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CisKKyAgICAvLyBJZGxl
IHVwZGF0ZQorICAgIG1fbGF5ZXJUcmVlSG9zdC0+aWRsZVByZXBhcmVUb1VwZGF0ZSgpOworICAg
IGlmIChtX2xheWVyVHJlZUhvc3QtPm5lZWRzQ29tcG9zaXRvclJlc291cmNlcygpKSB7CisgICAg
ICAgIC8vIEluaXRpYWxpemUgY29tcG9zaXRvciByZXNvdXJjZXMgcmVxdWlyZSBmb3IgZnJhbWUu
CisgICAgICAgIFRSQUNFX0VWRU5UKCJhbGxvY2F0ZSIsIHRoaXMsIDApOworICAgICAgICBDQ0Nv
bXBsZXRpb25FdmVudCBjb21wbGV0aW9uOworICAgICAgICBDQ1Byb3h5OjppbXBsVGhyZWFkKCkt
PnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94eTo6cHJlcGFy
ZUZyYW1lUmVzb3VyY2VzT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKCZjb21w
bGV0aW9uKSkpOworICAgICAgICBjb21wbGV0aW9uLndhaXQoKTsKKyAgICB9CisgICAgbV9sYXll
clRyZWVIb3N0LT5wYWludENvbnRlbnRzKCk7CiAKICAgICAvLyBCZWZvcmUgYXBwbHlpbmcgc2Ny
b2xscyBhbmQgY2FsbGluZyBhbmltYXRlLCB3ZSBzZXQgbV9hbmltYXRlUmVxdWVzdGVkIHRvIGZh
bHNlLgogICAgIC8vIElmIGl0IGlzIHRydWUgbm93LCBpdCBtZWFucyBzZXROZWVkQW5pbWF0ZSB3
YXMgY2FsbGVkIGFnYWluLiBDYWxsIHNldE5lZWRzQ29tbWl0CkBAIC00MTYsNiArNDMzLDIxIEBA
IHZvaWQgQ0NUaHJlYWRQcm94eTo6YmVnaW5GcmFtZUFuZENvbW1pdChpbnQgc2VxdWVuY2VOdW1i
ZXIsIGRvdWJsZSBmcmFtZUJlZ2luVGltCiAgICAgQVNTRVJUKG1fbGFzdEV4ZWN1dGVkQmVnaW5G
cmFtZUFuZENvbW1pdFNlcXVlbmNlTnVtYmVyID09IHNlcXVlbmNlTnVtYmVyKTsKIH0KIAordm9p
ZCBDQ1RocmVhZFByb3h5OjpwcmVwYXJlRnJhbWVSZXNvdXJjZXNPbkltcGxUaHJlYWQoQ0NDb21w
bGV0aW9uRXZlbnQqIGNvbXBsZXRpb24pCit7CisgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJv
eHk6OnByZXBhcmVGcmFtZVJlc291cmNlc09uT25JbXBsVGhyZWFkIiwgdGhpcywgMCk7CisgICAg
QVNTRVJUKCFtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7CisgICAgQVNTRVJU
KGlzSW1wbFRocmVhZCgpKTsKKyAgICBpZiAoIW1fbGF5ZXJUcmVlSG9zdEltcGwpIHsKKyAgICAg
ICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X2xheWVyVHJlZUhvc3QtPnByZXBhcmVDb21wb3NpdG9yUmVzb3VyY2VzKG1fbGF5ZXJUcmVlSG9z
dEltcGwtPmNvbnRleHQoKSwgbV9sYXllclRyZWVIb3N0SW1wbC0+Y29udGVudHNUZXh0dXJlQWxs
b2NhdG9yKCkpOworCisgICAgY29tcGxldGlvbi0+c2lnbmFsKCk7Cit9CisKIHZvaWQgQ0NUaHJl
YWRQcm94eTo6dXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3duUHRyPFVwZGF0ZUVudHJ5
PiBlbnRyeSkKIHsKICAgICBBU1NFUlQoIW1fY29tbWl0Q29tcGxldGlvbkV2ZW50T25JbXBsVGhy
ZWFkKTsKQEAgLTQyMywxMCArNDU1LDcgQEAgdm9pZCBDQ1RocmVhZFByb3h5Ojp1cGRhdGVUZXh0
dXJlT25JbXBsVGhyZWFkKFBhc3NPd25QdHI8VXBkYXRlRW50cnk+IGVudHJ5KQogICAgIGlmICgh
bV9sYXllclRyZWVIb3N0SW1wbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2N1cnJl
bnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZCkKLSAgICAgICAgbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQgPSBhZG9wdFB0cihuZXcgQ0NUZXh0dXJlVXBkYXRlcihtX2xheWVy
VHJlZUhvc3RJbXBsLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSkpOwotCi0gICAgbV9jdXJy
ZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmFwcGVuZChlbnRyeS0+bV90ZXh0dXJlLCBl
bnRyeS0+bV9zb3VyY2VSZWN0LCBlbnRyeS0+bV9kZXN0UmVjdCk7CisgICAgbV90ZXh0dXJlVXBk
YXRlck9uSW1wbFRocmVhZC5hcHBlbmQoZW50cnktPm1fdGV4dHVyZSwgZW50cnktPm1fc291cmNl
UmVjdCwgZW50cnktPm1fZGVzdFJlY3QpOwogfQogCiB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2lu
RnJhbWVDb21wbGV0ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbikK
QEAgLTQ0Nyw5ICs0NzYsNyBAQCB2b2lkIENDVGhyZWFkUHJveHk6OmJlZ2luRnJhbWVDb21wbGV0
ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCogY29tcGxldGlvbgogCiBib29sIENDVGhy
ZWFkUHJveHk6Omhhc01vcmVSZXNvdXJjZVVwZGF0ZXMoKSBjb25zdAogewotICAgIGlmICghbV9j
dXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICByZXR1cm4gbV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQtPmhhc01vcmVV
cGRhdGVzKCk7CisgICAgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuaGFzTW9y
ZVVwZGF0ZXMoKTsKIH0KIAogYm9vbCBDQ1RocmVhZFByb3h5OjpjYW5EcmF3KCkKQEAgLTQ2NCwy
MCArNDkxLDE2IEBAIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uVXBkYXRlTW9y
ZVJlc291cmNlcygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkNDVGhyZWFkUHJveHk6OnNjaGVkdWxl
ZEFjdGlvblVwZGF0ZU1vcmVSZXNvdXJjZXMiLCB0aGlzLCAwKTsKICAgICBzdGF0aWMgY29uc3Qg
aW50IFVwZGF0ZXNQZXJGcmFtZSA9IDk5OTk5OwotICAgIGlmICghbV9jdXJyZW50VGV4dHVyZVVw
ZGF0ZXJPbkltcGxUaHJlYWQpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2N1cnJlbnRUZXh0dXJl
VXBkYXRlck9uSW1wbFRocmVhZC0+dXBkYXRlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbnRleHQo
KSwgVXBkYXRlc1BlckZyYW1lKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLnVw
ZGF0ZShtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZXh0KCksIFVwZGF0ZXNQZXJGcmFtZSk7CiB9
CiAKIHZvaWQgQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0KCkKIHsKICAgICBU
UkFDRV9FVkVOVCgiQ0NUaHJlYWRQcm94eTo6c2NoZWR1bGVkQWN0aW9uQ29tbWl0IiwgdGhpcywg
MCk7CisgICAgQVNTRVJUKCFtX3RleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmhhc01vcmVVcGRh
dGVzKCkpOwogICAgIEFTU0VSVChtX2NvbW1pdENvbXBsZXRpb25FdmVudE9uSW1wbFRocmVhZCk7
CiAKLSAgICBpZiAobV9jdXJyZW50VGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQpIHsKLSAgICAg
ICAgQVNTRVJUKCFtX2N1cnJlbnRUZXh0dXJlVXBkYXRlck9uSW1wbFRocmVhZC0+aGFzTW9yZVVw
ZGF0ZXMoKSk7Ci0gICAgICAgIG1fY3VycmVudFRleHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkLmNs
ZWFyKCk7Ci0gICAgfQorICAgIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQuY2xlYXIoKTsK
IAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmJlZ2luQ29tbWl0KCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJv
eHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhy
ZWFkUHJveHkuaAppbmRleCBiYzUzNDg4Li40Y2NiZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IgogI2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1NjaGVkdWxlci5oIgor
I2luY2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZC5o
IgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIApAQCAtMTAwLDYgKzEwMSw3IEBAIHByaXZhdGU6
CiAgICAgfTsKICAgICBQYXNzT3duUHRyPENDVGhyZWFkOjpUYXNrPiBjcmVhdGVCZWdpbkZyYW1l
QW5kQ29tbWl0VGFza09uSW1wbFRocmVhZCgpOwogICAgIHZvaWQgb2J0YWluQmVnaW5GcmFtZUFu
ZENvbW1pdFRhc2tGcm9tQ0NUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBDQ1RocmVhZDo6VGFz
ayoqKTsKKyAgICB2b2lkIHByZXBhcmVGcmFtZVJlc291cmNlc09uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCopOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZU9uSW1wbFRocmVhZChQYXNzT3du
UHRyPFVwZGF0ZUVudHJ5Pik7CiAgICAgdm9pZCBiZWdpbkZyYW1lQ29tcGxldGVPbkltcGxUaHJl
YWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIHJlcXVlc3RSZWFkYmFja09uSW1wbFRo
cmVhZChSZWFkYmFja1JlcXVlc3QqKTsKQEAgLTEzNiwxMCArMTM4LDExIEBAIHByaXZhdGU6CiAK
ICAgICAvLyBTZXQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgaXMgd2FpdGluZyBvbiBhIGNvbW1pdCB0
byBjb21wbGV0ZS4KICAgICBDQ0NvbXBsZXRpb25FdmVudCogbV9jb21taXRDb21wbGV0aW9uRXZl
bnRPbkltcGxUaHJlYWQ7Ci0gICAgT3duUHRyPENDVGV4dHVyZVVwZGF0ZXI+IG1fY3VycmVudFRl
eHR1cmVVcGRhdGVyT25JbXBsVGhyZWFkOwogCiAgICAgLy8gU2V0IHdoZW4gdGhlIG5leHQgZHJh
dyBzaG91bGQgcG9zdCBkaWRDb21taXRBbmREcmF3RnJhbWUgdG8gdGhlIG1haW4gdGhyZWFkLgog
ICAgIGJvb2wgbV9uZXh0RnJhbWVJc05ld2x5Q29tbWl0dGVkRnJhbWVPbkltcGxUaHJlYWQ7CisK
KyAgICBDQ1RleHR1cmVVcGRhdGVyIG1fdGV4dHVyZVVwZGF0ZXJPbkltcGxUaHJlYWQ7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAppbmRleCBlODkxODEwLi5jYmE4NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKQEAgLTk0NywxMiAr
OTQ3LDIyIEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgdmlydHVhbCBNYW5hZ2VkVGV4dHVyZSog
dGV4dHVyZSgpIHsgcmV0dXJuIG1fdGV4dHVyZS5nZXQoKTsgfQogCi0gICAgICAgICAgICB2aXJ0
dWFsIHZvaWQgcHJlcGFyZVJlY3QoY29uc3QgSW50UmVjdCYgLyogc291cmNlUmVjdCAqLykKKyAg
ICAgICAgICAgIHZpcnR1YWwgYm9vbCBuZWVkUHJlcGFyZVJlY3QoKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiBtX3RleHR1cmVVcGRhdGVyLT5sYXllcigpLT5uZWVkUHJl
cGFyZVJlY3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHBy
ZXBhcmVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IElu
dFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICovKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXItPmxheWVyKCkt
PnByZXBhcmVSZWN0KCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0
IEludFJlY3QmIC8qIHNvdXJjZVJlY3QgKi8sIGNvbnN0IEludFJlY3QmIC8qIGRlc3RSZWN0ICov
KQorICAgICAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJl
Y3QmIC8qIHNvdXJjZVJlY3QgKi8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90
ZXh0dXJlVXBkYXRlci0+bGF5ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBjb25zdCBJbnRSZWN0JiAvKiBzb3VyY2VSZWN0ICovLCBjb25zdCBJbnRSZWN0JiAvKiBk
ZXN0UmVjdCAqLykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBtX3RleHR1cmVVcGRh
dGVyLT5sYXllcigpLT51cGRhdGVSZWN0KCk7CiAgICAgICAgICAgICB9CkBAIC05OTAsOSArMTAw
MCw5IEBAIHB1YmxpYzoKICAgICAgICAgQ29udGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJh
Y2tpbmcqIG1fbGF5ZXI7CiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvbnRlbnRM
YXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nPiBjcmVhdGUoQ0NMYXllckRlbGVnYXRlKiBk
ZWxlZ2F0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhV
cGRhdGVUcmFja2luZz4gY3JlYXRlKENDTGF5ZXJEZWxlZ2F0ZSogZGVsZWdhdGUsIGJvb2wgbmVl
ZFByZXBhcmVSZWN0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb250ZW50
TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZyhkZWxlZ2F0ZSkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENvbnRlbnRMYXllckNocm9taXVtV2l0aFVwZGF0ZVRyYWNraW5nKGRl
bGVnYXRlLCBuZWVkUHJlcGFyZVJlY3QpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KikKQEAgLTEwMjUsMTYgKzEw
MzUsMjMgQEAgcHVibGljOgogICAgIHZvaWQgcHJlcGFyZVJlY3QoKSB7IG1fcHJlcGFyZVJlY3RD
b3VudCsrOyB9CiAgICAgaW50IHByZXBhcmVSZWN0Q291bnQoKSB7IHJldHVybiBtX3ByZXBhcmVS
ZWN0Q291bnQ7IH0KIAorICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoKSB7IG1fcGFpbnRDb250
ZW50c1JlY3RDb3VudCsrOyB9CisgICAgaW50IHBhaW50Q29udGVudHNSZWN0Q291bnQoKSB7IHJl
dHVybiBtX3BhaW50Q29udGVudHNSZWN0Q291bnQ7IH0KKwogICAgIHZvaWQgdXBkYXRlUmVjdCgp
IHsgbV91cGRhdGVSZWN0Q291bnQrKzsgfQogICAgIGludCB1cGRhdGVSZWN0Q291bnQoKSB7IHJl
dHVybiBtX3VwZGF0ZVJlY3RDb3VudDsgfQogCisgICAgaW50IG5lZWRQcmVwYXJlUmVjdCgpIHsg
cmV0dXJuIG1fbmVlZFByZXBhcmVSZWN0OyB9CisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmcoQ0NMYXllckRlbGVnYXRlICpkZWxl
Z2F0ZSkKKyAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2lu
ZyhDQ0xheWVyRGVsZWdhdGUgKmRlbGVnYXRlLCBib29sIG5lZWRQcmVwYXJlUmVjdCkKICAgICAg
ICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1bShkZWxlZ2F0ZSkKKyAgICAgICAgLCBtX25lZWRQcmVw
YXJlUmVjdChuZWVkUHJlcGFyZVJlY3QpCiAgICAgICAgICwgbV9wcmVwYXJlVG9VcGRhdGVDb3Vu
dCgwKQogICAgICAgICAsIG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50KDApCiAgICAgICAgICwg
bV9wYWludENvbnRlbnRzQ291bnQoMCkKICAgICAgICAgLCBtX3ByZXBhcmVSZWN0Q291bnQoMCkK
KyAgICAgICAgLCBtX3BhaW50Q29udGVudHNSZWN0Q291bnQoMCkKICAgICAgICAgLCBtX3VwZGF0
ZVJlY3RDb3VudCgwKQogICAgIHsKICAgICAgICAgc2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7
CkBAIC0xMDQyLDEwICsxMDU5LDEyIEBAIHByaXZhdGU6CiAgICAgfQogCiAgICAgUmVmUHRyPENv
bnRlbnRMYXllclRleHR1cmVVcGRhdGVyPiBtX2NvbnRlbnRMYXllclRleHR1cmVVcGRhdGVyOwor
ICAgIGJvb2wgbV9uZWVkUHJlcGFyZVJlY3Q7CiAgICAgaW50IG1fcHJlcGFyZVRvVXBkYXRlQ291
bnQ7CiAgICAgaW50IG1faWRsZVByZXBhcmVUb1VwZGF0ZUNvdW50OwogICAgIGludCBtX3BhaW50
Q29udGVudHNDb3VudDsKICAgICBpbnQgbV9wcmVwYXJlUmVjdENvdW50OworICAgIGludCBtX3Bh
aW50Q29udGVudHNSZWN0Q291bnQ7CiAgICAgaW50IG1fdXBkYXRlUmVjdENvdW50OwogfTsKIApA
QCAtMTA1NCw3ICsxMDczLDcgQEAgY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdE9wYWNpdHlDaGFu
Z2UgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CiBwdWJsaWM6CiAgICAgQ0NMYXllclRy
ZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UoKQogICAgICAgICA6IG1fdGVzdE9wYWNpdHlDaGFuZ2VE
ZWxlZ2F0ZSh0aGlzKQotICAgICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJD
aHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVs
ZWdhdGUpKQorICAgICAgICAsIG1fdXBkYXRlQ2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1
bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRlKCZtX3Rlc3RPcGFjaXR5Q2hhbmdlRGVsZWdhdGUs
IHRydWUpKQogICAgIHsKICAgICB9CiAKQEAgLTEwODUsNiArMTEwNCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIC8vIHBhaW50Q29udGVudHNSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQgdGhl
IHNhbWUKICAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHByZXBhcmVSZWN0KCkuCiAgICAg
ICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSwKKyAg
ICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+cGFpbnRDb250ZW50c1JlY3RDb3Vu
dCgpKTsKKworICAgICAgICAvLyB1cGRhdGVSZWN0KCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQg
dGhlIHNhbWUKKyAgICAgICAgLy8gYW1vdW50IG9mIHRpbWVzIGFzIHBhaW50Q29udGVudHNSZWN0
KCkuCisgICAgICAgIEVYUEVDVF9FUShtX3VwZGF0ZUNoZWNrTGF5ZXItPnBhaW50Q29udGVudHNS
ZWN0Q291bnQoKSwKICAgICAgICAgICAgICAgICAgIG1fdXBkYXRlQ2hlY2tMYXllci0+dXBkYXRl
UmVjdENvdW50KCkpOwogCiAgICAgICAgIC8vIGNsZWFyIG1fdXBkYXRlQ2hlY2tMYXllciBzbyBD
Q0xheWVyVHJlZUhvc3QgZGllcy4KQEAgLTExMDEsNCArMTEyNSw1NSBAQCBURVNUX0YoQ0NMYXll
clRyZWVIb3N0VGVzdE9wYWNpdHlDaGFuZ2UsIHJ1bk11bHRpVGhyZWFkKQogICAgIHJ1blRlc3Qo
dHJ1ZSk7CiB9CiAKKy8vIHByZXBhcmVSZWN0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBu
ZWVkUHJlcGFyZVJlY3QoKSByZXR1cm5zIGZhbHNlLgorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVz
dE5vUHJlcGFyZVJlY3QgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CitwdWJsaWM6Cisg
ICAgQ0NMYXllclRyZWVIb3N0VGVzdE5vUHJlcGFyZVJlY3QoKQorICAgICAgICA6IG1fdXBkYXRl
Q2hlY2tMYXllcihDb250ZW50TGF5ZXJDaHJvbWl1bVdpdGhVcGRhdGVUcmFja2luZzo6Y3JlYXRl
KCZtX2RlbGVnYXRlLCBmYWxzZSkpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBi
ZWdpblRlc3QoKQorICAgIHsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRSb290TGF5ZXIo
bV91cGRhdGVDaGVja0xheWVyKTsKKyAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9y
dChJbnRTaXplKDEwLCAxMCkpOworCisgICAgICAgIHBvc3RTZXROZWVkc0NvbW1pdFRvTWFpblRo
cmVhZCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJl
YWQoQ0NMYXllclRyZWVIb3N0SW1wbCopCisgICAgeworICAgICAgICBlbmRUZXN0KCk7CisgICAg
fQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisgICAgeworICAgICAgICAvLyBwcmVw
YXJlVG9VcGRhdGUoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBF
Q1RfRVEoMSwgbV91cGRhdGVDaGVja0xheWVyLT5wcmVwYXJlVG9VcGRhdGVDb3VudCgpKTsKKwor
ICAgICAgICAvLyBpZGxlUHJlcGFyZVRvVXBkYXRlKCkgc2hvdWxkIGhhdmUgYmVlbiBjYWxsZWQg
b25jZS4KKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fdXBkYXRlQ2hlY2tMYXllci0+aWRsZVByZXBh
cmVUb1VwZGF0ZUNvdW50KCkpOworCisgICAgICAgIC8vIHBhaW50Q29udGVudHMoKSBzaG91bGQg
aGF2ZSBiZWVuIGNhbGxlZCBvbmNlLgorICAgICAgICBFWFBFQ1RfRVEoMSwgbV91cGRhdGVDaGVj
a0xheWVyLT5wYWludENvbnRlbnRzQ291bnQoKSk7CisKKyAgICAgICAgLy8gcHJlcGFyZVJlY3Qo
KSBzaG91bGQgbm90IGhhdmUgYmVlbiBjYWxsZWQuCisgICAgICAgIEVYUEVDVF9FUSgwLCBtX3Vw
ZGF0ZUNoZWNrTGF5ZXItPnByZXBhcmVSZWN0Q291bnQoKSk7CisKKyAgICAgICAgLy8gdXBkYXRl
UmVjdCgpIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkIHRoZSBzYW1lCisgICAgICAgIC8vIGFtb3Vu
dCBvZiB0aW1lcyBhcyBwYWludENvbnRlbnRzUmVjdCgpLgorICAgICAgICBFWFBFQ1RfRVEobV91
cGRhdGVDaGVja0xheWVyLT5wYWludENvbnRlbnRzUmVjdENvdW50KCksCisgICAgICAgICAgICAg
ICAgICBtX3VwZGF0ZUNoZWNrTGF5ZXItPnVwZGF0ZVJlY3RDb3VudCgpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgTW9ja0xheWVyRGVsZWdhdGUgbV9kZWxlZ2F0ZTsKKyAgICBSZWZQdHI8Q29u
dGVudExheWVyQ2hyb21pdW1XaXRoVXBkYXRlVHJhY2tpbmc+IG1fdXBkYXRlQ2hlY2tMYXllcjsK
K307CisKK1RFU1RfRihDQ0xheWVyVHJlZUhvc3RUZXN0Tm9QcmVwYXJlUmVjdCwgcnVuTXVsdGlU
aHJlYWQpCit7CisgICAgcnVuVGVzdCh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVt
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NhbnZhczJETGF5ZXJDaHJv
bWl1bVRlc3QuY3BwCmluZGV4IDdkZjk2OTUuLjFlYTY1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ2FudmFzMkRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DYW52YXMyRExheWVyQ2hyb21pdW1UZXN0LmNw
cApAQCAtNzMsOCArNzMsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZShM
YXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKiB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKICAgICB7Ci0gICAgICAgIHRleHR1cmUt
PnByZXBhcmVSZWN0KHNvdXJjZVJlY3QpOwotICAgICAgICB0ZXh0dXJlLT51cGRhdGVSZWN0KG1f
Y29udGV4dCwgbV9hbGxvY2F0b3IsIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgaWYg
KHRleHR1cmUtPm5lZWRQcmVwYXJlUmVjdCgpKQorICAgICAgICAgICAgdGV4dHVyZS0+cHJlcGFy
ZVJlY3QobV9jb250ZXh0LCBtX2FsbG9jYXRvciwgc291cmNlUmVjdCwgZGVzdFJlY3QpOworCisg
ICAgICAgIHRleHR1cmUtPnVwZGF0ZVJlY3QobV9jb250ZXh0LCBzb3VyY2VSZWN0LCBkZXN0UmVj
dCk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtMTUyLDYgKzE1NCw3IEBAIHByb3RlY3RlZDoKIAog
ICAgICAgICBjYW52YXMtPmNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGNh
bnZhcy0+bmVlZHNEaXNwbGF5KCkpOworICAgICAgICBjYW52YXMtPnByZXBhcmVUb1VwZGF0ZUlm
RGlydHkoKTsKICAgICAgICAgY2FudmFzLT5wYWludENvbnRlbnRzSWZEaXJ0eSgpOwogICAgICAg
ICBFWFBFQ1RfRkFMU0UoY2FudmFzLT5uZWVkc0Rpc3BsYXkoKSk7CiAgICAgICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QuY3BwCmluZGV4IDNjMzUyNGUuLjllODdiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtNTEsNyAr
NTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRleHR1cmUoKSB7IH0KIAogICAgICAg
ICB2aXJ0dWFsIE1hbmFnZWRUZXh0dXJlKiB0ZXh0dXJlKCkgeyByZXR1cm4gbV90ZXh0dXJlLmdl
dCgpOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRSZWN0JikgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmKSB7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAg
IE93blB0cjxNYW5hZ2VkVGV4dHVyZT4gbV90ZXh0dXJlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>