<?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>94174</bug_id>
          
          <creation_ts>2012-08-15 19:31:40 -0700</creation_ts>
          <short_desc>[chromium] Change WebLayer from a concrete type to a pure virtual interface</short_desc>
          <delta_ts>2012-08-22 18:28:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>94229</dependson>
    
    <dependson>94614</dependson>
    
    <dependson>94631</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>epoger</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>kbr</cc>
    
    <cc>piman</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>696650</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-15 19:31:40 -0700</bug_when>
    <thetext>[chromium] Change WebLayer from a concrete type to a pure virtual interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696655</commentid>
    <comment_count>1</comment_count>
      <attachid>158693</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-15 19:33:01 -0700</bug_when>
    <thetext>Created attachment 158693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>696683</commentid>
    <comment_count>2</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-15 20:35:49 -0700</bug_when>
    <thetext>This patch isn&apos;t quite ready for full review, but it&apos;s close and I would like some feedback on the Web*Layer API.  The goal of the changes is to make WebLayer and friends be pure virtual interfaces and provide a factory function off of WebKit&apos;s platform support (not in this patch) so that WebKit.dll can link without unresolved symbols and an external library can provide the WebLayer implementations.  As a secondary goal, I&apos;d like to clean up some of the API warts resulting from the ref-counted nature of WebLayer leaking into the API - things like clearClient(), clearRenderSurface(), etc - by making WebLayer have clear ownership by a single API consumer.

WebLayer exposes a large-ish number of entries points for common layer manipulation - setting up geometry, tree structure, and various properties.  The compositor supports a number of specific types of layers - content-backed, texture-backed, image-backed, IOSurface-backed - which without this patch are expressed as subclasses of WebLayer.  The class hierarchy maps pretty directly to the underlying classes (WebLayer -&gt; LayerChromium, WebContentLayer -&gt; ContentLayerChromium) with a few things that don&apos;t match up directly.

The difficulty with making Web*Layer pure virtual and preserving this hierarchy is that it creates a diamond inheritance structure: WebContentLayer inherits from WebLayer (at the public API layer), WebLayerImpl inherits from WebLayerImpl, WebContentLayerImpl inherits from WebContentLayer, but WebContentLayerImpl has to satisfy the WebLayer interface as well.  Simply inheriting from WebLayerImpl doesn&apos;t quite work - you have to use virtual inheritance from WebLayer -&gt; WebLayerImpl and WebLayer -&gt; WebContentLayer to get the compiler to generate the thunks from WebContentLayerImpl up to WebLayerImpl to satisfy the WebLayer contract.  However, using virtual inheritance makes it impossible to downcast from a WebLayer to a WebLayerImpl statically.  This makes it really hard to implement APIs like WebLayer::addChild(WebLayer* child) since the implementation has to be able to &quot;see&quot; the implementation of &quot;child&quot;.  Without being able to downcast, I think I would have to add some knowledge of implemenation types to the public WebLayer interface.  Another alternative is to avoid virtual inheritance completely and satisfy the WebLayer API explicitly in WebContentLayerImpl - effectively writing out the thunks by hand that the compiler would generate.  This is gross since WebLayer is pretty large and we have a fair number of layer types.

To avoid all of this, I&apos;ve broken up the Web*Layer type system such that WebLayer is a standalone type and the more specific layer subclasses are all of the form:

class WebContentLayer {
public:

   // The WebContentLayer has ownership of the value returned, not the caller.
   virtual WebLayer* layer() = 0;

   // content layer specific calls
};

then the caller has to be aware of the split and go to layer() when they want to manipulate common properties.  This also means that downcasting from a WebLayer to anything else is not possible - callers have to retain their handles to specific types if they want them.  In practice, this doesn&apos;t appear to be an issue.

The biggest downside of this is that it makes the API fairly stuttery.  For instance if you have a WebScrollbarLayer called m_scrollbarLayer and you want to adjust its position, you have to do:

m_scrollbarLayer-&gt;layer()-&gt;setPosition(foo)

I can&apos;t think of any good way to get around this.  One possibility is to take the &quot;Layer&quot; suffix off of the classes that aren&apos;t WebLayer since they no longer satisfy have an &quot;is-a&quot; relationship with WebLayer they have a &quot;has-a&quot; relationship.

Another more minor issue related to removing the refcounted-ness is that ownership is a bit odd for APIs that return a WebLayer* - for instance parent(). What I&apos;ve done is just constructed a new wrapper WebLayer instance and declared that the caller has to take ownership of it.  I haven&apos;t fixed up all the callers and this seems really leak-prone, so I want to get rid of it.  I think the answer here is to remove the tree introspection APIs from WebLayer.  Whoever is building up the WebLayer tree must have some object model that they are using to populate the list (GraphicsLayerChromiums in webkit, ui::Layers in aura), so they can use that for walking around the tree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697619</commentid>
    <comment_count>3</comment_count>
      <attachid>158931</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 15:46:40 -0700</bug_when>
    <thetext>Created attachment 158931
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697631</commentid>
    <comment_count>4</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 15:53:48 -0700</bug_when>
    <thetext>There&apos;s one remaining issue with this patch related to ScrollingCoordinatorChromium (I have a hack to avoid it in WebViewImpl, but I&apos;d rather find a better way).  The problem there is that when navigating across pages the old GraphicsLayer tree is torn down, but the ScrollingCoordinator receives notifications about scrolling updates before it is notified that the scrollable layer pointer it was using now points to nowhere.  Previously, since ScrollingCoordinatorChromium held ref to a layer, these notifications would go to a soon-to-be-dead layer and we would simply have slightly stale state (and some extra memory use) until ScrollingCoordinator was notified of the new scrollable layer.

I can fix this in two ways:
1.) Reorder the cross-platform calls so we always get notified of the new scrollable layer before we get any property updates.  I&apos;ll look at doing this first.
2.) Buffer all property updates within ScrollingCoordinatorChromium until we know our view of the layer tree is up to date, then push to the layers. I&apos;m wary of this since it means that we would have to add yet another buffer and synchronization mechanism that is mostly redundant with our layer commit.  I&apos;m not excited about doing this, but it would move us closer to how other ScrollingCoordinator implementations work and thus be more robust to changes from other ports.

Otherwise, I think this patch is good to go.  It depends on https://bugs.webkit.org/show_bug.cgi?id=94229 and a ui/compositor/ patch on the chromium side to avoid breaking builds (will upload that shortly).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697654</commentid>
    <comment_count>5</comment_count>
      <attachid>158935</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 16:29:39 -0700</bug_when>
    <thetext>Created attachment 158935
rebased to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697658</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 16:32:44 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697659</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 16:33:08 -0700</bug_when>
    <thetext>Attachment 158935 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebKit/chromium/src/WebViewImpl.cpp:187:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 51 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697721</commentid>
    <comment_count>8</comment_count>
      <attachid>158957</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 17:29:36 -0700</bug_when>
    <thetext>Created attachment 158957
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697725</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 17:31:00 -0700</bug_when>
    <thetext>This works around the out-of-order ScrollingCoordinator calls by grabbing the scroll layer off of the Page-&gt;Frame-&gt;....-&gt;RenderLayerCompositor in the property setters instead of relying on the setScrollLayer call.  A bit ugly, but we were doing it already anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698741</commentid>
    <comment_count>10</comment_count>
      <attachid>158957</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-17 16:08:59 -0700</bug_when>
    <thetext>Comment on attachment 158957
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/GraphicsLayerChromium.h:171
&gt; +    OwnPtr&lt;WebKit::WebContentLayer&gt; m_contentLayer;
&gt; +    WebKit::WebLayer* m_layer;
&gt; +    OwnPtr&lt;WebKit::WebLayer&gt; m_transformLayer;
&gt; +    OwnPtr&lt;WebKit::WebImageLayer&gt; m_imageLayer;
&gt; +    WebKit::WebLayer* m_contentsLayer;

m_contentsLayer *and* m_contentLayer? ಠ_ಠ</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698821</commentid>
    <comment_count>11</comment_count>
      <attachid>159236</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-17 17:17:57 -0700</bug_when>
    <thetext>Created attachment 159236
rebased and addresses feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698822</commentid>
    <comment_count>12</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-17 17:18:41 -0700</bug_when>
    <thetext>Updated to just use m_layer. I wasn&apos;t sure if you meant to set review? or not - http://codereview.chromium.org/10832355/ needs to land before this anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698827</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-17 17:21:39 -0700</bug_when>
    <thetext>Attachment 159236 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
Source/WebKit/chromium/src/WebLayerImpl.cpp:32:  cc includes should be &quot;CCFoo.h&quot; instead of &quot;cc/CCFoo.h&quot;.  [build/include] [4]
Total errors found: 1 in 51 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698831</commentid>
    <comment_count>14</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-17 17:23:52 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Attachment 159236 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/Platform/ChangeLog&apos;, u&apos;Source/Platf...&quot; exit_code: 1
&gt; Source/WebKit/chromium/src/WebLayerImpl.cpp:32:  cc includes should be &quot;CCFoo.h&quot; instead of &quot;cc/CCFoo.h&quot;.  [build/include] [4]
&gt; Total errors found: 1 in 51 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Oh the irony!  Will fix :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698835</commentid>
    <comment_count>15</comment_count>
      <attachid>159241</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-17 17:27:35 -0700</bug_when>
    <thetext>Created attachment 159241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699593</commentid>
    <comment_count>16</comment_count>
      <attachid>159241</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-20 09:32:27 -0700</bug_when>
    <thetext>Comment on attachment 159241
Patch

R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700010</commentid>
    <comment_count>17</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-20 14:58:00 -0700</bug_when>
    <thetext>Committed r126076: &lt;http://trac.webkit.org/changeset/126076&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700429</commentid>
    <comment_count>18</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-20 21:07:39 -0700</bug_when>
    <thetext>FYI, this looks like it broke accelerated compositing on aura (all tabs appear blank).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700444</commentid>
    <comment_count>19</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-20 21:39:50 -0700</bug_when>
    <thetext>See comments in http://codereview.chromium.org/10832355/ , that&apos;s where the bug seems to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700886</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-21 10:25:49 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 94614</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700907</commentid>
    <comment_count>21</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-21 10:42:30 -0700</bug_when>
    <thetext>So that there is complete history somewhere: this change caused a crash during compositor shutdown in Chromium Aura builds. This was blocking WebKit rolls, and the thought this morning was that the crash (downstream in Chromium code) had not been fixed, so I rolled this out in https://bugs.webkit.org/show_bug.cgi?id=94614 . However, it appears that the crash had actually already been fixed, in https://chromiumcodereview.appspot.com/10827435/ , so the rollout will be reverted.

Example failures:

http://build.chromium.org/p/chromium/buildstatus?builder=Linux%20%28aura%29&amp;number=4341
http://build.chromium.org/p/chromium.chromiumos/buildstatus?builder=ChromiumOS%20%28x86%29&amp;number=7763</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700912</commentid>
    <comment_count>22</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2012-08-21 10:46:31 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; So that there is complete history somewhere: this change caused a crash during compositor shutdown in Chromium Aura builds. This was blocking WebKit rolls, and the thought this morning was that the crash (downstream in Chromium code) had not been fixed, so I rolled this out in https://bugs.webkit.org/show_bug.cgi?id=94614 . However, it appears that the crash had actually already been fixed, in https://chromiumcodereview.appspot.com/10827435/ , so the rollout will be reverted.
&gt; 
&gt; Example failures:
&gt; 
&gt; http://build.chromium.org/p/chromium/buildstatus?builder=Linux%20%28aura%29&amp;number=4341
&gt; http://build.chromium.org/p/chromium.chromiumos/buildstatus?builder=ChromiumOS%20%28x86%29&amp;number=7763

Mmh, those crashes are not familiar. The issues I was seeing in the CL above were not at shutdown but related to accelerated compositing. Are we positive they are fixed? These crashes look related to the ownership semantics changes, where we may need to be more precise about destruction order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700915</commentid>
    <comment_count>23</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-21 10:47:57 -0700</bug_when>
    <thetext>Sounds like something else.  I&apos;ll prep a re-re-re-revert and try to repro locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700917</commentid>
    <comment_count>24</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-21 10:49:44 -0700</bug_when>
    <thetext>Yes, excellent point. piman, your fix landed at http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=152530 , but epoger&apos;s attempted (and failed) WebKit roll landed at http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=152561 . So there is still a problem with the combination of the upstream and downstream code associated with this change.

jamesr&apos;s indicated he&apos;ll build Aura, test and debug before re-landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700933</commentid>
    <comment_count>25</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-21 11:05:48 -0700</bug_when>
    <thetext>There&apos;s a shutdown issue in ~Compositor. It&apos;s easy enough to patch downstream but it&apos;s possible that we could be more robust.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701071</commentid>
    <comment_count>26</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-21 13:34:15 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=94631 fixes the issues on the tests that the aura bots failed on.  I&apos;ll hold off on relanding this patch until we get a successful WebKit roll in since it&apos;s pretty backed up and I don&apos;t want to cause more risk for everything else depending on the roll.  Sorry about all of the problems, I really should have run these aura tests myself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702568</commentid>
    <comment_count>27</comment_count>
      <attachid>160051</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-22 17:46:30 -0700</bug_when>
    <thetext>Created attachment 160051
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702569</commentid>
    <comment_count>28</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-22 17:46:50 -0700</bug_when>
    <thetext>Rebased with LinkHighlighter updated and regenerated changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702578</commentid>
    <comment_count>29</comment_count>
      <attachid>160051</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-22 17:56:37 -0700</bug_when>
    <thetext>Comment on attachment 160051
Patch

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

R=me, assuming you smoke test aura before landing.  LinkHighlight changes and GraphicsLayerChromium changes all look fine to me.

&gt; Source/Platform/ChangeLog:12
&gt; +invoke
&gt; +        special cleanup methods before shutdown.

This is a weird word wrap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>702608</commentid>
    <comment_count>30</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-22 18:28:35 -0700</bug_when>
    <thetext>Committed r126378: &lt;http://trac.webkit.org/changeset/126378&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158693</attachid>
            <date>2012-08-15 19:33:01 -0700</date>
            <delta_ts>2012-08-16 15:46:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94174-20120815193227.patch</filename>
            <type>text/plain</type>
            <size>206995</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3ZWU2NzZmODQwZDM3
NDI2OWM5ZDRlNDlhZDJlNzQ3NzY4Nzk3M2YyLi40N2NiYWEwMDJkODk5NDIzMjM1OTAyMTAzYzY2
YTU1YzVhNjhmNzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMi0wOC0xNSAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFs
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2FjaCwg
cmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cgKE9P
UFMhKS4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaDoKKyAg
ICAgICAgKFdlYkNvbnRlbnRMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmg6CisgICAgICAgIChXZWJFeHRlcm5hbFRleHR1cmVMYXllcik6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYklPU3VyZmFjZUxheWVyLmg6CisgICAgICAg
IChXZWJJT1N1cmZhY2VMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkltYWdl
TGF5ZXIuaDoKKyAgICAgICAgKFdlYkltYWdlTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6On5XZWJMYXllcik6CisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oOgorICAgICAgICAoV2ViU2Nyb2xsYWJsZUxh
eWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYlNjcm9sbGJhckxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2Vi
U29saWRDb2xvckxheWVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU29saWRD
b2xvckxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29saWRDb2xvckxheWVyOjp+V2ViU29s
aWRDb2xvckxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9MYXllci5o
OgorICAgICAgICAoV2ViVmlkZW9MYXllcik6CisKIDIwMTItMDgtMTQgIEdyZWdnIFRhdmFyZXMg
IDxnbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUGx1bWIgdGhyb3VnaCBFWFRfZGVidWdfbWFy
a2VyIGVudHJ5IHBvaW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDljMzY4YjM0ZjMxYWM0YzJhYjdlOWRhNGRm
YjAwMmRiNGUwMjQ4NWMuLmQxZDBmNzk0NDllMDEwZWVlNmZiMWIwMTlkNTEwOWNlMmQ4NGU3YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDIgQEAKKzIwMTItMDgtMTUgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENoYW5nZSBXZWJM
YXllciBmcm9tIGEgY29uY3JldGUgdHlwZSB0byBhIHB1cmUgdmlydHVhbCBpbnRlcmZhY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTc0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBp
bmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxl
YXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJv
bWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRl
KToKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNldFNjcm9sbExheWVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZTo6c2V0SG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJp
dmF0ZTo6c2V0VmVydGljYWxTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6
OnNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxl
ckNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91
bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3Np
dGlvbkxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2NlbGVyYXRlZERldmljZUNvbnRleHQ6OkFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dCk6CisgICAg
ICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZERldmljZUNvbnRleHQ6OmNsZWFyTGF5ZXIpOgorICAg
ICAgICAoQWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vs
ZXJhdGVkRGV2aWNlQ29udGV4dDo6cHJlcGFyZUZvckRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FudmFzMkRMYXllckJyaWRnZTo6Q2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQnJpZGdlOjp+Q2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXMyRExheWVyQnJpZGdlOjpza0NhbnZhcyk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXMyRExheWVyQnJpZGdlOjpsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXMyRExheWVyQnJpZGdlOjpjb250ZXh0QWNxdWlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoQ2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6fkRyYXdpbmdCdWZmZXJQcml2YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjpsYXllcik6CisgICAgICAg
IChEcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTmFtZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpyZW1vdmVGcm9tUGFyZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0U2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNsZWFyQmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNPcGFxdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0ZXJzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRl
cnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRNYXNrTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZmFj
ZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
UmVwbGljYXRlZEJ5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRDb250ZW50c05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheUluUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9JbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzVG9NZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldENvbnRlbnRzVG8pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjphZGRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnJlbW92ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnN1c3BlbmRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpkaWRGaW5pc2hMaW5rSGlnaGxpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cGxhdGZvcm1MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldERlYnVnQmFja2dyb3Vu
ZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RGVi
dWdCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRh
dGVDaGlsZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVMYXllclBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlTGF5ZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQW5jaG9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtOjp1cGRhdGVUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU1hc2tzVG9Cb3VuZHMpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNE
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJJ
c0RyYXdhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjp1cGRhdGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50c0xheWVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6aGFzQ29udGVudHNMYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNvbnRlbnRMYXllcik6Cisg
ICAgICAgIChHcmFwaGljc0xheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpjb250ZW50c0xheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OnJvb3RMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oOgorCiAyMDEyLTA4LTE1ICBPdHRvIERlcmVrIENoZXVuZyAgPG90
Y2hldW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFNob3cgY3VzdG9tIGVycm9y
IHBhZ2Ugd2hlbiA0MDcgaXMgcmVjZWl2ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
MzgyYWUxYzQxNDkxMWFiMjdiZWZlMWY0ZDI4NDI3MGFhZTM2MTA0MC4uNWQ5OTAyYjExODc2MmNm
YjkxMGNmMjkzYjNiOGJkMjc3YTJmY2IzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMTkgQEAKKzIwMTItMDgtMTUgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1dIENoYW5nZSBXZWJMYXllciBmcm9tIGEgY29u
Y3JldGUgdHlwZSB0byBhIHB1cmUgdmlydHVhbCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTc0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0
aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVu
Y3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lw
OgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwOgorICAgICAgICAo
V2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0U2Nyb2xs
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpyZXNlcnZlU2Nyb2xsYmFyTGF5ZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydCk6CisgICAg
ICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2Nyb2xsTGF5ZXIpOgorICAg
ICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaDoKKyAgICAgICAgKiBzcmMvV2Vi
Q29udGVudExheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVu
dExheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6On5XZWJD
b250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6
bGF5ZXIpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExh
eWVySW1wbDo6Y2xlYXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJ
bXBsOjpzZXREb3VibGVTaWRlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllcklt
cGw6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJ
bXBsOjpzZXRVc2VMQ0RUZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1w
bDo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbnRlbnRMYXllckltcGw6OnBhaW50Q29udGVudHMpOgorICAgICAgICAqIHNyYy9XZWJD
b250ZW50TGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJDb250ZW50TGF5ZXJJbXBsKToKKyAgICAg
ICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHNyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6fldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRUZXh0dXJlSWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldEZsaXBwZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldFVWUmVjdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0T3BhcXVlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRQcmVtdWx0
aXBsaWVkQWxwaGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGw6OndpbGxNb2RpZnlUZXh0dXJlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsOjpzZXRSYXRlTGltaXRDb250ZXh0KToKKyAgICAgICAgKFdlYlRleHR1cmVV
cGRhdGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHR1cmVVcGRhdGVySW1wbDo6V2Vi
VGV4dHVyZVVwZGF0ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsOjpwcmVwYXJlVGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDo6Y29udGV4dCk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29udGVudExheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAqIHNyYy9XZWJJT1N1cmZhY2VMYXllcklt
cGwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJm
YWNlTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9T
dXJmYWNlTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklPU3VyZmFjZUxheWVy
SW1wbDo6V2ViSU9TdXJmYWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJm
YWNlTGF5ZXJJbXBsOjp+V2ViSU9TdXJmYWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgICogc3JjL1dl
YklPU3VyZmFjZUxheWVySW1wbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21p
dW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgICogc3Jj
L1dlYkltYWdlTGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllci5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbWFnZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bWFnZUxheWVySW1wbDo6V2ViSW1hZ2VMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJ
bWFnZUxheWVySW1wbDo6fldlYkltYWdlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
SW1hZ2VMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VMYXllcklt
cGw6OnNldEJpdG1hcCk6CisgICAgICAgICogc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmg6IFJlbmFt
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVyLmNwcC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkltYWdlTGF5
ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHNyYy9XZWJMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6V2Vi
TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjppbnZhbGlkYXRlUmVj
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aW52YWxpZGF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6cGFyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpudW1iZXJPZkNoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBs
OjpjaGlsZEF0KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjphZGRDaGlsZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aW5zZXJ0Q2hpbGQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllckltcGw6OnJlcGxhY2VDaGlsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVySW1wbDo6c2V0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnJl
bW92ZUZyb21QYXJlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnJlbW92ZUFs
bENoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2lu
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6YW5jaG9yUG9pbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEFuY2hvclBvaW50Wik6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6YW5jaG9yUG9pbnRaKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmJvdW5k
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6bWFza3NUb0JvdW5kcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjptYXNrTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNl
dFJlcGxpY2FMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0T3BhY2l0
eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6b3BhY2l0eSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0T3BhcXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpvcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpwb3NpdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJJbXBsOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
ckltcGw6OnRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RHJh
d3NDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFByZXNlcnZlczNEKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllckltcGw6OnNldERlYnVnTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6
c2V0QW5pbWF0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmFk
ZEFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllckltcGw6Omhhc0FjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW1wbDo6dHJhbnNmZXJBbmltYXRpb25zVG8pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnNldEFsd2F5c1Jlc2VydmVUZXh0dXJlcyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpjbGVhclJlbmRlclN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjpzZXRTY3JvbGxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRI
YXZlV2hlZWxFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpz
ZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OnNldEZpeGVkVG9Db250YWluZXJMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJMYXllcklt
cGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViTGF5ZXJJbXBsKToKKyAgICAg
ICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
VHJlZVZpZXc6OnNldFJvb3RMYXllcik6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJlZVZpZXdJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZSk6
CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlcGFpbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNldE9wYXF1ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cGxhdGZvcm1MYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRSZW5kZXJp
bmdJblVzZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oOgorICAg
ICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2lu
Q29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OnNldEJhY2tpbmdUZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250
YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldE9wYXF1ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAqIHNyYy9X
ZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgIChXZWJQbHVnaW5Db250YWluZXJJbXBs
KToKKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYWJsZUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxlTGF5ZXIuY3BwLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRT
Y3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0
U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0SGF2
ZVdoZWVsRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXll
cjo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Ny
b2xsYWJsZUxheWVyOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5
ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRGaXhlZFRvQ29u
dGFpbmVyTGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXIu
Y3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyTGF5
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1wbDo6V2Vi
U2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjp+V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xs
YmFyTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVy
SW1wbDo6c2V0U2Nyb2xsTGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJTY3JvbGxiYXJMYXllcklt
cGwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xv
ckxheWVySW1wbC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAoV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViU29saWRDb2xv
ckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29saWRDb2xvckxheWVySW1wbDo6V2ViU29saWRD
b2xvckxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllckltcGw6
OmxheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29s
b3JMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogc3JjL1dlYlNvbGlk
Q29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYlNvbGlkQ29sb3JMYXllckltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWRl
b0xheWVySW1wbC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZGVvTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9MYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9MYXllckltcGw6
OldlYlZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9MYXllckltcGw6
On5XZWJWaWRlb0xheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBs
OjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjphY3RpdmUpOgor
ICAgICAgICAqIHNyYy9XZWJWaWRlb0xheWVySW1wbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJWaWRlb0xheWVySW1wbCk6CisgICAgICAg
ICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6Oldl
YlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldFJvb3RHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5oOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMvV2ViTGF5ZXJUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHA6CisKIDIwMTItMDgt
MTUgIEJydW5vIGRlIE9saXZlaXJhIEFiaW5hZGVyICA8YnJ1bm8uYWJpbmFkZXJAYmFzeXNrb20u
Y29tPgogCiAgICAgICAgIFtjc3MzLXRleHRdIEFkZCBDU1MzIFRleHQgZGVjb3JhdGlvbiBjb21w
aWxlIGZsYWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29udGVudExheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRl
bnRMYXllci5oCmluZGV4IDczMzZiZmFiY2Q3NDYxODIxOGI5ZGVkZWJhMDFiYzI3MzIzMjZjNjcu
LjJhM2YwNGI3MTFiYTkxNTE3MTJlMjc4MjI2YmNiODg0OWZlNmY0ZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaApAQCAtMjksNTMg
KzI5LDM4IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViU2Nyb2xsYWJs
ZUxheWVyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRlbnRMYXllckNocm9t
aXVtOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNvbnRlbnRMYXllckNsaWVu
dDsKLWNsYXNzIFdlYkNvbnRlbnRMYXllckltcGw7CiAKLWNsYXNzIFdlYkNvbnRlbnRMYXllciA6
IHB1YmxpYyBXZWJTY3JvbGxhYmxlTGF5ZXIgeworY2xhc3MgV2ViQ29udGVudExheWVyIHsKIHB1
YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250ZW50TGF5ZXIgY3JlYXRlKFdl
YkNvbnRlbnRMYXllckNsaWVudCopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkNvbnRl
bnRMYXllciogY3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCopOwogCi0gICAgV2ViQ29udGVu
dExheWVyKCkgeyB9Ci0gICAgV2ViQ29udGVudExheWVyKGNvbnN0IFdlYkNvbnRlbnRMYXllciYg
bGF5ZXIpIDogV2ViU2Nyb2xsYWJsZUxheWVyKGxheWVyKSB7IH0KICAgICB2aXJ0dWFsIH5XZWJD
b250ZW50TGF5ZXIoKSB7IH0KLSAgICBXZWJDb250ZW50TGF5ZXImIG9wZXJhdG9yPShjb25zdCBX
ZWJDb250ZW50TGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgV2ViTGF5ZXI6OmFzc2lnbihs
YXllcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9CisKKyAgICAvLyBUaGUgV2ViQ29u
dGVudExheWVyIGhhcyBvd25lcnNoaXAgb2YgdGhpcyB3cmFwcGVyLgorICAgIHZpcnR1YWwgV2Vi
TGF5ZXIqIGxheWVyKCkgPSAwOwogCiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIFdlYkNvbnRlbnRM
YXllckNsaWVudCBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyQ2xp
ZW50KCkgPSAwOwogCiAgICAgLy8gU2V0IHRvIHRydWUgaWYgdGhlIGJhY2tzaWRlIG9mIHRoaXMg
bGF5ZXIncyBjb250ZW50cyBzaG91bGQgYmUgdmlzaWJsZSB3aGVuIGNvbXBvc2l0ZWQuCiAgICAg
Ly8gRGVmYXVsdHMgdG8gZmFsc2UuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERvdWJsZVNp
ZGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXREb3VibGVTaWRlZChib29sKSA9IDA7CiAK
ICAgICAvLyBTZXQgdG8gYXBwbHkgYSBzY2FsZSBmYWN0b3IgdXNlZCB3aGVuIHBhaW50aW5nIGFu
ZCBkcmF3aW5nIHRoaXMgbGF5ZXIncyBjb250ZW50LiBEZWZhdWx0cyB0byAxLjAuCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KSA9IDA7CiAKICAgICAvLyBTZXQgdG8gcmVuZGVyIHRl
eHQgaW4gdGhpcyBsYXllciB3aXRoIExDRCBhbnRpYWxpYXNpbmcuIE9ubHkgc2V0IGlmIHlvdSBr
bm93IHRoYXQgdGhpcyBsYXllciB3aWxsIGJlCiAgICAgLy8gZHJhd24gaW4gYSB3YXkgd2hlcmUg
dGhpcyBtYWtlcyBzZW5zZSAtIGkuZS4gb3BhcXVlIGJhY2tncm91bmQsIG5vdCByb3RhdGVkIG9y
IHNjYWxlZCwgZXRjLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRVc2VMQ0RUZXh0KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VMQ0RU
ZXh0KGJvb2wpID0gMDsKIAogICAgIC8vIFNldCB0byBkcmF3IGEgc3lzdGVtLWRlZmluZWQgY2hl
Y2tlcmJvYXJkIGlmIHRoZSBjb21wb3NpdG9yIHdvdWxkIG90aGVyd2lzZSBkcmF3IGEgdGlsZSBp
biB0aGlzIGxheWVyCiAgICAgLy8gYW5kIHRoZSBhY3R1YWwgY29udGVudHMgYXJlIHVuYXZhaWxh
YmxlLiBJZiBmYWxzZSwgdGhlIGNvbXBvc2l0b3Igd2lsbCBkcmF3IHRoZSBsYXllcidzIGJhY2tn
cm91bmQgY29sb3IKICAgICAvLyBmb3IgdGhlc2UgdGlsZXMuCiAgICAgLy8gRGVmYXVsdHMgdG8g
ZmFsc2UuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNz
aW5nVGlsZXMoYm9vbCk7Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJDb250
ZW50TGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtPiYpOwotICAgIFdlYkNvbnRlbnRMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW0+KCkgY29uc3Q7Ci0jZW5k
aWYKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhi
b29sKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaCBiL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaApp
bmRleCBiMTljMDVmM2UzYjA5OGQ4ZWIwM2VlNTYxMjc5NjQ2YjkwODFmNDU0Li5hYjQ4ZjlhOTFj
MGQ2NWI0ODhmYzhjZTMxNDZhMDE4ZDdhNTAwNmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmgKKysrIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCkBAIC0z
MCwxMCArMzAsNiBAQAogI2luY2x1ZGUgIldlYkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIldlYkxh
eWVyLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIFRleHR1cmVMYXllckNocm9taXVt
OwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJDbGllbnQ7CkBAIC00NCw0OSArNDAsNDUgQEAgY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJDbGllbnQ7CiAvLyBXaGVuIGluIHNpbmdsZS10aHJlYWQgbW9kZSwgdGhpcyBtZWFucyBkdXJp
bmcgV2ViTGF5ZXJUcmVlVmlldzo6Y29tcG9zaXRlKCkuCiAvLyBXaGVuIHVzaW5nIHRoZSB0aHJl
YWRlZCBjb21wb3NpdG9yLCB0aGlzIGNhbiBtZWFuIGF0IGFuIGFyYml0cmFyeSB0aW1lIHVudGls
CiAvLyB0aGUgV2ViTGF5ZXJUcmVlVmlldyBpcyBkZXN0cm95ZWQuCi1jbGFzcyBXZWJFeHRlcm5h
bFRleHR1cmVMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFzcyBXZWJFeHRlcm5hbFRleHR1
cmVMYXllciB7CiBwdWJsaWM6CiAgICAgLy8gVGhlIG93bmVyIG9mIHRoaXMgbGF5ZXIgbWF5IG9w
dGlvbmFsbHkgcHJvdmlkZSBhIGNsaWVudC4gVGhpcyBjbGllbnQgd2lsbAogICAgIC8vIGJlIGNh
bGxlZCB3aGVuZXZlciB0aGUgY29tcG9zaXRvciB3aXNoZXMgdG8gcHJvZHVjZSBhIG5ldyBmcmFt
ZSBhbmQgY2FuCiAgICAgLy8gcHJvdmlkZSBhIG5ldyBmcm9udCBidWZmZXIgdGV4dHVyZSBJRC4g
VGhpcyBpcyB1c2VmdWwgaWYgdGhlIGNsaWVudCB3YW50cyB0bwogICAgIC8vIGltcGxlbWVudCBh
IGRvdWJsZS1idWZmZXJpbmcgc2NoZW1lIHRoYXQgaXMgc3luY2hyb25pemVkIHdpdGggdGhlIGNv
bXBvc2l0b3IsIGZvciBpbnN0YW5jZS4KLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJFeHRl
cm5hbFRleHR1cmVMYXllciBjcmVhdGUoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqID0g
MCk7Ci0KLSAgICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgY2xpZW50IGZvciB0aGlzIGxheWVyIGlz
IGdvaW5nIGF3YXkgYW5kIHNob3VsZG4ndCBiZSB1c2VkLgotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBjbGVhckNsaWVudCgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyKiBjcmVhdGUoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqID0gMCk7CiAK
LSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllcigpIHsgfQogICAgIHZpcnR1YWwgfldlYkV4dGVy
bmFsVGV4dHVyZUxheWVyKCkgeyB9CiAKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0g
MDsKKworICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBjbGllbnQgZm9yIHRoaXMgbGF5ZXIgaXMg
Z29pbmcgYXdheSBhbmQgc2hvdWxkbid0IGJlIHVzZWQuCisgICAgdmlydHVhbCB2b2lkIGNsZWFy
Q2xpZW50KCkgPSAwOworCiAgICAgLy8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0aGF0IHJlcHJlc2Vu
dHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQogICAgIC8vIGNvbXBvc2l0b3Ig
Y29udGV4dC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKSA9IDA7CiAKICAgICAvLyBT
ZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRoZSBZ
IGRpcmVjdGlvbiB3aGVuCiAgICAgLy8gcmVuZGVyZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEZsaXBwZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEZsaXBwZWQoYm9vbCkgPSAw
OwogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUgdGV4dHVyZSB0aGF0
IGlzIG1hcHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMuCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhl
ciBldmVyeSBwaXhlbCBpbiB0aGlzIGxheWVyIGlzIG9wYXF1ZS4gRGVmYXVsdHMgdG8gZmFsc2Uu
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0T3BhcXVlKGJvb2wpID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhlciB0aGlzIGxheWVy
J3MgdGV4dHVyZSBoYXMgcHJlbXVsdGlwbGllZCBhbHBoYSBvciBub3QuIERlZmF1bHRzIHRvIHRy
dWUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wpID0gMDsKIAogICAg
IC8vIEluZGljYXRlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IHByb3ZpZGVkIHRleHR1cmUgSUQg
aXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgZXh0ZXJuYWxseS4KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgd2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vZGlmeVRleHR1
cmUoKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBjb250ZXh0IHNob3VsZCBiZSBy
YXRlIGxpbWl0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuIFJhdGUgbGltaXRpbmcgd29ya3MgYnkgYmxv
Y2tpbmcKICAgICAvLyBpbnZhbGlkYXRlKCkgYW5kIGludmFsaWRhdGVSZWN0KCkgY2FsbHMgaWYg
dGhlIGNvbXBvc2l0b3IgaXMgdG9vIG1hbnkgZnJhbWVzIGJlaGluZC4KLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKTsKLQotcHJpdmF0ZToKLSNpZiBXRUJL
SVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcihQ
YXNzUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtPik7Ci0jZW5kaWYKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKSA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMv
V2ViSU9TdXJmYWNlTGF5ZXIuaAppbmRleCAzN2E0YzY3OTJjMWM3NmVlY2MwYzYwYzBmM2ZjOWQw
ZWEzZDMzOWJiLi5iY2YxNDExMmFhNGI5NDkwZDAzNjlkYmE0YTdjZjVhMDg3NjZmMjg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklPU3VyZmFjZUxheWVy
LmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXll
ci5oCkBAIC0zMCwyNyArMzAsMTkgQEAKICNpbmNsdWRlICJXZWJMYXllci5oIgogI2luY2x1ZGUg
IldlYlNpemUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSU9TdXJmYWNlTGF5ZXJD
aHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMgY2xhc3MgcmVwcmVz
ZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSU9TdXJmYWNl
LgotY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2Vi
SU9TdXJmYWNlTGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklP
U3VyZmFjZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklPU3Vy
ZmFjZUxheWVyKiBjcmVhdGUoKTsKIAotICAgIFdlYklPU3VyZmFjZUxheWVyKCkgeyB9CiAgICAg
dmlydHVhbCB+V2ViSU9TdXJmYWNlTGF5ZXIoKSB7IH0KIAotICAgIC8vIFNldHMgdGhlIElPIHN1
cmZhY2UgaWQgdGhhdCByZXByZXNlbnRzIHRoaXMgbGF5ZXIncyBjb250ZW50cy4KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJ
ZCwgV2ViU2l6ZSk7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CiAKLXByaXZh
dGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViSU9TdXJmYWNl
TGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJT1N1cmZhY2VMYXllckNocm9taXVtPik7Ci0jZW5k
aWYKKyAgICAvLyBTZXRzIHRoZSBJTyBzdXJmYWNlIGlkIHRoYXQgcmVwcmVzZW50cyB0aGlzIGxh
eWVyJ3MgY29udGVudHMuCisgICAgdmlydHVhbCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXMo
dW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJ
bWFnZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5
ZXIuaAppbmRleCBhOTE2ODM1ZjIwNWJjMDZmNTg0ZDQyMzMyYTQxZTRjNjBlOTkwMGI0Li5jNzcz
N2YzMWEzNzk2ZmQwNGRjZGM0YmRlZjI2YjVhYjU2MGMwMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaApAQCAtMzAsMjQgKzMwLDE2IEBA
CiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAotbmFtZXNw
YWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2VMYXllckNocm9taXVtOwotfQotCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotY2xhc3MgV2ViSW1hZ2VMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFz
cyBXZWJJbWFnZUxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJ
bWFnZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkltYWdlTGF5
ZXIqIGNyZWF0ZSgpOwogCi0gICAgV2ViSW1hZ2VMYXllcigpIHsgfQogICAgIHZpcnR1YWwgfldl
YkltYWdlTGF5ZXIoKSB7IH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCaXRtYXAoU2tC
aXRtYXApOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViSW1h
Z2VMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bT4pOwotI2VuZGlm
CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEJpdG1hcChTa0JpdG1hcCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggZmE5NmI1ZTRjYWEw
OTAzNzcyNmZmYTc5NzUyYWFiNDUyNGM3ZDI1Yy4uZjAyMmE4M2RlOWNjNTcxNzRmMDRmNjY5MTUy
YjI0MDA4ZjUzM2QyZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5
ZXIuaApAQCAtMjksOTUgKzI5LDg5IEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5j
bHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJQ
b2ludC5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJSZWN0Lmgi
CiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIGNsYXNz
IFNrTWF0cml4NDQ7Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07IH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKIGNsYXNz
IFdlYkZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKK2Ns
YXNzIFdlYlNjcm9sbGFibGVMYXllcjsKIHN0cnVjdCBXZWJGbG9hdFBvaW50Owogc3RydWN0IFdl
YkZsb2F0UmVjdDsKIHN0cnVjdCBXZWJTaXplOwogCitjbGFzcyBXZWJMYXllckltcGw7CisKIGNs
YXNzIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJMYXll
ciBjcmVhdGUoKTsKLQotICAgIFdlYkxheWVyKCkgeyB9Ci0gICAgV2ViTGF5ZXIoY29uc3QgV2Vi
TGF5ZXImIGxheWVyKSB7IGFzc2lnbihsYXllcik7IH0KLSAgICB2aXJ0dWFsIH5XZWJMYXllcigp
IHsgcmVzZXQoKTsgfQotICAgIFdlYkxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViTGF5ZXImIGxh
eWVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKGxheWVyKTsKLSAgICAgICAgcmV0dXJuICp0aGlz
OwotICAgIH0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5pc051
bGwoKTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
ZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
V2ViTGF5ZXIqIGNyZWF0ZSgpOworCisgICAgdmlydHVhbCB+V2ViTGF5ZXIoKSB7IH0KIAogICAg
IC8vIFNldHMgYSByZWdpb24gb2YgdGhlIGxheWVyIGFzIGludmFsaWQsIGkuZS4gbmVlZHMgdG8g
dXBkYXRlIGl0cyBjb250ZW50LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlUmVj
dChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3Qo
Y29uc3QgV2ViRmxvYXRSZWN0JikgPSAwOwogCiAgICAgLy8gU2V0cyB0aGUgZW50aXJlIGxheWVy
IGFzIGludmFsaWQsIGkuZS4gbmVlZHMgdG8gdXBkYXRlIGl0cyBjb250ZW50LgotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBpbnZhbGlkYXRlKCk7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUo
KSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIFdlYkxheWVyIHJvb3RMYXllcigpIGNvbnN0Owot
ICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgcGFyZW50KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VY
UE9SVCBzaXplX3QgbnVtYmVyT2ZDaGlsZHJlbigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQg
V2ViTGF5ZXIgY2hpbGRBdChzaXplX3QpIGNvbnN0OworICAgIC8vIENhbGxlciB0YWtlcyBvd25l
cnNoaXAgb2YgdGhlIHJldHVybmVkIFdlYkxheWVyKgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIHBh
cmVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBjaGlsZEF0KHNpemVfdCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgc2l6ZV90IG51bWJlck9mQ2hpbGRyZW4oKSBjb25zdCA9
IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXImKTsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW5zZXJ0Q2hpbGQoY29uc3QgV2ViTGF5ZXImLCBzaXpl
X3QgaW5kZXgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXBsYWNlQ2hpbGQoY29uc3QgV2Vi
TGF5ZXImIHJlZmVyZW5jZSwgY29uc3QgV2ViTGF5ZXImIG5ld0xheWVyKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkxheWVyPiYpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCByZW1vdmVGcm9tUGFyZW50KCk7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCk7CisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGRvIG5v
dCB0YWtlIG93bmVyc2hpcCBvZiB0aGUgV2ViTGF5ZXIqIHBhcmFtZXRlci4KKyAgICB2aXJ0dWFs
IHZvaWQgYWRkQ2hpbGQoV2ViTGF5ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGluc2VydENo
aWxkKFdlYkxheWVyKiwgc2l6ZV90IGluZGV4KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcGxh
Y2VDaGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3TGF5ZXIpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkxheWVyKj4mKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKTsKLSAgICBXRUJLSVRfRVhQT1JU
IFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFsIFdlYkZs
b2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IGFuY2hv
clBvaW50WigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRBbmNob3JQb2ludFooZmxvYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0ID0gMDsKIAotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpOwotICAgIFdFQktJ
VF9FWFBPUlQgV2ViU2l6ZSBib3VuZHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91
bmRzKGNvbnN0IFdlYlNpemUmKSA9IDA7CisgICAgdmlydHVhbCBXZWJTaXplIGJvdW5kcygpIGNv
bnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wp
OwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBtYXNrc1RvQm91bmRzKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBt
YXNrc1RvQm91bmRzKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE1h
c2tMYXllcihjb25zdCBXZWJMYXllciYpOwotICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgbWFz
a0xheWVyKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihXZWJMYXllciop
ID0gMDsKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBtYXNrTGF5ZXIoKSBjb25zdCA9IDA7CiAKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwbGljYUxheWVyKGNvbnN0IFdlYkxheWVyJik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2FMYXllcihXZWJMYXllciopID0gMDsKIAotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JUIGZs
b2F0IG9wYWNpdHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eShmbG9hdCkg
PSAwOworICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRPcGFxdWUoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIG9w
YXF1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBvcGFxdWUoKSBjb25zdCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0UG9zaXRpb24oY29uc3QgV2ViRmxvYXRQb2ludCYpOwotICAgIFdFQktJVF9FWFBPUlQg
V2ViRmxvYXRQb2ludCBwb3NpdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3Np
dGlvbihjb25zdCBXZWJGbG9hdFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgV2ViRmxvYXRQb2lu
dCBwb3NpdGlvbigpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTdWJs
YXllclRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0g
ICAgV0VCS0lUX0VYUE9SVCBTa01hdHJpeDQ0IHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JikgPSAwOworICAgIHZpcnR1YWwgU2tNYXRyaXg0NCBzdWJsYXllclRy
YW5zZm9ybSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUcmFuc2Zv
cm0oY29uc3QgU2tNYXRyaXg0NCYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUcmFuc2Zv
cm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFNr
TWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBTa01hdHJpeDQ0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0o
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCBTa01hdHJp
eDQ0IHRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhlciB0aGUgbGF5
ZXIgZHJhd3MgaXRzIGNvbnRlbnQgd2hlbiBjb21wb3NpdGluZy4KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBkcmF3
c0NvbnRlbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgPSAwOwogCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcmVzZXJ2ZXMzRChib29sKSA9IDA7CiAKICAgICAvLyBNYXJrIHRoYXQgdGhpcyBsYXll
ciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncyB0cmFuc2Zvcm0gYW5kIGRvdWJsZS1zaWRlZAogICAg
IC8vIHByb3BlcnRpZXMgaW4gZGV0ZXJtaW5pbmcgdGhpcyBsYXllcidzIGJhY2tmYWNlIHZpc2li
aWxpdHkgaW5zdGVhZCBvZgpAQCAtMTI2LDExMCArMTIwLDc2IEBAIHB1YmxpYzoKICAgICAvLyBO
b3RlOiBUaGlzIEFQSSBpcyB0byB3b3JrIGFyb3VuZCBpc3N1ZXMgd2l0aCB2aXNpYmlsaXR5IHRo
ZSBoYW5kbGluZyBvZgogICAgIC8vIFdlYktpdCBsYXllcnMgdGhhdCBoYXZlIGEgY29udGVudHMg
bGF5ZXIgKGNhbnZhcywgcGx1Z2luLCBXZWJHTCwgdmlkZW8sCiAgICAgLy8gZXRjKS4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgPSAw
OwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7
CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcikgPSAwOwogCiAg
ICAgLy8gQ2xlYXIgdGhlIGZpbHRlcnMgaW4gdXNlIGJ5IHBhc3NpbmcgaW4gYSBuZXdseSBpbnN0
YW50aWF0ZWQKICAgICAvLyBXZWJGaWx0ZXJPcGVyYXRpb25zIG9iamVjdC4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJik7CisgICAg
dmlydHVhbCB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpID0gMDsK
IAogICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gcGl4ZWxzIHRoYXQgc2hvdyB0aHJvdWdoIHRoZSBi
YWNrZ3JvdW5kIG9mIHRoaXMgbGF5ZXIuCiAgICAgLy8gTm90ZTogVGhlc2UgZmlsdGVycyBhcmUg
b25seSBwb3NzaWJsZSBvbiBsYXllcnMgdGhhdCBhcmUgZHJhd24gZGlyZWN0bHkKICAgICAvLyB0
byBhIHJvb3QgcmVuZGVyIHN1cmZhY2Ugd2l0aCBhbiBvcGFxdWUgYmFja2dyb3VuZC4gVGhpcyBt
ZWFucyBpZiBhbgogICAgIC8vIGFuY2VzdG9yIG9mIHRoZSBiYWNrZ3JvdW5kLWZpbHRlcmVkIGxh
eWVyIHNldHMgY2VydGFpbiBwcm9wZXJ0aWVzCiAgICAgLy8gKG9wYWNpdHksIHRyYW5zZm9ybXMp
LCBpdCBtYXkgY29uZmxpY3QgYW5kIGhpZGUgdGhlIGJhY2tncm91bmQgZmlsdGVycy4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3Bl
cmF0aW9ucyYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBX
ZWJGaWx0ZXJPcGVyYXRpb25zJikgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERl
YnVnQm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERl
YnVnTmFtZShXZWJTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9y
KGNvbnN0IFdlYkNvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcldp
ZHRoKGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnTmFtZShXZWJTdHJpbmcp
ID0gMDsKIAogICAgIC8vIEFuIGFuaW1hdGlvbiBkZWxlZ2F0ZSBpcyBub3RpZmllZCB3aGVuIGFu
aW1hdGlvbnMgYXJlIHN0YXJ0ZWQgYW5kCiAgICAgLy8gc3RvcHBlZC4gVGhlIFdlYkxheWVyIGRv
ZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBkZWxlZ2F0ZSwgYW5kIGl0IGlzCiAgICAgLy8g
dGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjbGllbnQgdG8gcmVzZXQgdGhlIGxheWVyJ3MgZGVs
ZWdhdGUgYmVmb3JlCiAgICAgLy8gZGVsZXRpbmcgdGhlIGRlbGVnYXRlLgotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSopOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0
ZSopID0gMDsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIGFuaW1hdGlvbiBjYW5ub3Qg
YmUgYWRkZWQuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGFkZEFuaW1hdGlvbihXZWJBbmltYXRp
b24qKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopID0gMDsK
IAogICAgIC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSA9IDA7CiAKICAg
ICAvLyBSZW1vdmVzIGFsbCBhbmltYXRpb25zIHdpdGggdGhlIGdpdmVuIGlkIHRhcmdldGluZyB0
aGUgZ2l2ZW4gcHJvcGVydHkuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlv
bihpbnQgYW5pbWF0aW9uSWQsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBXZWJBbmltYXRpb246
OlRhcmdldFByb3BlcnR5KSA9IDA7CiAKICAgICAvLyBQYXVzZXMgYWxsIGFuaW1hdGlvbnMgd2l0
aCB0aGUgZ2l2ZW4gaWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBhdXNlQW5pbWF0aW9uKGlu
dCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KSA9IDA7CiAKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzdXNwZW5kIGFuZCByZXN1bWUgYWxsIGFuaW1h
dGlvbnMuIFRoZSBnaXZlbiB0aW1lCiAgICAgLy8gaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUg
dGltZSBiYXNlIGFzIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLgotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSk7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUp
OworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9u
aWNUaW1lKSA9IDA7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXllciBoYXMgYW55
IGFjdGl2ZSBhbmltYXRpb25zIC0gdXNlZnVsIGZvciB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCk7CisgICAgdmlydHVhbCBib29sIGhhc0FjdGl2ZUFu
aW1hdGlvbigpID0gMDsKIAogICAgIC8vIFRyYW5zZmVycyBhbGwgYW5pbWF0aW9ucyBydW5uaW5n
IG9uIHRoZSBjdXJyZW50IGxheWVyLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCB0cmFuc2ZlckFu
aW1hdGlvbnNUbyhXZWJMYXllciopOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFuaW1hdGlv
bnNUbyhXZWJMYXllciopID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlv
bihXZWJQb2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxhYmxlKGJvb2wpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZl
Y3RvcjxXZWJSZWN0PiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNDb250YWluZXJGb3JG
aXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRU
b0NvbnRhaW5lckxheWVyKGJvb2wpID0gMDsKIAogICAgIC8vIERFUFJFQ0FURUQuCiAgICAgLy8g
VGhpcyByZXF1ZXN0cyB0aGF0IHRoaXMgbGF5ZXIncyBjb21wb3NpdG9yLW1hbmFnZWQgdGV4dHVy
ZXMgYWx3YXlzIGJlIHJlc2VydmVkCiAgICAgLy8gd2hlbiBkZXRlcm1pbmluZyB0ZXh0dXJlIGxp
bWl0cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QWx3YXlzUmVzZXJ2ZVRleHR1cmVzKGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRBbHdheXNSZXNlcnZlVGV4dHVyZXMoYm9vbCkgPSAw
OwogCiAgICAgLy8gRm9yY2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZhY2UuIFRo
ZXJlIGlzIG5vIGJlbmVmaXQgaW4gZG9pbmcKICAgICAvLyBzbywgYnV0IHRoaXMgaXMgdG8gZmFj
aWxpdGF0ZSBiZW5jaG1hcmtzIGFuZCB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVJlbmRl
clN1cmZhY2UoYm9vbCkgPSAwOwogCiAgICAgLy8gRHJvcHMgdGhpcyBsYXllcidzIHJlbmRlciBz
dXJmYWNlLCBpZiBpdCBoYXMgb25lLiBVc2VkIHRvIGJyZWFrIGN5Y2xlcyBpbiBzb21lCiAgICAg
Ly8gY2FzZXMgLSBpZiB5b3UgYXJlbid0IHN1cmUsIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwgdGhp
cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKLSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAg
ICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCB0b0NvbnN0KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7
Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci0gICAgV2ViTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21p
dW0+Jik7Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBU
KiB1bndyYXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPiht
X3ByaXZhdGUuZ2V0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0
IFQqIGNvbnN0VW53cmFwKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBUKj4obV9wcml2YXRlLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJvdGVjdGVk
OgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gbV9wcml2YXRlOwor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhclJlbmRlclN1cmZhY2UoKSA9IDA7CiB9OwogCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKLXsK
LSAgICByZXR1cm4gYS5lcXVhbHMoYik7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgV2ViTGF5ZXImIGEsIGNvbnN0IFdlYkxheWVyJiBiKQotewotICAgIHJldHVybiAhKGEgPT0g
Yik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gV2ViTGF5ZXJfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxl
TGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmgKaW5kZXggZWEwMmY4YzczOTYxYWZkM2YzOTVjN2UyYWM5YjYzODBmZDhkNzZhZC4uYWEz
NDVhYWE1MThiYjRkMjg5NDU0ZTQ0NGQ4OGNhMjA1ZjAxNmU0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oCkBAIC0zNCwy
OSArMzQsMTUgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlNjcm9sbGFibGVM
YXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFzcyBXZWJTY3JvbGxhYmxlTGF5ZXIgOiB2aXJ0
dWFsIHB1YmxpYyBXZWJMYXllciB7CiBwdWJsaWM6Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyKCkg
eyB9Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyKGNvbnN0IFdlYlNjcm9sbGFibGVMYXllciYgbGF5
ZXIpIDogV2ViTGF5ZXIobGF5ZXIpIHsgfQotICAgIHZpcnR1YWwgfldlYlNjcm9sbGFibGVMYXll
cigpIHsgfQotICAgIFdlYlNjcm9sbGFibGVMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYlNjcm9s
bGFibGVMYXllciYgbGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVy
KTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dFNjcm9sbGFibGUoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNob3VsZFNjcm9s
bE9uTWFpblRocmVhZChib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Tm9uRmFzdFNj
cm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+Jik7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpOwotCi0K
LSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIoY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+JiBsYXllcikgOiBXZWJMYXll
cihsYXllcikgeyB9Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24o
V2ViUG9pbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsYWJsZShib29sKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0
b3I8V2ViUmVjdD4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldElzQ29udGFpbmVyRm9yRml4
ZWRQb3NpdGlvbkxheWVycyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEZpeGVkVG9D
b250YWluZXJMYXllcihib29sKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5
ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIu
aAppbmRleCAxYmZlN2Q2YWJiM2E1OWYzZjNlYTMzMDQ0OGNjNjQwN2QzMTFhMWE5Li40NTFhMGI5
YzEzNGI2YzQ0NDk1MGUxYTJiNjIzZjNiZTFmMDIxMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmgKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oCkBAIC0zMiwyOSArMzIs
MjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2Nyb2xsYmFyOwotY2xhc3MgU2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLWNsYXNzIFdl
YlNjcm9sbGJhckxheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYlNjcm9sbGJhckxh
eWVyIHsKIHB1YmxpYzoKLSAgICBXZWJTY3JvbGxiYXJMYXllcigpIHsgfQotICAgIFdlYlNjcm9s
bGJhckxheWVyKGNvbnN0IFdlYlNjcm9sbGJhckxheWVyJiBsYXllcikgOiBXZWJMYXllcihsYXll
cikgeyB9CiAgICAgdmlydHVhbCB+V2ViU2Nyb2xsYmFyTGF5ZXIoKSB7IH0KLSAgICBXZWJTY3Jv
bGxiYXJMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYlNjcm9sbGJhckxheWVyJiBsYXllcikKLSAg
ICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNjcm9sbExheWVyKGNvbnN0
IFdlYkxheWVyKTsKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JvbGxMYXllcihXZWJMYXllciopID0gMDsKIAogI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGUoV2ViQ29y
ZTo6U2Nyb2xsYmFyKiwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLCBQYXNzT3duUHRyPFdlYlNj
cm9sbGJhclRoZW1lR2VvbWV0cnk+KTsKLSAgICBleHBsaWNpdCBXZWJTY3JvbGxiYXJMYXllcihj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mKTsK
LSAgICBXZWJTY3JvbGxiYXJMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtPiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtPigpIGNvbnN0OworICAgIFdF
QktJVF9FWFBPUlQgc3RhdGljIFdlYlNjcm9sbGJhckxheWVyKiBjcmVhdGUoV2ViQ29yZTo6U2Ny
b2xsYmFyKiwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLCBQYXNzT3duUHRyPFdlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnk+KTsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmgKaW5kZXggYWQ5MTIzZDk2MmFm
ZWFlYThhNTYzMTI5NDVkZTFmYzVmODk2YzlmYy4uMDJlNDZmMDQ3ZmFmMjUzYWMxMWUxOTdjNDUx
MDgxN2JhMWY0ODI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJTb2xpZENvbG9yTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlNvbGlkQ29sb3JMYXllci5oCkBAIC0yNiwyMSArMjYsMjAgQEAKICNpZm5kZWYgV2Vi
U29saWRDb2xvckxheWVyX2gKICNkZWZpbmUgV2ViU29saWRDb2xvckxheWVyX2gKIAorI2luY2x1
ZGUgIldlYkNvbG9yLmgiCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViRmxv
YXRSZWN0LmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7Ci1j
bGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOworY2xhc3MgV2ViTGF5ZXI7CiAKLWNsYXNzIFdl
YlNvbGlkQ29sb3JMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFzcyBXZWJTb2xpZENvbG9y
TGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNvbGlkQ29sb3JM
YXllciBjcmVhdGUoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KGNvbnN0IFdlYkNvbG9yJik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU29saWRDb2xv
ckxheWVyKiBjcmVhdGUoKTsKIAotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYlNv
bGlkQ29sb3JMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViU29saWRDb2xvckxheWVySW1w
bD4mKTsKLSNlbmRpZgorICAgIHZpcnR1YWwgfldlYlNvbGlkQ29sb3JMYXllcigpIHsgfQorCisg
ICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEJh
Y2tncm91bmRDb2xvcihXZWJDb2xvcikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5
ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9MYXllci5oCmlu
ZGV4IDU0ZGEzNDU0YmEwM2VmZmI1ZTM0YjBkMzMyYjkyYzAxMTI0NzVhYTQuLjFhY2ZmZjU0YTA3
MjdiNDk4ZGQ5NDFmY2M0NmEyNzcyNmFhN2Q3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9MYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9MYXllci5oCkBAIC0yOSwyNyArMjksMjAgQEAKICNpbmNs
dWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJMYXllci5oIgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci1jbGFzcyBWaWRlb0xheWVyQ2hyb21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBjbGFzcyBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI7CiAKLWNsYXNzIFdlYlZpZGVvTGF5ZXIg
OiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViVmlkZW9MYXllciB7CiBwdWJsaWM6Ci0gICAg
V0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViVmlkZW9MYXllciBjcmVhdGUoV2ViVmlkZW9GcmFtZVBy
b3ZpZGVyKik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViVmlkZW9MYXllciogY3JlYXRl
KFdlYlZpZGVvRnJhbWVQcm92aWRlciopOwogCi0gICAgV2ViVmlkZW9MYXllcigpIHsgfQogICAg
IHZpcnR1YWwgfldlYlZpZGVvTGF5ZXIoKSB7IH0KIAotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGlzIGxheWVyIGlzIGFjdGl2ZWx5IHJlbmRlcmluZyAoZS5nLiBjdXJyZW50bHkgYXR0YWNoZWQg
dG8gYSBXZWJMYXllclRyZWVWaWV3KS4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWN0aXZlKCkg
Y29uc3Q7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CiAKLSNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJWaWRlb0xheWVyKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9MYXllckNocm9taXVtPik7Ci0jZW5kaWYKKyAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhpcyBsYXllciBpcyBhY3RpdmVseSByZW5kZXJpbmcgKGUuZy4gY3VycmVudGx5IGF0dGFj
aGVkIHRvIGEgV2ViTGF5ZXJUcmVlVmlldykuCisgICAgdmlydHVhbCBib29sIGFjdGl2ZSgpIGNv
bnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxp
bmdDb29yZGluYXRvckNocm9taXVtLmNwcAppbmRleCAxZGI3NTk0MDQ3Yzg4Y2FiMGRkYWZlMDAz
N2EzYmU2Y2FjMzg2ODg2Li40ZmNiYWE5ODQ3ZGJjMDJiNTg0NDFjMjI3YjE2M2UzM2RiYTY4NjM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcApAQCAtMzQs
NyArMzQsNiBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5oIgogI2luY2x1ZGUgIldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRp
dmUuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CiAjaW5jbHVkZSA8
cHVibGljL1dlYlNjcm9sbGJhci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxiYXJMYXll
ci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Lmg+CkBAIC00
Miw3ICs0MSw2IEBACiAKIHVzaW5nIFdlYktpdDo6V2ViTGF5ZXI7CiB1c2luZyBXZWJLaXQ6Oldl
YlJlY3Q7Ci11c2luZyBXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjsKIHVzaW5nIFdlYktpdDo6
V2ViU2Nyb2xsYmFyTGF5ZXI7CiB1c2luZyBXZWJLaXQ6OldlYlZlY3RvcjsKIApAQCAtNTEsMzYg
KzQ5LDM5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJpdmF0ZSB7CiBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JvbGxpbmdDb29yZGluYXRvclByaXZh
dGUpOwogcHVibGljOgotICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSgpIHsgfQorICAg
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSgpCisgICAgICAgIDogbV9zY3JvbGxMYXllcigw
KQorICAgIHsKKyAgICB9CisKICAgICB+U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKCkgeyB9
CiAKLSAgICB2b2lkIHNldFNjcm9sbExheWVyKFdlYlNjcm9sbGFibGVMYXllciBsYXllcikKKyAg
ICB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxheWVyKiBsYXllcikKICAgICB7CiAgICAgICAgIG1f
c2Nyb2xsTGF5ZXIgPSBsYXllcjsKIAotICAgICAgICBpZiAoIW1faG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyLmlzTnVsbCgpKQotICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIu
c2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOwotICAgICAgICBpZiAoIW1fdmVydGljYWxTY3JvbGxiYXJM
YXllci5pc051bGwoKSkKLSAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJMYXllci5zZXRT
Y3JvbGxMYXllcihsYXllcik7CisgICAgICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXJMYXll
cikKKyAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyLT5zZXRTY3JvbGxMYXll
cihsYXllcik7CisgICAgICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpCisgICAgICAg
ICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKGxheWVyKTsKICAg
ICB9CiAKLSAgICB2b2lkIHNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcihXZWJTY3JvbGxiYXJM
YXllciBsYXllcikKKyAgICB2b2lkIHNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcihQYXNzT3du
UHRyPFdlYlNjcm9sbGJhckxheWVyPiBsYXllcikKICAgICB7CiAgICAgICAgIG1faG9yaXpvbnRh
bFNjcm9sbGJhckxheWVyID0gbGF5ZXI7CiAgICAgfQogCi0gICAgdm9pZCBzZXRWZXJ0aWNhbFNj
cm9sbGJhckxheWVyKFdlYlNjcm9sbGJhckxheWVyIGxheWVyKQorICAgIHZvaWQgc2V0VmVydGlj
YWxTY3JvbGxiYXJMYXllcihQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBsYXllcikKICAg
ICB7CiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJMYXllciA9IGxheWVyOwogICAgIH0KIAot
ICAgIGJvb2wgaGFzU2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiAhbV9zY3JvbGxMYXllci5p
c051bGwoKTsgfQotICAgIFdlYlNjcm9sbGFibGVMYXllciBzY3JvbGxMYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsTGF5ZXI7IH0KKyAgICBXZWJMYXllciogc2Nyb2xsTGF5ZXIoKSBjb25z
dCB7IHJldHVybiAwOyAvKnJldHVybiBtX3Njcm9sbExheWVyOyovIH0KIAogcHJpdmF0ZToKLSAg
ICBXZWJTY3JvbGxhYmxlTGF5ZXIgbV9zY3JvbGxMYXllcjsKLSAgICBXZWJTY3JvbGxiYXJMYXll
ciBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllcjsKLSAgICBXZWJTY3JvbGxiYXJMYXllciBtX3Zl
cnRpY2FsU2Nyb2xsYmFyTGF5ZXI7CisgICAgV2ViTGF5ZXIqIG1fc2Nyb2xsTGF5ZXI7CisgICAg
T3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllcjsKKyAg
ICBPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IG1fdmVydGljYWxTY3JvbGxiYXJMYXllcjsKIH07
CiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpjcmVhdGUoUGFnZSogcGFnZSkKQEAgLTExMiwxNSArMTEzLDIwIEBAIHN0YXRpYyBHcmFwaGlj
c0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykKICNl
bmRpZgogfQogCi1zdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibGVMYXllciBzY3JvbGxMYXllciwgR3Jh
cGhpY3NMYXllciogc2Nyb2xsYmFyR3JhcGhpY3NMYXllciwgRnJhbWVWaWV3KiBmcmFtZVZpZXcp
CitzdGF0aWMgV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7Cit9
CisKK3N0YXRpYyBQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3JvbGxiYXJM
YXllcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFwaGlj
c0xheWVyKiBzY3JvbGxiYXJHcmFwaGljc0xheWVyLCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsK
ICAgICBBU1NFUlQoc2Nyb2xsYmFyKTsKICAgICBBU1NFUlQoc2Nyb2xsYmFyR3JhcGhpY3NMYXll
cik7CiAKLSAgICBpZiAoc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAoIXNjcm9sbExh
eWVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzb21ldGltZXMgd2UgZ2V0IGNhbGxlZCBiZWZvcmUg
c2V0U2Nyb2xsTGF5ZXIsIHdvcmthcm91bmQgYnkgZmluZGluZyB0aGUgc2Nyb2xsIGxheW91dCBv
dXJzZWx2ZXMuCi0gICAgICAgIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXco
ZnJhbWVWaWV3KS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7Ci0g
ICAgICAgIEFTU0VSVCghc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpOworICAgICAgICBzY3JvbGxMYXll
ciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZp
ZXcoZnJhbWVWaWV3KSk7CisgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAgfQogCiAg
ICAgLy8gUm9vdCBsYXllciBub24tb3ZlcmxheSBzY3JvbGxiYXJzIHNob3VsZCBiZSBtYXJrZWQg
b3BhcXVlIHRvIGRpc2FibGUKQEAgLTEzOCw3ICsxNDQsNyBAQCBzdGF0aWMgV2ViU2Nyb2xsYmFy
TGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9s
bGFibAogICAgIGlmICghcGxhdGZvcm1TdXBwb3J0ZWQgfHwgc2Nyb2xsYmFyLT5pc0N1c3RvbVNj
cm9sbGJhcigpKSB7CiAgICAgICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRz
VG9NZWRpYSgwKTsKICAgICAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250
ZW50KHRydWUpOwotICAgICAgICByZXR1cm4gV2ViU2Nyb2xsYmFyTGF5ZXIoKTsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgLy8gQWxsIENocm9taXVtIHNjcm9sbGJhciB0
aGVtZXMgZGVyaXZlIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuCkBAIC0xNDYsMTQgKzE1
MiwxNCBAQCBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibAogICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFy
VGhlbWVQYWludGVyIHBhaW50ZXIodGhlbWVDb21wb3NpdGUsIHNjcm9sbGJhcik7CiAgICAgT3du
UHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkoV2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhlbWVDb21wb3NpdGUpKTsK
IAotICAgIFdlYlNjcm9sbGJhckxheWVyIHNjcm9sbGJhckxheWVyID0gV2ViU2Nyb2xsYmFyTGF5
ZXI6OmNyZWF0ZShzY3JvbGxiYXIsIHBhaW50ZXIsIGdlb21ldHJ5LnJlbGVhc2UoKSk7Ci0gICAg
c2Nyb2xsYmFyTGF5ZXIuc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIpOworICAgIE93blB0cjxX
ZWJTY3JvbGxiYXJMYXllcj4gc2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdFB0cihXZWJTY3JvbGxiYXJM
YXllcjo6Y3JlYXRlKHNjcm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnkucmVsZWFzZSgpKSk7Cisg
ICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKIAotICAgIHNj
cm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYSgmc2Nyb2xsYmFyTGF5ZXIp
OworICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShzY3JvbGxi
YXJMYXllci0+bGF5ZXIoKSk7CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0RHJhd3ND
b250ZW50KGZhbHNlKTsKLSAgICBzY3JvbGxiYXJMYXllci5zZXRPcGFxdWUoc2Nyb2xsYmFyR3Jh
cGhpY3NMYXllci0+Y29udGVudHNPcGFxdWUoKSk7CisgICAgc2Nyb2xsYmFyTGF5ZXItPmxheWVy
KCktPnNldE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250ZW50c09wYXF1ZSgpKTsK
IAotICAgIHJldHVybiBzY3JvbGxiYXJMYXllcjsKKyAgICByZXR1cm4gc2Nyb2xsYmFyTGF5ZXIu
cmVsZWFzZSgpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIb3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIEdyYXBo
aWNzTGF5ZXIqIGhvcml6b250YWxTY3JvbGxiYXJMYXllcikKQEAgLTE3NCwyMCArMTgwLDE3IEBA
IHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1ZlcnRpY2FsU2Nyb2xsYmFyTGF5
ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dFNjcm9sbExheWVyKEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyKQogewotICAgIFdlYlNjcm9s
bGFibGVMYXllciBsYXllcjsKLSAgICBpZiAoc2Nyb2xsTGF5ZXIpCi0gICAgICAgIGxheWVyID0g
c2Nyb2xsTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+dG88V2ViU2Nyb2xsYWJsZUxheWVyPigpOwot
ICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOworICAgIG1fcHJpdmF0ZS0+c2V0
U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIgPyBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xheWVy
KHNjcm9sbExheWVyKSA6IDApOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbikKIHsKLSAgICBpZiAo
bV9wcml2YXRlLT5oYXNTY3JvbGxMYXllcigpKSB7CisgICAgaWYgKG1fcHJpdmF0ZS0+c2Nyb2xs
TGF5ZXIoKSkgewogICAgICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSByZWdpb24ucmVjdHMo
KTsKICAgICAgICAgV2ViVmVjdG9yPFdlYlJlY3Q+IHdlYlJlY3RzKHJlY3RzLnNpemUoKSk7CiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpCiAgICAgICAg
ICAgICB3ZWJSZWN0c1tpXSA9IHJlY3RzW2ldOwotICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExh
eWVyKCkuc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24od2ViUmVjdHMpOworICAgICAgICBtX3By
aXZhdGUtPnNjcm9sbExheWVyKCktPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHdlYlJlY3Rz
KTsKICAgICB9CiB9CiAKQEAgLTE5OCwxNCArMjAxLDE0IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNldFNjcm9sbFBhcmFtZXRlcnMoY29uc3QgU2Nyb2xsUGFyYW1ldGVycyYpCiAKIHZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWdu
ZWQgd2hlZWxFdmVudEhhbmRsZXJDb3VudCkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5oYXNTY3Jv
bGxMYXllcigpKQotICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkuc2V0SGF2ZVdoZWVs
RXZlbnRIYW5kbGVycyh3aGVlbEV2ZW50SGFuZGxlckNvdW50ID4gMCk7CisgICAgaWYgKG1fcHJp
dmF0ZS0+c2Nyb2xsTGF5ZXIoKSkKKyAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLT5z
ZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKIH0K
IAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQ
b3NpdGlvbk9uTWFpblRocmVhZChib29sIHNob3VsZCkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5o
YXNTY3JvbGxMYXllcigpKQotICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkuc2V0U2hv
dWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZCk7CisgICAgaWYgKG1fcHJpdmF0ZS0+c2Nyb2xs
TGF5ZXIoKSkKKyAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLT5zZXRTaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQoc2hvdWxkKTsKIH0KIAogYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6
c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QKQEAgLTIxNSwxNCArMjE4LDE0IEBA
IGJvb2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygp
IGNvbnN0CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNDb250YWluZXJG
b3JGaXhlZFBvc2l0aW9uTGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBib29sIGVuYWJsZSkK
IHsKLSAgICBpZiAoV2ViTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBsYXllci0+cGxhdGZvcm1MYXll
cigpKQotICAgICAgICBwbGF0Zm9ybUxheWVyLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCkuc2V0
SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7CisgICAgaWYgKFdlYkxh
eWVyKiBzY3JvbGxhYmxlTGF5ZXIgPSBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xheWVyKGxh
eWVyKSkKKyAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9z
aXRpb25MYXllcnMoZW5hYmxlKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllciwgYm9vbCBl
bmFibGUpCiB7Ci0gICAgaWYgKFdlYkxheWVyKiBwbGF0Zm9ybUxheWVyID0gbGF5ZXItPnBsYXRm
b3JtTGF5ZXIoKSkKLSAgICAgICAgcGxhdGZvcm1MYXllci0+dG88V2ViU2Nyb2xsYWJsZUxheWVy
PigpLnNldEZpeGVkVG9Db250YWluZXJMYXllcihlbmFibGUpOworICAgIGlmIChXZWJMYXllciog
c2Nyb2xsYWJsZUxheWVyID0gc2Nyb2xsYWJsZUxheWVyRm9yR3JhcGhpY3NMYXllcihsYXllcikp
CisgICAgICAgIHNjcm9sbGFibGVMYXllci0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJs
ZSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAKaW5kZXggODIxZThl
YzhhMmJkYTJiZGFjMDEzODI2M2RmNzZjMzYwNWFlMTFhZS4uN2ExMzkxM2NjMDNhYjhjMDAwMjQ0
ZjRlMzI4YjllODE4Y2Q2MGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAK
QEAgLTQ1LDI1ICs0NSwzMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFjY2VsZXJh
dGVkRGV2aWNlQ29udGV4dCA6IHB1YmxpYyBTa0RlZmVycmVkQ2FudmFzOjpEZXZpY2VDb250ZXh0
IHsKIHB1YmxpYzoKLSAgICBBY2NlbGVyYXRlZERldmljZUNvbnRleHQoV2ViR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQsIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIGxheWVyLCBib29sIHVzZURv
dWJsZUJ1ZmZlcmluZykKKyAgICBBY2NlbGVyYXRlZERldmljZUNvbnRleHQoV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKiBsYXllciwgYm9vbCB1
c2VEb3VibGVCdWZmZXJpbmcpCiAgICAgICAgIDogbV9sYXllcihsYXllcikKICAgICAgICAgLCBt
X2NvbnRleHQoKQogICAgICAgICAsIG1fdXNlRG91YmxlQnVmZmVyaW5nKHVzZURvdWJsZUJ1ZmZl
cmluZykKICAgICB7CiAgICAgICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAgICAgQVNTRVJUKCFs
YXllci5pc051bGwoKSk7CisgICAgICAgIEFTU0VSVChsYXllcik7CiAgICAgICAgIG1fY29udGV4
dCA9IGNvbnRleHQ7CiAgICAgfQogCisgICAgdm9pZCBjbGVhckxheWVyKCkKKyAgICB7CisgICAg
ICAgIG1fbGF5ZXIgPSAwOworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRHJh
dygpCiAgICAgeworICAgICAgICBpZiAoIW1fbGF5ZXIpCisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGlmICghbV91c2VEb3VibGVCdWZmZXJpbmcpCi0gICAgICAgICAgICBtX2xheWVyLndp
bGxNb2RpZnlUZXh0dXJlKCk7CisgICAgICAgICAgICBtX2xheWVyLT53aWxsTW9kaWZ5VGV4dHVy
ZSgpOwogICAgICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBtX2xheWVyOworICAgIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyKiBtX2xheWVyOwogICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBt
X2NvbnRleHQ7CiAgICAgYm9vbCBtX3VzZURvdWJsZUJ1ZmZlcmluZzsKIH07CkBAIC05NiwyOCAr
MTAzLDMwIEBAIENhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2UoUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKICAgICAgICAgICAgIGdyQ29udGV4dC0+
cmVzZXRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgbV9sYXllciA9IFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgbV9sYXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlk
KTsKLSAgICBtX2xheWVyLnNldFJhdGVMaW1pdENvbnRleHQoIVdlYktpdDo6V2ViQ29tcG9zaXRv
cjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91YmxlQnVmZmVyaW5nKTsKKyAgICBtX2xh
eWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7Cisg
ICAgbV9sYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CisgICAgbV9sYXllci0+c2V0UmF0
ZUxpbWl0Q29udGV4dCghV2ViS2l0OjpXZWJDb21wb3NpdG9yOjp0aHJlYWRpbmdFbmFibGVkKCkg
fHwgbV91c2VEb3VibGVCdWZmZXJpbmcpOwogfQogCiAKIENhbnZhczJETGF5ZXJCcmlkZ2U6On5D
YW52YXMyRExheWVyQnJpZGdlKCkKIHsKLSAgICBtX2xheWVyLnNldFRleHR1cmVJZCgwKTsKKyAg
ICBtX2xheWVyLT5zZXRUZXh0dXJlSWQoMCk7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5n
KSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgICAgIEdM
QyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2Zyb250QnVmZmVy
VGV4dHVyZSkpOwogICAgICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiAgICAgfQotICAgIG1fbGF5
ZXIuY2xlYXJDbGllbnQoKTsKKyAgICBpZiAobV9kZWZlcnJlZERldmljZUNvbnRleHQpCisgICAg
ICAgIG1fZGVmZXJyZWREZXZpY2VDb250ZXh0LT5jbGVhckxheWVyKCk7CisgICAgbV9sYXllci0+
Y2xlYXJDbGllbnQoKTsKIH0KIAogU2tDYW52YXMqIENhbnZhczJETGF5ZXJCcmlkZ2U6OnNrQ2Fu
dmFzKFNrRGV2aWNlKiBkZXZpY2UpCiB7CiAgICAgaWYgKG1fZGVmZXJyYWxNb2RlID09IERlZmVy
cmVkKSB7Ci0gICAgICAgIFNrQXV0b1RVbnJlZjxBY2NlbGVyYXRlZERldmljZUNvbnRleHQ+IGRl
dmljZUNvbnRleHQobmV3IEFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dChjb250ZXh0KCksIG1fbGF5
ZXIsIG1fdXNlRG91YmxlQnVmZmVyaW5nKSk7Ci0gICAgICAgIG1fY2FudmFzID0gbmV3IFNrRGVm
ZXJyZWRDYW52YXMoZGV2aWNlLCBkZXZpY2VDb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9kZWZl
cnJlZERldmljZUNvbnRleHQucmVzZXQobmV3IEFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dChjb250
ZXh0KCksIG1fbGF5ZXIuZ2V0KCksIG1fdXNlRG91YmxlQnVmZmVyaW5nKSk7CisgICAgICAgIG1f
Y2FudmFzID0gbmV3IFNrRGVmZXJyZWRDYW52YXMoZGV2aWNlLCBtX2RlZmVycmVkRGV2aWNlQ29u
dGV4dC5nZXQoKSk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fY2FudmFzID0gbmV3IFNrQ2FudmFz
KGRldmljZSk7CiAKQEAgLTE1NywxMyArMTY2LDEzIEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBD
YW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0KCkKIAogV2ViS2l0OjpXZWJMYXllciogQ2FudmFz
MkRMYXllckJyaWRnZTo6bGF5ZXIoKQogewotICAgIHJldHVybiAmbV9sYXllcjsKKyAgICByZXR1
cm4gbV9sYXllci0+bGF5ZXIoKTsKIH0KIAogdm9pZCBDYW52YXMyRExheWVyQnJpZGdlOjpjb250
ZXh0QWNxdWlyZWQoKQogewogICAgIGlmIChtX2RlZmVycmFsTW9kZSA9PSBOb25EZWZlcnJlZCAm
JiAhbV91c2VEb3VibGVCdWZmZXJpbmcpCi0gICAgICAgIG1fbGF5ZXIud2lsbE1vZGlmeVRleHR1
cmUoKTsKKyAgICAgICAgbV9sYXllci0+d2lsbE1vZGlmeVRleHR1cmUoKTsKIH0KIAogdW5zaWdu
ZWQgQ2FudmFzMkRMYXllckJyaWRnZTo6YmFja0J1ZmZlclRleHR1cmUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJy
aWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckJyaWRnZS5oCmluZGV4IDA4ZjQwMWNlMDUwOGZjNDhjYTc1NGQ0NWMyMGFmNDgxNWI5
Mzg1MTYuLjc1NDFjMmQ2ZGNlOTU3Y2M3NGI0MmUxNjI3MWJkNmFhNWQxMmE5YmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9DYW52YXMyRExheWVyQnJpZGdlLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgV2ViR3JhcGhp
Y3NDb250ZXh0M0Q7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWNjZWxlcmF0ZWRE
ZXZpY2VDb250ZXh0OwogY2xhc3MgTGF5ZXJDaHJvbWl1bTsKIAogY2xhc3MgQ2FudmFzMkRMYXll
ckJyaWRnZSA6IHB1YmxpYyBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50IHsK
QEAgLTc0LDcgKzc1LDggQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2JhY2tCdWZmZXJUZXh0
dXJlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIFNrQ2FudmFzKiBtX2NhbnZhczsKLSAgICBX
ZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgU2tBdXRvVFVucmVm
PEFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dD4gbV9kZWZlcnJlZERldmljZUNvbnRleHQ7CisgICAg
T3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2lu
Z0J1ZmZlckNocm9taXVtLmNwcAppbmRleCAxZDE2N2E1NTZlNmExZGZjZDExYWM2Zjg0OTE4ZjJk
MWQ4ODk0ZDlhLi40OWUyMDczOTY4OTA4YTIzNTRjNDBmNDNhMTRjNDU5M2NhNzI1MTAzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5n
QnVmZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTE1NiwxNiArMTU2LDE2IEBA
IGNsYXNzIERyYXdpbmdCdWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQ
cml2YXRlKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5n
QnVmZmVyKGRyYXdpbmdCdWZmZXIpCi0gICAgICAgICwgbV9sYXllcihXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpCisgICAgICAgICwgbV9sYXllcihhZG9wdFB0
cihXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsK
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJh
d2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsK
LSAgICAgICAgbV9sYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOwotICAgICAgICBt
X2xheWVyLnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBo
YSk7CisgICAgICAgIG1fbGF5ZXItPnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7CisgICAg
ICAgIG1fbGF5ZXItPnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxp
ZWRBbHBoYSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQog
ICAgIHsKLSAgICAgICAgbV9sYXllci5jbGVhckNsaWVudCgpOworICAgICAgICBtX2xheWVyLT5j
bGVhckNsaWVudCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1
cmUoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikgT1ZFUlJJREUKQEAgLTE4Nywx
MSArMTg3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhp
Y3NDb250ZXh0M0QoKSk7CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJMYXllciogbGF5ZXIoKSB7
IHJldHVybiAmbV9sYXllcjsgfQorICAgIFdlYktpdDo6V2ViTGF5ZXIqIGxheWVyKCkgeyByZXR1
cm4gbV9sYXllci0+bGF5ZXIoKTsgfQogCiBwcml2YXRlOgogICAgIERyYXdpbmdCdWZmZXIqIG1f
ZHJhd2luZ0J1ZmZlcjsKLSAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5
ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7
CiB9OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYzJjZDBmOGU1YWNmN2VhYTdhNDdlZjlmZTlmNDUy
MjI5MTU3MDYwOS4uZTI0ZmY1NDZmODhiYTlhOWRkZjg3NDk1ZGJjNzNhNTc2ODYyZTZkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhp
Y3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC04MywxNCArODMsMTYgQEAg
UGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NM
YXllckNsaWVudCogY2xpZW50KQogCiBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5
ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBHcmFwaGljc0xh
eWVyKGNsaWVudCkKKyAgICAsIG1fY29udGVudHNMYXllcigwKQogICAgICwgbV9jb250ZW50c0xh
eWVyUHVycG9zZShOb0NvbnRlbnRzTGF5ZXIpCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNr
Z3JvdW5kQ29sb3IoZmFsc2UpCiAgICAgLCBtX2luU2V0Q2hpbGRyZW4oZmFsc2UpCiAgICAgLCBt
X3BhZ2VTY2FsZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgbV9vcGFxdWVSZWN0VHJhY2tpbmdDb250
ZW50TGF5ZXJEZWxlZ2F0ZSA9IGFkb3B0UHRyKG5ldyBPcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50
TGF5ZXJEZWxlZ2F0ZSh0aGlzKSk7Ci0gICAgbV9sYXllciA9IFdlYkNvbnRlbnRMYXllcjo6Y3Jl
YXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkpOwotICAg
IG1fbGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNp
YmxlKTsKKyAgICBtX2NvbnRlbnRMYXllciA9IGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3Jl
YXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkpKTsKKyAg
ICBtX2xheWVyID0gbV9jb250ZW50TGF5ZXItPmxheWVyKCk7CisgICAgbV9sYXllci0+c2V0RHJh
d3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKICAgICBpZiAo
Y2xpZW50KQogICAgICAgICBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICB1
cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKQEAgLTEwNCwyNSArMTA2LDIwIEBAIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpCiAKIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjp3aWxsQmVEZXN0cm95ZWQoKQogewotICAgIGlmICghbV9sYXllci5pc051bGwo
KSkgewotICAgICAgICBtX2xheWVyLmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgIG1fbGF5ZXIuY2xl
YXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUo
MCk7Ci0gICAgfQorICAgIG1fY29udGVudExheWVyLT5jbGVhckNsaWVudCgpOworICAgIG1fbGF5
ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOworICAgIG1fbGF5ZXItPnNldEFuaW1hdGlvbkRlbGVn
YXRlKDApOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAg
bV9jb250ZW50c0xheWVyLmNsZWFyUmVuZGVyU3VyZmFjZSgpOwotICAgICAgICBtX2NvbnRlbnRz
TGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUoMCk7CisgICAgaWYgKG1fY29udGVudHNMYXllcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOworICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOwogICAgIH0KIAotICAg
IGlmICghbV90cmFuc2Zvcm1MYXllci5pc051bGwoKSkgewotICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyLmNsZWFyUmVuZGVyU3VyZmFjZSgpOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldEFu
aW1hdGlvbkRlbGVnYXRlKDApOworICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CisgICAgICAg
IG1fdHJhbnNmb3JtTGF5ZXItPmNsZWFyUmVuZGVyU3VyZmFjZSgpOworICAgICAgICBtX3RyYW5z
Zm9ybUxheWVyLT5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKICAgICB9CiAKLSAgICBpZiAobV9s
aW5rSGlnaGxpZ2h0KQotICAgICAgICBtX2xpbmtIaWdobGlnaHQuY2xlYXIoKTsKLQogICAgIEdy
YXBoaWNzTGF5ZXI6OndpbGxCZURlc3Ryb3llZCgpOwogfQogCkBAIC0xMzYsMjEgKzEzMywxNiBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIGluTmFt
ZSkKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU5hbWVzKCkKIHsKLSAgICBp
ZiAoIW1fbGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgU3RyaW5nIGRlYnVnTmFtZSA9ICJMYXll
ciBmb3IgIiArIG1fbmFtZUJhc2U7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdOYW1lKGRlYnVn
TmFtZSk7Ci0gICAgfQotICAgIGlmICghbV90cmFuc2Zvcm1MYXllci5pc051bGwoKSkgeworICAg
IFN0cmluZyBkZWJ1Z05hbWUgPSAiTGF5ZXIgZm9yICIgKyBtX25hbWVCYXNlOworICAgIG1fbGF5
ZXItPnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOworCisgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIp
IHsKICAgICAgICAgU3RyaW5nIGRlYnVnTmFtZSA9ICJUcmFuc2Zvcm1MYXllciBmb3IgIiArIG1f
bmFtZUJhc2U7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0RGVidWdOYW1lKGRlYnVnTmFt
ZSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOwog
ICAgIH0KLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgIGlmIChtX2Nv
bnRlbnRzTGF5ZXIpIHsKICAgICAgICAgU3RyaW5nIGRlYnVnTmFtZSA9ICJDb250ZW50c0xheWVy
IGZvciAiICsgbV9uYW1lQmFzZTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldERlYnVnTmFt
ZShkZWJ1Z05hbWUpOwotICAgIH0KLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KSB7Ci0gICAgICAg
IFN0cmluZyBkZWJ1Z05hbWUgPSAiTGlua0hpZ2hsaWdodCBmb3IgIiArIG1fbmFtZUJhc2U7Ci0g
ICAgICAgIG1fbGlua0hpZ2hsaWdodC0+Y29udGVudExheWVyKCktPnNldERlYnVnTmFtZShkZWJ1
Z05hbWUpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldERlYnVnTmFtZShkZWJ1Z05hbWUp
OwogICAgIH0KIH0KIApAQCAtMjAzLDcgKzE5NSw3IEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9t
aXVtOjpyZXBsYWNlQ2hpbGQoR3JhcGhpY3NMYXllciogb2xkQ2hpbGQsIEdyYXBoaWNzTGF5ZXIq
CiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlRnJvbVBhcmVudCgpCiB7CiAgICAg
R3JhcGhpY3NMYXllcjo6cmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIHByaW1hcnlMYXllcigpLnJl
bW92ZUZyb21QYXJlbnQoKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnJlbW92ZUZyb21QYXJlbnQo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFBvc2l0aW9uKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KQpAQCAtMjMzLDggKzIyNSw4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXRTaXplKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSkKICAgICBHcmFwaGljc0xheWVy
OjpzZXRTaXplKGNsYW1wZWRTaXplKTsKICAgICB1cGRhdGVMYXllclNpemUoKTsKIAotICAgIGlm
IChtX3BhZ2VTY2FsZUNoYW5nZWQgJiYgIW1fbGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5
ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX3BhZ2VTY2FsZUNoYW5nZWQpCisgICAgICAgIG1f
bGF5ZXItPmludmFsaWRhdGUoKTsKICAgICBtX3BhZ2VTY2FsZUNoYW5nZWQgPSBmYWxzZTsKIH0K
IApAQCAtMzAxLDEzICsyOTMsMTMgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJh
Y2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmNsZWFy
QmFja2dyb3VuZENvbG9yKCk7Ci0gICAgbV9jb250ZW50c0xheWVyLnNldEJhY2tncm91bmRDb2xv
cihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tn
cm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnNldENvbnRlbnRzT3BhcXVlKGJvb2wgb3BhcXVlKQogewogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVlKG9wYXF1ZSk7Ci0gICAgbV9sYXllci5zZXRPcGFx
dWUobV9jb250ZW50c09wYXF1ZSk7CisgICAgbV9sYXllci0+c2V0T3BhcXVlKG1fY29udGVudHNP
cGFxdWUpOwogfQogCiBzdGF0aWMgYm9vbCBjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dl
YkZpbHRlck9wZXJhdGlvbnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgV2ViRmls
dGVyT3BlcmF0aW9ucyYgd2ViRmlsdGVycykKQEAgLTM5MSwxMSArMzgzLDExIEBAIGJvb2wgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCiAgICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9w
ZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRo
ZSBmaWx0ZXJzIGFyZSByZW1vdmVkIGZyb20gdGhlIHBsYXRmb3JtIGxheWVyLCBhcyB0aGV5IGFy
ZQogICAgICAgICAvLyBnb2luZyB0byBmYWxsYmFjayB0byBzb2Z0d2FyZSBtb2RlLgotICAgICAg
ICBtX2xheWVyLnNldEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAgICAgbV9s
YXllci0+c2V0RmlsdGVycyhXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOwogICAgICAgICBHcmFwaGlj
c0xheWVyOjpzZXRGaWx0ZXJzKEZpbHRlck9wZXJhdGlvbnMoKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgbV9sYXllci5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOworICAgIG1f
bGF5ZXItPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6
OnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKQEAgLTQwNCw3ICszOTYsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycwogICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgd2ViRmlsdGVyczsKICAgICBp
ZiAoIWNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhmaWx0
ZXJzLCB3ZWJGaWx0ZXJzKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fbGF5ZXIuc2V0QmFja2dy
b3VuZEZpbHRlcnMod2ViRmlsdGVycyk7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZEZpbHRl
cnMod2ViRmlsdGVycyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRNYXNr
TGF5ZXIoR3JhcGhpY3NMYXllciogbWFza0xheWVyKQpAQCAtNDE0LDIzICs0MDYsMjEgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcihHcmFwaGljc0xheWVyKiBtYXNr
TGF5ZXIpCiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIobWFza0xheWVyKTsKIAot
ICAgIFdlYkxheWVyIG1hc2tXZWJMYXllcjsKLSAgICBpZiAobV9tYXNrTGF5ZXIpCi0gICAgICAg
IG1hc2tXZWJMYXllciA9ICptX21hc2tMYXllci0+cGxhdGZvcm1MYXllcigpOwotICAgIG1fbGF5
ZXIuc2V0TWFza0xheWVyKG1hc2tXZWJMYXllcik7CisgICAgV2ViTGF5ZXIqIG1hc2tXZWJMYXll
ciA9IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CisgICAg
bV9sYXllci0+c2V0TWFza0xheWVyKG1hc2tXZWJMYXllcik7CiB9CiAKIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB2aXNpYmxlKQogewogICAg
IEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSh2aXNpYmxlKTsKLSAgICBtX2xh
eWVyLnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKKyAgICBtX2NvbnRlbnRM
YXllci0+c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2liaWxpdHkpOwogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogewogICAgIGZs
b2F0IGNsYW1wZWRPcGFjaXR5ID0gbWF4KG1pbihvcGFjaXR5LCAxLjBmKSwgMC4wZik7CiAgICAg
R3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eShjbGFtcGVkT3BhY2l0eSk7Ci0gICAgcHJpbWFyeUxh
eWVyKCkuc2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldE9wYWNp
dHkob3BhY2l0eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNh
dGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKQEAgLTQzOCwyOSArNDI4LDI3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xh
eWVyKiBsYXllcikKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW0gPSBz
dGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0qPihsYXllcik7CiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIpOwogCi0gICAgV2ViTGF5ZXIgd2ViUmVw
bGljYUxheWVyOwotICAgIGlmIChsYXllckNocm9taXVtKQotICAgICAgICB3ZWJSZXBsaWNhTGF5
ZXIgPSBsYXllckNocm9taXVtLT5wcmltYXJ5TGF5ZXIoKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5z
ZXRSZXBsaWNhTGF5ZXIod2ViUmVwbGljYUxheWVyKTsKKyAgICBXZWJMYXllciogd2ViUmVwbGlj
YUxheWVyID0gbGF5ZXJDaHJvbWl1bSA/IGxheWVyQ2hyb21pdW0tPnBsYXRmb3JtTGF5ZXIoKSA6
IDA7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRSZXBsaWNhTGF5ZXIod2ViUmVwbGljYUxheWVy
KTsKIH0KIAogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rp
c3BsYXkoKQogewotICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisg
ICAgICAgIG1fY29udGVudHNMYXllci0+aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50
KCkpCi0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgpOworICAgICAgICBtX2xheWVyLT5pbnZh
bGlkYXRlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmIChkcmF3c0NvbnRlbnQo
KSkKLSAgICAgICAgbV9sYXllci5pbnZhbGlkYXRlUmVjdChyZWN0KTsKKyAgICAgICAgbV9sYXll
ci0+aW52YWxpZGF0ZVJlY3QocmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQ3Niw0NiArNDY0LDU2
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2Uq
IGltYWdlKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CiAgICAgaWYgKGlt
YWdlKSB7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkgfHwgbV9jb250ZW50
c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsKLSAgICAgICAgICAgIFdl
YktpdDo6V2ViSW1hZ2VMYXllciBpbWFnZUxheWVyID0gV2ViS2l0OjpXZWJJbWFnZUxheWVyOjpj
cmVhdGUoKTsKLSAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcihpbWFnZUxheWVyKTsKKyAg
ICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBD
b250ZW50c0xheWVyRm9ySW1hZ2UpIHsKKyAgICAgICAgICAgIG1faW1hZ2VMYXllciA9IGFkb3B0
UHRyKFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIHNldHVwQ29udGVudHNM
YXllcihtX2ltYWdlTGF5ZXItPmxheWVyKCkpOwogICAgICAgICAgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAgICAgIGNoaWxkcmVuQ2hh
bmdlZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgV2ViS2l0OjpXZWJJbWFnZUxheWVyIGlt
YWdlTGF5ZXIgPSBtX2NvbnRlbnRzTGF5ZXIudG88V2ViS2l0OjpXZWJJbWFnZUxheWVyPigpOwog
ICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdl
Rm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0Qml0bWFwKG5hdGl2ZUlt
YWdlLT5iaXRtYXAoKSk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0T3BhcXVlKGltYWdlLT5pc0Jp
dG1hcEltYWdlKCkgJiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICAgICAg
bV9pbWFnZUxheWVyLT5zZXRCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpKTsKKyAgICAgICAg
bV9pbWFnZUxheWVyLT5sYXllcigpLT5zZXRPcGFxdWUoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSAm
JiAhaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOwogICAgICAgICB1cGRhdGVDb250ZW50
c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051
bGwoKSkgeworICAgICAgICBpZiAobV9pbWFnZUxheWVyKSB7CiAgICAgICAgICAgICBjaGlsZHJl
bkNoYW5nZWQgPSB0cnVlOwogCi0gICAgICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVy
IHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAgICAgICAgICAgbV9jb250
ZW50c0xheWVyLnJlc2V0KCk7CisgICAgICAgICAgICBtX2ltYWdlTGF5ZXIuY2xlYXIoKTsKICAg
ICAgICAgfQorICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3Zl
ZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwogICAg
IH0KIAogICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgp
OwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQ
bGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogbGF5ZXIpCit7CisgICAgc2V0Q29u
dGVudHNUbyhDb250ZW50c0xheWVyRm9yQ2FudmFzLCBsYXllcik7Cit9CisKK3ZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbGF5ZXIp
Cit7CisgICAgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyRm9yVmlkZW8sIGxheWVyKTsKK30K
Kwordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8oQ29udGVudHNMYXll
clB1cnBvc2UgcHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciogbGF5ZXIpCiB7CiAgICAgYm9vbCBj
aGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAocGxhdGZvcm1MYXllcikgewotICAgICAg
ICBpZiAobV9jb250ZW50c0xheWVyICE9ICpwbGF0Zm9ybUxheWVyKSB7Ci0gICAgICAgICAgICBz
ZXR1cENvbnRlbnRzTGF5ZXIoKnBsYXRmb3JtTGF5ZXIpOwotICAgICAgICAgICAgbV9jb250ZW50
c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JDYW52YXM7CisgICAgaWYgKGxheWVyKSB7
CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAh
PSBwdXJwb3NlKSB7CisgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobGF5ZXIpOworICAg
ICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBvc2U7CiAgICAgICAgICAgICBj
aGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHVwZGF0ZUNvbnRlbnRz
UmVjdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVs
bCgpKSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgICAgIGNoaWxk
cmVuQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAgICAgIC8vIFRoZSBvbGQgY29udGVudHMgbGF5
ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVDaGlsZExpc3QuCi0gICAgICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXIucmVzZXQoKTsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllciA9IDA7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTUyNSw3ICs1MjMsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVy
KQogCiBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1h
dGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1l
T2Zmc2V0KQogewotICAgIHByaW1hcnlMYXllcigpLnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMp
OworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CiAKICAg
ICBpbnQgYW5pbWF0aW9uSWQgPSBtYXBBbmltYXRpb25OYW1lVG9JZChhbmltYXRpb25OYW1lKTsK
ICAgICBpbnQgZ3JvdXBJZCA9IEFuaW1hdGlvbklkVmVuZG9yOjpnZXROZXh0R3JvdXBJZCgpOwpA
QCAtNTM0LDggKzUzMiw4IEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRBbmltYXRp
b24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QKIAogICAgIGlmICh0b0Fk
ZCkgewogICAgICAgICAvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGFuaW1hdGlvbnMgd2l0aCB0aGUg
c2FtZSBhbmltYXRpb24gaWQgYW5kIHRhcmdldCBwcm9wZXJ0eS4KLSAgICAgICAgcHJpbWFyeUxh
eWVyKCkucmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0b0FkZC0+dGFyZ2V0UHJvcGVydHko
KSk7Ci0gICAgICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKS5hZGRBbmltYXRpb24odG9BZGQuZ2V0
KCkpOworICAgICAgICBwbGF0Zm9ybUxheWVyKCktPnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb25J
ZCwgdG9BZGQtPnRhcmdldFByb3BlcnR5KCkpOworICAgICAgICByZXR1cm4gcGxhdGZvcm1MYXll
cigpLT5hZGRBbmltYXRpb24odG9BZGQuZ2V0KCkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTU0MywxMiArNTQxLDEyIEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRB
bmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QKIAogdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkucGF1c2VB
bmltYXRpb24obWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSksIHRpbWVPZmZzZXQp
OworICAgIHBsYXRmb3JtTGF5ZXIoKS0+cGF1c2VBbmltYXRpb24obWFwQW5pbWF0aW9uTmFtZVRv
SWQoYW5pbWF0aW9uTmFtZSksIHRpbWVPZmZzZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSkKIHsK
LSAgICBwcmltYXJ5TGF5ZXIoKS5yZW1vdmVBbmltYXRpb24obWFwQW5pbWF0aW9uTmFtZVRvSWQo
YW5pbWF0aW9uTmFtZSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKG1h
cEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQpAQCAt
NTU2LDg4ICs1NTQsNTQgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnN1c3BlbmRBbmlt
YXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogICAgIC8vIHx3YWxsQ2xvY2tUaW1lfCBpcyBp
biB0aGUgd3JvbmcgdGltZSBiYXNlLiBOZWVkIHRvIGNvbnZlcnQgaGVyZS4KICAgICAvLyBGSVhN
RTogZmluZCBhIG1vcmUgcmVsaWFibGUgd2F5IHRvIGRvIHRoaXMuCiAgICAgZG91YmxlIG1vbm90
b25pY1RpbWUgPSB3YWxsQ2xvY2tUaW1lICsgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkg
LSBjdXJyZW50VGltZSgpOwotICAgIHByaW1hcnlMYXllcigpLnN1c3BlbmRBbmltYXRpb25zKG1v
bm90b25pY1RpbWUpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c3VzcGVuZEFuaW1hdGlvbnMobW9u
b3RvbmljVGltZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpyZXN1bWVBbmlt
YXRpb25zKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZXN1bWVBbmltYXRpb25zKG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnJlc3VtZUFuaW1h
dGlvbnMobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwogfQogCi12b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6YWRkTGlua0hpZ2hsaWdodChjb25zdCBQYXRoJiBwYXRoKQordm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQoY29uc3QgUGF0aCYpCiB7Ci0g
ICAgbV9saW5rSGlnaGxpZ2h0ID0gTGlua0hpZ2hsaWdodDo6Y3JlYXRlKHRoaXMsIHBhdGgsIEFu
aW1hdGlvbklkVmVuZG9yOjpMaW5rSGlnaGxpZ2h0QW5pbWF0aW9uSWQsIEFuaW1hdGlvbklkVmVu
ZG9yOjpnZXROZXh0R3JvdXBJZCgpKTsKLSAgICB1cGRhdGVDaGlsZExpc3QoKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmRpZEZpbmlzaExpbmtIaWdobGlnaHQoKQogewotICAg
IGlmIChtX2xpbmtIaWdobGlnaHQpCi0gICAgICAgIG1fbGlua0hpZ2hsaWdodC0+Y29udGVudExh
eWVyKCktPnJlbW92ZUZyb21QYXJlbnQoKTsKLQotICAgIG1fbGlua0hpZ2hsaWdodC5jbGVhcigp
OwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01lZGlhKFBs
YXRmb3JtTGF5ZXIqIGxheWVyKQotewotICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7
Ci0gICAgaWYgKGxheWVyKSB7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkg
fHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9yVmlkZW8pIHsKLSAg
ICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcigqbGF5ZXIpOwotICAgICAgICAgICAgbV9jb250
ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JWaWRlbzsKLSAgICAgICAgICAgIGNo
aWxkcmVuQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgdXBkYXRlQ29udGVudHNS
ZWN0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxs
KCkpIHsKLSAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7Ci0KLSAgICAgICAgICAg
IC8vIFRoZSBvbGQgY29udGVudHMgbGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVDaGls
ZExpc3QuCi0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCi0gICAgICAgIHVwZGF0ZUNoaWxkTGlz
dCgpOwotfQotCi1XZWJLaXQ6OldlYkxheWVyIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cHJpbWFy
eUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90cmFuc2Zvcm1MYXllci5pc051bGwoKSA/
IG1fbGF5ZXIgOiBtX3RyYW5zZm9ybUxheWVyOwogfQogCiBQbGF0Zm9ybUxheWVyKiBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAgIHJldHVybiBjb25z
dF9jYXN0PFBsYXRmb3JtTGF5ZXIqPihtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpID8gJm1fbGF5
ZXIgOiAmbV90cmFuc2Zvcm1MYXllcik7CisgICAgcmV0dXJuIG1fdHJhbnNmb3JtTGF5ZXIgPyBt
X3RyYW5zZm9ybUxheWVyLmdldCgpIDogbV9sYXllcjsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldERlYnVnQmFja2dyb3VuZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsK
ICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBtX2xheWVyLnNldEJhY2tncm91bmRD
b2xvcihjb2xvci5yZ2IoKSk7CisgICAgICAgIG1fbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihj
b2xvci5yZ2IoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2xheWVyLnNldEJhY2tncm91bmRDb2xv
cihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKKyAgICAgICAgbV9sYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJX
aWR0aCkKIHsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1fbGF5ZXIuc2V0
RGVidWdCb3JkZXJDb2xvcihjb2xvci5yZ2IoKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdC
b3JkZXJXaWR0aChib3JkZXJXaWR0aCk7CisgICAgICAgIG1fbGF5ZXItPnNldERlYnVnQm9yZGVy
Q29sb3IoY29sb3IucmdiKCkpOworICAgICAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcldpZHRo
KGJvcmRlcldpZHRoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2xheWVyLnNldERlYnVnQm9y
ZGVyQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVi
dWdCb3JkZXJXaWR0aCgwKTsKKyAgICAgICAgbV9sYXllci0+c2V0RGVidWdCb3JkZXJDb2xvcihz
dGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKKyAgICAgICAgbV9sYXllci0+c2V0RGVidWdCb3JkZXJX
aWR0aCgwKTsKICAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVD
aGlsZExpc3QoKQogewotICAgIFZlY3RvcjxXZWJMYXllcj4gbmV3Q2hpbGRyZW47CisgICAgVmVj
dG9yPFdlYkxheWVyKj4gbmV3Q2hpbGRyZW47CiAKLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIu
aXNOdWxsKCkpIHsKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikgewogICAgICAgICAvLyBBZGQg
dGhlIHByaW1hcnkgbGF5ZXIgZmlyc3QuIEV2ZW4gaWYgd2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVy
IGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29tZXMgYmVoaW5kLgogICAgICAg
ICBuZXdDaGlsZHJlbi5hcHBlbmQobV9sYXllcik7Ci0gICAgfSBlbHNlIGlmICghbV9jb250ZW50
c0xheWVyLmlzTnVsbCgpKSB7CisgICAgfSBlbHNlIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAg
ICAgICAgLy8gRklYTUU6IGFkZCB0aGUgY29udGVudHMgbGF5ZXIgaW4gdGhlIGNvcnJlY3Qgb3Jk
ZXIgd2l0aCBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLgogICAgICAgICAvLyBUaGlzIGRvZXMg
bm90IGNhdXNlIHZpc2libGUgcmVuZGVyaW5nIGlzc3VlcyBiZWNhdXNlIGN1cnJlbnRseSBjb250
ZW50cyBsYXllcnMgYXJlIG9ubHkgdXNlZAogICAgICAgICAvLyBmb3IgcmVwbGFjZWQgZWxlbWVu
dHMgdGhhdCBkb24ndCBoYXZlIGNoaWxkcmVuLgpAQCAtNjQ5LDc5ICs2MTMsNzYgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkTGlzdCgpCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBudW1DaGlsZHJlbjsgKytpKSB7CiAgICAgICAgIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bSogY3VyQ2hpbGQgPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0qPihjaGls
ZExheWVyc1tpXSk7CiAKLSAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKGN1ckNoaWxkLT5wcmlt
YXJ5TGF5ZXIoKSk7CisgICAgICAgIG5ld0NoaWxkcmVuLmFwcGVuZChjdXJDaGlsZC0+cGxhdGZv
cm1MYXllcigpKTsKICAgICB9CiAKLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAgICBu
ZXdDaGlsZHJlbi5hcHBlbmQobV9saW5rSGlnaGxpZ2h0LT5jb250ZW50TGF5ZXIoKSk7Ci0KICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5ld0NoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAg
ICBuZXdDaGlsZHJlbltpXS5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgIG5ld0NoaWxkcmVu
W2ldLT5yZW1vdmVGcm9tUGFyZW50KCk7CiAKLSAgICBXZWJWZWN0b3I8V2ViTGF5ZXI+IG5ld1dl
YkNoaWxkcmVuOworICAgIFdlYlZlY3RvcjxXZWJMYXllcio+IG5ld1dlYkNoaWxkcmVuOwogICAg
IG5ld1dlYkNoaWxkcmVuLmFzc2lnbihuZXdDaGlsZHJlbi5kYXRhKCksIG5ld0NoaWxkcmVuLnNp
emUoKSk7CiAKLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAg
bV90cmFuc2Zvcm1MYXllci5zZXRDaGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CisgICAgaWYgKG1f
dHJhbnNmb3JtTGF5ZXIpIHsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0Q2hpbGRyZW4o
bmV3V2ViQ2hpbGRyZW4pOwogCi0gICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgp
KSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAgICAgICAgIC8vIElmIHdl
IGhhdmUgYSB0cmFuc2Zvcm0gbGF5ZXIsIHRoZW4gdGhlIGNvbnRlbnRzIGxheWVyIGlzIHBhcmVu
dGVkIGluIHRoZQogICAgICAgICAgICAgLy8gcHJpbWFyeSBsYXllciAod2hpY2ggaXMgaXRzZWxm
IGEgY2hpbGQgb2YgdGhlIHRyYW5zZm9ybSBsYXllcikuCi0gICAgICAgICAgICBtX2xheWVyLnJl
bW92ZUFsbENoaWxkcmVuKCk7Ci0gICAgICAgICAgICBtX2xheWVyLmFkZENoaWxkKG1fY29udGVu
dHNMYXllcik7CisgICAgICAgICAgICBtX2xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworICAg
ICAgICAgICAgbV9sYXllci0+YWRkQ2hpbGQobV9jb250ZW50c0xheWVyKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZQotICAgICAgICBtX2xheWVyLnNldENoaWxkcmVuKG5ld1dlYkNoaWxkcmVuKTsK
KyAgICAgICAgbV9sYXllci0+c2V0Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4pOwogfQogCiB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQb3NpdGlvbigpCiB7Ci0gICAgcHJp
bWFyeUxheWVyKCkuc2V0UG9zaXRpb24obV9wb3NpdGlvbik7CisgICAgcGxhdGZvcm1MYXllcigp
LT5zZXRQb3NpdGlvbihtX3Bvc2l0aW9uKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnVwZGF0ZUxheWVyU2l6ZSgpCiB7CiAgICAgSW50U2l6ZSBsYXllclNpemUobV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKCFtX3RyYW5zZm9ybUxheWVyLmlzTnVs
bCgpKSB7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0Qm91bmRzKGxheWVyU2l6ZSk7Ci0g
ICAgICAgIG1fbGF5ZXIuc2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKKyAgICBpZiAobV90cmFu
c2Zvcm1MYXllcikgeworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRCb3VuZHMobGF5ZXJT
aXplKTsKKyAgICAgICAgbV9sYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCgpKTsKICAgICB9
CiAKLSAgICBtX2xheWVyLnNldEJvdW5kcyhsYXllclNpemUpOworICAgIG1fbGF5ZXItPnNldEJv
dW5kcyhsYXllclNpemUpOwogCi0gICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHJlc2l6ZSBtX2Nv
bnRlbnRzTGF5ZXIuIEl0J3MgdXAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgorICAgIC8vIE5vdGUg
dGhhdCB3ZSBkb24ndCByZXNpemUgbV9jb250ZW50c0xheWVyLT4gSXQncyB1cCB0aGUgY2FsbGVy
IHRvIGRvIHRoYXQuCiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNo
b3JQb2ludCgpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2lu
dChtX2FuY2hvclBvaW50LngoKSwgbV9hbmNob3JQb2ludC55KCkpKTsKLSAgICBwcmltYXJ5TGF5
ZXIoKS5zZXRBbmNob3JQb2ludFoobV9hbmNob3JQb2ludC56KCkpOworICAgIHBsYXRmb3JtTGF5
ZXIoKS0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludChtX2FuY2hvclBvaW50LngoKSwgbV9hbmNo
b3JQb2ludC55KCkpKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldEFuY2hvclBvaW50WihtX2Fu
Y2hvclBvaW50LnooKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVU
cmFuc2Zvcm0oKQogewotICAgIHByaW1hcnlMYXllcigpLnNldFRyYW5zZm9ybShXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeChtX3RyYW5zZm9ybSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0VHJh
bnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG1fdHJhbnNmb3JtKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDaGlsZHJlblRyYW5zZm9ybSgpCiB7Ci0gICAg
cHJpbWFyeUxheWVyKCkuc2V0U3VibGF5ZXJUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgobV9jaGlsZHJlblRyYW5zZm9ybSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0U3VibGF5
ZXJUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobV9jaGlsZHJlblRyYW5zZm9ybSkp
OwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTWFza3NUb0JvdW5kcygp
CiB7Ci0gICAgbV9sYXllci5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CisgICAg
bV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMpOwogICAgIHVwZGF0ZURl
YnVnSW5kaWNhdG9ycygpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
TGF5ZXJQcmVzZXJ2ZXMzRCgpCiB7Ci0gICAgaWYgKG1fcHJlc2VydmVzM0QgJiYgbV90cmFuc2Zv
cm1MYXllci5pc051bGwoKSkgeworICAgIGlmIChtX3ByZXNlcnZlczNEICYmICFtX3RyYW5zZm9y
bUxheWVyKSB7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyID0gV2ViTGF5ZXI6OmNyZWF0ZSgpOwotICAgICAgICBtX3RyYW5z
Zm9ybUxheWVyLnNldFByZXNlcnZlczNEKHRydWUpOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOwotICAgICAgICBtX2xheWVyLnRyYW5zZmVyQW5p
bWF0aW9uc1RvKCZtX3RyYW5zZm9ybUxheWVyKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9
IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIt
PnNldFByZXNlcnZlczNEKHRydWUpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRBbmlt
YXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV9sYXllci0+dHJhbnNmZXJBbmltYXRpb25z
VG8obV90cmFuc2Zvcm1MYXllci5nZXQoKSk7CiAKICAgICAgICAgLy8gQ29weSB0aGUgcG9zaXRp
b24gZnJvbSB0aGlzIGxheWVyLgogICAgICAgICB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC03
MzAsMzQgKzY5MSwzNCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQ
cmVzZXJ2ZXMzRCgpCiAgICAgICAgIHVwZGF0ZVRyYW5zZm9ybSgpOwogICAgICAgICB1cGRhdGVD
aGlsZHJlblRyYW5zZm9ybSgpOwogCi0gICAgICAgIG1fbGF5ZXIuc2V0UG9zaXRpb24oRmxvYXRQ
b2ludDo6emVybygpKTsKKyAgICAgICAgbV9sYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6
emVybygpKTsKIAotICAgICAgICBtX2xheWVyLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMC41
ZiwgMC41ZikpOwotICAgICAgICBtX2xheWVyLnNldFRyYW5zZm9ybShTa01hdHJpeDQ0KCkpOwor
ICAgICAgICBtX2xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAuNWYsIDAuNWYpKTsK
KyAgICAgICAgbV9sYXllci0+c2V0VHJhbnNmb3JtKFNrTWF0cml4NDQoKSk7CiAKICAgICAgICAg
Ly8gU2V0IHRoZSBvbGQgbGF5ZXIgdG8gb3BhY2l0eSBvZiAxLiBGdXJ0aGVyIGRvd24gd2Ugd2ls
bCBzZXQgdGhlIG9wYWNpdHkgb24gdGhlIHRyYW5zZm9ybSBsYXllci4KLSAgICAgICAgbV9sYXll
ci5zZXRPcGFjaXR5KDEpOworICAgICAgICBtX2xheWVyLT5zZXRPcGFjaXR5KDEpOwogCi0gICAg
ICAgIG1fbGF5ZXIuc2V0Q29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKCkpOworICAgICAgICBt
X2NvbnRlbnRMYXllci0+c2V0Q29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKCkpOwogCiAgICAg
ICAgIC8vIE1vdmUgdGhpcyBsYXllciB0byBiZSBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5
ZXIuCi0gICAgICAgIGlmICghbV9sYXllci5wYXJlbnQoKS5pc051bGwoKSkKLSAgICAgICAgICAg
IG1fbGF5ZXIucGFyZW50KCkucmVwbGFjZUNoaWxkKG1fbGF5ZXIsIG1fdHJhbnNmb3JtTGF5ZXIp
OwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLmFkZENoaWxkKG1fbGF5ZXIpOworICAgICAgICBp
ZiAobV9sYXllci0+cGFyZW50KCkpCisgICAgICAgICAgICBtX2xheWVyLT5wYXJlbnQoKS0+cmVw
bGFjZUNoaWxkKG1fbGF5ZXIsIG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkpOworICAgICAgICBtX3Ry
YW5zZm9ybUxheWVyLT5hZGRDaGlsZChtX2xheWVyKTsKIAogICAgICAgICB1cGRhdGVDaGlsZExp
c3QoKTsKLSAgICB9IGVsc2UgaWYgKCFtX3ByZXNlcnZlczNEICYmICFtX3RyYW5zZm9ybUxheWVy
LmlzTnVsbCgpKSB7CisgICAgfSBlbHNlIGlmIChtX3ByZXNlcnZlczNEICYmICFtX3RyYW5zZm9y
bUxheWVyKSB7CiAgICAgICAgIC8vIFJlbGFjZSB0aGUgdHJhbnNmb3JtTGF5ZXIgaW4gdGhlIHBh
cmVudCB3aXRoIHRoaXMgbGF5ZXIuCi0gICAgICAgIG1fbGF5ZXIucmVtb3ZlRnJvbVBhcmVudCgp
OwotICAgICAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIucGFyZW50KCkuaXNOdWxsKCkpCi0gICAg
ICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnBhcmVudCgpLnJlcGxhY2VDaGlsZChtX3RyYW5zZm9y
bUxheWVyLCBtX2xheWVyKTsKKyAgICAgICAgbV9sYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOwor
ICAgICAgICBpZiAobV90cmFuc2Zvcm1MYXllci0+cGFyZW50KCkpCisgICAgICAgICAgICBtX3Ry
YW5zZm9ybUxheWVyLT5wYXJlbnQoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0
KCksIG1fbGF5ZXIpOwogCi0gICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhp
cyk7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fbGF5
ZXIpOworICAgICAgICBtX2xheWVyLT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAg
ICAgbV90cmFuc2Zvcm1MYXllci0+dHJhbnNmZXJBbmltYXRpb25zVG8obV9sYXllcik7CiAKICAg
ICAgICAgLy8gUmVsZWFzZSB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX3RyYW5zZm9y
bUxheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LnJlc2V0KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRl
KDApOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLmNsZWFyKCk7CiAKICAgICAgICAgdXBkYXRl
TGF5ZXJQb3NpdGlvbigpOwogICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKQEAgLTc2OCw4ICs3
MjksOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMz
RCgpCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwogICAgIH0KIAotICAgIG1fbGF5ZXIuc2V0
UHJlc2VydmVzM0QobV9wcmVzZXJ2ZXMzRCk7Ci0gICAgcHJpbWFyeUxheWVyKCkuc2V0T3BhY2l0
eShtX29wYWNpdHkpOworICAgIG1fbGF5ZXItPnNldFByZXNlcnZlczNEKG1fcHJlc2VydmVzM0Qp
OworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0T3BhY2l0eShtX29wYWNpdHkpOwogICAgIHVwZGF0
ZU5hbWVzKCk7CiB9CiAKQEAgLTc4MCwyNyArNzQxLDI3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUoKQogICAgIC8vIGZsYWdzIGFyZSBjb21iaW5l
ZCBoZXJlLiBtX2NvbnRlbnRzTGF5ZXIgc2hvdWxkbid0IHJlY2VpdmUgdGhlIGRyYXdzQ29udGVu
dCBmbGFnCiAgICAgLy8gc28gaXQgaXMgb25seSBnaXZlbiBjb250ZW50c1Zpc2libGUuCiAKLSAg
ICBtX2xheWVyLnNldERyYXdzQ29udGVudChtX2RyYXdzQ29udGVudCAmJiBtX2NvbnRlbnRzVmlz
aWJsZSk7CisgICAgbV9sYXllci0+c2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1f
Y29udGVudHNWaXNpYmxlKTsKIAotICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQot
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fY29udGVudHNWaXNpYmxl
KTsKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNl
dERyYXdzQ29udGVudChtX2NvbnRlbnRzVmlzaWJsZSk7CiAKICAgICBpZiAobV9kcmF3c0NvbnRl
bnQpCi0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgpOworICAgICAgICBtX2xheWVyLT5pbnZh
bGlkYXRlKCk7CiAKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCkKIHsKLSAgICBp
ZiAobV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQorICAgIGlmICghbV9jb250ZW50c0xheWVyKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBuZXZlciBjcmVhdGUgdGhlIGNvbnRlbnRzIGxh
eWVyIGp1c3QgZm9yIGJhY2tncm91bmQgY29sb3IgeWV0LgogICAgIGlmIChtX2JhY2tncm91bmRD
b2xvclNldCkKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldEJhY2tncm91bmRDb2xvcihtX2Jh
Y2tncm91bmRDb2xvci5yZ2IoKSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2dy
b3VuZENvbG9yKG1fYmFja2dyb3VuZENvbG9yLnJnYigpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
Y29udGVudHNMYXllci5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7
CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0
PFJHQkEzMj4oMCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29u
dGVudHNWaWRlbygpCkBAIC04MTAsNTAgKzc3MSw0OSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29udGVudHNWaWRlbygpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVDb250ZW50c1JlY3QoKQogewotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxs
KCkpCisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
Y29udGVudHNMYXllci5zZXRQb3NpdGlvbihGbG9hdFBvaW50KG1fY29udGVudHNSZWN0LngoKSwg
bV9jb250ZW50c1JlY3QueSgpKSk7Ci0gICAgbV9jb250ZW50c0xheWVyLnNldEJvdW5kcyhJbnRT
aXplKG1fY29udGVudHNSZWN0LndpZHRoKCksIG1fY29udGVudHNSZWN0LmhlaWdodCgpKSk7Cisg
ICAgbV9jb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KG1fY29udGVudHNSZWN0
LngoKSwgbV9jb250ZW50c1JlY3QueSgpKSk7CisgICAgbV9jb250ZW50c0xheWVyLT5zZXRCb3Vu
ZHMoSW50U2l6ZShtX2NvbnRlbnRzUmVjdC53aWR0aCgpLCBtX2NvbnRlbnRzUmVjdC5oZWlnaHQo
KSkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNTY2Fs
ZSgpCiB7CiAgICAgLy8gSWYgcGFnZSBzY2FsZSBpcyBhbHJlYWR5IGFwcGxpZWQgdGhlbiB0aGVy
ZSdzIG5vIG5lZWQgdG8gYXBwbHkgaXQgYWdhaW4uCi0gICAgaWYgKGFwcGxpZXNQYWdlU2NhbGUo
KSB8fCBtX2xheWVyLmlzTnVsbCgpKQorICAgIGlmIChhcHBsaWVzUGFnZVNjYWxlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fbGF5ZXIuc2V0Q29udGVudHNTY2FsZShjb250ZW50c1NjYWxl
KCkpOworICAgIG1fY29udGVudExheWVyLT5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUo
KSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIo
V2ViTGF5ZXIgY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1
cENvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiB7CiAgICAgaWYgKGNvbnRl
bnRzTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
IW1fY29udGVudHNMYXllci5pc051bGwoKSkgewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0
VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNlKTsKLSAgICAgICAgbV9jb250ZW50c0xh
eWVyLnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7
CisgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNl
dFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShmYWxzZSk7CisgICAgICAgIG1fY29udGVudHNM
YXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIH0KIAogICAgIG1fY29udGVudHNMYXllciA9
IGNvbnRlbnRzTGF5ZXI7CiAKLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewot
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7
Ci0gICAgICAgIG1fY29udGVudHNMYXllci5zZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHko
dHJ1ZSk7CisgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAgICAgICBtX2NvbnRlbnRzTGF5
ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh0cnVlKTsKIAogICAgICAgICAv
LyBJdCBpcyBuZWNlc3NhcnkgdG8gY2FsbCBzZXREcmF3c0NvbnRlbnQgYXMgc29vbiBhcyB3ZSBy
ZWNlaXZlIHRoZSBuZXcgY29udGVudHNMYXllciwgZm9yCiAgICAgICAgIC8vIHRoZSBjb3JyZWN0
bmVzcyBvZiBlYXJseSBleGl0IGNvbmRpdGlvbnMgaW4gc2V0RHJhd3NDb250ZW50KCkgYW5kIHNl
dENvbnRlbnRzVmlzaWJsZSgpLgotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RHJhd3NDb250
ZW50KG1fY29udGVudHNWaXNpYmxlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREcmF3
c0NvbnRlbnQobV9jb250ZW50c1Zpc2libGUpOwogCiAgICAgICAgIC8vIEluc2VydCB0aGUgY29u
dGVudCBsYXllciBmaXJzdC4gVmlkZW8gZWxlbWVudHMgcmVxdWlyZSB0aGlzLCBiZWNhdXNlIHRo
ZXkgaGF2ZQogICAgICAgICAvLyBzaGFkb3cgY29udGVudCB0aGF0IG11c3QgZGlzcGxheSBpbiBm
cm9udCBvZiB0aGUgdmlkZW8uCi0gICAgICAgIG1fbGF5ZXIuaW5zZXJ0Q2hpbGQobV9jb250ZW50
c0xheWVyLCAwKTsKKyAgICAgICAgbV9sYXllci0+aW5zZXJ0Q2hpbGQobV9jb250ZW50c0xheWVy
LCAwKTsKIAogICAgICAgICBpZiAoc2hvd0RlYnVnQm9yZGVycygpKSB7Ci0gICAgICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuc2V0RGVidWdCb3JkZXJDb2xvcihDb2xvcigwLCAwLCAxMjgsIDE4MCku
cmdiKCkpOwotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLnNldERlYnVnQm9yZGVyV2lkdGgo
MSk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IoQ29s
b3IoMCwgMCwgMTI4LCAxODApLnJnYigpKTsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+
c2V0RGVidWdCb3JkZXJXaWR0aCgxKTsKICAgICAgICAgfQogICAgIH0KICAgICB1cGRhdGVEZWJ1
Z0luZGljYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKaW5kZXggYWE2
NGVhZDZkNjY1ZTI1OGQ5MGQwMjYwZmFhOTExNTBiOTZkYWQ2Yi4uYTJhMDExOWNjZmMyMGUwMTU4
ZDJlNGU4NzFhYThiMjc4NzIzYTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25EZWxl
Z2F0ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViSW1hZ2VMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFz
Q29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuICFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCk7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGVudHNMYXllcjsgfQogCiAgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlv
biosIGNvbnN0IFN0cmluZyYsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQg
cGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9m
ZnNldCk7CkBAIC0xMjUsMTUgKzEyNiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHN0YXJ0VGltZSkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSBmaW5pc2hUaW1lKSBPVkVS
UklERTsKIAorICAgIFdlYktpdDo6V2ViQ29udGVudExheWVyKiBjb250ZW50TGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnRMYXllci5nZXQoKTsgfQorCiAgICAgLy8gRXhwb3NlZCBmb3Ig
dGVzdHMuCi0gICAgV2ViS2l0OjpXZWJMYXllciBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50c0xheWVyOyB9CisgICAgV2ViS2l0OjpXZWJMYXllciogY29udGVudHNMYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIGZsb2F0IGNvbnRlbnRz
U2NhbGUoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJv
eWVkKCk7CiAKLSAgICBXZWJLaXQ6OldlYkxheWVyIHByaW1hcnlMYXllcigpIGNvbnN0OwotCiAg
ICAgdm9pZCB1cGRhdGVOYW1lcygpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAg
dm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC0xNTEsMzIgKzE1MiwzMyBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50
c1NjYWxlKCk7CiAKLSAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihXZWJLaXQ6OldlYkxheWVy
KTsKKyAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKKyAgICAgICAgTm9Db250ZW50c0xh
eWVyID0gMCwKKyAgICAgICAgQ29udGVudHNMYXllckZvckltYWdlLAorICAgICAgICBDb250ZW50
c0xheWVyRm9yVmlkZW8sCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JDYW52YXMsCisgICAgfTsK
KworICAgIHZvaWQgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyUHVycG9zZSwgV2ViS2l0OjpX
ZWJMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFdlYktpdDo6V2ViTGF5ZXIq
KTsKIAogICAgIGludCBtYXBBbmltYXRpb25OYW1lVG9JZChjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUpOwogCiAgICAgU3RyaW5nIG1fbmFtZUJhc2U7CiAKLSAgICBXZWJLaXQ6OldlYkNvbnRl
bnRMYXllciBtX2xheWVyOwotICAgIFdlYktpdDo6V2ViTGF5ZXIgbV90cmFuc2Zvcm1MYXllcjsK
LSAgICBXZWJLaXQ6OldlYkxheWVyIG1fY29udGVudHNMYXllcjsKKyAgICBPd25QdHI8V2ViS2l0
OjpXZWJDb250ZW50TGF5ZXI+IG1fY29udGVudExheWVyOworICAgIFdlYktpdDo6V2ViTGF5ZXIq
IG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViTGF5ZXI+IG1fdHJhbnNmb3JtTGF5ZXI7
CisgICAgT3duUHRyPFdlYktpdDo6V2ViSW1hZ2VMYXllcj4gbV9pbWFnZUxheWVyOworICAgIFdl
YktpdDo6V2ViTGF5ZXIqIG1fY29udGVudHNMYXllcjsKIAogICAgIE93blB0cjxPcGFxdWVSZWN0
VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZT4gbV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50
TGF5ZXJEZWxlZ2F0ZTsKIAotICAgIGVudW0gQ29udGVudHNMYXllclB1cnBvc2UgewotICAgICAg
ICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBDb250ZW50c0xheWVyRm9ySW1hZ2UsCi0g
ICAgICAgIENvbnRlbnRzTGF5ZXJGb3JWaWRlbywKLSAgICAgICAgQ29udGVudHNMYXllckZvckNh
bnZhcywKLSAgICB9OwotCiAgICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250ZW50c0xheWVy
UHVycG9zZTsKICAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA6IDE7
CiAgICAgYm9vbCBtX2luU2V0Q2hpbGRyZW47CiAgICAgYm9vbCBtX3BhZ2VTY2FsZUNoYW5nZWQ7
CiAKLSAgICBSZWZQdHI8TGlua0hpZ2hsaWdodD4gbV9saW5rSGlnaGxpZ2h0OwotCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBBbmltYXRpb25JZE1hcDsKICAgICBBbmltYXRpb25J
ZE1hcCBtX2FuaW1hdGlvbklkTWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2I5
YzM2MjY5OGFhNGMyYzQ4ZmNkNjM1ZDE0ZDQ0NDMwYmQ0MWRlMy4uMzJmZTMyOGRlNzQ1MzBlYTg2
ZmFmMWRmNzk4N2JiMDQ0MDcyZDYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTIzNSwx
MCArMjM1LDExIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0Qm91bmRzKGNvbnN0IEludFNpemUm
IHNpemUpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLWNvbnN0IExheWVyQ2hyb21p
dW0qIExheWVyQ2hyb21pdW06OnJvb3RMYXllcigpIGNvbnN0CitMYXllckNocm9taXVtKiBMYXll
ckNocm9taXVtOjpyb290TGF5ZXIoKQogewotICAgIGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVy
ID0gdGhpczsKLSAgICBmb3IgKExheWVyQ2hyb21pdW0qIHBhcmVudCA9IGxheWVyLT5wYXJlbnQo
KTsgcGFyZW50OyBsYXllciA9IHBhcmVudCwgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKSkgeyB9
CisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSB0aGlzOworICAgIHdoaWxlIChsYXllci0+cGFy
ZW50KCkpCisgICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVudCgpOwogICAgIHJldHVybiBsYXll
cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDI5ZTM4N2U1MzJiZmI3NmZiMTZjOTMyY2Yy
NTQ1NTlhYjQ0OTIyNWYuLmEwODY5ZDgzMGY5YThkNWEyZmFkNDc5Zjk3ZTRhYjBmMmZhY2ViYjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllckNocm9taXVtLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIC8vIFRo
ZSByb290IGxheWVyIGlzIGEgc3BlY2lhbCBjYXNlIC0tIGl0IG9wZXJhdGVzIGluIHBoeXNpY2Fs
IHBpeGVscy4KICAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAK
LSAgICBjb25zdCBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSBjb25zdDsKKyAgICBMYXllckNo
cm9taXVtKiByb290TGF5ZXIoKTsKICAgICBMYXllckNocm9taXVtKiBwYXJlbnQoKSBjb25zdDsK
ICAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4pOwogICAgIHZvaWQg
aW5zZXJ0Q2hpbGQoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiwgc2l6ZV90IGluZGV4KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiZWE2ZjllY2Y5ODJmNzViMDhkODdiMjVhODQ0
NTZjMGZhMDVhYmE0Li44MWY4Zjc4MjZiYjY3M2M2NGY1ZjM5MzZhZDQ4NmVjZTkzODVjN2E2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00ODYsNyArNDg2LDYgQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkNvbW1vbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ29t
cG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNv
bXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViQ29u
dGVudExheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50TGF5ZXJJbXBs
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAn
LApAQCAtNTE1LDcgKzUxNCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbGVtZW50LmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbnRpdGllcy5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViRW50aXRpZXMuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBs
ZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNr
c0ltcGwuY3BwJywKQEAgLTU2NCw5ICs1NjQsMTEgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dl
YklEQlRyYW5zYWN0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCVHJh
bnNhY3Rpb25DYWxsYmFja3NJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViSU9TdXJm
YWNlTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklPU3VyZmFjZUxheWVySW1w
bC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcCcsCi0gICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJbWFnZUxheWVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFn
ZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VMYXllckltcGwu
aCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZVNraWEuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYklucHV0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
SW5wdXRFdmVudC5jcHAnLApAQCAtNTc3LDcgKzU3OSw2IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViS2l0
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3BwJywKLSAgICAg
ICAgICAgICAgICAnc3JjL1dlYkxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJM
YXllckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1wbC5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwJywKQEAgLTYxOCw4ICs2MTks
OCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24u
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCi0gICAgICAgICAg
ICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMv
V2ViU2Nyb2xsYWJsZUxheWVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxi
YXJMYXllckltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckxheWVy
SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwuY3BwJywKQEAgLTYzOCw4ICs2MzksOCBA
QAogICAgICAgICAgICAgICAgICdzcmMvV2ViU29ja2V0LmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTb2NrZXRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJ
bXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViU29saWRDb2xvckxheWVyLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViU3BlZWNoR3JhbW1hci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3Bl
ZWNoSW5wdXRSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNwZWVjaFJlY29n
bml0aW9uSGFuZGxlLmNwcCcsCkBAIC02NTUsNyArNjU2LDggQEAKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJU
ZXh0RmllbGREZWNvcmF0b3JDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVz
ZXJNZWRpYVJlcXVlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZGVvTGF5ZXIu
Y3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNwcCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJWaWRlb0xheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViVmlld0ltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IGZiOWMxMmRlNjU1MWE2MjUzMDE1
M2YzYjk5ZTg1MDZjZDZkNWE0NGIuLjdmMTA0OTIwOTM0MjY0NTY5YmU2OTcwMjkzZmExNGYwYTNk
ZDcwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0
UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVy
LmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8cHVi
bGljL1dlYkNvbnRlbnRMYXllci5oPgpAQCAtNDgsMTEgKzQ5LDExIEBAIE5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3
KQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgibm9uLWNvbXBvc2l0ZWQgY29udGVudCIp
OwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0g
ICAgV2ViQ29udGVudExheWVyIGxheWVyID0gbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVy
KCktPnRvPFdlYkNvbnRlbnRMYXllcj4oKTsKLSAgICBsYXllci5zZXRVc2VMQ0RUZXh0KHRydWUp
OwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBXZWJDb250ZW50TGF5ZXIqIGxheWVy
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtKj4obV9ncmFwaGlj
c0xheWVyLmdldCgpKS0+Y29udGVudExheWVyKCk7CisgICAgbGF5ZXItPnNldFVzZUxDRFRleHQo
dHJ1ZSk7CisgICAgbGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZSh0cnVlKTsKICNpZiAhT1MoQU5E
Uk9JRCkKLSAgICBsYXllci5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKHRydWUp
OworICAgIGxheWVyLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKHRydWUpOwog
I2VuZGlmCiB9CiAKQEAgLTgwLDI1ICs4MSwyNSBAQCB2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdDo6c2V0U2Nyb2xsTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoKmxheWVyLT5wbGF0Zm9ybUxheWVyKCkgPT0g
c2Nyb2xsTGF5ZXIoKSkKKyAgICBpZiAobGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA9PSBzY3JvbGxM
YXllcigpKQogICAgICAgICByZXR1cm47CiAKICAgICBsYXllci0+YWRkQ2hpbGRBdEluZGV4KG1f
Z3JhcGhpY3NMYXllci5nZXQoKSwgMCk7CiAgICAgQVNTRVJUKGhhdmVTY3JvbGxMYXllcigpKTsK
IH0KIAotc3RhdGljIHZvaWQgcmVzZXJ2ZVNjcm9sbGJhckxheWVycyhXZWJMYXllciBsYXllciwg
V2ViTGF5ZXIgY2xpcExheWVyKQorc3RhdGljIHZvaWQgcmVzZXJ2ZVNjcm9sbGJhckxheWVycyhX
ZWJMYXllciogbGF5ZXIsIFdlYkxheWVyKiBjbGlwTGF5ZXIpCiB7CiAgICAgLy8gU2Nyb2xsYmFy
cyBhbmQgY29ybmVycyBhcmUga25vd24gdG8gYmUgYXR0YWNoZWQgb3V0c2lkZSB0aGUgcm9vdCBj
bGlwCiAgICAgLy8gcmVjdCwgc28gc2tpcCB0aGUgY2xpcExheWVyIHN1YnRyZWUuCiAgICAgaWYg
KGxheWVyID09IGNsaXBMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsYXllci5udW1iZXJPZkNoaWxkcmVuKCk7ICsraSkKLSAgICAgICAgcmVzZXJ2
ZVNjcm9sbGJhckxheWVycyhsYXllci5jaGlsZEF0KGkpLCBjbGlwTGF5ZXIpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXItPm51bWJlck9mQ2hpbGRyZW4oKTsgKytpKQorICAgICAg
ICByZXNlcnZlU2Nyb2xsYmFyTGF5ZXJzKGxheWVyLT5jaGlsZEF0KGkpLCBjbGlwTGF5ZXIpOwog
Ci0gICAgaWYgKGxheWVyLmRyYXdzQ29udGVudCgpKQotICAgICAgICBsYXllci5zZXRBbHdheXNS
ZXNlcnZlVGV4dHVyZXModHJ1ZSk7CisgICAgaWYgKGxheWVyLT5kcmF3c0NvbnRlbnQoKSkKKyAg
ICAgICAgbGF5ZXItPnNldEFsd2F5c1Jlc2VydmVUZXh0dXJlcyh0cnVlKTsKIH0KIAogdm9pZCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZpZXdwb3J0KGNvbnN0IFdlYkNvcmU6OkludFNp
emUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBzY3JvbGxPcmlnaW4sIGZsb2F0IGRldmljZVNjYWxlKQpAQCAtMTA5LDEyICsxMTAs
MTIgQEAgdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZpZXdwb3J0KGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHZpZXdwb3J0U2l6ZSwKICAgICBib29sIHZpc2libGVSZWN0Q2hhbmdl
ZCA9IG1fdmlld3BvcnRTaXplICE9IHZpZXdwb3J0U2l6ZTsKIAogICAgIG1fdmlld3BvcnRTaXpl
ID0gdmlld3BvcnRTaXplOwotICAgIFdlYlNjcm9sbGFibGVMYXllciBsYXllciA9IHNjcm9sbExh
eWVyKCk7Ci0gICAgbGF5ZXIuc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24gKyBzY3Jv
bGxPcmlnaW4pOwotICAgIGxheWVyLnNldFBvc2l0aW9uKFdlYkZsb2F0UG9pbnQoLXNjcm9sbFBv
c2l0aW9uKSk7CisgICAgV2ViTGF5ZXIqIGxheWVyID0gc2Nyb2xsTGF5ZXIoKTsKKyAgICBsYXll
ci0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24gKyBzY3JvbGxPcmlnaW4pOworICAg
IGxheWVyLT5zZXRQb3NpdGlvbihXZWJGbG9hdFBvaW50KC1zY3JvbGxQb3NpdGlvbikpOwogICAg
IC8vIER1ZSB0byB0aGUgcG9zc2liaWxpdHkgb2YgcGluY2ggem9vbSwgdGhlIG5vbmNvbXBvc2l0
ZWQgbGF5ZXIgaXMgYWx3YXlzCiAgICAgLy8gYXNzdW1lZCB0byBiZSBzY3JvbGxhYmxlLgotICAg
IGxheWVyLnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgbGF5ZXItPnNldFNjcm9sbGFibGUodHJ1
ZSk7CiAgICAgbV9kZXZpY2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxlOwogICAgIG1fZ3JhcGhp
Y3NMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgbV9ncmFwaGlj
c0xheWVyLT5zZXRTaXplKGNvbnRlbnRzU2l6ZSk7CkBAIC0xMzUsMTAgKzEzNiwxMCBAQCB2b2lk
IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgdmlld3BvcnRTaXplLAogICAgIH0gZWxzZSBpZiAodmlzaWJsZVJlY3RDaGFuZ2VkKQog
ICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwogCi0gICAgV2ViTGF5
ZXIgY2xpcExheWVyID0gbGF5ZXIucGFyZW50KCk7Ci0gICAgV2ViTGF5ZXIgcm9vdExheWVyID0g
Y2xpcExheWVyOwotICAgIHdoaWxlICghcm9vdExheWVyLnBhcmVudCgpLmlzTnVsbCgpKQotICAg
ICAgICByb290TGF5ZXIgPSByb290TGF5ZXIucGFyZW50KCk7CisgICAgV2ViTGF5ZXIqIGNsaXBM
YXllciA9IGxheWVyLT5wYXJlbnQoKTsKKyAgICBXZWJMYXllciogcm9vdExheWVyID0gY2xpcExh
eWVyOworICAgIHdoaWxlIChyb290TGF5ZXItPnBhcmVudCgpKQorICAgICAgICByb290TGF5ZXIg
PSByb290TGF5ZXItPnBhcmVudCgpOwogICAgIHJlc2VydmVTY3JvbGxiYXJMYXllcnMocm9vdExh
eWVyLCBjbGlwTGF5ZXIpOwogfQogCkBAIC0xNDcsMTEgKzE0OCwxMSBAQCBib29sIE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6aGF2ZVNjcm9sbExheWVyKCkKICAgICByZXR1cm4gbV9ncmFwaGlj
c0xheWVyLT5wYXJlbnQoKTsKIH0KIAotV2ViU2Nyb2xsYWJsZUxheWVyIE5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdDo6c2Nyb2xsTGF5ZXIoKQorV2ViTGF5ZXIqIE5vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdDo6c2Nyb2xsTGF5ZXIoKQogewogICAgIGlmICghbV9ncmFwaGljc0xheWVyLT5wYXJlbnQo
KSkKLSAgICAgICAgcmV0dXJuIFdlYlNjcm9sbGFibGVMYXllcigpOwotICAgIHJldHVybiBtX2dy
YXBoaWNzTGF5ZXItPnBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCktPnRvPFdlYlNjcm9sbGFibGVM
YXllcj4oKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NMYXllci0+
cGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKTsKIH0KIAogdm9pZCBOb25Db21wb3NpdGVkQ29udGVu
dEhvc3Q6OmludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhv
c3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC5oCmluZGV4IGU2MGU5ZWY0ODZiMTQyMzEyNDcxM2M2OGRkNmFhYzBlZWE0YTdkYjMuLjA4YjVm
NmE0MWY3NzA2MWU3ZWIyODE1NDJmMGZlOGU2MzVmY2M3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgogI2luY2x1ZGUgIklu
dFNpemUuaCIKIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTgw
LDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9y
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9kZXZpY2VTY2FsZUZhY3RvcjsgfQogCiAgICAg
Ym9vbCBoYXZlU2Nyb2xsTGF5ZXIoKTsKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgc2Nyb2xsTGF5
ZXIoKTsKKyAgICBXZWJMYXllciogc2Nyb2xsTGF5ZXIoKTsKIAogICAgIE93blB0cjxXZWJDb3Jl
OjpHcmFwaGljc0xheWVyPiBtX2dyYXBoaWNzTGF5ZXI7CiAgICAgV2ViVmlld0ltcGwqIG1fd2Vi
VmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRM
YXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmE3NDY1YjE3YzEzMTY3Njk4OGZhNjVh
OGQ2YmEwNGZiNDdjNjY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KLQotI2luY2x1ZGUgIkNvbnRlbnRM
YXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiV2ViQ29udGVudExheWVySW1wbC5oIgotCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkNvbnRlbnRM
YXllciBXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRl
bnRDbGllbnQpCi17Ci0gICAgcmV0dXJuIFdlYkNvbnRlbnRMYXllcihXZWJDb250ZW50TGF5ZXJJ
bXBsOjpjcmVhdGUoY29udGVudENsaWVudCkpOwotfQotCi12b2lkIFdlYkNvbnRlbnRMYXllcjo6
Y2xlYXJDbGllbnQoKQotewotICAgIHVud3JhcDxDb250ZW50TGF5ZXJDaHJvbWl1bT4oKS0+Y2xl
YXJEZWxlZ2F0ZSgpOwotfQotCi12b2lkIFdlYkNvbnRlbnRMYXllcjo6c2V0RG91YmxlU2lkZWQo
Ym9vbCBkb3VibGVTaWRlZCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldERvdWJsZVNpZGVkKGRvdWJs
ZVNpZGVkKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldENvbnRlbnRzU2NhbGUoZmxv
YXQgc2NhbGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRDb250ZW50c1NjYWxlKHNjYWxlKTsKLX0K
LQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldFVzZUxDRFRleHQoYm9vbCBlbmFibGUpCi17Ci0g
ICAgbV9wcml2YXRlLT5zZXRVc2VMQ0RUZXh0KGVuYWJsZSk7Ci19Ci0KLXZvaWQgV2ViQ29udGVu
dExheWVyOjpzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wgZW5hYmxlKQot
ewotICAgIG1fcHJpdmF0ZS0+c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhlbmFi
bGUpOwotfQotCi1XZWJDb250ZW50TGF5ZXI6OldlYkNvbnRlbnRMYXllcihjb25zdCBQYXNzUmVm
UHRyPENvbnRlbnRMYXllckNocm9taXVtPiYgbm9kZSkKLSAgICA6IFdlYlNjcm9sbGFibGVMYXll
cihub2RlKQotewotfQotCi1XZWJDb250ZW50TGF5ZXImIFdlYkNvbnRlbnRMYXllcjo6b3BlcmF0
b3I9KGNvbnN0IFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+JiBub2RlKQotewotICAg
IG1fcHJpdmF0ZSA9IG5vZGU7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1XZWJDb250ZW50TGF5
ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21pdW0+KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGVudExheWVyQ2hyb21pdW0qPihtX3ByaXZhdGUu
Z2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKaW5kZXggNjlkYTFlYTNmMGU4
OTIwMTY5NmQ4ZGRlYzc2NDhlNGY0NjRjOTY0OC4uZWFmMTc3NmIwNjU1YTc5YTIwZTA3MzNhYjk2
MDU0ZDc0MzVhZWU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVySW1wbC5jcHAKQEAgLTI4LDM1ICsyOCw2OSBAQAogCiAjaW5jbHVkZSA8cHVi
bGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJl
Y3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKyNpbmNsdWRlICJTa01h
dHJpeDQ0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBXZWJDb250ZW50TGF5ZXJJbXBs
OjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQorV2ViQ29udGVu
dExheWVyKiBXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNs
aWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkNvbnRlbnRMYXllckltcGwoY29u
dGVudENsaWVudCkpOworICAgIHJldHVybiBuZXcgV2ViQ29udGVudExheWVySW1wbChjbGllbnQp
OwogfQogCi1XZWJDb250ZW50TGF5ZXJJbXBsOjpXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNvbnRl
bnRMYXllckNsaWVudCogY29udGVudENsaWVudCkKLSAgICA6IENvbnRlbnRMYXllckNocm9taXVt
KHRoaXMpCi0gICAgLCBtX2NvbnRlbnRDbGllbnQoY29udGVudENsaWVudCkKK1dlYkNvbnRlbnRM
YXllckltcGw6OldlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVudExheWVyQ2xpZW50KiBjbGll
bnQpCisgICAgOiBtX3dlYkxheWVySW1wbChhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKENvbnRl
bnRMYXllckNocm9taXVtOjpjcmVhdGUodGhpcykpKSkKKyAgICAsIG1fY2xpZW50KGNsaWVudCkK
IHsKLSAgICBzZXRJc0RyYXdhYmxlKHRydWUpOworICAgIG1fd2ViTGF5ZXJJbXBsLT5sYXllcigp
LT5zZXRJc0RyYXdhYmxlKHRydWUpOwogfQogCiBXZWJDb250ZW50TGF5ZXJJbXBsOjp+V2ViQ29u
dGVudExheWVySW1wbCgpCiB7Ci0gICAgY2xlYXJEZWxlZ2F0ZSgpOworICAgIHN0YXRpY19jYXN0
PENvbnRlbnRMYXllckNocm9taXVtKj4obV93ZWJMYXllckltcGwtPmxheWVyKCkpLT5jbGVhckRl
bGVnYXRlKCk7CiB9CiAKK1dlYkxheWVyKiBXZWJDb250ZW50TGF5ZXJJbXBsOjpsYXllcigpCit7
CisgICAgcmV0dXJuIG1fd2ViTGF5ZXJJbXBsLmdldCgpOworfQorCit2b2lkIFdlYkNvbnRlbnRM
YXllckltcGw6OmNsZWFyQ2xpZW50KCkKK3sKKyAgICBtX2NsaWVudCA9IDA7Cit9CisKK3ZvaWQg
V2ViQ29udGVudExheWVySW1wbDo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKK3sK
KyAgICBtX3dlYkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0RG91YmxlU2lkZWQoZG91YmxlU2lkZWQp
OworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQg
c2NhbGUpCit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldENvbnRlbnRzU2NhbGUo
c2NhbGUpOworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldFVzZUxDRFRleHQoYm9v
bCBlbmFibGUpCit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldFVzZUxDRFRleHQo
ZW5hYmxlKTsKK30KKwordm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREcmF3Q2hlY2tlcmJv
YXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wgZW5hYmxlKQoreworICAgIG1fd2ViTGF5ZXJJbXBsLT5s
YXllcigpLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGVuYWJsZSk7Cit9CisK
Kwogdm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKFNrQ2FudmFzKiBjYW52
YXMsIGNvbnN0IEludFJlY3QmIGNsaXAsIEZsb2F0UmVjdCYgb3BhcXVlKQogewotICAgIGlmICgh
bV9jb250ZW50Q2xpZW50KQorICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKICAg
ICBXZWJGbG9hdFJlY3Qgd2ViT3BhcXVlOwotICAgIG1fY29udGVudENsaWVudC0+cGFpbnRDb250
ZW50cyhjYW52YXMsIFdlYlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7CisgICAgbV9jbGllbnQtPnBh
aW50Q29udGVudHMoY2FudmFzLCBXZWJSZWN0KGNsaXApLCB3ZWJPcGFxdWUpOwogICAgIG9wYXF1
ZSA9IHdlYk9wYXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQ29udGVudExheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVySW1wbC5oCmluZGV4IDk3NzI5ZWExZTBjMjAxYTA4YjFmOTA5MDdhNjI4Mjgx
YTRlMTBiNTkuLmYwMTZlMmQ2ZjgwN2FkZTE1MGRmYjhlNWQ4ZmQxNTJhNGU1OWJjM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKQEAg
LTI3LDIzICsyNywzNCBAQAogI2RlZmluZSBXZWJDb250ZW50TGF5ZXJJbXBsX2gKIAogI2luY2x1
ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisj
aW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50
OwogCi1jbGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVyRGVsZWdhdGUgeworY2xh
c3MgV2ViQ29udGVudExheWVySW1wbCA6IHB1YmxpYyBXZWJDb250ZW50TGF5ZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckRlbGVnYXRl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBj
cmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKKyAgICBleHBsaWNp
dCBXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRMYXllckNsaWVudCogY2xpZW50KTsKKwor
ICAgIC8vIFdlYkNvbnRlbnRMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxh
eWVyKiBsYXllcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjbGVhckNsaWVudCgpICBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9vbCkgIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KSAgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFVzZUxDRFRleHQoYm9vbCkgIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wpICBPVkVSUklE
RTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFdlYkNvbnRlbnRMYXllckltcGwoV2ViQ29u
dGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKICAgICB2aXJ0dWFsIH5XZWJDb250ZW50
TGF5ZXJJbXBsKCk7CiAKICAgICAvLyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSBpbXBsZW1lbnRhdGlv
bi4KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhTa0NhbnZhcyosIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNsaXAsIFdlYkNvcmU6OkZsb2F0UmVjdCYgb3BhcXVlKSBPVkVSUklERTsK
IAotICAgIFdlYkNvbnRlbnRMYXllckNsaWVudCogbV9jb250ZW50Q2xpZW50OworICAgIE93blB0
cjxXZWJMYXllckltcGw+IG1fd2ViTGF5ZXJJbXBsOworICAgIFdlYkNvbnRlbnRMYXllckNsaWVu
dCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX2RyYXdzQ29udGVudDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMWY4ZGRiZjZlOGU0MTgwMWE5NGUzNjcz
YWRhYWVjODkyMmM3Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KLQotI2lu
Y2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBk
YXRlUXVldWUuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGll
bnQuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8cHVibGlj
L1dlYlNpemUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJL
aXQgewotCi1jbGFzcyBXZWJUZXh0dXJlVXBkYXRlckltcGwgOiBwdWJsaWMgV2ViVGV4dHVyZVVw
ZGF0ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYlRleHR1cmVVcGRhdGVySW1wbChDQ1Rl
eHR1cmVVcGRhdGVRdWV1ZSYgcXVldWUpCi0gICAgICAgIDogbV9xdWV1ZShxdWV1ZSkKLSAgICB7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZENvcHkodW5zaWduZWQgc291cmNlVGV4
dHVyZSwgdW5zaWduZWQgZGVzdGluYXRpb25UZXh0dXJlLCBXZWJTaXplIHNpemUpIE9WRVJSSURF
Ci0gICAgewotICAgICAgICBUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzIGNvcHkgPSB7IHNvdXJj
ZVRleHR1cmUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgc2l6ZSB9OwotICAgICAgICBtX3F1ZXVlLmFw
cGVuZENvcHkoY29weSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIENDVGV4dHVyZVVwZGF0ZVF1
ZXVlJiBtX3F1ZXVlOwotfTsKLQotY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsIDog
cHVibGljIFRleHR1cmVMYXllckNocm9taXVtQ2xpZW50LCBwdWJsaWMgVGV4dHVyZUxheWVyQ2hy
b21pdW0gewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bChXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogY2xpZW50KQotICAgICAgICA6IFRleHR1
cmVMYXllckNocm9taXVtKGNsaWVudCA/IHRoaXMgOiAwKQotICAgICAgICAsIG1fY2xpZW50KGNs
aWVudCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVy
ZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgcXVldWUpIE9WRVJSSURFCi0gICAgewotICAgICAgICBX
ZWJUZXh0dXJlVXBkYXRlckltcGwgdXBkYXRlckltcGwocXVldWUpOwotICAgICAgICByZXR1cm4g
bV9jbGllbnQtPnByZXBhcmVUZXh0dXJlKHVwZGF0ZXJJbXBsKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSBPVkVSUklERQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5jb250ZXh0KCk7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBtX2NsaWVudDsKLX07Ci0KLVdl
YkV4dGVybmFsVGV4dHVyZUxheWVyIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKLXsKLSAgICBSZWZQdHI8VGV4dHVy
ZUxheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbChjbGllbnQpKTsKLSAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKLSAgICBy
ZXR1cm4gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIobGF5ZXIucmVsZWFzZSgpKTsKLX0KLQotdm9p
ZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y2xlYXJDbGllbnQoKQotewotICAgIHVud3JhcDxU
ZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+Y2xlYXJDbGllbnQoKTsKLX0KLQotdm9pZCBXZWJFeHRl
cm5hbFRleHR1cmVMYXllcjo6c2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQotewotICAgIHVud3Jh
cDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0VGV4dHVyZUlkKGlkKTsKLX0KLQotdm9pZCBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0RmxpcHBlZChib29sIGZsaXBwZWQpCi17Ci0gICAg
dW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT5zZXRGbGlwcGVkKGZsaXBwZWQpOwotfQot
Ci12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRS
ZWN0JiByZWN0KQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0VVZS
ZWN0KHJlY3QpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRPcGFxdWUo
Ym9vbCBvcGFxdWUpCi17Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT5zZXRP
cGFxdWUob3BhcXVlKTsKLX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0UHJl
bXVsdGlwbGllZEFscGhhKGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKQotewotICAgIHVud3JhcDxU
ZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0UHJlbXVsdGlwbGllZEFscGhhKHByZW11bHRpcGxp
ZWRBbHBoYSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OndpbGxNb2RpZnlU
ZXh0dXJlKCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPndpbGxNb2Rp
ZnlUZXh0dXJlKCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFJhdGVM
aW1pdENvbnRleHQoYm9vbCByYXRlTGltaXQpCi17Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNo
cm9taXVtPigpLT5zZXRSYXRlTGltaXRDb250ZXh0KHJhdGVMaW1pdCk7Ci19Ci0KLVdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcihQYXNzUmVmUHRyPFRleHR1
cmVMYXllckNocm9taXVtPiBsYXllcikKLSAgICA6IFdlYkxheWVyKGxheWVyKQotewotfQotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmNGNl
ZDNjNGVhNWNiNGNhM2E4OWIwMDJjMTMwNTVjZmRkOWI3MWYKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3Bw
CkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiVGV4dHVyZUxheWVy
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKyNpbmNsdWRlICJjYy9DQ1Rl
eHR1cmVVcGRhdGVRdWV1ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllckNsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViU2l6ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYkV4dGVybmFsVGV4dHVyZUxheWVyKiBXZWJFeHRlcm5hbFRleHR1
cmVMYXllcjo6Y3JlYXRlKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCit7
CisgICAgcmV0dXJuIG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoY2xpZW50KTsKK30K
KworV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGwoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fY2xpZW50
KGNsaWVudCkKK3sKKyAgICBSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGxheWVyOworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbGF5ZXIgPSBUZXh0dXJlTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKHRoaXMpOworICAgIGVsc2UKKyAgICAgICAgbGF5ZXIgPSBUZXh0dXJlTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKDApOworICAgIGxheWVyLT5zZXRJc0RyYXdhYmxlKHRydWUpOworICAgIG1fbGF5
ZXIgPSBhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyLnJlbGVhc2UoKSkpOworfQorCitX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwo
KQoreworfQorCitXZWJMYXllciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpsYXllcigp
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsOjpjbGVhckNsaWVudCgpCit7CisgICAgbV9jbGllbnQgPSAwOworICAgIHN0
YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPmNsZWFy
Q2xpZW50KCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRUZXh0
dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZUxheWVyQ2hyb21p
dW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0VGV4dHVyZUlkKGlkKTsKK30KKwordm9pZCBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQoreworICAg
IHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNl
dEZsaXBwZWQoZmxpcHBlZCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
OjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiByZWN0KQoreworICAgIHN0YXRpY19jYXN0
PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldFVWUmVjdChyZWN0
KTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldE9wYXF1ZShib29s
IG9wYXF1ZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5
ZXItPmxheWVyKCkpLT5zZXRPcGFxdWUob3BhcXVlKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OnNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRB
bHBoYSkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXIt
PmxheWVyKCkpLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKTsKK30K
Kwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OndpbGxNb2RpZnlUZXh0dXJlKCkK
K3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVy
KCkpLT53aWxsTW9kaWZ5VGV4dHVyZSgpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4dChib29sIHJhdGVMaW1pdCkKK3sKKyAgICBzdGF0
aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRSYXRl
TGltaXRDb250ZXh0KHJhdGVMaW1pdCk7Cit9CisKK2NsYXNzIFdlYlRleHR1cmVVcGRhdGVySW1w
bCA6IHB1YmxpYyBXZWJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2Vi
VGV4dHVyZVVwZGF0ZXJJbXBsKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKKyAgICAgICAg
OiBtX3F1ZXVlKHF1ZXVlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
Q29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25lZCBkZXN0aW5hdGlvblRleHR1cmUs
IFdlYlNpemUgc2l6ZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIFRleHR1cmVDb3BpZXI6OlBh
cmFtZXRlcnMgY29weSA9IHsgc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlLCBzaXpl
IH07CisgICAgICAgIG1fcXVldWUuYXBwZW5kQ29weShjb3B5KTsKKyAgICB9CisKK3ByaXZhdGU6
CisgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUmIG1fcXVldWU7Cit9OworCit1bnNpZ25lZCBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OnByZXBhcmVUZXh0dXJlKENDVGV4dHVyZVVwZGF0ZVF1
ZXVlJiBxdWV1ZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIFdlYlRleHR1cmVVcGRh
dGVySW1wbCB1cGRhdGVySW1wbChxdWV1ZSk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5wcmVwYXJl
VGV4dHVyZSh1cGRhdGVySW1wbCk7Cit9CisKK1dlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGw6OmNvbnRleHQoKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7
CisgICAgcmV0dXJuIG1fY2xpZW50LT5jb250ZXh0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mOWUwM2MwMWRkMmI1NTc3ZjAxOTc1ZjZm
NTA5MDFiOTU2NWJlNDNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw2NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKyNkZWZpbmUgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5oPgorI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTGF5
ZXJDaHJvbWl1bUNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpOworICAg
IHZpcnR1YWwgfldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCgpOworCisgICAgLy8gV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJMYXllciog
bGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDbGllbnQoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RmxpcHBlZChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFByZW11
bHRpcGxpZWRBbHBoYShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vZGlm
eVRleHR1cmUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4
dChib29sKSBPVkVSUklERTsKKworICAgIC8vIFRleHR1cmVMYXllckNocm9taXVtQ2xpZW50IGlt
cGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoV2ViQ29y
ZTo6Q0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdl
YkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIG1fY2xpZW50OworICAgIE93blB0cjxXZWJM
YXllckltcGw+IG1fbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGxfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJT1N1cmZhY2VMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1
cmZhY2VMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3ZGIwYzg3Nzc3
ZmZiNDVmYzgzYmM5OTBkNWVkZjkyNTRmYjg1MTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJm
YWNlTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaD4KLQot
I2luY2x1ZGUgIklPU3VyZmFjZUxheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
U2l6ZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLVdlYklPU3VyZmFjZUxheWVyIFdlYklPU3VyZmFjZUxheWVyOjpjcmVhdGUoKQotewotICAg
IFJlZlB0cjxJT1N1cmZhY2VMYXllckNocm9taXVtPiBsYXllciA9IElPU3VyZmFjZUxheWVyQ2hy
b21pdW06OmNyZWF0ZSgpOwotICAgIGxheWVyLT5zZXRJc0RyYXdhYmxlKHRydWUpOwotICAgIHJl
dHVybiBXZWJJT1N1cmZhY2VMYXllcihsYXllci5yZWxlYXNlKCkpOwotfQotCi12b2lkIFdlYklP
U3VyZmFjZUxheWVyOjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlk
LCBXZWJTaXplIHNpemUpCi17Ci0gICAgdW53cmFwPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+KCkt
PnNldElPU3VyZmFjZVByb3BlcnRpZXMoaW9TdXJmYWNlSWQsIHNpemUpOwotfQotCi1XZWJJT1N1
cmZhY2VMYXllcjo6V2ViSU9TdXJmYWNlTGF5ZXIoUGFzc1JlZlB0cjxJT1N1cmZhY2VMYXllckNo
cm9taXVtPiBsYXllcikKLSAgICA6IFdlYkxheWVyKGxheWVyKQotewotfQotCi19IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklP
U3VyZmFjZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1
cmZhY2VMYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhYjcwYzYxZDhiNDE3NDQyMmQ3ZmM1MzU0
MzI5Zjg5MWU5MDhiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgiCisK
KyNpbmNsdWRlICJJT1N1cmZhY2VMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJ
bXBsLmgiCisKK3VzaW5nIFdlYkNvcmU6OklPU3VyZmFjZUxheWVyQ2hyb21pdW07CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJJT1N1cmZhY2VMYXllciogV2ViSU9TdXJmYWNlTGF5ZXI6OmNy
ZWF0ZSgpCit7CisgICAgUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyID0gSU9T
dXJmYWNlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CisgICAgbGF5ZXItPnNldElzRHJhd2FibGUo
dHJ1ZSk7CisgICAgcmV0dXJuIG5ldyBXZWJJT1N1cmZhY2VMYXllckltcGwobGF5ZXIucmVsZWFz
ZSgpKTsKK30KKworV2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpXZWJJT1N1cmZhY2VMYXllckltcGwo
UGFzc1JlZlB0cjxJT1N1cmZhY2VMYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIo
YWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllcikpKQoreworfQorCitXZWJJT1N1cmZhY2VM
YXllckltcGw6On5XZWJJT1N1cmZhY2VMYXllckltcGwoKQoreworfQorCit2b2lkIFdlYklPU3Vy
ZmFjZUxheWVySW1wbDo6c2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJ
ZCwgV2ViU2l6ZSBzaXplKQoreworICAgIHN0YXRpY19jYXN0PElPU3VyZmFjZUxheWVyQ2hyb21p
dW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyhpb1N1cmZhY2VJ
ZCwgc2l6ZSk7Cit9CisKK1dlYkxheWVyKiBXZWJJT1N1cmZhY2VMYXllckltcGw6OmxheWVyKCkK
K3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXll
ckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1w
bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjljYWQ4YTI0Yjk2N2Q1Zjc2NjFmYTAyZjFjOTZjYTkzZTI5NTYyMzEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZh
Y2VMYXllckltcGwuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJT1N1cmZh
Y2VMYXllckltcGxfaAorI2RlZmluZSBXZWJJT1N1cmZhY2VMYXllckltcGxfaAorCisjaW5jbHVk
ZSA8cHVibGljL1dlYklPU3VyZmFjZUxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBJT1N1cmZhY2VMYXllckNocm9taXVtOworfQor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsIDogcHVi
bGljIFdlYklPU3VyZmFjZUxheWVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJJT1N1cmZh
Y2VMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJT1N1cmZhY2VMYXllckNocm9taXVtPiBs
YXllcik7CisgICAgdmlydHVhbCB+V2ViSU9TdXJmYWNlTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBX
ZWJJT1N1cmZhY2VMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBs
YXllcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVz
KHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAg
ICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX2xheWVyOworfTsKKworfQorCisjZW5kaWYgLy8gV2Vi
SU9TdXJmYWNlTGF5ZXJJbXBsX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW1hZ2VMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bWFnZUxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc2MTUxNTMwZDEw
NzU3ZDJjZDQ0YTc4MDMwYTk2OWY1NmUyNDA2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxh
eWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkltYWdlTGF5ZXIuaD4KLQotI2luY2x1ZGUg
IkltYWdlTGF5ZXJDaHJvbWl1bS5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSW1hZ2VM
YXllciBXZWJJbWFnZUxheWVyOjpjcmVhdGUoKQotewotICAgIHJldHVybiBXZWJJbWFnZUxheWVy
KFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwotfQotCi1XZWJJbWFnZUxh
eWVyOjpXZWJJbWFnZUxheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVt
PiBsYXllcikKLSAgICA6IFdlYkxheWVyKGxheWVyKQotewotfQotCi12b2lkIFdlYkltYWdlTGF5
ZXI6OnNldEJpdG1hcChTa0JpdG1hcCBiaXRtYXApCi17Ci0gICAgdW53cmFwPFdlYkNvcmU6Oklt
YWdlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0Qml0bWFwKGJpdG1hcCk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1h
Z2VMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXll
ckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5M2FmODA0NWEyNmY2OGU4MjZkMDBjYWQ0ZDkyNzY1ZTkx
ZTlkYzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
bWFnZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJXZWJJbWFnZUxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiSW1hZ2VM
YXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisKK3VzaW5nIFdlYkNv
cmU6OkltYWdlTGF5ZXJDaHJvbWl1bTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkltYWdl
TGF5ZXIqIFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJJbWFn
ZUxheWVySW1wbChXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKK30KKwor
V2ViSW1hZ2VMYXllckltcGw6OldlYkltYWdlTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6
SW1hZ2VMYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIoYWRvcHRQdHIobmV3IFdl
YkxheWVySW1wbChsYXllcikpKQoreworfQorCitXZWJJbWFnZUxheWVySW1wbDo6fldlYkltYWdl
TGF5ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYkltYWdlTGF5ZXJJbXBsOjpsYXllcigp
Cit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViSW1hZ2VMYXllcklt
cGw6OnNldEJpdG1hcChTa0JpdG1hcCBiaXRtYXApCit7CisgICAgc3RhdGljX2Nhc3Q8SW1hZ2VM
YXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldEJpdG1hcChiaXRtYXApOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbWFnZUxheWVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNGI4YjNlYjBmZjkyMjkyYjlkOTBlZWQx
YmQ1NDI3YmI4NDRmMjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbWFnZUxheWVySW1wbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYkltYWdlTGF5ZXJJbXBsX2gKKyNkZWZpbmUgV2ViSW1hZ2VMYXllckltcGxfaAorCisjaW5j
bHVkZSA8cHVibGljL1dlYkltYWdlTGF5ZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEltYWdlTGF5ZXJDaHJvbWl1bTsKK30KKworbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYkltYWdlTGF5
ZXJJbXBsIDogcHVibGljIFdlYkltYWdlTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdl
YkltYWdlTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtPik7
CisgICAgdmlydHVhbCB+V2ViSW1hZ2VMYXllckltcGwoKTsKKworICAgIC8vIFdlYkltYWdlTGF5
ZXIgaW1wbGVtZW50YXRpb24uCisgICAgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldEJpdG1hcChTa0JpdG1hcCkgT1ZFUlJJREU7CisKK3ByaXZhdGU6Cisg
ICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdl
YkltYWdlTGF5ZXJJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4NGI4NzNhMDk3NmQzMTM2OGM0Yzc2Zjc1
MmFhOWQyNGIxZGQxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0MDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
IDxwdWJsaWMvV2ViTGF5ZXIuaD4KLQotI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKLSNpbmNs
dWRlICJTa01hdHJpeDQ0LmgiCi0jaW5jbHVkZSAiV2ViQW5pbWF0aW9uSW1wbC5oIgotI2luY2x1
ZGUgIldlYkxheWVySW1wbC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb25z
Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KLSNpbmNsdWRlIDxwdWJsaWMv
V2ViRmxvYXRSZWN0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci11c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwotCi1uYW1lc3BhY2Ug
ewotCi1XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Ta01h
dHJpeDQ0KGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKLXsKLSAgICBkb3VibGUgZGF0YVsxNl07
Ci0gICAgbWF0cml4LmFzQ29sTWFqb3JkKGRhdGEpOwotICAgIHJldHVybiBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeChkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdLCBkYXRhWzNdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWzRdLCBkYXRhWzVdLCBkYXRhWzZdLCBkYXRh
WzddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWzhdLCBkYXRhWzld
LCBkYXRhWzEwXSwgZGF0YVsxMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFbMTJdLCBkYXRhWzEzXSwgZGF0YVsxNF0sIGRhdGFbMTVdKTsKLX0KLQotU2tNYXRyaXg0
NCBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9uTWF0cml4KGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiBtYXRyaXgpCi17Ci0gICAgU2tNYXRyaXg0NCBza01hdHJpeDsKLSAgICBza01h
dHJpeC5zZXQoMCwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMSgpKSk7Ci0gICAgc2tN
YXRyaXguc2V0KDEsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTIoKSkpOwotICAgIHNr
TWF0cml4LnNldCgyLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTEzKCkpKTsKLSAgICBz
a01hdHJpeC5zZXQoMywgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xNCgpKSk7Ci0gICAg
c2tNYXRyaXguc2V0KDAsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjEoKSkpOwotICAg
IHNrTWF0cml4LnNldCgxLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIyKCkpKTsKLSAg
ICBza01hdHJpeC5zZXQoMiwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMygpKSk7Ci0g
ICAgc2tNYXRyaXguc2V0KDMsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjQoKSkpOwot
ICAgIHNrTWF0cml4LnNldCgwLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMxKCkpKTsK
LSAgICBza01hdHJpeC5zZXQoMSwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMigpKSk7
Ci0gICAgc2tNYXRyaXguc2V0KDIsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzMoKSkp
OwotICAgIHNrTWF0cml4LnNldCgzLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTM0KCkp
KTsKLSAgICBza01hdHJpeC5zZXQoMCwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MSgp
KSk7Ci0gICAgc2tNYXRyaXguc2V0KDEsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDIo
KSkpOwotICAgIHNrTWF0cml4LnNldCgyLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQz
KCkpKTsKLSAgICBza01hdHJpeC5zZXQoMywgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00
NCgpKSk7Ci0gICAgcmV0dXJuIHNrTWF0cml4OwotfQotCi19IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkxheWVyIFdlYkxheWVyOjpjcmVhdGUoKQot
ewotICAgIHJldHVybiBXZWJMYXllcihXZWJMYXllckltcGw6OmNyZWF0ZSgpKTsKLX0KLQotdm9p
ZCBXZWJMYXllcjo6cmVzZXQoKQotewotICAgIG1fcHJpdmF0ZS5yZXNldCgpOwotfQotCi12b2lk
IFdlYkxheWVyOjphc3NpZ24oY29uc3QgV2ViTGF5ZXImIG90aGVyKQotewotICAgIG1fcHJpdmF0
ZSA9IG90aGVyLm1fcHJpdmF0ZTsKLX0KLQotYm9vbCBXZWJMYXllcjo6ZXF1YWxzKGNvbnN0IFdl
YkxheWVyJiBuKSBjb25zdAotewotICAgIHJldHVybiAobV9wcml2YXRlLmdldCgpID09IG4ubV9w
cml2YXRlLmdldCgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6aW52YWxpZGF0ZVJlY3QoY29uc3Qg
V2ViRmxvYXRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAgbV9wcml2YXRlLT5zZXROZWVkc0Rpc3Bs
YXlSZWN0KGRpcnR5UmVjdCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmludmFsaWRhdGUoKQotewot
ICAgIG1fcHJpdmF0ZS0+c2V0TmVlZHNEaXNwbGF5KCk7Ci19Ci0KLVdlYkxheWVyIFdlYkxheWVy
Ojpyb290TGF5ZXIoKSBjb25zdAotewotICAgIHJldHVybiBXZWJMYXllcihjb25zdF9jYXN0PExh
eWVyQ2hyb21pdW0qPihtX3ByaXZhdGUtPnJvb3RMYXllcigpKSk7Ci19Ci0KLVdlYkxheWVyIFdl
YkxheWVyOjpwYXJlbnQoKSBjb25zdAotewotICAgIHJldHVybiBXZWJMYXllcihjb25zdF9jYXN0
PExheWVyQ2hyb21pdW0qPihtX3ByaXZhdGUtPnBhcmVudCgpKSk7Ci19Ci0KLXNpemVfdCBXZWJM
YXllcjo6bnVtYmVyT2ZDaGlsZHJlbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
Y2hpbGRyZW4oKS5zaXplKCk7Ci19Ci0KLVdlYkxheWVyIFdlYkxheWVyOjpjaGlsZEF0KHNpemVf
dCBpbmRleCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViTGF5ZXIobV9wcml2YXRlLT5jaGlsZHJl
bigpW2luZGV4XSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmFkZENoaWxkKGNvbnN0IFdlYkxheWVy
JiBjaGlsZCkKLXsKLSAgICBtX3ByaXZhdGUtPmFkZENoaWxkKGNoaWxkKTsKLX0KLQotdm9pZCBX
ZWJMYXllcjo6aW5zZXJ0Q2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkLCBzaXplX3QgaW5kZXgp
Ci17Ci0gICAgbV9wcml2YXRlLT5pbnNlcnRDaGlsZChjaGlsZCwgaW5kZXgpOwotfQotCi12b2lk
IFdlYkxheWVyOjpyZXBsYWNlQ2hpbGQoY29uc3QgV2ViTGF5ZXImIHJlZmVyZW5jZSwgY29uc3Qg
V2ViTGF5ZXImIG5ld0xheWVyKQotewotICAgIFdlYkxheWVyIHJlZiA9IHJlZmVyZW5jZTsKLSAg
ICBtX3ByaXZhdGUtPnJlcGxhY2VDaGlsZChyZWYudW53cmFwPExheWVyQ2hyb21pdW0+KCksIG5l
d0xheWVyKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9y
PFdlYkxheWVyPiYgd2ViQ2hpbGRyZW4pCi17Ci0gICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGNoaWxkcmVuKHdlYkNoaWxkcmVuLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB3ZWJDaGlsZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgY2hpbGRyZW5baV0gPSB3
ZWJDaGlsZHJlbltpXS51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKTsKLSAgICBtX3ByaXZhdGUtPnNl
dENoaWxkcmVuKGNoaWxkcmVuKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3ZlRnJvbVBhcmVu
dCgpCi17Ci0gICAgbV9wcml2YXRlLT5yZW1vdmVGcm9tUGFyZW50KCk7Ci19Ci0KLXZvaWQgV2Vi
TGF5ZXI6OnJlbW92ZUFsbENoaWxkcmVuKCkKLXsKLSAgICBtX3ByaXZhdGUtPnJlbW92ZUFsbENo
aWxkcmVuKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZs
b2F0UG9pbnQmIGFuY2hvclBvaW50KQotewotICAgIG1fcHJpdmF0ZS0+c2V0QW5jaG9yUG9pbnQo
YW5jaG9yUG9pbnQpOwotfQotCi1XZWJGbG9hdFBvaW50IFdlYkxheWVyOjphbmNob3JQb2ludCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkZsb2F0UG9pbnQobV9wcml2YXRlLT5hbmNob3JQb2lu
dCgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBv
aW50WikKLXsKLSAgICBtX3ByaXZhdGUtPnNldEFuY2hvclBvaW50WihhbmNob3JQb2ludFopOwot
fQotCi1mbG9hdCBXZWJMYXllcjo6YW5jaG9yUG9pbnRaKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5hbmNob3JQb2ludFooKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0Qm91bmRz
KGNvbnN0IFdlYlNpemUmIHNpemUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRCb3VuZHMoc2l6ZSk7
Ci19Ci0KLVdlYlNpemUgV2ViTGF5ZXI6OmJvdW5kcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdl
YlNpemUobV9wcml2YXRlLT5ib3VuZHMoKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldE1hc2tz
VG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQotewotICAgIG1fcHJpdmF0ZS0+c2V0TWFza3NU
b0JvdW5kcyhtYXNrc1RvQm91bmRzKTsKLX0KLQotYm9vbCBXZWJMYXllcjo6bWFza3NUb0JvdW5k
cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWFza3NUb0JvdW5kcygpOwotfQot
Ci12b2lkIFdlYkxheWVyOjpzZXRNYXNrTGF5ZXIoY29uc3QgV2ViTGF5ZXImIG1hc2tMYXllcikK
LXsKLSAgICBXZWJMYXllciByZWYgPSBtYXNrTGF5ZXI7Ci0gICAgbV9wcml2YXRlLT5zZXRNYXNr
TGF5ZXIocmVmLnVud3JhcDxMYXllckNocm9taXVtPigpKTsKLX0KLQotV2ViTGF5ZXIgV2ViTGF5
ZXI6Om1hc2tMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkxheWVyKG1fcHJpdmF0ZS0+
bWFza0xheWVyKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRSZXBsaWNhTGF5ZXIoY29uc3Qg
V2ViTGF5ZXImIHJlcGxpY2FMYXllcikKLXsKLSAgICBXZWJMYXllciByZWYgPSByZXBsaWNhTGF5
ZXI7Ci0gICAgbV9wcml2YXRlLT5zZXRSZXBsaWNhTGF5ZXIocmVmLnVud3JhcDxMYXllckNocm9t
aXVtPigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQot
ewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhY2l0eShvcGFjaXR5KTsKLX0KLQotZmxvYXQgV2ViTGF5
ZXI6Om9wYWNpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPm9wYWNpdHkoKTsK
LX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAgIG1fcHJp
dmF0ZS0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Om9wYXF1ZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+b3BhcXVlKCk7Ci19Ci0KLXZvaWQgV2ViTGF5
ZXI6OnNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9uKQotewotICAgIG1f
cHJpdmF0ZS0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwotfQotCi1XZWJGbG9hdFBvaW50IFdlYkxh
eWVyOjpwb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkZsb2F0UG9pbnQobV9wcml2
YXRlLT5wb3NpdGlvbigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zv
cm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0U3VibGF5
ZXJUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRyaXgpKTsK
LX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFN1YmxheWVyVHJh
bnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnN1YmxheWVyVHJhbnNm
b3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1h
dHJpeChtX3ByaXZhdGUtPnN1YmxheWVyVHJhbnNmb3JtKCkpOwotfQotCi12b2lkIFdlYkxheWVy
OjpzZXRUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0
ZS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQobWF0cml4
KSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VHJhbnNmb3JtKG1hdHJp
eCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgobV9wcml2YXRlLT50cmFu
c2Zvcm0oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERyYXdzQ29udGVudChib29sIGRyYXdz
Q29udGVudCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzRHJhd2FibGUoZHJhd3NDb250ZW50KTsK
LX0KLQotYm9vbCBXZWJMYXllcjo6ZHJhd3NDb250ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5kcmF3c0NvbnRlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0UHJlc2Vy
dmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQotewotICAgIG1fcHJpdmF0ZS0+c2V0UHJlc2VydmVzM0Qo
cHJlc2VydmUzRCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFVzZVBhcmVudEJhY2tmYWNlVmlz
aWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkKLXsKLSAgICBtX3ByaXZh
dGUtPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh1c2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3Ig
Y29sb3IpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotfQot
Ci12b2lkIFdlYkxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotfQotCi12b2lk
IFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVy
cyk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyQ29sb3IoY29uc3QgV2ViQ29s
b3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdCb3JkZXJDb2xvcihjb2xvcik7
Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpCi17
Ci0gICAgbV9wcml2YXRlLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKLX0KLQotdm9pZCBX
ZWJMYXllcjo6c2V0RGVidWdOYW1lKFdlYlN0cmluZyBuYW1lKQotewotICAgIG1fcHJpdmF0ZS0+
c2V0RGVidWdOYW1lKG5hbWUpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmltYXRpb25EZWxl
Z2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAgbV9wcml2YXRlLT5z
ZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKGRlbGVnYXRlKTsKLX0KLQotYm9vbCBXZWJMYXllcjo6
YWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQotewotICAgIHJldHVybiBtX3By
aXZhdGUtPmFkZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25JbXBsKj4oYW5pbWF0
aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVB
bmltYXRpb24oaW50IGFuaW1hdGlvbklkKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlQW5pbWF0
aW9uKGFuaW1hdGlvbklkKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3ZlQW5pbWF0aW9uKGlu
dCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0
eSkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5yZW1vdmVB
bmltYXRpb24oYW5pbWF0aW9uSWQsIHN0YXRpY19jYXN0PENDQWN0aXZlQW5pbWF0aW9uOjpUYXJn
ZXRQcm9wZXJ0eT4odGFyZ2V0UHJvcGVydHkpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cGF1c2VB
bmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAgICBtX3By
aXZhdGUtPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0KTsKLX0KLQotdm9p
ZCBXZWJMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCi17Ci0g
ICAgbV9wcml2YXRlLT5zdXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKLX0KLQotdm9p
ZCBXZWJMYXllcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKLXsKLSAg
ICBtX3ByaXZhdGUtPnJlc3VtZUFuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7Ci19Ci0KLWJvb2wg
V2ViTGF5ZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbigpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnRyYW5zZmVyQW5pbWF0
aW9uc1RvKFdlYkxheWVyKiBvdGhlcikKLXsKLSAgICBBU1NFUlQob3RoZXIpOwotICAgIGlmIChv
dGhlcikKLSAgICAgICAgb3RoZXItPm1fcHJpdmF0ZS0+c2V0TGF5ZXJBbmltYXRpb25Db250cm9s
bGVyKG1fcHJpdmF0ZS0+cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6c2V0QWx3YXlzUmVzZXJ2ZVRleHR1cmVzKGJvb2wgcmVzZXJ2ZSkKLXsK
LSAgICBtX3ByaXZhdGUtPnNldEFsd2F5c1Jlc2VydmVUZXh0dXJlcyhyZXNlcnZlKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJm
YWNlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGZvcmNlUmVuZGVy
U3VyZmFjZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmNsZWFyUmVuZGVyU3VyZmFjZSgpCi17Ci0g
ICAgbV9wcml2YXRlLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKLX0KLQotV2ViTGF5ZXI6OldlYkxh
eWVyKGNvbnN0IFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBtX3ByaXZh
dGUobm9kZSkKLXsKLX0KLQotV2ViTGF5ZXImIFdlYkxheWVyOjpvcGVyYXRvcj0oY29uc3QgUGFz
c1JlZlB0cjxMYXllckNocm9taXVtPiYgbm9kZSkKLXsKLSAgICBtX3ByaXZhdGUgPSBub2RlOwot
ICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVySW1wbC5jcHAKaW5kZXggMTZlMTIwNmNhMzM1YzNlOTgxNGRlYmVjYjRlZDhiYjJiMDJlYjc3
Ny4uYTJjNThlM2E1MDdkODI4Nzk0ZGJmMjM1ZjM3OTVkYzQ5MTcwMDg4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCkBAIC0yNiwyNSArMjYsNDAyIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRl
ICJTa01hdHJpeDQ0LmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uSW1wbC5oIgorI2luY2x1ZGUg
ImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KKwor
dXNpbmcgV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRpb247Cit1c2luZyBXZWJDb3JlOjpMYXllckNo
cm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJMYXllckltcGw+
IFdlYkxheWVySW1wbDo6Y3JlYXRlKCkKK25hbWVzcGFjZSB7CisKK1dlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0
NCYgbWF0cml4KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViTGF5ZXJJbXBsKCkpOwor
ICAgIGRvdWJsZSBkYXRhWzE2XTsKKyAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7CisgICAg
cmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0s
IGRhdGFbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRh
dGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsx
NV0pOwogfQogCi1XZWJMYXllckltcGw6OldlYkxheWVySW1wbCgpCi0gICAgOiBMYXllckNocm9t
aXVtKCkKK1NrTWF0cml4NDQgc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQoreworICAgIFNrTWF0cml4NDQgc2tN
YXRyaXg7CisgICAgc2tNYXRyaXguc2V0KDAsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5t
MTEoKSkpOworICAgIHNrTWF0cml4LnNldCgxLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgu
bTEyKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMiwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4
Lm0xMygpKSk7CisgICAgc2tNYXRyaXguc2V0KDMsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJp
eC5tMTQoKSkpOworICAgIHNrTWF0cml4LnNldCgwLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRy
aXgubTIxKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMSwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0
cml4Lm0yMigpKSk7CisgICAgc2tNYXRyaXguc2V0KDIsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1h
dHJpeC5tMjMoKSkpOworICAgIHNrTWF0cml4LnNldCgzLCAxLCBTa0RvdWJsZVRvTVNjYWxhciht
YXRyaXgubTI0KCkpKTsKKyAgICBza01hdHJpeC5zZXQoMCwgMiwgU2tEb3VibGVUb01TY2FsYXIo
bWF0cml4Lm0zMSgpKSk7CisgICAgc2tNYXRyaXguc2V0KDEsIDIsIFNrRG91YmxlVG9NU2NhbGFy
KG1hdHJpeC5tMzIoKSkpOworICAgIHNrTWF0cml4LnNldCgyLCAyLCBTa0RvdWJsZVRvTVNjYWxh
cihtYXRyaXgubTMzKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMywgMiwgU2tEb3VibGVUb01TY2Fs
YXIobWF0cml4Lm0zNCgpKSk7CisgICAgc2tNYXRyaXguc2V0KDAsIDMsIFNrRG91YmxlVG9NU2Nh
bGFyKG1hdHJpeC5tNDEoKSkpOworICAgIHNrTWF0cml4LnNldCgxLCAzLCBTa0RvdWJsZVRvTVNj
YWxhcihtYXRyaXgubTQyKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMiwgMywgU2tEb3VibGVUb01T
Y2FsYXIobWF0cml4Lm00MygpKSk7CisgICAgc2tNYXRyaXguc2V0KDMsIDMsIFNrRG91YmxlVG9N
U2NhbGFyKG1hdHJpeC5tNDQoKSkpOworICAgIHJldHVybiBza01hdHJpeDsKK30KKworfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCisKKworV2ViTGF5ZXIqIFdlYkxheWVyOjpjcmVhdGUoKQorewor
ICAgIHJldHVybiBuZXcgV2ViTGF5ZXJJbXBsKExheWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKK30K
KworV2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBs
YXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCiB7Ci0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhp
cyBsYXllciBkb2VzIG5vdCBkcmF3IGNvbnRlbnQuIFRoaXMgd2F5IHdlIGRvbid0IGhhdmUgdG8g
b3ZlcnJpZGUKLSAgICAvLyB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvZiBkcmF3c0Nv
bnRlbnQoKS4KLSAgICBBU1NFUlQoIWRyYXdzQ29udGVudCgpKTsKIH0KIAogV2ViTGF5ZXJJbXBs
Ojp+V2ViTGF5ZXJJbXBsKCkKIHsKIH0KIAordm9pZCBXZWJMYXllckltcGw6OmludmFsaWRhdGVS
ZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBtX2xheWVyLT5zZXROZWVkc0Rp
c3BsYXlSZWN0KHJlY3QpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW52YWxpZGF0ZSgpCit7
CisgICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK1dlYkxheWVyKiBXZWJMYXll
ckltcGw6OnBhcmVudCgpIGNvbnN0Cit7CisgICAgTGF5ZXJDaHJvbWl1bSogcGFyZW50TGF5ZXJD
aHJvbWl1bSA9IG1fbGF5ZXItPnBhcmVudCgpOworICAgIGlmICghcGFyZW50TGF5ZXJDaHJvbWl1
bSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG5ldyBXZWJMYXllckltcGwobV9sYXll
ci0+cGFyZW50KCkpOworfQorCitzaXplX3QgV2ViTGF5ZXJJbXBsOjpudW1iZXJPZkNoaWxkcmVu
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7Cit9CisK
K1dlYkxheWVyKiBXZWJMYXllckltcGw6OmNoaWxkQXQoc2l6ZV90IGluZGV4KSBjb25zdAorewor
ICAgIHJldHVybiBuZXcgV2ViTGF5ZXJJbXBsKG1fbGF5ZXItPmNoaWxkcmVuKClbaW5kZXhdKTsK
K30KKwordm9pZCBXZWJMYXllckltcGw6OmFkZENoaWxkKFdlYkxheWVyKiBjaGlsZCkKK3sKKyAg
ICBtX2xheWVyLT5hZGRDaGlsZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihjaGlsZCktPmxh
eWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW5zZXJ0Q2hpbGQoV2ViTGF5ZXIqIGNo
aWxkLCBzaXplX3QgaW5kZXgpCit7CisgICAgbV9sYXllci0+aW5zZXJ0Q2hpbGQoc3RhdGljX2Nh
c3Q8V2ViTGF5ZXJJbXBsKj4oY2hpbGQpLT5sYXllcigpLCBpbmRleCk7Cit9CisKK3ZvaWQgV2Vi
TGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQoV2ViTGF5ZXIqIHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5l
d0xheWVyKQoreworICAgIG1fbGF5ZXItPnJlcGxhY2VDaGlsZChzdGF0aWNfY2FzdDxXZWJMYXll
ckltcGwqPihyZWZlcmVuY2UpLT5sYXllcigpLCBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihu
ZXdMYXllciktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Q2hpbGRyZW4o
Y29uc3QgV2ViVmVjdG9yPFdlYkxheWVyKj4mIHdlYkNoaWxkcmVuKQoreworICAgIFZlY3RvcjxS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBjaGlsZHJlbih3ZWJDaGlsZHJlbi5zaXplKCkpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAg
IGNoaWxkcmVuW2ldID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4od2ViQ2hpbGRyZW5baV0p
LT5sYXllcigpOworICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKK30KKwordm9p
ZCBXZWJMYXllckltcGw6OnJlbW92ZUZyb21QYXJlbnQoKQoreworICAgIG1fbGF5ZXItPnJlbW92
ZUZyb21QYXJlbnQoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFsbENoaWxkcmVu
KCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQp
Cit7CisgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQpOworfQorCitXZWJG
bG9hdFBvaW50IFdlYkxheWVySW1wbDo6YW5jaG9yUG9pbnQoKSBjb25zdAoreworICAgIHJldHVy
biBXZWJGbG9hdFBvaW50KG1fbGF5ZXItPmFuY2hvclBvaW50KCkpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikKK3sKKyAgICBtX2xh
eWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yUG9pbnRaKTsKK30KKworZmxvYXQgV2ViTGF5ZXJJ
bXBsOjphbmNob3JQb2ludFooKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5hbmNob3JQ
b2ludFooKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEJvdW5kcyhjb25zdCBXZWJTaXpl
JiBzaXplKQoreworICAgIG1fbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKK30KKworV2ViU2l6ZSBX
ZWJMYXllckltcGw6OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNpemUobV9sYXll
ci0+Ym91bmRzKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyhi
b29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtYXNr
c1RvQm91bmRzKTsKK30KKworYm9vbCBXZWJMYXllckltcGw6Om1hc2tzVG9Cb3VuZHMoKSBjb25z
dAoreworICAgIHJldHVybiBtX2xheWVyLT5tYXNrc1RvQm91bmRzKCk7Cit9CisKK3ZvaWQgV2Vi
TGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqIG1hc2tMYXllcikKK3sKKyAgICBtX2xh
eWVyLT5zZXRNYXNrTGF5ZXIobWFza0xheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4o
bWFza0xheWVyKS0+bGF5ZXIoKSA6IDApOworfQorCitXZWJMYXllciogV2ViTGF5ZXJJbXBsOjpt
YXNrTGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBuZXcgV2ViTGF5ZXJJbXBsKG1fbGF5ZXIt
Pm1hc2tMYXllcigpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFJlcGxpY2FMYXllcihX
ZWJMYXllciogcmVwbGljYUxheWVyKQoreworICAgIG1fbGF5ZXItPnNldFJlcGxpY2FMYXllcihy
ZXBsaWNhTGF5ZXIgPyBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihyZXBsaWNhTGF5ZXIpLT5s
YXllcigpIDogMCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KGZsb2F0IG9w
YWNpdHkpCit7CisgICAgbV9sYXllci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKK30KKworZmxvYXQg
V2ViTGF5ZXJJbXBsOjpvcGFjaXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci0+b3Bh
Y2l0eSgpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQor
eworICAgIG1fbGF5ZXItPnNldE9wYXF1ZShvcGFxdWUpOworfQorCitib29sIFdlYkxheWVySW1w
bDo6b3BhcXVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci0+b3BhcXVlKCk7Cit9CisK
K3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50JiBwb3Np
dGlvbikKK3sKKyAgICBtX2xheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7Cit9CisKK1dlYkZs
b2F0UG9pbnQgV2ViTGF5ZXJJbXBsOjpwb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdl
YkZsb2F0UG9pbnQobV9sYXllci0+cG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBs
OjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0JiBtYXRyaXgpCit7CisgICAg
bV9sYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tN
YXRyaXg0NChtYXRyaXgpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFN1YmxheWVyVHJh
bnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgbV9s
YXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obWF0cml4KTsKK30KKworU2tNYXRyaXg0NCBXZWJM
YXllckltcGw6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2tNYXRy
aXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xheWVyLT5zdWJsYXllclRyYW5zZm9ybSgp
KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0
JiBtYXRyaXgpCit7CisgICAgbV9sYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9uTWF0
cml4RnJvbVNrTWF0cml4NDQobWF0cml4KSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRU
cmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBt
X2xheWVyLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKK30KKworU2tNYXRyaXg0NCBXZWJMYXllcklt
cGw6OnRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNm
b3JtYXRpb25NYXRyaXgobV9sYXllci0+dHJhbnNmb3JtKCkpOworfQorCit2b2lkIFdlYkxheWVy
SW1wbDo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQoreworICAgIG1fbGF5ZXIt
PnNldElzRHJhd2FibGUoZHJhd3NDb250ZW50KTsKK30KKworYm9vbCBXZWJMYXllckltcGw6OmRy
YXdzQ29udGVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmRyYXdzQ29udGVudCgp
OworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNE
KQoreworICAgIG1fbGF5ZXItPnNldFByZXNlcnZlczNEKHByZXNlcnZlM0QpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdXNlUGFy
ZW50QmFja2ZhY2VWaXNpYmlsaXR5KQoreworICAgIG1fbGF5ZXItPnNldFVzZVBhcmVudEJhY2tm
YWNlVmlzaWJpbGl0eSh1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOworfQorCit2b2lkIFdl
YkxheWVySW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yIGNvbG9yKQoreworICAgIG1f
bGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihjb2xvcik7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBs
OjpzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAg
bV9sYXllci0+c2V0RmlsdGVycyhmaWx0ZXJzKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNl
dEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7
CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVycyk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjpzZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJiBjb2xvcikK
K3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9yKGNvbG9yKTsKK30KKwordm9pZCBX
ZWJMYXllckltcGw6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpCit7CisgICAgbV9s
YXllci0+c2V0RGVidWdCb3JkZXJXaWR0aCh3aWR0aCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBs
OjpzZXREZWJ1Z05hbWUoV2ViU3RyaW5nIG5hbWUpCit7CisgICAgbV9sYXllci0+c2V0RGVidWdO
YW1lKG5hbWUpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QW5pbWF0aW9uRGVsZWdhdGUo
V2ViQW5pbWF0aW9uRGVsZWdhdGUqIGRlbGVnYXRlKQoreworICAgIG1fbGF5ZXItPnNldExheWVy
QW5pbWF0aW9uRGVsZWdhdGUoZGVsZWdhdGUpOworfQorCitib29sIFdlYkxheWVySW1wbDo6YWRk
QW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQoreworICAgIHJldHVybiBtX2xheWVy
LT5hZGRBbmltYXRpb24oc3RhdGljX2Nhc3Q8V2ViQW5pbWF0aW9uSW1wbCo+KGFuaW1hdGlvbikt
PmNsb25lVG9DQ0FuaW1hdGlvbigpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFu
aW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpCit7CisgICAgbV9sYXllci0+cmVtb3ZlQW5pbWF0aW9u
KGFuaW1hdGlvbklkKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFuaW1hdGlvbihp
bnQgYW5pbWF0aW9uSWQsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVy
dHkpCit7CisgICAgbV9sYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPnJlbW92ZUFu
aW1hdGlvbihhbmltYXRpb25JZCwgc3RhdGljX2Nhc3Q8Q0NBY3RpdmVBbmltYXRpb246OlRhcmdl
dFByb3BlcnR5Pih0YXJnZXRQcm9wZXJ0eSkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cGF1
c2VBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBt
X2xheWVyLT5wYXVzZUFuaW1hdGlvbihhbmltYXRpb25JZCwgdGltZU9mZnNldCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkK
K3sKKyAgICBtX2xheWVyLT5zdXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUp
Cit7CisgICAgbV9sYXllci0+cmVzdW1lQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKK30KKwor
Ym9vbCBXZWJMYXllckltcGw6Omhhc0FjdGl2ZUFuaW1hdGlvbigpCit7CisgICAgcmV0dXJuIG1f
bGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6dHJh
bnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlcik7
CisgICAgc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4ob3RoZXIpLT5tX2xheWVyLT5zZXRMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIobV9sYXllci0+cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJv
bGxlcigpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEFsd2F5c1Jlc2VydmVUZXh0dXJl
cyhib29sIHJlc2VydmUpCit7CisgICAgbV9sYXllci0+c2V0QWx3YXlzUmVzZXJ2ZVRleHR1cmVz
KHJlc2VydmUpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNl
KGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNlKQoreworICAgIG1fbGF5ZXItPnNldEZvcmNlUmVuZGVy
U3VyZmFjZShmb3JjZVJlbmRlclN1cmZhY2UpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6Y2xl
YXJSZW5kZXJTdXJmYWNlKCkKK3sKKyAgICBtX2xheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsK
K30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50IHBvc2l0
aW9uKQoreworICAgIG1fbGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0aW9uKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKQoreworICAg
IG1fbGF5ZXItPnNldFNjcm9sbGFibGUoc2Nyb2xsYWJsZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJ
bXBsOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cykKK3sKKyAgICBtX2xheWVyLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U2hvdWxkU2Nyb2xsT25N
YWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKQoreworICAgIG1fbGF5ZXIt
PnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOwor
fQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3Qg
V2ViVmVjdG9yPFdlYlJlY3Q+JiByZWN0cykKK3sKKyAgICBXZWJDb3JlOjpSZWdpb24gcmVnaW9u
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gcmVjdHNbaV07CisgICAgICAgIHJlZ2lvbi51bml0
ZShyZWN0KTsKKyAgICB9CisgICAgbV9sYXllci0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24o
cmVnaW9uKTsKKworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0SXNDb250YWluZXJGb3JGaXhl
ZFBvc2l0aW9uTGF5ZXJzKGJvb2wgZW5hYmxlKQoreworICAgIG1fbGF5ZXItPnNldElzQ29udGFp
bmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOworfQorCit2b2lkIFdlYkxheWVySW1w
bDo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wgZW5hYmxlKQoreworICAgIG1fbGF5ZXIt
PnNldEZpeGVkVG9Db250YWluZXJMYXllcihlbmFibGUpOworfQorCitMYXllckNocm9taXVtKiBX
ZWJMYXllckltcGw6OmxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVySW1wbC5oCmluZGV4IDdlNGU3NTA2MjQ4ZjRjYTVlZTY3ZTc1MWMzOGU4ZWJmNGMxOWMx
OWIuLjdkMGE1MDc4NDFjMWY5YjRjMTRiYzA3YzNjZjRlMDg0ODc3YWIzZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oCkBAIC0yNiwxOCArMjYsODkgQEAKICNp
Zm5kZWYgV2ViTGF5ZXJJbXBsX2gKICNkZWZpbmUgV2ViTGF5ZXJJbXBsX2gKIAotI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHB1YmxpYy9XZWJMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgTGF5ZXJDaHJvbWl1bTsKK30KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWNsYXNzIFdlYkxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpMYXllckNocm9taXVtIHsK
K2NsYXNzIFdlYkxheWVySW1wbCA6IHB1YmxpYyBXZWJMYXllciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViTGF5ZXJJbXBsPiBjcmVhdGUoKTsKKyAgICBleHBsaWNpdCBXZWJM
YXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiBsYXllcik7CisgICAg
dmlydHVhbCB+V2ViTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBXZWJMYXllciBpbXBsZW1lbnRhdGlv
bi4KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFdlYkxheWVyKiBwYXJlbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHNp
emVfdCBudW1iZXJPZkNoaWxkcmVuKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJM
YXllciogY2hpbGRBdChzaXplX3QpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBh
ZGRDaGlsZChXZWJMYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGls
ZChXZWJMYXllciosIHNpemVfdCBpbmRleCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
cGxhY2VDaGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3TGF5ZXIpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5
ZXIqPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TWFza3NUb0JvdW5kcyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0Jv
dW5kcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoV2Vi
TGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBtYXNrTGF5ZXIoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG9wYXF1ZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJG
bG9hdFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IHBvc2l0aW9u
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3Jt
KGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5
ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0IHRyYW5zZm9ybSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2Vi
RmlsdGVyT3BlcmF0aW9ucyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0Jv
cmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWJ1Z05hbWUoV2ViU3RyaW5nKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0
aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9u
KGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWx3YXlzUmVzZXJ2ZVRleHR1cmVzKGJvb2wpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVJlbmRlclN1cmZhY2UoYm9vbCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyUmVuZGVyU3VyZmFjZSgpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9y
PFdlYlJlY3Q+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldElzQ29udGFpbmVyRm9y
Rml4ZWRQb3NpdGlvbkxheWVycyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIE9WRVJSSURFOworCisgICAgV2ViQ29yZTo6TGF5
ZXJDaHJvbWl1bSogbGF5ZXIoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkxheWVySW1w
bCgpOwotICAgIHZpcnR1YWwgfldlYkxheWVySW1wbCgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpM
YXllckNocm9taXVtPiBtX2xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGVk
ZDQzZGYyMGQyNWNiODQwZmFkMzc1MzRkNmIzMDdkZjM2OTA4NjYuLmJkOGQ2Y2Q4MzNhMmU4YTQ3
ZGM1NzY4OWQxZmI2ZWZlZTQ1ZmY1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8cHVi
bGljL1dlYkxheWVyVHJlZVZpZXcuaD4KIAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNp
bmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5o
IgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0Nv
bnRleHQuaCIKQEAgLTgzLDcgKzg0LDcgQEAgdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRTdXJm
YWNlUmVhZHkoKQogdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRSb290TGF5ZXIoV2ViTGF5ZXIg
KnJvb3QpCiB7CiAgICAgaWYgKHJvb3QpCi0gICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9z
dCgpLT5zZXRSb290TGF5ZXIoKnJvb3QpOworICAgICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhv
c3QoKS0+c2V0Um9vdExheWVyKHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KHJvb3QpLT5sYXll
cigpKTsKICAgICBlbHNlCiAgICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRS
b290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPigpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCBhN2Jm
NjRkMzY4MDU3NjVkYjI2OGU3Y2UwNmM4NDI4MWFiMjhjNGNjLi44YTNmYzg5NjQ0NTUwYjUzMWFj
NzkwNDNlYTM3MDFhNjIxMzZjYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKIAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIK
KyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3Qu
aCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdy
YXBoaWNzQ29udGV4dDNELmg+CkBAIC0xNDIsNyArMTQzLDcgQEAgUGFzc093blB0cjxXZWJMYXll
clRyZWVWaWV3SW1wbD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZShXZWJMYXllclRyZWVW
aWV3Q2wKICAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihu
ZXcgV2ViTGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwogICAgIGlmICghaW1w
bC0+bGF5ZXJUcmVlSG9zdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5s
YXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihyb290KTsKKyAgICBpbXBsLT5sYXllclRyZWVI
b3N0KCktPnNldFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwqPigmcm9v
dCktPmxheWVyKCkpOwogICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5j
cHAKaW5kZXggNGE5MGE5ODhkNDFjNmNlNGU1NmJhNTlhNGQ3NmJkNjVhZmE5MTNkZC4uZDliODkz
NTRiYWM0NzM4MDk3MDQ4NGU1MmIyMTIxOWQxMWJlMzIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0x
MDksOSArMTA5LDkgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVD
aGFuZ2VkKCkKICAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7CiAgICAgbV9tZWRpYVBsYXllci0+
cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0g
ICAgaWYgKGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1f
dmlkZW9MYXllci5pc051bGwoKSkgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBXZWJWaWRlb0xh
eWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgICAgIG1fdmlkZW9MYXllci5zZXRPcGFxdWUobV9vcGFx
dWUpOworICAgIGlmIChoYXNWaWRlbygpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmco
KSAmJiBtX3ZpZGVvTGF5ZXIpIHsKKyAgICAgICAgbV92aWRlb0xheWVyID0gYWRvcHRQdHIoV2Vi
VmlkZW9MYXllcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICAgICAgbV92aWRlb0xheWVyLT5sYXllcigp
LT5zZXRPcGFxdWUobV9vcGFxdWUpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTM4LDggKzEzOCw4
IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZXBhaW50KCkKIHsKICAgICBBU1NF
UlQobV9tZWRpYVBsYXllcik7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
IGlmICghbV92aWRlb0xheWVyLmlzTnVsbCgpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJp
bmcoKSkKLSAgICAgICAgbV92aWRlb0xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV92aWRl
b0xheWVyICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSkKKyAgICAgICAgbV92aWRl
b0xheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKICAgICBtX21lZGlhUGxheWVy
LT5yZXBhaW50KCk7CiB9CkBAIC0xNjYsOCArMTY2LDggQEAgdm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgbV9vcGFxdWUgPSBvcGFxdWU7Ci0gICAgaWYgKCFtX3ZpZGVvTGF5
ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1fdmlkZW9MYXllci5zZXRPcGFxdWUobV9vcGFxdWUpOwor
ICAgIGlmIChtX3ZpZGVvTGF5ZXIpCisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+c2V0
T3BhcXVlKG1fb3BhcXVlKTsKICNlbmRpZgogfQogCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmNhbmNlbExvYWQoKQogV2ViTGF5ZXIqIFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1f
c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKTsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxX
ZWJWaWRlb0xheWVyKj4oJm1fdmlkZW9MYXllcik7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllciA/
IG1fdmlkZW9MYXllci0+bGF5ZXIoKSA6IDA7CiB9CiAjZW5kaWYKIApAQCAtNzQ1LDcgKzc0NSw3
IEBAIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCkgY29uc3QKIAogYm9vbCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmFjY2VsZXJh
dGVkUmVuZGVyaW5nSW5Vc2UoKQogewotICAgIHJldHVybiAhbV92aWRlb0xheWVyLmlzTnVsbCgp
ICYmIG1fdmlkZW9MYXllci5hY3RpdmUoKTsKKyAgICByZXR1cm4gbV92aWRlb0xheWVyICYmIG1f
dmlkZW9MYXllci0+YWN0aXZlKCk7CiB9CiAKIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
OjpzZXRWaWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQoV2ViVmlkZW9GcmFtZVByb3ZpZGVyOjpDbGll
bnQqIGNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmgKaW5kZXggMzczMDE1ZWI3NTZhZjBmNDUxMWRhZTk4MWU2YmYy
ZTFiNTRkZDQ4OC4uMzI5ZmQ5ZWMwZjQ4OGE5ZWFhZmVhNmU5NWM4ZmJiMjQ5MDQxNWMwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmgKQEAgLTIwNSw3ICsyMDUsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpQcmVsb2FkIG1fcHJlbG9hZDsKICAgICBSZWZQdHI8V2ViSGVscGVyUGx1Z2luSW1w
bD4gbV9oZWxwZXJQbHVnaW47CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAg
IFdlYlZpZGVvTGF5ZXIgbV92aWRlb0xheWVyOworICAgIE93blB0cjxXZWJWaWRlb0xheWVyPiBt
X3ZpZGVvTGF5ZXI7CiAgICAgYm9vbCBtX3N1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZzsK
ICAgICBib29sIG1fb3BhcXVlOwogICAgIFdlYlZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50KiBt
X3ZpZGVvRnJhbWVQcm92aWRlckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHAKaW5kZXggNzEzNjE3ODBiNDVhYjRi
OWYwODcwYWZjNGUwNTdlNGMxMjllNDcyMC4uZjEwNzU0OTA0MmRlYzkyMGNhMjRjMzhlMjA1YzJi
YzhkNGQ1OTVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1
Z2luQ29udGFpbmVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
UGx1Z2luQ29udGFpbmVySW1wbC5jcHAKQEAgLTM2NiwxMSArMzY2LDExIEBAIHZvaWQgV2ViUGx1
Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2luZ1RleHR1cmVJZCh1bnNpZ25lZCB0ZXh0dXJlSWQp
CiAgICAgaWYgKG1fdGV4dHVyZUlkID09IHRleHR1cmVJZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgQVNTRVJUKG1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpOworICAgIEFTU0VSVCghbV9pb1N1
cmZhY2VMYXllcik7CiAKLSAgICBpZiAobV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAg
IG1fdGV4dHVyZUxheWVyID0gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpOwotICAg
IG1fdGV4dHVyZUxheWVyLnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOworICAgIGlmICghbV90ZXh0
dXJlTGF5ZXIpCisgICAgICAgIG1fdGV4dHVyZUxheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3RleHR1cmVMYXllci0+c2V0VGV4dHVyZUlk
KHRleHR1cmVJZCk7CiAKICAgICAvLyBJZiBhbnlvbmUgb2YgdGhlIElEcyBpcyB6ZXJvIHdlIG5l
ZWQgdG8gc3dpdGNoIGJldHdlZW4gaGFyZHdhcmUKICAgICAvLyBhbmQgc29mdHdhcmUgY29tcG9z
aXRpbmcuIFRoaXMgaXMgZG9uZSBieSB0cmlnZ2VyaW5nIGEgc3R5bGUgcmVjYWxjCkBAIC0zOTAs
MTEgKzM5MCwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdJT1N1
cmZhY2VJZChpbnQgd2lkdGgsCiAgICAgaWYgKGlvU3VyZmFjZUlkID09IG1faW9TdXJmYWNlSWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3RleHR1cmVMYXllci5pc051bGwoKSk7
CisgICAgQVNTRVJUKCFtX3RleHR1cmVMYXllcik7CiAKLSAgICBpZiAobV9pb1N1cmZhY2VMYXll
ci5pc051bGwoKSkKLSAgICAgICAgbV9pb1N1cmZhY2VMYXllciA9IFdlYklPU3VyZmFjZUxheWVy
OjpjcmVhdGUoKTsKLSAgICBtX2lvU3VyZmFjZUxheWVyLnNldElPU3VyZmFjZVByb3BlcnRpZXMo
aW9TdXJmYWNlSWQsIFdlYlNpemUod2lkdGgsIGhlaWdodCkpOworICAgIGlmICghbV9pb1N1cmZh
Y2VMYXllcikKKyAgICAgICAgbV9pb1N1cmZhY2VMYXllciA9IGFkb3B0UHRyKFdlYklPU3VyZmFj
ZUxheWVyOjpjcmVhdGUoKSk7CisgICAgbV9pb1N1cmZhY2VMYXllci0+c2V0SU9TdXJmYWNlUHJv
cGVydGllcyhpb1N1cmZhY2VJZCwgV2ViU2l6ZSh3aWR0aCwgaGVpZ2h0KSk7CiAKICAgICAvLyBJ
ZiBhbnlvbmUgb2YgdGhlIElEcyBpcyB6ZXJvIHdlIG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gaGFy
ZHdhcmUKICAgICAvLyBhbmQgc29mdHdhcmUgY29tcG9zaXRpbmcuIFRoaXMgaXMgZG9uZSBieSB0
cmlnZ2VyaW5nIGEgc3R5bGUgcmVjYWxjCkBAIC00MDksMTEgKzQwOSwxMSBAQCB2b2lkIFdlYlBs
dWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdJT1N1cmZhY2VJZChpbnQgd2lkdGgsCiB2b2lk
IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OmNvbW1pdEJhY2tpbmdUZXh0dXJlKCkKIHsKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFtX3RleHR1cmVMYXllci5pc051
bGwoKSkKLSAgICAgICAgbV90ZXh0dXJlTGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX3Rl
eHR1cmVMYXllcikKKyAgICAgICAgbV90ZXh0dXJlTGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUo
KTsKIAotICAgIGlmICghbV9pb1N1cmZhY2VMYXllci5pc051bGwoKSkKLSAgICAgICAgbV9pb1N1
cmZhY2VMYXllci5pbnZhbGlkYXRlKCk7CisgICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIpCisgICAg
ICAgIG1faW9TdXJmYWNlTGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKICNlbmRpZgogfQog
CkBAIC00ODAsMTEgKzQ4MCwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6Onpvb21M
ZXZlbENoYW5nZWQoZG91YmxlIHpvb21MZXZlbCkKIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1w
bDo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKLSAgICBpZiAoIW1fdGV4dHVyZUxheWVyLmlzTnVsbCgpKQotICAgICAgICBtX3RleHR1
cmVMYXllci5zZXRPcGFxdWUob3BhcXVlKTsKKyAgICBpZiAobV90ZXh0dXJlTGF5ZXIpCisgICAg
ICAgIG1fdGV4dHVyZUxheWVyLT5sYXllcigpLT5zZXRPcGFxdWUob3BhcXVlKTsKIAotICAgIGlm
ICghbV9pb1N1cmZhY2VMYXllci5pc051bGwoKSkKLSAgICAgICAgbV9pb1N1cmZhY2VMYXllci5z
ZXRPcGFxdWUob3BhcXVlKTsKKyAgICBpZiAobV9pb1N1cmZhY2VMYXllcikKKyAgICAgICAgbV9p
b1N1cmZhY2VMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG9wYXF1ZSk7CiAjZW5kaWYKIH0KIApA
QCAtNTc2LDkgKzU3Niw5IEBAIHZvaWQgV2ViUGx1Z2luQ29udGFpbmVySW1wbDo6d2lsbERlc3Ry
b3lQbHVnaW5Mb2FkT2JzZXJ2ZXIoV2ViUGx1Z2luTG9hZE9ic2VydmVyCiBXZWJMYXllciogV2Vi
UGx1Z2luQ29udGFpbmVySW1wbDo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7CiAgICAgaWYgKG1f
dGV4dHVyZUlkKQotICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxXZWJFeHRlcm5hbFRleHR1cmVM
YXllcio+KCZtX3RleHR1cmVMYXllcik7CisgICAgICAgIHJldHVybiBtX3RleHR1cmVMYXllci0+
bGF5ZXIoKTsKICAgICBpZiAobV9pb1N1cmZhY2VJZCkKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8V2ViSU9TdXJmYWNlTGF5ZXIqPigmbV9pb1N1cmZhY2VMYXllcik7CisgICAgICAgIHJldHVy
biBtX2lvU3VyZmFjZUxheWVyLT5sYXllcigpOwogICAgIHJldHVybiAwOwogfQogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBs
LmgKaW5kZXggMDc0YTBjY2RjZDAzYmI1MjU2ZTM2NTgwNzJhODFlOWE1ZjgzYzg4Ni4uOTk4YmU2
ZTQxOWY4OTVmYTgyMTc5NDAzOTM0NGJjMTZmMzExZjkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaApAQCAtMTg2LDEwICsx
ODYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBBIGNvbXBvc2l0ZWQgcGx1Z2luIHdpbGwgZWl0aGVy
IGhhdmUgbm8gY29tcG9zaXRlZCBsYXllciwgYSB0ZXh0dXJlIGxheWVyLCBvciBhbiBJT1N1cmZh
Y2UgbGF5ZXIuCiAgICAgLy8gSXQgd2lsbCBuZXZlciBoYXZlIGJvdGggYSB0ZXh0dXJlIGFuZCBJ
T1N1cmZhY2Ugb3V0cHV0LgogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOwotICAgIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyIG1fdGV4dHVyZUxheWVyOworICAgIE93blB0cjxXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcj4gbV90ZXh0dXJlTGF5ZXI7CiAKICAgICB1bnNpZ25lZCBtX2lvU3VyZmFjZUlk
OwotICAgIFdlYklPU3VyZmFjZUxheWVyIG1faW9TdXJmYWNlTGF5ZXI7CisgICAgT3duUHRyPFdl
YklPU3VyZmFjZUxheWVyPiBtX2lvU3VyZmFjZUxheWVyOwogI2VuZGlmCiAKICAgICAvLyBUaGUg
YXNzb2NpYXRlZCBzY3JvbGxiYXIgZ3JvdXAgb2JqZWN0LCBjcmVhdGVkIGxhemlseS4gVXNlZCBm
b3IgUGVwcGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3Jv
bGxhYmxlTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJs
ZUxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIwZTgxZDgxMzc1OWMz
Zjc5MDk3YTI5YzE0NjliMjU3MGY5YmE4OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxl
TGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+Ci0KLSNp
bmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiUmVnaW9uLmgiCi0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb24o
V2ViUG9pbnQgcG9zaXRpb24pCi17Ci0gICAgbV9wcml2YXRlLT5zZXRTY3JvbGxQb3NpdGlvbihw
b3NpdGlvbik7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxhYmxlKGJv
b2wgc2Nyb2xsYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFNjcm9sbGFibGUoc2Nyb2xsYWJs
ZSk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKLXsKLSAgICBtX3ByaXZhdGUtPnNldEhh
dmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Ci19Ci0KLXZvaWQg
V2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCBzaG91
bGRTY3JvbGxPbk1haW5UaHJlYWQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRTaG91bGRTY3JvbGxP
bk1haW5UaHJlYWQoc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKTsKLX0KLQotdm9pZCBXZWJTY3Jv
bGxhYmxlTGF5ZXI6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxX
ZWJSZWN0PiYgcmVjdHMpCi17Ci0gICAgV2ViQ29yZTo6UmVnaW9uIHJlZ2lvbjsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFdlYkNvcmU6
OkludFJlY3QgcmVjdCA9IHJlY3RzW2ldOwotICAgICAgICByZWdpb24udW5pdGUocmVjdCk7Ci0g
ICAgfQotICAgIG1fcHJpdmF0ZS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24ocmVnaW9uKTsK
LQotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JGaXhlZFBv
c2l0aW9uTGF5ZXJzKGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0SXNDb250YWlu
ZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJs
ZUxheWVyOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCi17Ci0gICAgbV9w
cml2YXRlLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
Y3JvbGxhYmxlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNj
cm9sbGFibGVMYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyMGU4MWQ4MTM3NTljM2Y3OTA5N2Ey
OWMxNDY5YjI1NzBmOWJhODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTY3JvbGxhYmxlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxhYmxlTGF5
ZXIuaD4KKworI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJSZWdpb24uaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTY3Jv
bGxQb3NpdGlvbihXZWJQb2ludCBwb3NpdGlvbikKK3sKKyAgICBtX3ByaXZhdGUtPnNldFNjcm9s
bFBvc2l0aW9uKHBvc2l0aW9uKTsKK30KKwordm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNj
cm9sbGFibGUoYm9vbCBzY3JvbGxhYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsYWJs
ZShzY3JvbGxhYmxlKTsKK30KKwordm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldEhhdmVXaGVl
bEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQoreworICAgIG1fcHJp
dmF0ZS0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhoYXZlV2hlZWxFdmVudEhhbmRsZXJzKTsK
K30KKwordm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVh
ZChib29sIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFNo
b3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOworfQorCit2
b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3Qg
V2ViVmVjdG9yPFdlYlJlY3Q+JiByZWN0cykKK3sKKyAgICBXZWJDb3JlOjpSZWdpb24gcmVnaW9u
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gcmVjdHNbaV07CisgICAgICAgIHJlZ2lvbi51bml0
ZShyZWN0KTsKKyAgICB9CisgICAgbV9wcml2YXRlLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bihyZWdpb24pOworCit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRJc0NvbnRhaW5l
ckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCBlbmFibGUpCit7CisgICAgbV9wcml2YXRlLT5z
ZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoZW5hYmxlKTsKK30KKwordm9pZCBX
ZWJTY3JvbGxhYmxlTGF5ZXI6OnNldEZpeGVkVG9Db250YWluZXJMYXllcihib29sIGVuYWJsZSkK
K3sKKyAgICBtX3ByaXZhdGUtPnNldEZpeGVkVG9Db250YWluZXJMYXllcihlbmFibGUpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNjcm9sbGJhckxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNjcm9sbGJhckxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmJk
MWIyMGZiNDBmN2M2NGQ3ZTE3NjNhYTY4NjZiMTRlMTVmOWJhZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTY3JvbGxiYXJMYXllci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxiYXJMYXll
ci5oPgotCi0jaW5jbHVkZSAiU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oIgotCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLXZvaWQgV2ViU2Nyb2xsYmFy
TGF5ZXI6OnNldFNjcm9sbExheWVyKGNvbnN0IFdlYkxheWVyIGxheWVyKQotewotICAgIGludCBp
ZCA9IGxheWVyLmlzTnVsbCgpID8gMCA6IGxheWVyLmNvbnN0VW53cmFwPExheWVyQ2hyb21pdW0+
KCktPmlkKCk7Ci0gICAgdW53cmFwPFNjcm9sbGJhckxheWVyQ2hyb21pdW0+KCktPnNldFNjcm9s
bExheWVySWQoaWQpOwotfQotCi1XZWJTY3JvbGxiYXJMYXllciBXZWJTY3JvbGxiYXJMYXllcjo6
Y3JlYXRlKFdlYkNvcmU6OlNjcm9sbGJhciogc2Nyb2xsYmFyLCBXZWJTY3JvbGxiYXJUaGVtZVBh
aW50ZXIgcGFpbnRlciwgUGFzc093blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5PiBnZW9t
ZXRyeSkKLXsKLSAgICByZXR1cm4gV2ViU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xsYmFyTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKFdlYlNjcm9sbGJhcjo6Y3JlYXRlKHNjcm9sbGJhciksIHBhaW50ZXIsIGdl
b21ldHJ5LCAwKSk7Ci19Ci0KLVdlYlNjcm9sbGJhckxheWVyOjpXZWJTY3JvbGxiYXJMYXllcihj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mIGxh
eWVyKQotICAgIDogV2ViTGF5ZXIobGF5ZXIpCi17Ci19Ci0KLVdlYlNjcm9sbGJhckxheWVyJiBX
ZWJTY3JvbGxiYXJMYXllcjo6b3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpTY3JvbGxiYXJMYXllckNocm9taXVtPiYgbGF5ZXIpCi17Ci0gICAgbV9wcml2YXRlID0gbGF5
ZXI7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1XZWJTY3JvbGxiYXJMYXllcjo6b3BlcmF0b3Ig
UGFzc1JlZlB0cjxTY3JvbGxiYXJMYXllckNocm9taXVtPigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IHVud3JhcDxTY3JvbGxiYXJMYXllckNocm9taXVtPigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJh
ckxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJM
YXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjNmU5ODk1ZGRiZDU5MTk1N2UxYWQwZTQ4NWMxYjAx
MGZiZmY4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmgiCisKKyNpbmNs
dWRlICJTY3JvbGxiYXJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgi
CisKK3VzaW5nIFdlYkNvcmU6OlNjcm9sbGJhcjsKK3VzaW5nIFdlYkNvcmU6OlNjcm9sbGJhckxh
eWVyQ2hyb21pdW07CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJTY3JvbGxiYXJMYXllciog
V2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShXZWJDb3JlOjpTY3JvbGxiYXIqIHNjcm9sbGJhciwg
V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFy
VGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkpCit7CisgICAgcmV0dXJuIG5ldyBXZWJTY3JvbGxiYXJM
YXllckltcGwoU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKFdlYlNjcm9sbGJhcjo6Y3Jl
YXRlKHNjcm9sbGJhciksIHBhaW50ZXIsIGdlb21ldHJ5LCAwKSk7Cit9CisKKworV2ViU2Nyb2xs
YmFyTGF5ZXJJbXBsOjpXZWJTY3JvbGxiYXJMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpT
Y3JvbGxiYXJMYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIoYWRvcHRQdHIobmV3
IFdlYkxheWVySW1wbChsYXllcikpKQoreworfQorCitXZWJTY3JvbGxiYXJMYXllckltcGw6On5X
ZWJTY3JvbGxiYXJMYXllckltcGwoKQoreworfQorCitXZWJMYXllciogV2ViU2Nyb2xsYmFyTGF5
ZXJJbXBsOjpsYXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK3ZvaWQg
V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjpzZXRTY3JvbGxMYXllcihXZWJMYXllciogbGF5ZXIpCit7
CisgICAgaW50IGlkID0gbGF5ZXIgPyBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihsYXllcikt
PmxheWVyKCktPmlkKCkgOiAwOworICAgIHN0YXRpY19jYXN0PFNjcm9sbGJhckxheWVyQ2hyb21p
dW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0U2Nyb2xsTGF5ZXJJZChpZCk7Cit9CisKKworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzIwZjc5YzU1OGU0MTAyMmFlY2Q2
Mjk5ZWM2ZmQ0MTgzZjEyMjljMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlNjcm9sbGJhckxheWVySW1wbF9oCisjZGVmaW5lIFdlYlNjcm9sbGJhckxh
eWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4KKyNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYlNjcm9sbGJhckxh
eWVySW1wbCA6IHB1YmxpYyBXZWJTY3JvbGxiYXJMYXllciB7CitwdWJsaWM6CisgICAgZXhwbGlj
aXQgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bT4pOworICAgIHZpcnR1YWwgfldlYlNjcm9sbGJhckxheWVySW1wbCgpOworCisg
ICAgLy8gV2ViU2Nyb2xsYmFyTGF5ZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJM
YXllciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGF5ZXIo
V2ViTGF5ZXIqKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBs
PiBtX2xheWVyOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzkxNGIyNjMyOTRiNTNmNTQ2NjExYWRj
YTg5ODM4NDYxNjcwYWVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaD4KLQotI2luY2x1ZGUgIldl
YlNvbGlkQ29sb3JMYXllckltcGwuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJTb2xpZENvbG9yTGF5ZXIgV2ViU29saWRDb2xv
ckxheWVyOjpjcmVhdGUoKQotewotICAgIHJldHVybiBXZWJTb2xpZENvbG9yTGF5ZXIoV2ViU29s
aWRDb2xvckxheWVySW1wbDo6Y3JlYXRlKCkpOwotfQotCi1XZWJTb2xpZENvbG9yTGF5ZXI6Oldl
YlNvbGlkQ29sb3JMYXllcihjb25zdCBQYXNzUmVmUHRyPFdlYlNvbGlkQ29sb3JMYXllckltcGw+
JiBub2RlKQotICAgIDogV2ViTGF5ZXIobm9kZSkKLXsKLX0KLQotdm9pZCBXZWJTb2xpZENvbG9y
TGF5ZXI6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb2xvciYgY29sb3IpCi17Ci0gICAg
bV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlk
Q29sb3JMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRD
b2xvckxheWVySW1wbC5jcHAKaW5kZXggMzNiMWEzMGUzOGMzMGE5NTdkZGUzYTg2MWE0ODdkYTE3
YzgxZDI5OS4uOTQ0MDQyNjJjYTgxYzNhNjdmYjRlMjEyZjNiZmVkODYxOTk2MGUzNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1w
bC5jcHAKQEAgLTI2LDI0ICsyNiwzNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IldlYlNvbGlkQ29sb3JMYXllckltcGwuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cisj
aW5jbHVkZSAiU29saWRDb2xvckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllcklt
cGwuaCIKKwordXNpbmcgV2ViQ29yZTo6U29saWRDb2xvckxheWVyQ2hyb21pdW07CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYlNvbGlkQ29sb3JMYXllckltcGw+IFdlYlNv
bGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSgpCitXZWJTb2xpZENvbG9yTGF5ZXIqIFdlYlNvbGlk
Q29sb3JMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlNvbGlk
Q29sb3JMYXllckltcGwoKSk7CisgICAgcmV0dXJuIG5ldyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBs
KFNvbGlkQ29sb3JMYXllckNocm9taXVtOjpjcmVhdGUoKSk7CiB9CiAKLVdlYlNvbGlkQ29sb3JM
YXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwoKQotICAgIDogU29saWRDb2xvckxheWVy
Q2hyb21pdW0oKQorV2ViU29saWRDb2xvckxheWVySW1wbDo6V2ViU29saWRDb2xvckxheWVySW1w
bChQYXNzUmVmUHRyPFNvbGlkQ29sb3JMYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5
ZXIoYWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllcikpKQogewotICAgIHNldElzRHJhd2Fi
bGUodHJ1ZSk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKIH0K
IAogV2ViU29saWRDb2xvckxheWVySW1wbDo6fldlYlNvbGlkQ29sb3JMYXllckltcGwoKQogewog
fQogCitXZWJMYXllciogV2ViU29saWRDb2xvckxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJl
dHVybiBtX2xheWVyLmdldCgpOworfQorCit2b2lkIFdlYlNvbGlkQ29sb3JMYXllckltcGw6OnNl
dEJhY2tncm91bmRDb2xvcihXZWJDb2xvciBjb2xvcikKK3sKKyAgICBtX2xheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IoY29sb3IpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oCmlu
ZGV4IGQyNjczYjQyYjY4ZjhjZDFlNzExYjkxZTEyNzBkNjc2ZDVkNzY5ZWEuLmEwY2YyNzZlMjE3
YzBkOTAzNjViZjY0NWU4NTQ5Njc3YjRlZTUxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTI2LDE4ICsyNiwyOCBA
QAogI2lmbmRlZiBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsX2gKICNkZWZpbmUgV2ViU29saWRDb2xv
ckxheWVySW1wbF9oCiAKLSNpbmNsdWRlICJTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgU29saWRDb2xvckxheWVyQ2hyb21pdW07Cit9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgV2ViTGF5ZXJJbXBsOwogCi1jbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsIDogcHVi
bGljIFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtIHsKK2NsYXNzIFdlYlNvbGlkQ29s
b3JMYXllckltcGwgOiBwdWJsaWMgV2ViU29saWRDb2xvckxheWVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiBjcmVhdGUoKTsKLQotcHJv
dGVjdGVkOgotICAgIFdlYlNvbGlkQ29sb3JMYXllckltcGwoKTsKKyAgICBleHBsaWNpdCBXZWJT
b2xpZENvbG9yTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U29saWRDb2xvckxheWVyQ2hy
b21pdW0+KTsKICAgICB2aXJ0dWFsIH5XZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CisKKyAgICAv
LyBXZWJTb2xpZENvbG9yTGF5ZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJMYXll
ciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KFdlYkNvbG9yKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBs
PiBtX2xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwZjM0MjE1NWRhY2VlYWFhN2Q4NjY2NTM3ZjcwMDNhYTE5MzMwNDJkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZGVvTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0u
aCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViVmlkZW9MYXllci5oPgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotV2ViVmlkZW9MYXllciBXZWJWaWRlb0xheWVyOjpjcmVhdGUoV2ViVmlkZW9GcmFtZVBy
b3ZpZGVyKiBwcm92aWRlcikKLXsKLSAgICByZXR1cm4gV2ViVmlkZW9MYXllcihXZWJDb3JlOjpW
aWRlb0xheWVyQ2hyb21pdW06OmNyZWF0ZShwcm92aWRlcikpOwotfQotCi1XZWJWaWRlb0xheWVy
OjpXZWJWaWRlb0xheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtPiBs
YXllcikKLSAgICA6IFdlYkxheWVyKGxheWVyKQotewotfQotCi1ib29sIFdlYlZpZGVvTGF5ZXI6
OmFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmZlZDY3NDJmMmRjN2Y5
MDlmYWUyNTUzNzIyNmUxYWQwZTA5YmRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVmlkZW9MYXllckltcGwuaCIK
KworI2luY2x1ZGUgIlZpZGVvTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkxheWVySW1w
bC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVmlkZW9MYXllciogV2ViVmlkZW9MYXll
cjo6Y3JlYXRlKFdlYlZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCit7CisgICAgcmV0dXJu
IG5ldyBXZWJWaWRlb0xheWVySW1wbChXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW06OmNyZWF0
ZShwcm92aWRlcikpOworfQorCitXZWJWaWRlb0xheWVySW1wbDo6V2ViVmlkZW9MYXllckltcGwo
UGFzc1JlZlB0cjxXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9s
YXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dlYlZpZGVv
TGF5ZXJJbXBsOjp+V2ViVmlkZW9MYXllckltcGwoKQoreworfQorCitXZWJMYXllciogV2ViVmlk
ZW9MYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwor
Ym9vbCBXZWJWaWRlb0xheWVySW1wbDo6YWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9s
YXllci0+bGF5ZXIoKS0+bGF5ZXJUcmVlSG9zdCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI4N2U0YjVlMjBkYzk2YWI3MmI2NDBiMTFhMjliNjk4N2ZmY2ZmYWQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1w
bC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlZpZGVvTGF5ZXJJbXBsX2gK
KyNkZWZpbmUgV2ViVmlkZW9MYXllckltcGxfaAorCisjaW5jbHVkZSA8cHVibGljL1dlYlZpZGVv
TGF5ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVmlkZW9MYXllckNocm9taXVt
OworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVySW1wbDsKKworY2xhc3Mg
V2ViVmlkZW9MYXllckltcGwgOiBwdWJsaWMgV2ViVmlkZW9MYXllciB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgV2ViVmlkZW9MYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpWaWRlb0xheWVy
Q2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJWaWRlb0xheWVySW1wbCgpOworCisgICAgLy8g
V2ViVmlkZW9MYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXll
cigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUoKSBjb25zdCBPVkVSUklERTsK
KworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX2xheWVyOworfTsKKworfQor
CisjZW5kaWYgLy8gV2ViVmlkZW9MYXllckltcGxfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggMGJkM2VhMTE2ZTRjMDUyZGVhYTA1ZTY2MzA3NjRl
MzJmOWNhNDE2OC4uNjBjNzVjMjlmMmZiZDQzZDkyNmRiODNhNjUxOTNkYzJiYTI2MzdkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtNDEwLDYgKzQx
MCw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChXZWJWaWV3Q2xpZW50KiBjbGllbnQpCiAg
ICAgLCBtX2lzQ2FuY2VsaW5nRnVsbFNjcmVlbihmYWxzZSkKICAgICAsIG1fYmVuY2htYXJrU3Vw
cG9ydCh0aGlzKQogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyAgICAsIG1fcm9v
dExheWVyKDApCiAgICAgLCBtX3Jvb3RHcmFwaGljc0xheWVyKDApCiAgICAgLCBtX2lzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShmYWxzZSkKICAgICAsIG1fY29tcG9zaXRvckNyZWF0aW9u
RmFpbGVkKGZhbHNlKQpAQCAtMzUxNCw2ICszNTE1LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6YWxs
b3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3Jh
cGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKIHsKICAgICBtX3Jvb3RHcmFwaGljc0xh
eWVyID0gbGF5ZXI7CisgICAgbV9yb290TGF5ZXIgPSBsYXllciA/IGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkgOiAwOwogCiAgICAgc2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGxheWVy
KTsKICAgICBpZiAobV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QpIHsKQEAgLTM1MjcsMTEgKzM1
MjksOCBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xh
eWVyKiBsYXllcikKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNjcm9s
bExheWVyKHNjcm9sbExheWVyKTsKICAgICB9CiAKLSAgICBpZiAobGF5ZXIpCi0gICAgICAgIG1f
cm9vdExheWVyID0gKmxheWVyLT5wbGF0Zm9ybUxheWVyKCk7Ci0KICAgICBpZiAoIW1fbGF5ZXJU
cmVlVmlldy5pc051bGwoKSkKLSAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldFJvb3RMYXllcihs
YXllciA/ICZtX3Jvb3RMYXllciA6IDApOworICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0Um9v
dExheWVyKG1fcm9vdExheWVyKTsKIAogICAgIEludFJlY3QgZGFtYWdlZFJlY3QoMCwgMCwgbV9z
aXplLndpZHRoLCBtX3NpemUuaGVpZ2h0KTsKICAgICBpZiAoIW1faXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nQWN0aXZlKQpAQCAtMzY0NCw3ICszNjQzLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0
SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2hvd0RlYnVnQm9yZGVycyhwYWdlKCktPnNldHRp
bmdzKCktPnNob3dEZWJ1Z0JvcmRlcnMoKSk7CiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LT5zZXRPcGFxdWUoIWlzVHJhbnNwYXJlbnQoKSk7CiAKLSAgICAgICAgbV9sYXllclRy
ZWVWaWV3LmluaXRpYWxpemUodGhpcywgbV9yb290TGF5ZXIsIGxheWVyVHJlZVZpZXdTZXR0aW5n
cyk7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5pbml0aWFsaXplKHRoaXMsICptX3Jvb3RMYXll
ciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKTsKICAgICAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcu
aXNOdWxsKCkpIHsKICAgICAgICAgICAgIGlmIChtX3dlYlNldHRpbmdzLT5hcHBseURlZmF1bHRE
ZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpICYmIHBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0
b3IoKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHBhZ2UoKS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCAz
OTc4MzY4MGZhMTk4OTg4NmM0NjBiMTNkNDBkZDE0MDQxYTJhNDJiLi4xMjNmMzhjNGMzNWJkZTk3
MTA5OGRkYzI2MGQ4ODE0MzVhMjkyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKQEAgLTgxNCw3ICs4MTQsNyBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Oklu
dFJlY3QgbV9yb290TGF5ZXJTY3JvbGxEYW1hZ2U7CiAgICAgT3duUHRyPE5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdD4gbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3Q7CiAgICAgV2ViTGF5ZXJUcmVl
VmlldyBtX2xheWVyVHJlZVZpZXc7Ci0gICAgV2ViTGF5ZXIgbV9yb290TGF5ZXI7CisgICAgV2Vi
TGF5ZXIqIG1fcm9vdExheWVyOwogICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIG1fcm9vdEdy
YXBoaWNzTGF5ZXI7CiAgICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZTsK
ICAgICBib29sIG1fY29tcG9zaXRvckNyZWF0aW9uRmFpbGVkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXgg
YTVjYTU1MTI0YzI5MDQ3MmMyNzQ3ZDA5MzlmYjAwZGEyMDU5Zjc3ZC4uNDk0OGY5N2NjNTg4YTBi
NWJiMjAwZDE0MzliYzRmOTE3OWI0OWZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0xMjIsMTMgKzEy
MiwxMyBAQCBURVNUKEltYWdlTGF5ZXJDaHJvbWl1bVRlc3QsIG9wYXF1ZUltYWdlcykKICAgICBS
ZWZQdHI8SW1hZ2U+IG5vbk9wYXF1ZUltYWdlID0gVGVzdEltYWdlOjpjcmVhdGUoSW50U2l6ZSgx
MDAsIDEwMCksIGZhbHNlKTsKICAgICBBU1NFUlRfVFJVRShub25PcGFxdWVJbWFnZS5nZXQoKSk7
CiAKLSAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCkuaXNOdWxs
KCkpOworICAgIEFTU0VSVF9GQUxTRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCkpOwog
CiAgICAgZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKG9wYXF1ZUltYWdlLmdldCgp
KTsKLSAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCkub3BhcXVl
KCkpOworICAgIEFTU0VSVF9UUlVFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKS0+b3Bh
cXVlKCkpOwogCiAgICAgZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0ltYWdlKG5vbk9wYXF1
ZUltYWdlLmdldCgpKTsKLSAgICBBU1NFUlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29udGVudHNM
YXllcigpLm9wYXF1ZSgpKTsKKyAgICBBU1NFUlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29udGVu
dHNMYXllcigpLT5vcGFxdWUoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKaW5kZXggNTM4MTE3M2VmOGVjODA1
MjM4YzNmMDEzNTM3M2M3ODEzYTVmMjA5OS4uMzQ3YmRkOTQ0ODQ1NjY4ZjUzNzQ3NjlmMzhkNjE1
MzA4NzZjMzhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJM
YXllclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJU
ZXN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgog
CiAjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oIgorI2luY2x1
ZGUgIldlYkxheWVySW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yLmg+CiAj
aW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJD
b250ZW50TGF5ZXJDbGllbnQuaD4KQEAgLTc2LDkgKzc3LDkgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgLy8gSW5pdGlhbGl6ZSB3aXRob3V0IHRocmVhZGluZyBzdXBwb3J0LgogICAgICAgICBX
ZWJLaXQ6OldlYkNvbXBvc2l0b3I6OmluaXRpYWxpemUoMCk7Ci0gICAgICAgIG1fcm9vdExheWVy
ID0gV2ViTGF5ZXI6OmNyZWF0ZSgpOworICAgICAgICBtX3Jvb3RMYXllciA9IGFkb3B0UHRyKFdl
YkxheWVyOjpjcmVhdGUoKSk7CiAgICAgICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVs
ZUNvbXBvc2l0ZSgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1f
dmlldy5pbml0aWFsaXplKCZtX2NsaWVudCwgbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6
OlNldHRpbmdzKCkpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUobV92aWV3LmluaXRpYWxpemUoJm1f
Y2xpZW50LCAqbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKICAg
ICAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKICAgICB9
CiAKQEAgLTg3LDE0ICs4OCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFdlIG1heSBnZXQgYW55
IG51bWJlciBvZiBzY2hlZHVsZUNvbXBvc2l0ZSBjYWxscyBkdXJpbmcgc2h1dGRvd24uCiAgICAg
ICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBbnlO
dW1iZXIoKSk7CiAgICAgICAgIG1fdmlldy5zZXRSb290TGF5ZXIoMCk7Ci0gICAgICAgIG1fcm9v
dExheWVyLnJlc2V0KCk7CisgICAgICAgIG1fcm9vdExheWVyLmNsZWFyKCk7CiAgICAgICAgIG1f
dmlldy5yZXNldCgpOwogICAgICAgICBXZWJLaXQ6OldlYkNvbXBvc2l0b3I6OnNodXRkb3duKCk7
CiAgICAgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTW9ja1dlYkxheWVyVHJlZVZpZXdDbGllbnQgbV9j
bGllbnQ7Ci0gICAgV2ViTGF5ZXIgbV9yb290TGF5ZXI7CisgICAgT3duUHRyPFdlYkxheWVyPiBt
X3Jvb3RMYXllcjsKICAgICBXZWJMYXllclRyZWVWaWV3IG1fdmlldzsKIH07CiAKQEAgLTEwNCw3
NCArMTA1LDc0IEBAIFRFU1RfRihXZWJMYXllclRlc3QsIENsaWVudCkKIHsKICAgICAvLyBCYXNl
IGxheWVyLgogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5U
aW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgV2ViTGF5ZXIgbGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRl
KCk7Ci0gICAgbV9yb290TGF5ZXIuYWRkQ2hpbGQobGF5ZXIpOworICAgIE93blB0cjxXZWJMYXll
cj4gbGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgIG1fcm9vdExheWVy
LT5hZGRDaGlsZChsYXllci5nZXQoKSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnMoJm1fY2xpZW50KTsKIAogICAgIFdlYkZsb2F0UG9pbnQgcG9pbnQoMywgNCk7CiAgICAg
RVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3Qo
MSkpOwotICAgIGxheWVyLnNldEFuY2hvclBvaW50KHBvaW50KTsKKyAgICBsYXllci0+c2V0QW5j
aG9yUG9pbnQocG9pbnQpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X2NsaWVudCk7Ci0gICAgRVhQRUNUX0VRKHBvaW50LCBsYXllci5hbmNob3JQb2ludCgpKTsKKyAg
ICBFWFBFQ1RfRVEocG9pbnQsIGxheWVyLT5hbmNob3JQb2ludCgpKTsKIAogICAgIEVYUEVDVF9D
QUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKICAg
ICBmbG9hdCBhbmNob3JaID0gNTsKLSAgICBsYXllci5zZXRBbmNob3JQb2ludFooYW5jaG9yWik7
CisgICAgbGF5ZXItPnNldEFuY2hvclBvaW50WihhbmNob3JaKTsKICAgICBNb2NrOjpWZXJpZnlB
bmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9FUShhbmNob3JaLCBs
YXllci5hbmNob3JQb2ludFooKSk7CisgICAgRVhQRUNUX0VRKGFuY2hvclosIGxheWVyLT5hbmNo
b3JQb2ludFooKSk7CiAKICAgICBXZWJTaXplIHNpemUoNywgOCk7CiAgICAgRVhQRUNUX0NBTEwo
bV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxh
eWVyLnNldEJvdW5kcyhzaXplKTsKKyAgICBsYXllci0+c2V0Qm91bmRzKHNpemUpOwogICAgIE1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VR
KHNpemUsIGxheWVyLmJvdW5kcygpKTsKKyAgICBFWFBFQ1RfRVEoc2l6ZSwgbGF5ZXItPmJvdW5k
cygpKTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5U
aW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXllci5zZXRNYXNrc1RvQm91bmRzKHRydWUpOworICAg
IGxheWVyLT5zZXRNYXNrc1RvQm91bmRzKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIubWFza3NUb0Jv
dW5kcygpKTsKKyAgICBFWFBFQ1RfVFJVRShsYXllci0+bWFza3NUb0JvdW5kcygpKTsKIAogICAg
IEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBbnlOdW1i
ZXIoKSk7Ci0gICAgV2ViTGF5ZXIgb3RoZXJMYXllciA9IFdlYkxheWVyOjpjcmVhdGUoKTsKLSAg
ICBtX3Jvb3RMYXllci5hZGRDaGlsZChvdGhlckxheWVyKTsKKyAgICBPd25QdHI8V2ViTGF5ZXI+
IG90aGVyTGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgIG1fcm9vdExh
eWVyLT5hZGRDaGlsZChvdGhlckxheWVyLmdldCgpKTsKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVu
dCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0
TWFza0xheWVyKG90aGVyTGF5ZXIpOworICAgIGxheWVyLT5zZXRNYXNrTGF5ZXIob3RoZXJMYXll
ci5nZXQoKSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50
KTsKLSAgICBFWFBFQ1RfRVEob3RoZXJMYXllciwgbGF5ZXIubWFza0xheWVyKCkpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihvdGhlckxheWVyLmdldCgpKS0+bGF5
ZXIoKSwgc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obGF5ZXItPm1hc2tMYXllcigpKS0+bGF5
ZXIoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSku
VGltZXMoQXRMZWFzdCgxKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IDAuMTIzZjsKLSAgICBsYXll
ci5zZXRPcGFjaXR5KG9wYWNpdHkpOworICAgIGxheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwog
ICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQ
RUNUX0VRKG9wYWNpdHksIGxheWVyLm9wYWNpdHkoKSk7CisgICAgRVhQRUNUX0VRKG9wYWNpdHks
IGxheWVyLT5vcGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxl
Q29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVl
KTsKKyAgICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIub3BhcXVlKCkp
OworICAgIEVYUEVDVF9UUlVFKGxheWVyLT5vcGFxdWUoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTCht
X2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5
ZXIuc2V0UG9zaXRpb24ocG9pbnQpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CiAg
ICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBF
Q1RfRVEocG9pbnQsIGxheWVyLnBvc2l0aW9uKCkpOworICAgIEVYUEVDVF9FUShwb2ludCwgbGF5
ZXItPnBvc2l0aW9uKCkpOwogCiAgICAgLy8gVGV4dHVyZSBsYXllci4KICAgICBFWFBFQ1RfQ0FM
TChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAg
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3Jvb3RMYXllci5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXIp
OworICAgIE93blB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gdGV4dHVyZUxheWVyID0gYWRv
cHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXll
ci0+YWRkQ2hpbGQodGV4dHVyZUxheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQs
IHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIHRleHR1cmVMYXll
ci5zZXRUZXh0dXJlSWQoMyk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMyk7CiAg
ICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIEVY
UEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEp
KTsKLSAgICB0ZXh0dXJlTGF5ZXIuc2V0RmxpcHBlZCh0cnVlKTsKKyAgICB0ZXh0dXJlTGF5ZXIt
PnNldEZsaXBwZWQodHJ1ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0
ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKICAgICBXZWJGbG9hdFJlY3QgdXZSZWN0KDAuMWYsIDAu
MWYsIDAuOWYsIDAuOWYpOwotICAgIHRleHR1cmVMYXllci5zZXRVVlJlY3QodXZSZWN0KTsKKyAg
ICB0ZXh0dXJlTGF5ZXItPnNldFVWUmVjdCh1dlJlY3QpOwogICAgIE1vY2s6OlZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKIApAQCAtMTc5LDUyICsxODAsNTIgQEAgVEVT
VF9GKFdlYkxheWVyVGVzdCwgQ2xpZW50KQogICAgIE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQg
Y29udGVudENsaWVudDsKICAgICBFWFBFQ1RfQ0FMTChjb250ZW50Q2xpZW50LCBwYWludENvbnRl
bnRzKF8sIF8sIF8pKS5UaW1lcyhBbnlOdW1iZXIoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGll
bnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJDb250
ZW50TGF5ZXIgY29udGVudExheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNvbnRlbnRD
bGllbnQpOwotICAgIG1fcm9vdExheWVyLmFkZENoaWxkKGNvbnRlbnRMYXllcik7CisgICAgT3du
UHRyPFdlYkNvbnRlbnRMYXllcj4gY29udGVudExheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExh
eWVyOjpjcmVhdGUoJmNvbnRlbnRDbGllbnQpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQo
Y29udGVudExheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29t
cG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGNvbnRlbnRMYXllci5zZXREcmF3c0Nv
bnRlbnQoZmFsc2UpOworICAgIGNvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50
KGZhbHNlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQp
OwotICAgIEVYUEVDVF9GQUxTRShjb250ZW50TGF5ZXIuZHJhd3NDb250ZW50KCkpOworICAgIEVY
UEVDVF9GQUxTRShjb250ZW50TGF5ZXItPmxheWVyKCktPmRyYXdzQ29udGVudCgpKTsKIH0KIAog
VEVTVF9GKFdlYkxheWVyVGVzdCwgSGllcmFyY2h5KQogewogICAgIEVYUEVDVF9DQUxMKG1fY2xp
ZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgV2ViTGF5
ZXIgbGF5ZXIxID0gV2ViTGF5ZXI6OmNyZWF0ZSgpOwotICAgIFdlYkxheWVyIGxheWVyMiA9IFdl
YkxheWVyOjpjcmVhdGUoKTsKKyAgICBPd25QdHI8V2ViTGF5ZXI+IGxheWVyMSA9IGFkb3B0UHRy
KFdlYkxheWVyOjpjcmVhdGUoKSk7CisgICAgT3duUHRyPFdlYkxheWVyPiBsYXllcjIgPSBhZG9w
dFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOwogCi0gICAgRVhQRUNUX1RSVUUobGF5ZXIxLnBhcmVu
dCgpLmlzTnVsbCgpKTsKLSAgICBFWFBFQ1RfVFJVRShsYXllcjIucGFyZW50KCkuaXNOdWxsKCkp
OworICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPnBhcmVudCgpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
bGF5ZXIyLT5wYXJlbnQoKSk7CiAKLSAgICBsYXllcjEuYWRkQ2hpbGQobGF5ZXIyKTsKLSAgICBF
WFBFQ1RfVFJVRShsYXllcjEucGFyZW50KCkuaXNOdWxsKCkpOwotICAgIEVYUEVDVF9FUShsYXll
cjEsIGxheWVyMi5wYXJlbnQoKSk7CisgICAgbGF5ZXIxLT5hZGRDaGlsZChsYXllcjIuZ2V0KCkp
OworICAgIEVYUEVDVF9GQUxTRShsYXllcjEtPnBhcmVudCgpKTsKKyAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obGF5ZXIxLmdldCgpKS0+bGF5ZXIoKSwgc3RhdGljX2Nh
c3Q8V2ViTGF5ZXJJbXBsKj4obGF5ZXIyLT5wYXJlbnQoKSktPmxheWVyKCkpOwogCi0gICAgbGF5
ZXIyLnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBFWFBFQ1RfVFJVRShsYXllcjIucGFyZW50KCku
aXNOdWxsKCkpOworICAgIGxheWVyMi0+cmVtb3ZlRnJvbVBhcmVudCgpOworICAgIEVYUEVDVF9G
QUxTRShsYXllcjItPnBhcmVudCgpKTsKIAotICAgIGxheWVyMS5hZGRDaGlsZChsYXllcjIpOwot
ICAgIEVYUEVDVF9FUShsYXllcjEsIGxheWVyMi5wYXJlbnQoKSk7Ci0gICAgbGF5ZXIxLnJlbW92
ZUFsbENoaWxkcmVuKCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIyLnBhcmVudCgpLmlzTnVsbCgp
KTsKKyAgICBsYXllcjEtPmFkZENoaWxkKGxheWVyMi5nZXQoKSk7CisgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KGxheWVyMS5nZXQoKSktPmxheWVyKCksIHN0YXRpY19j
YXN0PFdlYkxheWVySW1wbCo+KGxheWVyMi0+cGFyZW50KCkpLT5sYXllcigpKTsKKyAgICBsYXll
cjEtPnJlbW92ZUFsbENoaWxkcmVuKCk7CisgICAgRVhQRUNUX0ZBTFNFKGxheWVyMi0+cGFyZW50
KCkpOwogCiAgICAgTW9ja1dlYkNvbnRlbnRMYXllckNsaWVudCBjb250ZW50Q2xpZW50OwogICAg
IEVYUEVDVF9DQUxMKGNvbnRlbnRDbGllbnQsIHBhaW50Q29udGVudHMoXywgXywgXykpLlRpbWVz
KEFueU51bWJlcigpKTsKLSAgICBXZWJDb250ZW50TGF5ZXIgY29udGVudExheWVyID0gV2ViQ29u
dGVudExheWVyOjpjcmVhdGUoJmNvbnRlbnRDbGllbnQpOwotICAgIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKTsK
KyAgICBPd25QdHI8V2ViQ29udGVudExheWVyPiBjb250ZW50TGF5ZXIgPSBhZG9wdFB0cihXZWJD
b250ZW50TGF5ZXI6OmNyZWF0ZSgmY29udGVudENsaWVudCkpOworICAgIE93blB0cjxXZWJFeHRl
cm5hbFRleHR1cmVMYXllcj4gdGV4dHVyZUxheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKIAotICAgIHRleHR1cmVMYXllci5hZGRDaGlsZChjb250ZW50
TGF5ZXIpOwotICAgIGNvbnRlbnRMYXllci5hZGRDaGlsZChsYXllcjEpOwotICAgIGxheWVyMS5h
ZGRDaGlsZChsYXllcjIpOworICAgIHRleHR1cmVMYXllci0+bGF5ZXIoKS0+YWRkQ2hpbGQoY29u
dGVudExheWVyLT5sYXllcigpKTsKKyAgICBjb250ZW50TGF5ZXItPmxheWVyKCktPmFkZENoaWxk
KGxheWVyMS5nZXQoKSk7CisgICAgbGF5ZXIxLT5hZGRDaGlsZChsYXllcjIuZ2V0KCkpOwogCiAg
ICAgLy8gUmVsZWFzZSByZWZlcmVuY2Ugb24gYWxsIGxheWVycywgY2hlY2tpbmcgdGhhdCBkZXN0
cnVjdGlvbiAod2hpY2ggbWF5CiAgICAgLy8gZ2VuZXJhdGUgY2FsbHMgdG8gdGhlIGNsaWVudCkg
ZG9lc24ndCBjcmFzaC4KLSAgICBsYXllcjIucmVzZXQoKTsKLSAgICBsYXllcjEucmVzZXQoKTsK
LSAgICBjb250ZW50TGF5ZXIucmVzZXQoKTsKLSAgICB0ZXh0dXJlTGF5ZXIucmVzZXQoKTsKKyAg
ICBsYXllcjIuY2xlYXIoKTsKKyAgICBsYXllcjEuY2xlYXIoKTsKKyAgICBjb250ZW50TGF5ZXIu
Y2xlYXIoKTsKKyAgICB0ZXh0dXJlTGF5ZXIuY2xlYXIoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAppbmRl
eCBiZWMyYzYwMzVhY2FlZjA3MzQwYTFiOGMzNjRlMWE5OTA4MmYzY2Q1Li4xYzE2MDJjMjM0MTY5
OWQ5ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAtNjAsOCArNjAsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIGluaXRp
YWxpemVDb21wb3NpdG9yKCk7Ci0gICAgICAgIG1fcm9vdExheWVyID0gV2ViTGF5ZXI6OmNyZWF0
ZSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgbV9y
b290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKKyAgICAgICAgbV9yb290
TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBFWFBFQ1RfVFJV
RShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJMYXllclRyZWVW
aWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIG1fdmlldy5zZXRTdXJmYWNlUmVhZHkoKTsKICAg
ICB9CiAKQEAgLTcwLDEzICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIE1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKGNsaWVudCgpKTsKIAogICAgICAgICBtX3ZpZXcuc2V0Um9vdExh
eWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5yZXNldCgpOworICAgICAgICBtX3Jvb3RMYXll
ci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVzZXQoKTsKICAgICAgICAgV2ViS2l0OjpXZWJD
b21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkxheWVy
IG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7CiAgICAgV2Vi
TGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158931</attachid>
            <date>2012-08-16 15:46:40 -0700</date>
            <delta_ts>2012-08-16 16:29:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94174-20120816154605.patch</filename>
            <type>text/plain</type>
            <size>201076</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1Nzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhZjBlYTZmNzg4OWMz
OWIyYzU1NDRjMjYwY2QxY2NhOWYyYjExN2FkLi4wYWI2M2RkODVmYjE3YTA4YjkyOGI3Zjk1ZjA0
ZjRhNTNjY2IxNjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MCBAQAogMjAxMi0wOC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1
bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFs
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZXMgV2ViTGF5ZXIgZnJvbSBhIHZhbHVlIHR5cGUgdG8gYSBwdXJlIHZpcnR1
YWwgaW50ZXJmYWNlIGFuZCBjaGFuZ2VzIFdlYipMYXllcnMgZnJvbSBzdWJ0eXBlcyB0bworICAg
ICAgICBzdGFuZGFsb25lIHR5cGVzIHRoYXQgaGF2ZSBhIFdlYkxheWVyLiBUaGlzIGJldHRlciBp
c29sYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgaW50ZXJmYWNlIGFuZCwgc2luY2UK
KyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gcmUtd3JhcCBhbiBleGlzdGluZyBsYXllciwg
bWFrZXMgY2xlYW51cCBleHBsaWNpdCBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgY2FsbGVyIHRv
IGludm9rZQorICAgICAgICBzcGVjaWFsIGNsZWFudXAgbWV0aG9kcyBiZWZvcmUgc2h1dGRvd24u
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmg6CisgICAgICAg
IChXZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oOgorICAgICAgICAoV2Vi
SU9TdXJmYWNlTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVy
Lmg6CisgICAgICAgIChXZWJJbWFnZUxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjp+V2ViTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaDoKKyAgICAgICAgKFdlYlNjcm9sbGFibGVMYXllcik6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg6CisgICAgICAg
IChXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNvbGlk
Q29sb3JMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllcjo6fldlYlNvbGlkQ29s
b3JMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYlZpZGVvTGF5ZXIpOgorCisyMDEyLTA4LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgdW5uZWNlc3Nh
cnkgdHJlZSBoaWVyYXJjaHkgaW5zcGVjdGlvbiBBUElzIGZyb20gV2ViTGF5ZXIKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjI5CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBiYWE0ZWE0Yjg0M2ZkMTRkNzU3YjU2N2ZlM2E2ZmQyY2RjNGExNjE1Li45MjgzOWRjZDY3
YzNhZDMyMWZlNzJmYjcxNzQ0YzQwMTU3ZmZkMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTA2
IEBACiAyMDEyLTA4LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAK
KyAgICAgICAgW2Nocm9taXVtXSBDaGFuZ2UgV2ViTGF5ZXIgZnJvbSBhIGNvbmNyZXRlIHR5cGUg
dG8gYSBwdXJlIHZpcnR1YWwgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05NDE3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgdXBkYXRlcyBXZWJDb3JlIGNvZGUgZm9yIHRoZSBXZWJM
YXllciBpbnRlcmZhY2UgY2hhbmdlcy4gQ2xhc3NlcyB0aGF0IGhhdmUgb3duZXJzaGlwIG9mIHNw
ZWNpZmljIGxheWVyCisgICAgICAgIHR5cGVzIChzdWNoIGFzIERyYXdpbmdCdWZmZXJDaHJvbWl1
bSwgQ2FudmFzMkRMYXllckJyaWRnZSBhbmQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bSkg
aG9sZCBvd25lcnNoaXAKKyAgICAgICAgb2YgYSBzcGVjaWZpYyB0eXBlIGFuZCBhIHBvaW50ZXIg
dG8gdGhlIFdlYkxheWVyIHRvIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSB0byBiZSBpbmNsdWRlZCBp
biB0aGUgZmluYWwgbGF5ZXIKKyAgICAgICAgdHJlZS4gR3JhcGhpY3NMYXllckNocm9taXVtIGhv
bGRzIGEgV2ViQ29udGVudExheWVyIGFuZCAob3B0aW9uYWxseSkgYSBXZWJJbWFnZUxheWVyIGFu
ZCBXZWJMYXllciAoZm9yCisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIpIGFuZCBhc3NlbWJsZXMg
dGhlIGZpbmFsIGxheWVyIHRyZWUuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1
bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKToK
KyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNldFNjcm9sbExheWVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZTo6c2V0SG9yaXpvbnRhbFNjcm9s
bGJhckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0
ZTo6c2V0VmVydGljYWxTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdDb29yZGluYXRvclByaXZhdGU6OnNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OnNj
cm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjcmVhdGVTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNv
dW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlv
bkxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5
ZXJJc0ZpeGVkVG9Db250YWluZXJMYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
bGVyYXRlZERldmljZUNvbnRleHQ6OkFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dCk6CisgICAgICAg
IChXZWJDb3JlOjpBY2NlbGVyYXRlZERldmljZUNvbnRleHQ6OmNsZWFyTGF5ZXIpOgorICAgICAg
ICAoQWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2VsZXJh
dGVkRGV2aWNlQ29udGV4dDo6cHJlcGFyZUZvckRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzMkRMYXllckJyaWRnZTo6Q2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXMyRExheWVyQnJpZGdlOjp+Q2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYW52YXMyRExheWVyQnJpZGdlOjpza0NhbnZhcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXMyRExheWVyQnJpZGdlOjpsYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMy
RExheWVyQnJpZGdlOjpjb250ZXh0QWNxdWlyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoQ2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdpbmdCdWZmZXJQcml2YXRlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6fkRyYXdpbmdCdWZmZXJQcml2YXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjpsYXllcik6CisgICAgICAgIChE
cmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU5hbWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpjbGVhckJhY2tncm91bmRDb2xvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzT3BhcXVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRG
aWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFz
a0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFj
a2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXkpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXlJblJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvQ2FudmFz
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRDb250ZW50c1RvKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6cGF1c2VBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpyZW1vdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjphZGRMaW5rSGlnaGxpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6ZGlkRmluaXNoTGlua0hpZ2hsaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBsYXRmb3JtTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXREZWJ1Z0JhY2tn
cm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dERlYnVnQm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ2hpbGRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlTGF5ZXJQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnVwZGF0ZUxheWVyU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVNYXNrc1RvQm91bmRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2
ZXMzRCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVySXNEcmF3YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
OnVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldHVwQ29udGVudHNMYXllcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06Omhhc0NvbnRlbnRzTGF5ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpjb250ZW50TGF5ZXIp
OgorICAgICAgICAoR3JhcGhpY3NMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y29udGVudHNMYXllcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNocm9taXVtOjpyb290TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaDoKKworMjAxMi0wOC0xNiAgSmFtZXMgUm9iaW5zb24gIDxq
YW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIHVubmVjZXNz
YXJ5IHRyZWUgaGllcmFyY2h5IGluc3BlY3Rpb24gQVBJcyBmcm9tIFdlYkxheWVyCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDIyOQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDBiMjRkMDM0OTQxZDA1YmM1ZDllY2YyMmZhMTJjMjE4ZjEy
OTM0MGUuLmMxMGQzOTdjZWUyYmY2NzgxZjkwOTk4ZWM1ZGY0NmUwZTBmMDIyMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjE3IEBACiAyMDEyLTA4LTE2ICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW2Nocm9taXVtXSBDaGFu
Z2UgV2ViTGF5ZXIgZnJvbSBhIGNvbmNyZXRlIHR5cGUgdG8gYSBwdXJlIHZpcnR1YWwgaW50ZXJm
YWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
dXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYipMYXllciBmYW1pbHkgdG8gdGhl
IG5ldyBkZXNpZ24gYW5kIHVwZGF0ZXMgY2FsbGVycyBpbiBXZWJWaWV3SW1wbCAvCisgICAgICAg
IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAg
ICAgICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAg
ICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRTY3JvbGxMYXllcik6
CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQp
OgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVy
KToKKyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgICog
c3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50
TGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6Oldl
YkNvbnRlbnRMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBs
Ojp+V2ViQ29udGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXll
ckltcGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bnRlbnRMYXllckltcGw6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVu
dExheWVySW1wbDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50
TGF5ZXJJbXBsOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVu
dExheWVySW1wbDo6c2V0VXNlTENEVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRM
YXllckltcGw6OnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMpOgorICAgICAgICAo
V2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBz
cmMvV2ViQ29udGVudExheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29udGVudExheWVySW1wbCk6
CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmxheWVyKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjbGVhckNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0VGV4dHVyZUlkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRGbGlwcGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJl
Y3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldE9w
YXF1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0
UHJlbXVsdGlwbGllZEFscGhhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsOjp3aWxsTW9kaWZ5VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4dCk6CisgICAgICAgIChXZWJU
ZXh0dXJlVXBkYXRlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlcklt
cGw6OldlYlRleHR1cmVVcGRhdGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSU9TdXJmYWNl
TGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklPU3VyZmFjZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYklPU3VyZmFjZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZh
Y2VMYXllckltcGw6OldlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklPU3VyZmFjZUxheWVySW1wbDo6fldlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklPU3VyZmFjZUxheWVySW1wbDo6c2V0SU9TdXJmYWNlUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAq
IHNyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAg
ICAqIHNyYy9XZWJJbWFnZUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2VMYXllckltcGw6OldlYkltYWdlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6V2ViSW1hZ2VMYXllckltcGw6On5XZWJJbWFnZUxheWVySW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkltYWdlTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdl
TGF5ZXJJbXBsOjpzZXRCaXRtYXApOgorICAgICAgICAqIHNyYy9XZWJJbWFnZUxheWVySW1wbC5o
OiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllci5j
cHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJ
bWFnZUxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKToKKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmludmFsaWRhdGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjppbnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVw
bGFjZUNoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRDaGlsZHJlbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQWxsQ2hpbGRyZW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OnNldEFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjphbmNob3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6c2V0QW5jaG9yUG9pbnRaKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjphbmNo
b3JQb2ludFopOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEJvdW5kcyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6Ym91bmRzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjptYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpz
ZXRNYXNrTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFJlcGxpY2FM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0T3BhY2l0eSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c2V0T3BhcXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpv
cGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RHJhd3NDb250ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
ckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OnNldERlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
OnNldERlYnVnTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5pbWF0
aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmFkZEFuaW1hdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVySW1wbDo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllckltcGw6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllckltcGw6Omhhc0FjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
SW1wbDo6dHJhbnNmZXJBbmltYXRpb25zVG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OnNldEZvcmNlUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6Y2xlYXJSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpz
ZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U2Ny
b2xsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0SGF2ZVdoZWVsRXZl
bnRIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U2hvdWxkU2Ny
b2xsT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXROb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0
SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3Ojpz
ZXRSb290TGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgorICAgICAgICAq
IHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmFjY2VsZXJhdGVkUmVuZGVyaW5nSW5Vc2UpOgor
ICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lcklt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNr
aW5nVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6
c2V0QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFp
bmVySW1wbDo6Y29tbWl0QmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVn
aW5Db250YWluZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5D
b250YWluZXJJbXBsOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29u
dGFpbmVySW1wbC5oOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisgICAgICAg
ICogc3JjL1dlYlNjcm9sbGFibGVMYXllckltcGwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbGFibGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldEhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNob3Vs
ZFNjcm9sbE9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXll
cjo6c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3Jv
bGxhYmxlTGF5ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVy
KToKKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVyLmNwcC4KKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OldlYlNjcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1wbDo6fldlYlNj
cm9sbGJhckxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1w
bDo6bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OnNldFNj
cm9sbExheWVyKToKKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwu
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNj
cm9sbGJhckxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXI6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllcklt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpsYXllcik6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBs
OjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHNyYy9XZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJTb2xpZENvbG9yTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlkZW9MYXllckltcGwu
Y3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVy
LmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjpXZWJWaWRlb0xh
eWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjp+V2ViVmlkZW9M
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6bGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6YWN0aXZlKToKKyAgICAgICAgKiBz
cmMvV2ViVmlkZW9MYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZGVvTGF5ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViVmlkZW9MYXllckltcGwpOgorICAgICAgICAqIHNyYy9XZWJW
aWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdB
Y3RpdmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoK
KyAgICAgICAgKiB0ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVGVzdC5jcHA6CisgICAgICAg
ICogdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwOgorCisyMDEyLTA4LTE2ICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSBSZW1v
dmUgdW5uZWNlc3NhcnkgdHJlZSBoaWVyYXJjaHkgaW5zcGVjdGlvbiBBUElzIGZyb20gV2ViTGF5
ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjI5
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVu
dExheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXll
ci5oCmluZGV4IDczMzZiZmFiY2Q3NDYxODIxOGI5ZGVkZWJhMDFiYzI3MzIzMjZjNjcuLjQ1Mzgx
ZWU5M2ZmMDYxODBjNWMxYWI1ZDhhMDMwNTY5ZjNjZDUzNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmgKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaApAQCAtMjksNTMgKzI5LDM2
IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViU2Nyb2xsYWJsZUxheWVy
LmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRlbnRMYXllckNocm9taXVtOwot
fQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNvbnRlbnRMYXllckNsaWVudDsKLWNs
YXNzIFdlYkNvbnRlbnRMYXllckltcGw7CiAKLWNsYXNzIFdlYkNvbnRlbnRMYXllciA6IHB1Ymxp
YyBXZWJTY3JvbGxhYmxlTGF5ZXIgeworY2xhc3MgV2ViQ29udGVudExheWVyIHsKIHB1YmxpYzoK
LSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250ZW50TGF5ZXIgY3JlYXRlKFdlYkNvbnRl
bnRMYXllckNsaWVudCopOworICAgIC8vIFRoZSBjbGllbnQgbXVzdCBvdXRsaXZlIHRoZSBXZWJD
b250ZW50TGF5ZXIuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQ29udGVudExheWVyKiBj
cmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50Kik7CiAKLSAgICBXZWJDb250ZW50TGF5ZXIoKSB7
IH0KLSAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV2ViQ29udGVudExheWVyJiBsYXllcikgOiBX
ZWJTY3JvbGxhYmxlTGF5ZXIobGF5ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYkNvbnRlbnRMYXll
cigpIHsgfQotICAgIFdlYkNvbnRlbnRMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvbnRlbnRM
YXllciYgbGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KIAotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBXZWJD
b250ZW50TGF5ZXJDbGllbnQgaXMgZ29pbmcgYXdheSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBjbGVhckNsaWVudCgpOworICAgIC8vIFRoZSBXZWJDb250
ZW50TGF5ZXIgaGFzIG93bmVyc2hpcCBvZiB0aGlzIHdyYXBwZXIuCisgICAgdmlydHVhbCBXZWJM
YXllciogbGF5ZXIoKSA9IDA7CiAKICAgICAvLyBTZXQgdG8gdHJ1ZSBpZiB0aGUgYmFja3NpZGUg
b2YgdGhpcyBsYXllcidzIGNvbnRlbnRzIHNob3VsZCBiZSB2aXNpYmxlIHdoZW4gY29tcG9zaXRl
ZC4KICAgICAvLyBEZWZhdWx0cyB0byBmYWxzZS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RG91YmxlU2lkZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wp
ID0gMDsKIAogICAgIC8vIFNldCB0byBhcHBseSBhIHNjYWxlIGZhY3RvciB1c2VkIHdoZW4gcGFp
bnRpbmcgYW5kIGRyYXdpbmcgdGhpcyBsYXllcidzIGNvbnRlbnQuIERlZmF1bHRzIHRvIDEuMC4K
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCk7CisgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpID0gMDsKIAogICAgIC8vIFNldCB0byBy
ZW5kZXIgdGV4dCBpbiB0aGlzIGxheWVyIHdpdGggTENEIGFudGlhbGlhc2luZy4gT25seSBzZXQg
aWYgeW91IGtub3cgdGhhdCB0aGlzIGxheWVyIHdpbGwgYmUKICAgICAvLyBkcmF3biBpbiBhIHdh
eSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlIC0gaS5lLiBvcGFxdWUgYmFja2dyb3VuZCwgbm90IHJv
dGF0ZWQgb3Igc2NhbGVkLCBldGMuCiAgICAgLy8gRGVmYXVsdHMgdG8gZmFsc2U7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFVzZUxDRFRleHQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dFVzZUxDRFRleHQoYm9vbCkgPSAwOwogCiAgICAgLy8gU2V0IHRvIGRyYXcgYSBzeXN0ZW0tZGVm
aW5lZCBjaGVja2VyYm9hcmQgaWYgdGhlIGNvbXBvc2l0b3Igd291bGQgb3RoZXJ3aXNlIGRyYXcg
YSB0aWxlIGluIHRoaXMgbGF5ZXIKICAgICAvLyBhbmQgdGhlIGFjdHVhbCBjb250ZW50cyBhcmUg
dW5hdmFpbGFibGUuIElmIGZhbHNlLCB0aGUgY29tcG9zaXRvciB3aWxsIGRyYXcgdGhlIGxheWVy
J3MgYmFja2dyb3VuZCBjb2xvcgogICAgIC8vIGZvciB0aGVzZSB0aWxlcy4KICAgICAvLyBEZWZh
dWx0cyB0byBmYWxzZS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RHJhd0NoZWNrZXJib2Fy
ZEZvck1pc3NpbmdUaWxlcyhib29sKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAg
IFdlYkNvbnRlbnRMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q29udGVudExh
eWVyQ2hyb21pdW0+Jik7Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtPiYpOwotICAgIG9wZXJh
dG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bT4oKSBjb25z
dDsKLSNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2lu
Z1RpbGVzKGJvb2wpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllci5oCmluZGV4IGIxOWMwNWYzZTNiMDk4ZDhlYjAzZWU1NjEyNzk2NDZiOTA4MWY0NTQuLjky
ZDJjNGZlZTg3NmE5MWJkYmY2MGJlMzg1MTM3M2NjZWY3MWIxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
LmgKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiV2ViRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiV2ViTGF5ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVGV4dHVyZUxheWVy
Q2hyb21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckNsaWVudDsKQEAgLTQ0LDQ5ICs0MCw0MyBAQCBjbGFzcyBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckNsaWVudDsKIC8vIFdoZW4gaW4gc2luZ2xlLXRocmVhZCBtb2RlLCB0aGlzIG1l
YW5zIGR1cmluZyBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdGUoKS4KIC8vIFdoZW4gdXNpbmcg
dGhlIHRocmVhZGVkIGNvbXBvc2l0b3IsIHRoaXMgY2FuIG1lYW4gYXQgYW4gYXJiaXRyYXJ5IHRp
bWUgdW50aWwKIC8vIHRoZSBXZWJMYXllclRyZWVWaWV3IGlzIGRlc3Ryb3llZC4KLWNsYXNzIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyIHsKIHB1YmxpYzoKICAgICAvLyBUaGUgb3duZXIgb2YgdGhpcyBsYXll
ciBtYXkgb3B0aW9uYWxseSBwcm92aWRlIGEgY2xpZW50LiBUaGlzIGNsaWVudCB3aWxsCiAgICAg
Ly8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb21wb3NpdG9yIHdpc2hlcyB0byBwcm9kdWNlIGEg
bmV3IGZyYW1lIGFuZCBjYW4KICAgICAvLyBwcm92aWRlIGEgbmV3IGZyb250IGJ1ZmZlciB0ZXh0
dXJlIElELiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgY2xpZW50IHdhbnRzIHRvCiAgICAgLy8gaW1w
bGVtZW50IGEgZG91YmxlLWJ1ZmZlcmluZyBzY2hlbWUgdGhhdCBpcyBzeW5jaHJvbml6ZWQgd2l0
aCB0aGUgY29tcG9zaXRvciwgZm9yIGluc3RhbmNlLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIGNyZWF0ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNs
aWVudCogPSAwKTsKLQotICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBjbGllbnQgZm9yIHRoaXMg
bGF5ZXIgaXMgZ29pbmcgYXdheSBhbmQgc2hvdWxkbid0IGJlIHVzZWQuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CisgICAgLy8gVGhlIGNsaWVudCBtdXN0IG91dGxpdmUg
dGhlIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyLgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyKiBjcmVhdGUoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGll
bnQqID0gMCk7CiAKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllcigpIHsgfQogICAgIHZpcnR1
YWwgfldlYkV4dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9CiAKKyAgICB2aXJ0dWFsIFdlYkxheWVy
KiBsYXllcigpID0gMDsKKwogICAgIC8vIFNldHMgdGhlIHRleHR1cmUgaWQgdGhhdCByZXByZXNl
bnRzIHRoZSBsYXllciwgaW4gdGhlIG5hbWVzcGFjZSBvZiB0aGUKICAgICAvLyBjb21wb3NpdG9y
IGNvbnRleHQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCkgPSAwOwogCiAgICAgLy8g
U2V0cyB3aGV0aGVyIG9yIG5vdCB0aGUgdGV4dHVyZSBzaG91bGQgYmUgZmxpcHBlZCBpbiB0aGUg
WSBkaXJlY3Rpb24gd2hlbgogICAgIC8vIHJlbmRlcmVkLgotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRGbGlwcGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGbGlwcGVkKGJvb2wpID0g
MDsKIAogICAgIC8vIFNldHMgdGhlIHJlY3QgaW4gVVYgc3BhY2Ugb2YgdGhlIHRleHR1cmUgdGhh
dCBpcyBtYXBwZWQgdG8gdGhlIGxheWVyCiAgICAgLy8gYm91bmRzLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lk
IHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRo
ZXIgZXZlcnkgcGl4ZWwgaW4gdGhpcyBsYXllciBpcyBvcGFxdWUuIERlZmF1bHRzIHRvIGZhbHNl
LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CisgICAgdmlydHVhbCB2
b2lkIHNldE9wYXF1ZShib29sKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBsYXll
cidzIHRleHR1cmUgaGFzIHByZW11bHRpcGxpZWQgYWxwaGEgb3Igbm90LiBEZWZhdWx0cyB0byB0
cnVlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQcmVtdWx0aXBsaWVkQWxwaGEoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sKSA9IDA7CiAKICAg
ICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgbW9zdCByZWNlbnRseSBwcm92aWRlZCB0ZXh0dXJlIElE
IGlzIGFib3V0IHRvIGJlIG1vZGlmaWVkIGV4dGVybmFsbHkuCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHdpbGxNb2RpZnlUZXh0dXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxNb2RpZnlUZXh0
dXJlKCkgPSAwOwogCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoaXMgY29udGV4dCBzaG91bGQgYmUg
cmF0ZSBsaW1pdGVkIGJ5IHRoZSBjb21wb3NpdG9yLiBSYXRlIGxpbWl0aW5nIHdvcmtzIGJ5IGJs
b2NraW5nCiAgICAgLy8gaW52YWxpZGF0ZSgpIGFuZCBpbnZhbGlkYXRlUmVjdCgpIGNhbGxzIGlm
IHRoZSBjb21wb3NpdG9yIGlzIHRvbyBtYW55IGZyYW1lcyBiZWhpbmQuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFJhdGVMaW1pdENvbnRleHQoYm9vbCk7Ci0KLXByaXZhdGU6Ci0jaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIo
UGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bT4pOwotI2VuZGlmCisgICAg
dmlydHVhbCB2b2lkIHNldFJhdGVMaW1pdENvbnRleHQoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYklPU3VyZmFjZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYklPU3VyZmFjZUxheWVyLmgKaW5kZXggMzdhNGM2NzkyYzFjNzZlZWNjMGM2MGMwZjNmYzlk
MGVhM2QzMzliYi4uYmNmMTQxMTJhYTRiOTQ5MGQwMzY5ZGJhNGE3Y2Y1YTA4NzY2ZjI4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXll
ci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5
ZXIuaApAQCAtMzAsMjcgKzMwLDE5IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJTaXplLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIElPU3VyZmFjZUxheWVy
Q2hyb21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBUaGlzIGNsYXNzIHJlcHJl
c2VudHMgYSBsYXllciB0aGF0IHJlbmRlcnMgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIElPU3VyZmFj
ZS4KLWNsYXNzIFdlYklPU3VyZmFjZUxheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdl
YklPU3VyZmFjZUxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJ
T1N1cmZhY2VMYXllciBjcmVhdGUoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJT1N1
cmZhY2VMYXllciogY3JlYXRlKCk7CiAKLSAgICBXZWJJT1N1cmZhY2VMYXllcigpIHsgfQogICAg
IHZpcnR1YWwgfldlYklPU3VyZmFjZUxheWVyKCkgeyB9CiAKLSAgICAvLyBTZXRzIHRoZSBJTyBz
dXJmYWNlIGlkIHRoYXQgcmVwcmVzZW50cyB0aGlzIGxheWVyJ3MgY29udGVudHMuCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNl
SWQsIFdlYlNpemUpOworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOwogCi1wcml2
YXRlOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIGV4cGxpY2l0IFdlYklPU3VyZmFj
ZUxheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4pOwotI2Vu
ZGlmCisgICAgLy8gU2V0cyB0aGUgSU8gc3VyZmFjZSBpZCB0aGF0IHJlcHJlc2VudHMgdGhpcyBs
YXllcidzIGNvbnRlbnRzLgorICAgIHZpcnR1YWwgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVz
KHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
SW1hZ2VMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxh
eWVyLmgKaW5kZXggYTkxNjgzNWYyMDViYzA2ZjU4NGQ0MjMzMmE0MWU0YzYwZTk5MDBiNC4uYzc3
MzdmMzFhMzc5NmZkMDRkY2RjNGJkZWYyNmI1YWI1NjBjMDE2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgKQEAgLTMwLDI0ICszMCwxNiBA
QAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIEltYWdlTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIFdlYkltYWdlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xh
c3MgV2ViSW1hZ2VMYXllciB7CiBwdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
SW1hZ2VMYXllciBjcmVhdGUoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJbWFnZUxh
eWVyKiBjcmVhdGUoKTsKIAotICAgIFdlYkltYWdlTGF5ZXIoKSB7IH0KICAgICB2aXJ0dWFsIH5X
ZWJJbWFnZUxheWVyKCkgeyB9CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Qml0bWFwKFNr
Qml0bWFwKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIGV4cGxpY2l0IFdlYklt
YWdlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+KTsKLSNlbmRp
ZgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRCaXRtYXAoU2tCaXRtYXApID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCmluZGV4IDY0MzFmODQ4YzZh
OThmOWM2ZWIyNWMxZGNhZGMyYTEzNjIzZDY1MWYuLmFmZTU5YjE5ZDRhMTc5OWZjODEyZTA5ZGI5
N2U1NGMwNmIzOTg4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmgKQEAgLTI5LDg4ICsyOSw4MyBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYkNvbG9yLmgiCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2Vi
UG9pbnQuaCIKICNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViUmVjdC5o
IgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiBjbGFz
cyBTa01hdHJpeDQ0OwotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBMYXllckNocm9taXVtOyB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQW5pbWF0aW9uRGVsZWdhdGU7CiBjbGFz
cyBXZWJGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7Citj
bGFzcyBXZWJTY3JvbGxhYmxlTGF5ZXI7CiBzdHJ1Y3QgV2ViRmxvYXRQb2ludDsKIHN0cnVjdCBX
ZWJGbG9hdFJlY3Q7CiBzdHJ1Y3QgV2ViU2l6ZTsKIAorY2xhc3MgV2ViTGF5ZXJJbXBsOworCiBj
bGFzcyBXZWJMYXllciB7CiBwdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTGF5
ZXIgY3JlYXRlKCk7Ci0KLSAgICBXZWJMYXllcigpIHsgfQotICAgIFdlYkxheWVyKGNvbnN0IFdl
YkxheWVyJiBsYXllcikgeyBhc3NpZ24obGF5ZXIpOyB9Ci0gICAgdmlydHVhbCB+V2ViTGF5ZXIo
KSB7IHJlc2V0KCk7IH0KLSAgICBXZWJMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYkxheWVyJiBs
YXllcikKLSAgICB7Ci0gICAgICAgIGFzc2lnbihsYXllcik7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0gICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGUuaXNO
dWxsKCk7IH0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzZXQoKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgYXNzaWduKGNvbnN0IFdlYkxheWVyJik7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29s
IGVxdWFscyhjb25zdCBXZWJMYXllciYpIGNvbnN0OworI2RlZmluZSBXRUJMQVlFUl9JU19QVVJF
X1ZJUlRVQUwKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJMYXllciogY3JlYXRlKCk7CisK
KyAgICB2aXJ0dWFsIH5XZWJMYXllcigpIHsgfQogCiAgICAgLy8gU2V0cyBhIHJlZ2lvbiBvZiB0
aGUgbGF5ZXIgYXMgaW52YWxpZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNvbnRlbnQuCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYp
OworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSA9
IDA7CiAKICAgICAvLyBTZXRzIHRoZSBlbnRpcmUgbGF5ZXIgYXMgaW52YWxpZCwgaS5lLiBuZWVk
cyB0byB1cGRhdGUgaXRzIGNvbnRlbnQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGludmFsaWRh
dGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0gMDsKIAotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhZGRDaGlsZChjb25zdCBXZWJMYXllciYpOwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBpbnNlcnRDaGlsZChjb25zdCBXZWJMYXllciYsIHNpemVfdCBpbmRleCk7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlcGxhY2VDaGlsZChjb25zdCBXZWJMYXllciYgcmVmZXJlbmNlLCBj
b25zdCBXZWJMYXllciYgbmV3TGF5ZXIpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDaGls
ZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXI+Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsQ2hp
bGRyZW4oKTsKKyAgICAvLyBUaGVzZSBmdW5jdGlvbnMgZG8gbm90IHRha2Ugb3duZXJzaGlwIG9m
IHRoZSBXZWJMYXllciogcGFyYW1ldGVyLgorICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChXZWJM
YXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0Q2hpbGQoV2ViTGF5ZXIqLCBzaXpl
X3QgaW5kZXgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGFjZUNoaWxkKFdlYkxheWVyKiBy
ZWZlcmVuY2UsIFdlYkxheWVyKiBuZXdMYXllcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
aGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXIqPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlRnJvbVBhcmVudCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsQ2hp
bGRyZW4oKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QW5jaG9yUG9pbnQoY29u
c3QgV2ViRmxvYXRQb2ludCYpOwotICAgIFdFQktJVF9FWFBPUlQgV2ViRmxvYXRQb2ludCBhbmNo
b3JQb2ludCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRBbmNob3JQb2ludChjb25zdCBX
ZWJGbG9hdFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgV2ViRmxvYXRQb2ludCBhbmNob3JQb2lu
dCgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNob3JQb2ludFoo
ZmxvYXQpOwotICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgYW5jaG9yUG9pbnRaKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50WihmbG9hdCkgPSAwOworICAgIHZpcnR1YWwg
ZmxvYXQgYW5jaG9yUG9pbnRaKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEJvdW5kcyhjb25zdCBXZWJTaXplJik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGJv
dW5kcygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlNpemUgYm91bmRzKCkgY29uc3QgPSAwOwogCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9S
VCBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NU
b0JvdW5kcyhib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25z
dCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TWFza0xheWVyKGNvbnN0IFdlYkxh
eWVyJik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlcGxpY2FMYXllcihjb25zdCBXZWJM
YXllciYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFJlcGxpY2FMYXllcihXZWJMYXllciopID0gMDsKIAotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXRPcGFjaXR5KGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JUIGZs
b2F0IG9wYWNpdHkoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eShmbG9hdCkg
PSAwOworICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRPcGFxdWUoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIG9w
YXF1ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBvcGFxdWUoKSBjb25zdCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0UG9zaXRpb24oY29uc3QgV2ViRmxvYXRQb2ludCYpOwotICAgIFdFQktJVF9FWFBPUlQg
V2ViRmxvYXRQb2ludCBwb3NpdGlvbigpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3Np
dGlvbihjb25zdCBXZWJGbG9hdFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgV2ViRmxvYXRQb2lu
dCBwb3NpdGlvbigpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTdWJs
YXllclRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0g
ICAgV0VCS0lUX0VYUE9SVCBTa01hdHJpeDQ0IHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JikgPSAwOworICAgIHZpcnR1YWwgU2tNYXRyaXg0NCBzdWJsYXllclRy
YW5zZm9ybSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUcmFuc2Zv
cm0oY29uc3QgU2tNYXRyaXg0NCYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRUcmFuc2Zv
cm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFNr
TWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBTa01hdHJpeDQ0JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0o
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCBTa01hdHJp
eDQ0IHRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhlciB0aGUgbGF5
ZXIgZHJhd3MgaXRzIGNvbnRlbnQgd2hlbiBjb21wb3NpdGluZy4KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBkcmF3
c0NvbnRlbnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd3NDb250ZW50KGJvb2wp
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgPSAwOwogCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcmVzZXJ2ZXMzRChib29sKSA9IDA7CiAKICAgICAvLyBNYXJrIHRoYXQgdGhpcyBsYXll
ciBzaG91bGQgdXNlIGl0cyBwYXJlbnQncyB0cmFuc2Zvcm0gYW5kIGRvdWJsZS1zaWRlZAogICAg
IC8vIHByb3BlcnRpZXMgaW4gZGV0ZXJtaW5pbmcgdGhpcyBsYXllcidzIGJhY2tmYWNlIHZpc2li
aWxpdHkgaW5zdGVhZCBvZgpAQCAtMTE5LDEwNSArMTE0LDY4IEBAIHB1YmxpYzoKICAgICAvLyBO
b3RlOiBUaGlzIEFQSSBpcyB0byB3b3JrIGFyb3VuZCBpc3N1ZXMgd2l0aCB2aXNpYmlsaXR5IHRo
ZSBoYW5kbGluZyBvZgogICAgIC8vIFdlYktpdCBsYXllcnMgdGhhdCBoYXZlIGEgY29udGVudHMg
bGF5ZXIgKGNhbnZhcywgcGx1Z2luLCBXZWJHTCwgdmlkZW8sCiAgICAgLy8gZXRjKS4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCkgPSAw
OwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcik7
CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcikgPSAwOwogCiAg
ICAgLy8gQ2xlYXIgdGhlIGZpbHRlcnMgaW4gdXNlIGJ5IHBhc3NpbmcgaW4gYSBuZXdseSBpbnN0
YW50aWF0ZWQKICAgICAvLyBXZWJGaWx0ZXJPcGVyYXRpb25zIG9iamVjdC4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJik7CisgICAg
dmlydHVhbCB2b2lkIHNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpID0gMDsK
IAogICAgIC8vIEFwcGx5IGZpbHRlcnMgdG8gcGl4ZWxzIHRoYXQgc2hvdyB0aHJvdWdoIHRoZSBi
YWNrZ3JvdW5kIG9mIHRoaXMgbGF5ZXIuCiAgICAgLy8gTm90ZTogVGhlc2UgZmlsdGVycyBhcmUg
b25seSBwb3NzaWJsZSBvbiBsYXllcnMgdGhhdCBhcmUgZHJhd24gZGlyZWN0bHkKICAgICAvLyB0
byBhIHJvb3QgcmVuZGVyIHN1cmZhY2Ugd2l0aCBhbiBvcGFxdWUgYmFja2dyb3VuZC4gVGhpcyBt
ZWFucyBpZiBhbgogICAgIC8vIGFuY2VzdG9yIG9mIHRoZSBiYWNrZ3JvdW5kLWZpbHRlcmVkIGxh
eWVyIHNldHMgY2VydGFpbiBwcm9wZXJ0aWVzCiAgICAgLy8gKG9wYWNpdHksIHRyYW5zZm9ybXMp
LCBpdCBtYXkgY29uZmxpY3QgYW5kIGhpZGUgdGhlIGJhY2tncm91bmQgZmlsdGVycy4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3Bl
cmF0aW9ucyYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBX
ZWJGaWx0ZXJPcGVyYXRpb25zJikgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERl
YnVnQm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldERl
YnVnTmFtZShXZWJTdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9y
KGNvbnN0IFdlYkNvbG9yJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlcldp
ZHRoKGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnTmFtZShXZWJTdHJpbmcp
ID0gMDsKIAogICAgIC8vIEFuIGFuaW1hdGlvbiBkZWxlZ2F0ZSBpcyBub3RpZmllZCB3aGVuIGFu
aW1hdGlvbnMgYXJlIHN0YXJ0ZWQgYW5kCiAgICAgLy8gc3RvcHBlZC4gVGhlIFdlYkxheWVyIGRv
ZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBkZWxlZ2F0ZSwgYW5kIGl0IGlzCiAgICAgLy8g
dGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjbGllbnQgdG8gcmVzZXQgdGhlIGxheWVyJ3MgZGVs
ZWdhdGUgYmVmb3JlCiAgICAgLy8gZGVsZXRpbmcgdGhlIGRlbGVnYXRlLgotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSopOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0
ZSopID0gMDsKIAogICAgIC8vIFJldHVybnMgZmFsc2UgaWYgdGhlIGFuaW1hdGlvbiBjYW5ub3Qg
YmUgYWRkZWQuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGFkZEFuaW1hdGlvbihXZWJBbmltYXRp
b24qKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopID0gMDsK
IAogICAgIC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSA9IDA7CiAKICAg
ICAvLyBSZW1vdmVzIGFsbCBhbmltYXRpb25zIHdpdGggdGhlIGdpdmVuIGlkIHRhcmdldGluZyB0
aGUgZ2l2ZW4gcHJvcGVydHkuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlbW92ZUFuaW1hdGlv
bihpbnQgYW5pbWF0aW9uSWQsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBXZWJBbmltYXRpb246
OlRhcmdldFByb3BlcnR5KSA9IDA7CiAKICAgICAvLyBQYXVzZXMgYWxsIGFuaW1hdGlvbnMgd2l0
aCB0aGUgZ2l2ZW4gaWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHBhdXNlQW5pbWF0aW9uKGlu
dCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpOworICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KSA9IDA7CiAKICAg
ICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBzdXNwZW5kIGFuZCByZXN1bWUgYWxsIGFuaW1h
dGlvbnMuIFRoZSBnaXZlbiB0aW1lCiAgICAgLy8gaXMgYXNzdW1lZCB0byB1c2UgdGhlIHNhbWUg
dGltZSBiYXNlIGFzIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpLgotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSk7Ci0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUp
OworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXN1bWVBbmltYXRpb25zKGRvdWJsZSBtb25vdG9u
aWNUaW1lKSA9IDA7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXllciBoYXMgYW55
IGFjdGl2ZSBhbmltYXRpb25zIC0gdXNlZnVsIGZvciB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCk7CisgICAgdmlydHVhbCBib29sIGhhc0FjdGl2ZUFu
aW1hdGlvbigpID0gMDsKIAogICAgIC8vIFRyYW5zZmVycyBhbGwgYW5pbWF0aW9ucyBydW5uaW5n
IG9uIHRoZSBjdXJyZW50IGxheWVyLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCB0cmFuc2ZlckFu
aW1hdGlvbnNUbyhXZWJMYXllciopOworICAgIHZpcnR1YWwgdm9pZCB0cmFuc2ZlckFuaW1hdGlv
bnNUbyhXZWJMYXllciopID0gMDsKKworICAgIC8vIFNjcm9sbGluZworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRT
Y3JvbGxhYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRI
YW5kbGVycyhib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFp
blRocmVhZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpID0gMDsKIAogICAgIC8vIEZv
cmNlcyB0aGlzIGxheWVyIHRvIHVzZSBhIHJlbmRlciBzdXJmYWNlLiBUaGVyZSBpcyBubyBiZW5l
Zml0IGluIGRvaW5nCiAgICAgLy8gc28sIGJ1dCB0aGlzIGlzIHRvIGZhY2lsaXRhdGUgYmVuY2ht
YXJrcyBhbmQgdGVzdHMuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZvcmNlUmVuZGVyU3Vy
ZmFjZShib29sKTsKLQotICAgIC8vIERyb3BzIHRoaXMgbGF5ZXIncyByZW5kZXIgc3VyZmFjZSwg
aWYgaXQgaGFzIG9uZS4gVXNlZCB0byBicmVhayBjeWNsZXMgaW4gc29tZQotICAgIC8vIGNhc2Vz
IC0gaWYgeW91IGFyZW4ndCBzdXJlLCB5b3UgZG9uJ3QgbmVlZCB0byBjYWxsIHRoaXMuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFyUmVuZGVyU3VyZmFjZSgpOwotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4gVCB0bygpCi0gICAgewotICAgICAgICBUIHJlczsKLSAgICAgICAgcmVzLldl
YkxheWVyOjphc3NpZ24oKnRoaXMpOwotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IFQgdG9Db25zdCgpIGNvbnN0Ci0gICAgewotICAg
ICAgICBUIHJlczsKLSAgICAgICAgcmVzLldlYkxheWVyOjphc3NpZ24oKnRoaXMpOwotICAgICAg
ICByZXR1cm4gcmVzOwotICAgIH0KLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdl
YkxheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiYpOwot
ICAgIFdlYkxheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW0+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW0+KCkgY29uc3Q7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCogdW53cmFw
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUKj4obV9wcml2YXRl
LmdldCgpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjb25zdCBUKiBjb25z
dFVud3JhcCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3Qg
VCo+KG1fcHJpdmF0ZS5nZXQoKSk7Ci0gICAgfQotI2VuZGlmCi0KLXByb3RlY3RlZDoKLSAgICBX
ZWJQcml2YXRlUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+IG1fcHJpdmF0ZTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wpID0gMDsKIH07CiAKLWlubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgV2ViTGF5ZXImIGEsIGNvbnN0IFdlYkxheWVyJiBiKQotewot
ICAgIHJldHVybiBhLmVxdWFscyhiKTsKLX0KLQotaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5ZXImIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBi
KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBXZWJMYXllcl9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGFibGVM
YXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxlTGF5
ZXIuaAppbmRleCBlYTAyZjhjNzM5NjFhZmQzZjM5NWM3ZTJhYzliNjM4MGZkOGQ3NmFkLi5hYTM0
NWFhYTUxOGJiNGQyODk0NTRlNDQ0ZDg4Y2EyMDVmMDE2ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oCisrKyBiL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmgKQEAgLTM0LDI5
ICszNCwxNSBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViU2Nyb2xsYWJsZUxh
eWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYlNjcm9sbGFibGVMYXllciA6IHZpcnR1
YWwgcHVibGljIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIoKSB7
IH0KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIoY29uc3QgV2ViU2Nyb2xsYWJsZUxheWVyJiBsYXll
cikgOiBXZWJMYXllcihsYXllcikgeyB9Ci0gICAgdmlydHVhbCB+V2ViU2Nyb2xsYWJsZUxheWVy
KCkgeyB9Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2Nyb2xs
YWJsZUxheWVyJiBsYXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIp
OwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
U2Nyb2xsYWJsZShib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SGF2ZVdoZWVsRXZl
bnRIYW5kbGVycyhib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2hvdWxkU2Nyb2xs
T25NYWluVGhyZWFkKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXROb25GYXN0U2Ny
b2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4mKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCk7Ci0KLQot
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIFdlYlNjcm9sbGFibGVMYXllcihjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mIGxheWVyKSA6IFdlYkxheWVy
KGxheWVyKSB7IH0KLSNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihX
ZWJQb2ludCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxhYmxlKGJvb2wpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3Rv
cjxXZWJSZWN0PiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNDb250YWluZXJGb3JGaXhl
ZFBvc2l0aW9uTGF5ZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRUb0Nv
bnRhaW5lckxheWVyKGJvb2wpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXll
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5o
CmluZGV4IDFiZmU3ZDZhYmIzYTU5ZjNmM2VhMzMwNDQ4Y2M2NDA3ZDMxMWExYTkuLjQ1MWEwYjlj
MTM0YjZjNDQ0OTUwZTFhMmI2MjNmM2JlMWYwMjExMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmgKQEAgLTMyLDI5ICszMiwy
MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxiYXI7Ci1jbGFzcyBTY3Jv
bGxiYXJMYXllckNocm9taXVtOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2Vi
U2Nyb2xsYmFyTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViU2Nyb2xsYmFyTGF5
ZXIgewogcHVibGljOgotICAgIFdlYlNjcm9sbGJhckxheWVyKCkgeyB9Ci0gICAgV2ViU2Nyb2xs
YmFyTGF5ZXIoY29uc3QgV2ViU2Nyb2xsYmFyTGF5ZXImIGxheWVyKSA6IFdlYkxheWVyKGxheWVy
KSB7IH0KICAgICB2aXJ0dWFsIH5XZWJTY3JvbGxiYXJMYXllcigpIHsgfQotICAgIFdlYlNjcm9s
bGJhckxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViU2Nyb2xsYmFyTGF5ZXImIGxheWVyKQotICAg
IHsKLSAgICAgICAgV2ViTGF5ZXI6OmFzc2lnbihsYXllcik7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoY29uc3Qg
V2ViTGF5ZXIpOworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxheWVyKikgPSAwOwogCiAjaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgc3RhdGljIFdlYlNjcm9sbGJhckxheWVyIGNyZWF0ZShXZWJDb3Jl
OjpTY3JvbGxiYXIqLCBXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFBhc3NPd25QdHI8V2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeT4pOwotICAgIGV4cGxpY2l0IFdlYlNjcm9sbGJhckxheWVyKGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtPiYpOwot
ICAgIFdlYlNjcm9sbGJhckxheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdl
YkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+KCkgY29uc3Q7CisgICAgV0VC
S0lUX0VYUE9SVCBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIqIGNyZWF0ZShXZWJDb3JlOjpTY3Jv
bGxiYXIqLCBXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFy
VGhlbWVHZW9tZXRyeT4pOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oIGIvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaAppbmRleCBhZDkxMjNkOTYyYWZl
YWVhOGE1NjMxMjk0NWRlMWZjNWY4OTZjOWZjLi4wMmU0NmYwNDdmYWYyNTNhYzExZTE5N2M0NTEw
ODE3YmExZjQ4MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNvbGlkQ29sb3JMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViU29saWRDb2xvckxheWVyLmgKQEAgLTI2LDIxICsyNiwyMCBAQAogI2lmbmRlZiBXZWJT
b2xpZENvbG9yTGF5ZXJfaAogI2RlZmluZSBXZWJTb2xpZENvbG9yTGF5ZXJfaAogCisjaW5jbHVk
ZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJGbG9h
dFJlY3QuaCIKLSNpbmNsdWRlICJXZWJMYXllci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWNs
YXNzIFdlYlNvbGlkQ29sb3JMYXllckltcGw7CitjbGFzcyBXZWJMYXllcjsKIAotY2xhc3MgV2Vi
U29saWRDb2xvckxheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYlNvbGlkQ29sb3JM
YXllciB7CiBwdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViU29saWRDb2xvckxh
eWVyIGNyZWF0ZSgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3Io
Y29uc3QgV2ViQ29sb3ImKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTb2xpZENvbG9y
TGF5ZXIqIGNyZWF0ZSgpOwogCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU29s
aWRDb2xvckxheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBs
PiYpOwotI2VuZGlmCisgICAgdmlydHVhbCB+V2ViU29saWRDb2xvckxheWVyKCkgeyB9CisKKyAg
ICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFj
a2dyb3VuZENvbG9yKFdlYkNvbG9yKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9MYXll
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0xheWVyLmgKaW5k
ZXggNTRkYTM0NTRiYTAzZWZmYjVlMzRiMGQzMzJiOTJjMDExMjQ3NWFhNC4uMWFjZmZmNTRhMDcy
N2I0OThkZDk0MWZjYzQ2YTI3NzI2YWE3ZDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0xheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJWaWRlb0xheWVyLmgKQEAgLTI5LDI3ICsyOSwyMCBAQAogI2luY2x1
ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLWNsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYlZpZGVvRnJhbWVQcm92aWRlcjsKIAotY2xhc3MgV2ViVmlkZW9MYXllciA6
IHB1YmxpYyBXZWJMYXllciB7CitjbGFzcyBXZWJWaWRlb0xheWVyIHsKIHB1YmxpYzoKLSAgICBX
RUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJWaWRlb0xheWVyIGNyZWF0ZShXZWJWaWRlb0ZyYW1lUHJv
dmlkZXIqKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJWaWRlb0xheWVyKiBjcmVhdGUo
V2ViVmlkZW9GcmFtZVByb3ZpZGVyKik7CiAKLSAgICBXZWJWaWRlb0xheWVyKCkgeyB9CiAgICAg
dmlydHVhbCB+V2ViVmlkZW9MYXllcigpIHsgfQogCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
aXMgbGF5ZXIgaXMgYWN0aXZlbHkgcmVuZGVyaW5nIChlLmcuIGN1cnJlbnRseSBhdHRhY2hlZCB0
byBhIFdlYkxheWVyVHJlZVZpZXcpLgotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBhY3RpdmUoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKIAotI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgotICAgIGV4cGxpY2l0IFdlYlZpZGVvTGF5ZXIoUGFzc1JlZlB0cjxXZWJD
b3JlOjpWaWRlb0xheWVyQ2hyb21pdW0+KTsKLSNlbmRpZgorICAgIC8vIFJldHVybnMgdHJ1ZSBp
ZiB0aGlzIGxheWVyIGlzIGFjdGl2ZWx5IHJlbmRlcmluZyAoZS5nLiBjdXJyZW50bHkgYXR0YWNo
ZWQgdG8gYSBXZWJMYXllclRyZWVWaWV3KS4KKyAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29u
c3QgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9t
aXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCmluZGV4IDFkYjc1OTQwNDdjODhjYWIwZGRhZmUwMDM3
YTNiZTZjYWMzODY4ODYuLjFkNGNmZjk4NmEyZjdhMjM3OGY0ODc2YjQ4Y2U5YTA1MTIwZDJiMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCkBAIC0zNCw3
ICszNCw2IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2
ZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaD4KICNpbmNsdWRlIDxw
dWJsaWMvV2ViU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVy
Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaD4KQEAgLTQy
LDcgKzQxLDYgQEAKIAogdXNpbmcgV2ViS2l0OjpXZWJMYXllcjsKIHVzaW5nIFdlYktpdDo6V2Vi
UmVjdDsKLXVzaW5nIFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVyOwogdXNpbmcgV2ViS2l0OjpX
ZWJTY3JvbGxiYXJMYXllcjsKIHVzaW5nIFdlYktpdDo6V2ViVmVjdG9yOwogCkBAIC01MSwzNiAr
NDksMzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cml2YXRlIHsKIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0
ZSk7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKCkgeyB9CisgICAg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKCkKKyAgICAgICAgOiBtX3Njcm9sbExheWVyKDAp
CisgICAgeworICAgIH0KKwogICAgIH5TY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGUoKSB7IH0K
IAotICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViU2Nyb2xsYWJsZUxheWVyIGxheWVyKQorICAg
IHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVyKQogICAgIHsKICAgICAgICAgbV9z
Y3JvbGxMYXllciA9IGxheWVyOwogCi0gICAgICAgIGlmICghbV9ob3Jpem9udGFsU2Nyb2xsYmFy
TGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllci5z
ZXRTY3JvbGxMYXllcihsYXllcik7Ci0gICAgICAgIGlmICghbV92ZXJ0aWNhbFNjcm9sbGJhckxh
eWVyLmlzTnVsbCgpKQotICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyLnNldFNj
cm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYgKG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVy
KQorICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVy
KGxheWVyKTsKKyAgICAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXJMYXllcikKKyAgICAgICAg
ICAgIG1fdmVydGljYWxTY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOwogICAg
IH0KIAotICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKFdlYlNjcm9sbGJhckxh
eWVyIGxheWVyKQorICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKFBhc3NPd25Q
dHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGxheWVyKQogICAgIHsKICAgICAgICAgbV9ob3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKICAgICB9CiAKLSAgICB2b2lkIHNldFZlcnRpY2FsU2Ny
b2xsYmFyTGF5ZXIoV2ViU2Nyb2xsYmFyTGF5ZXIgbGF5ZXIpCisgICAgdm9pZCBzZXRWZXJ0aWNh
bFNjcm9sbGJhckxheWVyKFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGxheWVyKQogICAg
IHsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyID0gbGF5ZXI7CiAgICAgfQogCi0g
ICAgYm9vbCBoYXNTY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuICFtX3Njcm9sbExheWVyLmlz
TnVsbCgpOyB9Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNjcm9sbExheWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxMYXllcjsgfQorICAgIFdlYkxheWVyKiBzY3JvbGxMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXI7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJTY3JvbGxhYmxl
TGF5ZXIgbV9zY3JvbGxMYXllcjsKLSAgICBXZWJTY3JvbGxiYXJMYXllciBtX2hvcml6b250YWxT
Y3JvbGxiYXJMYXllcjsKLSAgICBXZWJTY3JvbGxiYXJMYXllciBtX3ZlcnRpY2FsU2Nyb2xsYmFy
TGF5ZXI7CisgICAgV2ViTGF5ZXIqIG1fc2Nyb2xsTGF5ZXI7CisgICAgT3duUHRyPFdlYlNjcm9s
bGJhckxheWVyPiBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllcjsKKyAgICBPd25QdHI8V2ViU2Ny
b2xsYmFyTGF5ZXI+IG1fdmVydGljYWxTY3JvbGxiYXJMYXllcjsKIH07CiAKIFBhc3NSZWZQdHI8
U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGUoUGFnZSog
cGFnZSkKQEAgLTExMiwxNSArMTEzLDIwIEBAIHN0YXRpYyBHcmFwaGljc0xheWVyKiBzY3JvbGxM
YXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykKICNlbmRpZgogfQogCi1zdGF0
aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFdlYlNjcm9sbGFibGVMYXllciBzY3JvbGxMYXllciwgR3JhcGhpY3NMYXllciogc2Ny
b2xsYmFyR3JhcGhpY3NMYXllciwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCitzdGF0aWMgV2ViTGF5
ZXIqIHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIp
Cit7CisgICAgcmV0dXJuIGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7Cit9CisKK3N0YXRpYyBQYXNz
T3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3JvbGxiYXJMYXllcihTY3JvbGxiYXIq
IHNjcm9sbGJhciwgV2ViTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxi
YXJHcmFwaGljc0xheWVyLCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKICAgICBBU1NFUlQoc2Ny
b2xsYmFyKTsKICAgICBBU1NFUlQoc2Nyb2xsYmFyR3JhcGhpY3NMYXllcik7CiAKLSAgICBpZiAo
c2Nyb2xsTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAoIXNjcm9sbExheWVyKSB7CiAgICAgICAg
IC8vIEZJWE1FOiBzb21ldGltZXMgd2UgZ2V0IGNhbGxlZCBiZWZvcmUgc2V0U2Nyb2xsTGF5ZXIs
IHdvcmthcm91bmQgYnkgZmluZGluZyB0aGUgc2Nyb2xsIGxheW91dCBvdXJzZWx2ZXMuCi0gICAg
ICAgIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KS0+cGxh
dGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7Ci0gICAgICAgIEFTU0VSVCgh
c2Nyb2xsTGF5ZXIuaXNOdWxsKCkpOworICAgICAgICBzY3JvbGxMYXllciA9IHNjcm9sbGFibGVM
YXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7
CisgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAgfQogCiAgICAgLy8gUm9vdCBsYXll
ciBub24tb3ZlcmxheSBzY3JvbGxiYXJzIHNob3VsZCBiZSBtYXJrZWQgb3BhcXVlIHRvIGRpc2Fi
bGUKQEAgLTEzOCw3ICsxNDQsNyBAQCBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Ny
b2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibAogICAgIGlmICgh
cGxhdGZvcm1TdXBwb3J0ZWQgfHwgc2Nyb2xsYmFyLT5pc0N1c3RvbVNjcm9sbGJhcigpKSB7CiAg
ICAgICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYSgwKTsKICAg
ICAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAg
ICAgICByZXR1cm4gV2ViU2Nyb2xsYmFyTGF5ZXIoKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCiAgICAgLy8gQWxsIENocm9taXVtIHNjcm9sbGJhciB0aGVtZXMgZGVyaXZlIGZy
b20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuCkBAIC0xNDYsMTQgKzE1MiwxNCBAQCBzdGF0aWMg
V2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFdlYlNjcm9sbGFibAogICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBh
aW50ZXIodGhlbWVDb21wb3NpdGUsIHNjcm9sbGJhcik7CiAgICAgT3duUHRyPFdlYktpdDo6V2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhlbWVDb21wb3NpdGUpKTsKIAotICAgIFdlYlNjcm9s
bGJhckxheWVyIHNjcm9sbGJhckxheWVyID0gV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShzY3Jv
bGxiYXIsIHBhaW50ZXIsIGdlb21ldHJ5LnJlbGVhc2UoKSk7Ci0gICAgc2Nyb2xsYmFyTGF5ZXIu
c2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIpOworICAgIE93blB0cjxXZWJTY3JvbGxiYXJMYXll
cj4gc2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdFB0cihXZWJTY3JvbGxiYXJMYXllcjo6Y3JlYXRlKHNj
cm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnkucmVsZWFzZSgpKSk7CisgICAgc2Nyb2xsYmFyTGF5
ZXItPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKIAotICAgIHNjcm9sbGJhckdyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYSgmc2Nyb2xsYmFyTGF5ZXIpOworICAgIHNjcm9sbGJh
ckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShzY3JvbGxiYXJMYXllci0+bGF5ZXIo
KSk7CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsK
LSAgICBzY3JvbGxiYXJMYXllci5zZXRPcGFxdWUoc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+Y29u
dGVudHNPcGFxdWUoKSk7CisgICAgc2Nyb2xsYmFyTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShz
Y3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250ZW50c09wYXF1ZSgpKTsKIAotICAgIHJldHVybiBz
Y3JvbGxiYXJMYXllcjsKKyAgICByZXR1cm4gc2Nyb2xsYmFyTGF5ZXIucmVsZWFzZSgpOwogfQog
CiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIb3Jpem9udGFsU2Nyb2xsYmFy
TGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIEdyYXBoaWNzTGF5ZXIqIGhvcml6
b250YWxTY3JvbGxiYXJMYXllcikKQEAgLTE3NCwyMCArMTgwLDE3IEBAIHZvaWQgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OmZyYW1lVmlld1ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJh
bWVWaWV3KiBmCiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbExheWVyKEdy
YXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyKQogewotICAgIFdlYlNjcm9sbGFibGVMYXllciBsYXll
cjsKLSAgICBpZiAoc2Nyb2xsTGF5ZXIpCi0gICAgICAgIGxheWVyID0gc2Nyb2xsTGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKS0+dG88V2ViU2Nyb2xsYWJsZUxheWVyPigpOwotICAgIG1fcHJpdmF0ZS0+
c2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOworICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsTGF5ZXIoc2Ny
b2xsTGF5ZXIgPyBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xheWVyKHNjcm9sbExheWVyKSA6
IDApOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXROb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbihjb25zdCBSZWdpb24mIHJlZ2lvbikKIHsKLSAgICBpZiAobV9wcml2YXRlLT5oYXNT
Y3JvbGxMYXllcigpKSB7CisgICAgaWYgKG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKSkgewogICAg
ICAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHMgPSByZWdpb24ucmVjdHMoKTsKICAgICAgICAgV2Vi
VmVjdG9yPFdlYlJlY3Q+IHdlYlJlY3RzKHJlY3RzLnNpemUoKSk7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICB3ZWJSZWN0c1tp
XSA9IHJlY3RzW2ldOwotICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkuc2V0Tm9uRmFz
dFNjcm9sbGFibGVSZWdpb24od2ViUmVjdHMpOworICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExh
eWVyKCktPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHdlYlJlY3RzKTsKICAgICB9CiB9CiAK
QEAgLTE5OCwxNCArMjAxLDE0IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9s
bFBhcmFtZXRlcnMoY29uc3QgU2Nyb2xsUGFyYW1ldGVycyYpCiAKIHZvaWQgU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldFdoZWVsRXZlbnRIYW5kbGVyQ291bnQodW5zaWduZWQgd2hlZWxFdmVudEhh
bmRsZXJDb3VudCkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5oYXNTY3JvbGxMYXllcigpKQotICAg
ICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkuc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyh3
aGVlbEV2ZW50SGFuZGxlckNvdW50ID4gMCk7CisgICAgaWYgKG1fcHJpdmF0ZS0+c2Nyb2xsTGF5
ZXIoKSkKKyAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLT5zZXRIYXZlV2hlZWxFdmVu
dEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKIH0KIAogdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRo
cmVhZChib29sIHNob3VsZCkKIHsKLSAgICBpZiAobV9wcml2YXRlLT5oYXNTY3JvbGxMYXllcigp
KQotICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkuc2V0U2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKHNob3VsZCk7CisgICAgaWYgKG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKSkKKyAgICAg
ICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQo
c2hvdWxkKTsKIH0KIAogYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNGaXhlZFBv
c2l0aW9uTGF5ZXJzKCkgY29uc3QKQEAgLTIxNSwxNCArMjE4LDE0IEBAIGJvb2wgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0CiAKIHZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9u
TGF5ZXJzKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBib29sIGVuYWJsZSkKIHsKLSAgICBpZiAoV2Vi
TGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBsYXllci0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICBw
bGF0Zm9ybUxheWVyLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCkuc2V0SXNDb250YWluZXJGb3JG
aXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7CisgICAgaWYgKFdlYkxheWVyKiBzY3JvbGxhYmxl
TGF5ZXIgPSBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xheWVyKGxheWVyKSkKKyAgICAgICAg
c2Nyb2xsYWJsZUxheWVyLT5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoZW5h
YmxlKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJc0ZpeGVkVG9D
b250YWluZXJMYXllcihHcmFwaGljc0xheWVyKiBsYXllciwgYm9vbCBlbmFibGUpCiB7Ci0gICAg
aWYgKFdlYkxheWVyKiBwbGF0Zm9ybUxheWVyID0gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkKLSAg
ICAgICAgcGxhdGZvcm1MYXllci0+dG88V2ViU2Nyb2xsYWJsZUxheWVyPigpLnNldEZpeGVkVG9D
b250YWluZXJMYXllcihlbmFibGUpOworICAgIGlmIChXZWJMYXllciogc2Nyb2xsYWJsZUxheWVy
ID0gc2Nyb2xsYWJsZUxheWVyRm9yR3JhcGhpY3NMYXllcihsYXllcikpCisgICAgICAgIHNjcm9s
bGFibGVMYXllci0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJCcmlkZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAKaW5kZXggODIxZThlYzhhMmJkYTJiZGFjMDEz
ODI2M2RmNzZjMzYwNWFlMTFhZS4uN2ExMzkxM2NjMDNhYjhjMDAwMjQ0ZjRlMzI4YjllODE4Y2Q2
MGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAKQEAgLTQ1LDI1ICs0NSwz
MiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFjY2VsZXJhdGVkRGV2aWNlQ29udGV4
dCA6IHB1YmxpYyBTa0RlZmVycmVkQ2FudmFzOjpEZXZpY2VDb250ZXh0IHsKIHB1YmxpYzoKLSAg
ICBBY2NlbGVyYXRlZERldmljZUNvbnRleHQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIGxheWVyLCBib29sIHVzZURvdWJsZUJ1ZmZlcmluZykK
KyAgICBBY2NlbGVyYXRlZERldmljZUNvbnRleHQoV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKiBsYXllciwgYm9vbCB1c2VEb3VibGVCdWZmZXJp
bmcpCiAgICAgICAgIDogbV9sYXllcihsYXllcikKICAgICAgICAgLCBtX2NvbnRleHQoKQogICAg
ICAgICAsIG1fdXNlRG91YmxlQnVmZmVyaW5nKHVzZURvdWJsZUJ1ZmZlcmluZykKICAgICB7CiAg
ICAgICAgIEFTU0VSVChjb250ZXh0KTsKLSAgICAgICAgQVNTRVJUKCFsYXllci5pc051bGwoKSk7
CisgICAgICAgIEFTU0VSVChsYXllcik7CiAgICAgICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CiAg
ICAgfQogCisgICAgdm9pZCBjbGVhckxheWVyKCkKKyAgICB7CisgICAgICAgIG1fbGF5ZXIgPSAw
OworICAgIH0KKwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRHJhdygpCiAgICAgeworICAg
ICAgICBpZiAoIW1fbGF5ZXIpCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghbV91
c2VEb3VibGVCdWZmZXJpbmcpCi0gICAgICAgICAgICBtX2xheWVyLndpbGxNb2RpZnlUZXh0dXJl
KCk7CisgICAgICAgICAgICBtX2xheWVyLT53aWxsTW9kaWZ5VGV4dHVyZSgpOwogICAgICAgICBt
X2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllciBtX2xheWVyOworICAgIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyKiBtX2xheWVyOwogICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2NvbnRleHQ7CiAgICAg
Ym9vbCBtX3VzZURvdWJsZUJ1ZmZlcmluZzsKIH07CkBAIC05NiwyOCArMTAzLDMwIEBAIENhbnZh
czJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2UoUGFzc1JlZlB0cjxHcmFwaGljc0Nv
bnRleHQzRD4gY29udGV4dCwKICAgICAgICAgICAgIGdyQ29udGV4dC0+cmVzZXRDb250ZXh0KCk7
CiAgICAgfQogCi0gICAgbV9sYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUo
dGhpcyk7Ci0gICAgbV9sYXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKLSAgICBtX2xheWVy
LnNldFJhdGVMaW1pdENvbnRleHQoIVdlYktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5h
YmxlZCgpIHx8IG1fdXNlRG91YmxlQnVmZmVyaW5nKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIo
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgbV9sYXllci0+c2V0
VGV4dHVyZUlkKHRleHR1cmVJZCk7CisgICAgbV9sYXllci0+c2V0UmF0ZUxpbWl0Q29udGV4dCgh
V2ViS2l0OjpXZWJDb21wb3NpdG9yOjp0aHJlYWRpbmdFbmFibGVkKCkgfHwgbV91c2VEb3VibGVC
dWZmZXJpbmcpOwogfQogCiAKIENhbnZhczJETGF5ZXJCcmlkZ2U6On5DYW52YXMyRExheWVyQnJp
ZGdlKCkKIHsKLSAgICBtX2xheWVyLnNldFRleHR1cmVJZCgwKTsKKyAgICBtX2xheWVyLT5zZXRU
ZXh0dXJlSWQoMCk7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKSB7CiAgICAgICAgIG1f
Y29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0
KCksIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2Zyb250QnVmZmVyVGV4dHVyZSkpOwogICAg
ICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiAgICAgfQotICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQo
KTsKKyAgICBpZiAobV9kZWZlcnJlZERldmljZUNvbnRleHQpCisgICAgICAgIG1fZGVmZXJyZWRE
ZXZpY2VDb250ZXh0LT5jbGVhckxheWVyKCk7CisgICAgbV9sYXllci0+Y2xlYXJDbGllbnQoKTsK
IH0KIAogU2tDYW52YXMqIENhbnZhczJETGF5ZXJCcmlkZ2U6OnNrQ2FudmFzKFNrRGV2aWNlKiBk
ZXZpY2UpCiB7CiAgICAgaWYgKG1fZGVmZXJyYWxNb2RlID09IERlZmVycmVkKSB7Ci0gICAgICAg
IFNrQXV0b1RVbnJlZjxBY2NlbGVyYXRlZERldmljZUNvbnRleHQ+IGRldmljZUNvbnRleHQobmV3
IEFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dChjb250ZXh0KCksIG1fbGF5ZXIsIG1fdXNlRG91Ymxl
QnVmZmVyaW5nKSk7Ci0gICAgICAgIG1fY2FudmFzID0gbmV3IFNrRGVmZXJyZWRDYW52YXMoZGV2
aWNlLCBkZXZpY2VDb250ZXh0LmdldCgpKTsKKyAgICAgICAgbV9kZWZlcnJlZERldmljZUNvbnRl
eHQucmVzZXQobmV3IEFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dChjb250ZXh0KCksIG1fbGF5ZXIu
Z2V0KCksIG1fdXNlRG91YmxlQnVmZmVyaW5nKSk7CisgICAgICAgIG1fY2FudmFzID0gbmV3IFNr
RGVmZXJyZWRDYW52YXMoZGV2aWNlLCBtX2RlZmVycmVkRGV2aWNlQ29udGV4dC5nZXQoKSk7CiAg
ICAgfSBlbHNlCiAgICAgICAgIG1fY2FudmFzID0gbmV3IFNrQ2FudmFzKGRldmljZSk7CiAKQEAg
LTE1NywxMyArMTY2LDEzIEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBDYW52YXMyRExheWVyQnJp
ZGdlOjpjb250ZXh0KCkKIAogV2ViS2l0OjpXZWJMYXllciogQ2FudmFzMkRMYXllckJyaWRnZTo6
bGF5ZXIoKQogewotICAgIHJldHVybiAmbV9sYXllcjsKKyAgICByZXR1cm4gbV9sYXllci0+bGF5
ZXIoKTsKIH0KIAogdm9pZCBDYW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0QWNxdWlyZWQoKQog
ewogICAgIGlmIChtX2RlZmVycmFsTW9kZSA9PSBOb25EZWZlcnJlZCAmJiAhbV91c2VEb3VibGVC
dWZmZXJpbmcpCi0gICAgICAgIG1fbGF5ZXIud2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICAgICAg
bV9sYXllci0+d2lsbE1vZGlmeVRleHR1cmUoKTsKIH0KIAogdW5zaWduZWQgQ2FudmFzMkRMYXll
ckJyaWRnZTo6YmFja0J1ZmZlclRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5o
CmluZGV4IDA4ZjQwMWNlMDUwOGZjNDhjYTc1NGQ0NWMyMGFmNDgxNWI5Mzg1MTYuLjc1NDFjMmQ2
ZGNlOTU3Y2M3NGI0MmUxNjI3MWJkNmFhNWQxMmE5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
QnJpZGdlLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0Owog
Y2xhc3MgTGF5ZXJDaHJvbWl1bTsKIAogY2xhc3MgQ2FudmFzMkRMYXllckJyaWRnZSA6IHB1Ymxp
YyBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50IHsKQEAgLTc0LDcgKzc1LDgg
QEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2JhY2tCdWZmZXJUZXh0dXJlOwogICAgIEludFNp
emUgbV9zaXplOwogICAgIFNrQ2FudmFzKiBtX2NhbnZhczsKLSAgICBXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgU2tBdXRvVFVucmVmPEFjY2VsZXJhdGVkRGV2
aWNlQ29udGV4dD4gbV9kZWZlcnJlZERldmljZUNvbnRleHQ7CisgICAgT3duUHRyPFdlYktpdDo6
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVt
LmNwcAppbmRleCAxZDE2N2E1NTZlNmExZGZjZDExYWM2Zjg0OTE4ZjJkMWQ4ODk0ZDlhLi40OWUy
MDczOTY4OTA4YTIzNTRjNDBmNDNhMTRjNDU5M2NhNzI1MTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdp
bmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTE1NiwxNiArMTU2LDE2IEBAIGNsYXNzIERyYXdpbmdC
dWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGll
bnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERyYXdpbmdC
dWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRyYXdpbmdC
dWZmZXIpCi0gICAgICAgICwgbV9sYXllcihXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVy
OjpjcmVhdGUodGhpcykpCisgICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6OldlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZlci0+Z3Jh
cGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgbV9sYXll
ci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOwotICAgICAgICBtX2xheWVyLnNldFByZW11
bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgICAgIG1f
bGF5ZXItPnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7CisgICAgICAgIG1fbGF5ZXItPnNl
dFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQogICAgIHsKLSAgICAgICAg
bV9sYXllci5jbGVhckNsaWVudCgpOworICAgICAgICBtX2xheWVyLT5jbGVhckNsaWVudCgpOwog
ICAgIH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoV2ViS2l0OjpXZWJU
ZXh0dXJlVXBkYXRlciYgdXBkYXRlcikgT1ZFUlJJREUKQEAgLTE4NywxMSArMTg3LDExIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdl
YkdyYXBoaWNzQ29udGV4dDNEKG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7
CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJMYXllciogbGF5ZXIoKSB7IHJldHVybiAmbV9sYXll
cjsgfQorICAgIFdlYktpdDo6V2ViTGF5ZXIqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllci0+bGF5
ZXIoKTsgfQogCiBwcml2YXRlOgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsK
LSAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3duUHRy
PFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiB9OwogCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggZmIwOTAwYmJjMWE3NTdjMWRhM2I4MWNjY2M3MDBiZDk0NDJkYjJhYy4uYzky
Y2Y0N2M2Y2ViMDcxOWY2ODYzZGEwNzY3MDg1ODgxMDkyYWM5OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFw
aGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC04MywxNCArODMsMTYgQEAgUGFzc093blB0cjxHcmFw
aGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xp
ZW50KQogCiBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFw
aGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKKyAg
ICAsIG1fY29udGVudHNMYXllcigwKQogICAgICwgbV9jb250ZW50c0xheWVyUHVycG9zZShOb0Nv
bnRlbnRzTGF5ZXIpCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IoZmFs
c2UpCiAgICAgLCBtX2luU2V0Q2hpbGRyZW4oZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUNoYW5n
ZWQoZmFsc2UpCiB7CiAgICAgbV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0
ZSA9IGFkb3B0UHRyKG5ldyBPcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSh0
aGlzKSk7Ci0gICAgbV9sYXllciA9IFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVj
dFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkpOwotICAgIG1fbGF5ZXIuc2V0RHJh
d3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBtX2Nv
bnRlbnRMYXllciA9IGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVj
dFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkpKTsKKyAgICBtX2xheWVyID0gbV9j
b250ZW50TGF5ZXItPmxheWVyKCk7CisgICAgbV9sYXllci0+c2V0RHJhd3NDb250ZW50KG1fZHJh
d3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKICAgICBpZiAoY2xpZW50KQogICAgICAg
ICBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKQEAgLTk4LDM0ICsxMDAsOSBAQCBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAKIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpCiB7Ci0gICAgLy8gRG8gY2xl
YW51cCB3aGlsZSB3ZSBjYW4gc3RpbGwgc2FmZWx5IGNhbGwgbWV0aG9kcyBvbiB0aGUgZGVyaXZl
ZCBjbGFzcy4KICAgICB3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OndpbGxCZURlc3Ryb3llZCgpCi17Ci0gICAgaWYgKCFtX2xheWVyLmlzTnVsbCgp
KSB7Ci0gICAgICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKLSAgICAgICAgbV9sYXllci5jbGVh
clJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgbV9sYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgw
KTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewotICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXIuY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIG1fY29udGVu
dHNMYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdHJh
bnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5jbGVhclJl
bmRlclN1cmZhY2UoKTsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRBbmltYXRpb25EZWxl
Z2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAgICBtX2xp
bmtIaWdobGlnaHQuY2xlYXIoKTsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OndpbGxCZURlc3Ryb3ll
ZCgpOwotfQotCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFtZShjb25zdCBTdHJp
bmcmIGluTmFtZSkKIHsKICAgICBtX25hbWVCYXNlID0gaW5OYW1lOwpAQCAtMTM2LDIxICsxMTMs
MTYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5hbWUoY29uc3QgU3RyaW5nJiBp
bk5hbWUpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVOYW1lcygpCiB7Ci0g
ICAgaWYgKCFtX2xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAi
TGF5ZXIgZm9yICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX2xheWVyLnNldERlYnVnTmFtZShk
ZWJ1Z05hbWUpOwotICAgIH0KLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsK
KyAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxheWVyIGZvciAiICsgbV9uYW1lQmFzZTsKKyAgICBt
X2xheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKKworICAgIGlmIChtX3RyYW5zZm9ybUxh
eWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiVHJhbnNmb3JtTGF5ZXIgZm9yICIg
KyBtX25hbWVCYXNlOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldERlYnVnTmFtZShkZWJ1
Z05hbWUpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1l
KTsKICAgICB9Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAo
bV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiQ29udGVudHNM
YXllciBmb3IgIiArIG1fbmFtZUJhc2U7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5zZXREZWJ1
Z05hbWUoZGVidWdOYW1lKTsKLSAgICB9Ci0gICAgaWYgKG1fbGlua0hpZ2hsaWdodCkgewotICAg
ICAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxpbmtIaWdobGlnaHQgZm9yICIgKyBtX25hbWVCYXNl
OwotICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRMYXllcigpLT5zZXREZWJ1Z05hbWUo
ZGVidWdOYW1lKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdO
YW1lKTsKICAgICB9CiB9CiAKQEAgLTIwMyw3ICsxNzUsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xh
eWVyKgogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQoKQogewog
ICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBwcmltYXJ5TGF5ZXIo
KS5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgcGxhdGZvcm1MYXllcigpLT5yZW1vdmVGcm9tUGFy
ZW50KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIzMyw4ICsyMDUsOCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0U2l6ZShjbGFtcGVkU2l6ZSk7CiAgICAgdXBkYXRlTGF5ZXJTaXplKCk7CiAKLSAg
ICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkICYmICFtX2xheWVyLmlzTnVsbCgpKQotICAgICAgICBt
X2xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkKQorICAgICAg
ICBtX2xheWVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9wYWdlU2NhbGVDaGFuZ2VkID0gZmFsc2U7
CiB9CiAKQEAgLTMwMSwxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFwaGljc0xheWVy
Q2hyb21pdW06OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKIHsKICAgICBHcmFwaGljc0xheWVyOjpj
bGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1fY29udGVudHNMYXllci5zZXRCYWNrZ3JvdW5k
Q29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgbV9jb250ZW50c0xheWVyLT5zZXRC
YWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZShib29sIG9wYXF1ZSkKIHsKICAgICBH
cmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFxdWUpOwotICAgIG1fbGF5ZXIuc2V0
T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworICAgIG1fbGF5ZXItPnNldE9wYXF1ZShtX2NvbnRl
bnRzT3BhcXVlKTsKIH0KIAogc3RhdGljIGJvb2wgY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25z
VG9XZWJGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMsIFdl
YkZpbHRlck9wZXJhdGlvbnMmIHdlYkZpbHRlcnMpCkBAIC0zOTEsMTEgKzM2MywxMSBAQCBib29s
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVyYXRpb25z
JiBmaWx0ZXJzKQogICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0
ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7CiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0Zm9ybSBsYXllciwgYXMgdGhl
eSBhcmUKICAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8gc29mdHdhcmUgbW9kZS4KLSAg
ICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKFdlYkZpbHRlck9wZXJhdGlvbnMoKSk7CisgICAgICAg
IG1fbGF5ZXItPnNldEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKICAgICAgICAgR3Jh
cGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJPcGVyYXRpb25zKCkpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQotICAgIG1fbGF5ZXIuc2V0RmlsdGVycyh3ZWJGaWx0ZXJzKTsKKyAg
ICBtX2xheWVyLT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwogICAgIHJldHVybiBHcmFwaGljc0xh
eWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogCkBAIC00MDQsNyArMzc2LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMKICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7CiAg
ICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMo
ZmlsdGVycywgd2ViRmlsdGVycykpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2xheWVyLnNldEJh
Y2tncm91bmRGaWx0ZXJzKHdlYkZpbHRlcnMpOworICAgIG1fbGF5ZXItPnNldEJhY2tncm91bmRG
aWx0ZXJzKHdlYkZpbHRlcnMpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllcikKQEAgLTQxNCwyMyArMzg2LDIxIEBA
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciog
bWFza0xheWVyKQogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKG1hc2tMYXllcik7
CiAKLSAgICBXZWJMYXllciBtYXNrV2ViTGF5ZXI7Ci0gICAgaWYgKG1fbWFza0xheWVyKQotICAg
ICAgICBtYXNrV2ViTGF5ZXIgPSAqbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICBt
X2xheWVyLnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOworICAgIFdlYkxheWVyKiBtYXNrV2Vi
TGF5ZXIgPSBtX21hc2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOwor
ICAgIG1fbGF5ZXItPnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOwogfQogCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdmlzaWJsZSkKIHsK
ICAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlzaWJsZSk7Ci0gICAg
bV9sYXllci5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAgbV9jb250
ZW50TGF5ZXItPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKIH0KIAogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKIHsKICAg
ICBmbG9hdCBjbGFtcGVkT3BhY2l0eSA9IG1heChtaW4ob3BhY2l0eSwgMS4wZiksIDAuMGYpOwog
ICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkoY2xhbXBlZE9wYWNpdHkpOwotICAgIHByaW1h
cnlMYXllcigpLnNldE9wYWNpdHkob3BhY2l0eSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRP
cGFjaXR5KG9wYWNpdHkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0UmVw
bGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCkBAIC00MzgsMjkgKzQwOCwyNyBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiAgICAgR3JhcGhpY3NMYXllckNocm9taXVtKiBsYXllckNocm9taXVt
ID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtKj4obGF5ZXIpOwogICAgIEdyYXBo
aWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyKTsKIAotICAgIFdlYkxheWVyIHdl
YlJlcGxpY2FMYXllcjsKLSAgICBpZiAobGF5ZXJDaHJvbWl1bSkKLSAgICAgICAgd2ViUmVwbGlj
YUxheWVyID0gbGF5ZXJDaHJvbWl1bS0+cHJpbWFyeUxheWVyKCk7Ci0gICAgcHJpbWFyeUxheWVy
KCkuc2V0UmVwbGljYUxheWVyKHdlYlJlcGxpY2FMYXllcik7CisgICAgV2ViTGF5ZXIqIHdlYlJl
cGxpY2FMYXllciA9IGxheWVyQ2hyb21pdW0gPyBsYXllckNocm9taXVtLT5wbGF0Zm9ybUxheWVy
KCkgOiAwOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0UmVwbGljYUxheWVyKHdlYlJlcGxpY2FM
YXllcik7CiB9CiAKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVl
ZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkKLSAgICAg
ICAgbV9jb250ZW50c0xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9jb250ZW50c0xheWVy
KQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmludmFsaWRhdGUoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgaWYgKGRyYXdzQ29u
dGVudCgpKQotICAgICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9sYXllci0+
aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNE
aXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZHJhd3NDb250
ZW50KCkpCi0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZVJlY3QocmVjdCk7CisgICAgICAgIG1f
bGF5ZXItPmludmFsaWRhdGVSZWN0KHJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC00NzYsNDYgKzQ0
NCw1NiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKElt
YWdlKiBpbWFnZSkKIHsKICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwogICAgIGlm
IChpbWFnZSkgewotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyLmlzTnVsbCgpIHx8IG1fY29u
dGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7Ci0gICAgICAgICAg
ICBXZWJLaXQ6OldlYkltYWdlTGF5ZXIgaW1hZ2VMYXllciA9IFdlYktpdDo6V2ViSW1hZ2VMYXll
cjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoaW1hZ2VMYXllcik7
CisgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyIHx8IG1fY29udGVudHNMYXllclB1cnBvc2Ug
IT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CisgICAgICAgICAgICBtX2ltYWdlTGF5ZXIgPSBh
ZG9wdFB0cihXZWJJbWFnZUxheWVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBzZXR1cENvbnRl
bnRzTGF5ZXIobV9pbWFnZUxheWVyLT5sYXllcigpKTsKICAgICAgICAgICAgIG1fY29udGVudHNM
YXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgICAgICBjaGlsZHJl
bkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIFdlYktpdDo6V2ViSW1hZ2VMYXll
ciBpbWFnZUxheWVyID0gbV9jb250ZW50c0xheWVyLnRvPFdlYktpdDo6V2ViSW1hZ2VMYXllcj4o
KTsKICAgICAgICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICBpbWFnZUxheWVyLnNldEJpdG1hcChuYXRp
dmVJbWFnZS0+Yml0bWFwKCkpOwotICAgICAgICBpbWFnZUxheWVyLnNldE9wYXF1ZShpbWFnZS0+
aXNCaXRtYXBJbWFnZSgpICYmICFpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7CisgICAg
ICAgIG1faW1hZ2VMYXllci0+c2V0Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSk7CisgICAg
ICAgIG1faW1hZ2VMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKGltYWdlLT5pc0JpdG1hcEltYWdl
KCkgJiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKICAgICAgICAgdXBkYXRlQ29u
dGVudHNSZWN0KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIu
aXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG1faW1hZ2VMYXllcikgewogICAgICAgICAgICAgY2hp
bGRyZW5DaGFuZ2VkID0gdHJ1ZTsKIAotICAgICAgICAgICAgLy8gVGhlIG9sZCBjb250ZW50cyBs
YXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZUNoaWxkTGlzdC4KLSAgICAgICAgICAgIG1f
Y29udGVudHNMYXllci5yZXNldCgpOworICAgICAgICAgICAgbV9pbWFnZUxheWVyLmNsZWFyKCk7
CiAgICAgICAgIH0KKyAgICAgICAgLy8gVGhlIG9sZCBjb250ZW50cyBsYXllciB3aWxsIGJlIHJl
bW92ZWQgdmlhIHVwZGF0ZUNoaWxkTGlzdC4KKyAgICAgICAgbV9jb250ZW50c0xheWVyID0gMDsK
ICAgICB9CiAKICAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQogICAgICAgICB1cGRhdGVDaGlsZExp
c3QoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52
YXMoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQoreworICAgIHNl
dENvbnRlbnRzVG8oQ29udGVudHNMYXllckZvckNhbnZhcywgbGF5ZXIpOworfQorCit2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxh
eWVyKQoreworICAgIHNldENvbnRlbnRzVG8oQ29udGVudHNMYXllckZvclZpZGVvLCBsYXllcik7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvKENvbnRlbnRz
TGF5ZXJQdXJwb3NlIHB1cnBvc2UsIFdlYktpdDo6V2ViTGF5ZXIqIGxheWVyKQogewogICAgIGJv
b2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7Ci0gICAgaWYgKHBsYXRmb3JtTGF5ZXIpIHsKLSAg
ICAgICAgaWYgKG1fY29udGVudHNMYXllciAhPSAqcGxhdGZvcm1MYXllcikgewotICAgICAgICAg
ICAgc2V0dXBDb250ZW50c0xheWVyKCpwbGF0Zm9ybUxheWVyKTsKLSAgICAgICAgICAgIG1fY29u
dGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yQ2FudmFzOworICAgIGlmIChsYXll
cikgeworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyIHx8IG1fY29udGVudHNMYXllclB1cnBv
c2UgIT0gcHVycG9zZSkgeworICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGxheWVyKTsK
KyAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOwogICAgICAgICAg
ICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICB1cGRhdGVDb250
ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5p
c051bGwoKSkgeworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgICAgICBj
aGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRz
IGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAgICAgICAgICAg
bV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSAw
OwogICAgICAgICB9CiAgICAgfQogCkBAIC01MjUsNyArNTAzLDcgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcikKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBB
bmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUg
dGltZU9mZnNldCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0
aGlzKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOwog
CiAgICAgaW50IGFuaW1hdGlvbklkID0gbWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFt
ZSk7CiAgICAgaW50IGdyb3VwSWQgPSBBbmltYXRpb25JZFZlbmRvcjo6Z2V0TmV4dEdyb3VwSWQo
KTsKQEAgLTUzNCw4ICs1MTIsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5p
bWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0CiAKICAgICBpZiAo
dG9BZGQpIHsKICAgICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBhbmltYXRpb25zIHdpdGgg
dGhlIHNhbWUgYW5pbWF0aW9uIGlkIGFuZCB0YXJnZXQgcHJvcGVydHkuCi0gICAgICAgIHByaW1h
cnlMYXllcigpLnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb25JZCwgdG9BZGQtPnRhcmdldFByb3Bl
cnR5KCkpOwotICAgICAgICByZXR1cm4gcHJpbWFyeUxheWVyKCkuYWRkQW5pbWF0aW9uKHRvQWRk
LmdldCgpKTsKKyAgICAgICAgcGxhdGZvcm1MYXllcigpLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0
aW9uSWQsIHRvQWRkLT50YXJnZXRQcm9wZXJ0eSgpKTsKKyAgICAgICAgcmV0dXJuIHBsYXRmb3Jt
TGF5ZXIoKS0+YWRkQW5pbWF0aW9uKHRvQWRkLmdldCgpKTsKICAgICB9CiAKICAgICByZXR1cm4g
ZmFsc2U7CkBAIC01NDMsMTIgKzUyMSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0CiAKIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewotICAgIHByaW1hcnlMYXllcigpLnBh
dXNlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zm
c2V0KTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnBhdXNlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5h
bWVUb0lkKGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUp
CiB7Ci0gICAgcHJpbWFyeUxheWVyKCkucmVtb3ZlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVU
b0lkKGFuaW1hdGlvbk5hbWUpKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnJlbW92ZUFuaW1hdGlv
bihtYXBBbmltYXRpb25OYW1lVG9JZChhbmltYXRpb25OYW1lKSk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrVGltZSkK
QEAgLTU1Niw4OCArNTM0LDU0IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzdXNwZW5k
QW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrVGltZSkKICAgICAvLyB8d2FsbENsb2NrVGltZXwg
aXMgaW4gdGhlIHdyb25nIHRpbWUgYmFzZS4gTmVlZCB0byBjb252ZXJ0IGhlcmUuCiAgICAgLy8g
RklYTUU6IGZpbmQgYSBtb3JlIHJlbGlhYmxlIHdheSB0byBkbyB0aGlzLgogICAgIGRvdWJsZSBt
b25vdG9uaWNUaW1lID0gd2FsbENsb2NrVGltZSArIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpIC0gY3VycmVudFRpbWUoKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zdXNwZW5kQW5pbWF0aW9u
cyhtb25vdG9uaWNUaW1lKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnN1c3BlbmRBbmltYXRpb25z
KG1vbm90b25pY1RpbWUpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVzdW1l
QW5pbWF0aW9ucygpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkucmVzdW1lQW5pbWF0aW9ucyhtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5yZXN1bWVB
bmltYXRpb25zKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKIH0KIAotdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQoY29uc3QgUGF0aCYgcGF0aCkKK3Zv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRMaW5rSGlnaGxpZ2h0KGNvbnN0IFBhdGgmKQog
ewotICAgIG1fbGlua0hpZ2hsaWdodCA9IExpbmtIaWdobGlnaHQ6OmNyZWF0ZSh0aGlzLCBwYXRo
LCBBbmltYXRpb25JZFZlbmRvcjo6TGlua0hpZ2hsaWdodEFuaW1hdGlvbklkLCBBbmltYXRpb25J
ZFZlbmRvcjo6Z2V0TmV4dEdyb3VwSWQoKSk7Ci0gICAgdXBkYXRlQ2hpbGRMaXN0KCk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpkaWRGaW5pc2hMaW5rSGlnaGxpZ2h0KCkKIHsK
LSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmNvbnRl
bnRMYXllcigpLT5yZW1vdmVGcm9tUGFyZW50KCk7Ci0KLSAgICBtX2xpbmtIaWdobGlnaHQuY2xl
YXIoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9NZWRp
YShQbGF0Zm9ybUxheWVyKiBsYXllcikKLXsKLSAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IGZh
bHNlOwotICAgIGlmIChsYXllcikgewotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyLmlzTnVs
bCgpIHx8IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvclZpZGVvKSB7
Ci0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoKmxheWVyKTsKLSAgICAgICAgICAgIG1f
Y29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yVmlkZW87Ci0gICAgICAgICAg
ICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHVwZGF0ZUNvbnRl
bnRzUmVjdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9jb250ZW50c0xheWVyLmlz
TnVsbCgpKSB7Ci0gICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwotCi0gICAgICAg
ICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRl
Q2hpbGRMaXN0LgotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQotICAgICAgICB1cGRhdGVDaGls
ZExpc3QoKTsKLX0KLQotV2ViS2l0OjpXZWJMYXllciBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBy
aW1hcnlMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxs
KCkgPyBtX2xheWVyIDogbV90cmFuc2Zvcm1MYXllcjsKIH0KIAogUGxhdGZvcm1MYXllciogR3Jh
cGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
Y29uc3RfY2FzdDxQbGF0Zm9ybUxheWVyKj4obV90cmFuc2Zvcm1MYXllci5pc051bGwoKSA/ICZt
X2xheWVyIDogJm1fdHJhbnNmb3JtTGF5ZXIpOworICAgIHJldHVybiBtX3RyYW5zZm9ybUxheWVy
ID8gbV90cmFuc2Zvcm1MYXllci5nZXQoKSA6IG1fbGF5ZXI7CiB9CiAKIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CiB7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9sYXllci5zZXRCYWNrZ3Jv
dW5kQ29sb3IoY29sb3IucmdiKCkpOworICAgICAgICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kQ29s
b3IoY29sb3IucmdiKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9sYXllci5zZXRCYWNrZ3JvdW5k
Q29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgICAgIG1fbGF5ZXItPnNldEJhY2tn
cm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKIH0KIAogdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9y
ZGVyV2lkdGgpCiB7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBtX2xheWVy
LnNldERlYnVnQm9yZGVyQ29sb3IoY29sb3IucmdiKCkpOwotICAgICAgICBtX2xheWVyLnNldERl
YnVnQm9yZGVyV2lkdGgoYm9yZGVyV2lkdGgpOworICAgICAgICBtX2xheWVyLT5zZXREZWJ1Z0Jv
cmRlckNvbG9yKGNvbG9yLnJnYigpKTsKKyAgICAgICAgbV9sYXllci0+c2V0RGVidWdCb3JkZXJX
aWR0aChib3JkZXJXaWR0aCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9sYXllci5zZXREZWJ1
Z0JvcmRlckNvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOwotICAgICAgICBtX2xheWVyLnNl
dERlYnVnQm9yZGVyV2lkdGgoMCk7CisgICAgICAgIG1fbGF5ZXItPnNldERlYnVnQm9yZGVyQ29s
b3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgICAgIG1fbGF5ZXItPnNldERlYnVnQm9y
ZGVyV2lkdGgoMCk7CiAgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlQ2hpbGRMaXN0KCkKIHsKLSAgICBWZWN0b3I8V2ViTGF5ZXI+IG5ld0NoaWxkcmVuOworICAg
IFZlY3RvcjxXZWJMYXllcio+IG5ld0NoaWxkcmVuOwogCi0gICAgaWYgKCFtX3RyYW5zZm9ybUxh
eWVyLmlzTnVsbCgpKSB7CisgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8g
QWRkIHRoZSBwcmltYXJ5IGxheWVyIGZpcnN0LiBFdmVuIGlmIHdlIGhhdmUgbmVnYXRpdmUgei1v
cmRlciBjaGlsZHJlbiwgdGhlIHByaW1hcnkgbGF5ZXIgYWx3YXlzIGNvbWVzIGJlaGluZC4KICAg
ICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKG1fbGF5ZXIpOwotICAgIH0gZWxzZSBpZiAoIW1fY29u
dGVudHNMYXllci5pc051bGwoKSkgeworICAgIH0gZWxzZSBpZiAobV9jb250ZW50c0xheWVyKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3JyZWN0
IG9yZGVyIHdpdGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KICAgICAgICAgLy8gVGhpcyBk
b2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkg
Y29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKICAgICAgICAgLy8gZm9yIHJlcGxhY2VkIGVs
ZW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KQEAgLTY0OSw3OSArNTkzLDc2IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDaGlsZExpc3QoKQogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewogICAgICAgICBHcmFwaGljc0xheWVy
Q2hyb21pdW0qIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtKj4o
Y2hpbGRMYXllcnNbaV0pOwogCi0gICAgICAgIG5ld0NoaWxkcmVuLmFwcGVuZChjdXJDaGlsZC0+
cHJpbWFyeUxheWVyKCkpOworICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQoY3VyQ2hpbGQtPnBs
YXRmb3JtTGF5ZXIoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fbGlua0hpZ2hsaWdodCkKLSAgICAg
ICAgbmV3Q2hpbGRyZW4uYXBwZW5kKG1fbGlua0hpZ2hsaWdodC0+Y29udGVudExheWVyKCkpOwot
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5zaXplKCk7ICsraSkKLSAg
ICAgICAgbmV3Q2hpbGRyZW5baV0ucmVtb3ZlRnJvbVBhcmVudCgpOworICAgICAgICBuZXdDaGls
ZHJlbltpXS0+cmVtb3ZlRnJvbVBhcmVudCgpOwogCi0gICAgV2ViVmVjdG9yPFdlYkxheWVyPiBu
ZXdXZWJDaGlsZHJlbjsKKyAgICBXZWJWZWN0b3I8V2ViTGF5ZXIqPiBuZXdXZWJDaGlsZHJlbjsK
ICAgICBuZXdXZWJDaGlsZHJlbi5hc3NpZ24obmV3Q2hpbGRyZW4uZGF0YSgpLCBuZXdDaGlsZHJl
bi5zaXplKCkpOwogCi0gICAgaWYgKCFtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4pOworICAgIGlm
IChtX3RyYW5zZm9ybUxheWVyKSB7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldENoaWxk
cmVuKG5ld1dlYkNoaWxkcmVuKTsKIAotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051
bGwoKSkgeworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxheWVyLCB0aGVuIHRoZSBjb250ZW50cyBsYXllciBpcyBw
YXJlbnRlZCBpbiB0aGUKICAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNoIGlzIGl0
c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgotICAgICAgICAgICAgbV9sYXll
ci5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgICAgICAgICAgbV9sYXllci5hZGRDaGlsZChtX2Nv
bnRlbnRzTGF5ZXIpOworICAgICAgICAgICAgbV9sYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsK
KyAgICAgICAgICAgIG1fbGF5ZXItPmFkZENoaWxkKG1fY29udGVudHNMYXllcik7CiAgICAgICAg
IH0KICAgICB9IGVsc2UKLSAgICAgICAgbV9sYXllci5zZXRDaGlsZHJlbihuZXdXZWJDaGlsZHJl
bik7CisgICAgICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKG5ld1dlYkNoaWxkcmVuKTsKIH0KIAog
dm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24oKQogewotICAg
IHByaW1hcnlMYXllcigpLnNldFBvc2l0aW9uKG1fcG9zaXRpb24pOworICAgIHBsYXRmb3JtTGF5
ZXIoKS0+c2V0UG9zaXRpb24obV9wb3NpdGlvbik7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllclNpemUoKQogewogICAgIEludFNpemUgbGF5ZXJTaXplKG1fc2l6
ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgIGlmICghbV90cmFuc2Zvcm1MYXllci5p
c051bGwoKSkgewotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldEJvdW5kcyhsYXllclNpemUp
OwotICAgICAgICBtX2xheWVyLnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CisgICAgaWYgKG1f
dHJhbnNmb3JtTGF5ZXIpIHsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0Qm91bmRzKGxh
eWVyU2l6ZSk7CisgICAgICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CiAg
ICAgfQogCi0gICAgbV9sYXllci5zZXRCb3VuZHMobGF5ZXJTaXplKTsKKyAgICBtX2xheWVyLT5z
ZXRCb3VuZHMobGF5ZXJTaXplKTsKIAotICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCByZXNpemUg
bV9jb250ZW50c0xheWVyLiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKyAgICAvLyBO
b3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVudHNMYXllci0+IEl0J3MgdXAgdGhlIGNh
bGxlciB0byBkbyB0aGF0LgogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRl
QW5jaG9yUG9pbnQoKQogewotICAgIHByaW1hcnlMYXllcigpLnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQobV9hbmNob3JQb2ludC54KCksIG1fYW5jaG9yUG9pbnQueSgpKSk7Ci0gICAgcHJpbWFy
eUxheWVyKCkuc2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9yUG9pbnQueigpKTsKKyAgICBwbGF0Zm9y
bUxheWVyKCktPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQobV9hbmNob3JQb2ludC54KCksIG1f
YW5jaG9yUG9pbnQueSgpKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRBbmNob3JQb2ludFoo
bV9hbmNob3JQb2ludC56KCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlVHJhbnNmb3JtKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRUcmFuc2Zvcm0oV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm0pKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNl
dFRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3RyYW5zZm9ybSkpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKQogewot
ICAgIHByaW1hcnlMYXllcigpLnNldFN1YmxheWVyVHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4KG1fY2hpbGRyZW5UcmFuc2Zvcm0pKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldFN1
YmxheWVyVHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG1fY2hpbGRyZW5UcmFuc2Zv
cm0pKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU1hc2tzVG9Cb3Vu
ZHMoKQogewotICAgIG1fbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3VuZHMpOwor
ICAgIG1fbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKICAgICB1cGRh
dGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogewotICAgIGlmIChtX3ByZXNlcnZlczNEICYmIG1fdHJh
bnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAobV9wcmVzZXJ2ZXMzRCAmJiAhbV90cmFu
c2Zvcm1MYXllcikgewogICAgICAgICAvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBsYXllci4KLSAg
ICAgICAgbV90cmFuc2Zvcm1MYXllciA9IFdlYkxheWVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV90
cmFuc2Zvcm1MYXllci5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKLSAgICAgICAgbV90cmFuc2Zvcm1M
YXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKLSAgICAgICAgbV9sYXllci50cmFuc2Zl
ckFuaW1hdGlvbnNUbygmbV90cmFuc2Zvcm1MYXllcik7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5
ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0
QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CisgICAgICAgIG1fbGF5ZXItPnRyYW5zZmVyQW5pbWF0
aW9uc1RvKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkpOwogCiAgICAgICAgIC8vIENvcHkgdGhlIHBv
c2l0aW9uIGZyb20gdGhpcyBsYXllci4KICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwpA
QCAtNzMwLDM0ICs2NzEsMzQgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUHJlc2VydmVzM0QoKQogICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKICAgICAgICAgdXBk
YXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKIAotICAgICAgICBtX2xheWVyLnNldFBvc2l0aW9uKEZs
b2F0UG9pbnQ6Onplcm8oKSk7CisgICAgICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQ6Onplcm8oKSk7CiAKLSAgICAgICAgbV9sYXllci5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
KDAuNWYsIDAuNWYpKTsKLSAgICAgICAgbV9sYXllci5zZXRUcmFuc2Zvcm0oU2tNYXRyaXg0NCgp
KTsKKyAgICAgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLjVmLCAwLjVm
KSk7CisgICAgICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybShTa01hdHJpeDQ0KCkpOwogCiAgICAg
ICAgIC8vIFNldCB0aGUgb2xkIGxheWVyIHRvIG9wYWNpdHkgb2YgMS4gRnVydGhlciBkb3duIHdl
IHdpbGwgc2V0IHRoZSBvcGFjaXR5IG9uIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCi0gICAgICAgIG1f
bGF5ZXIuc2V0T3BhY2l0eSgxKTsKKyAgICAgICAgbV9sYXllci0+c2V0T3BhY2l0eSgxKTsKIAot
ICAgICAgICBtX2xheWVyLnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKKyAgICAg
ICAgbV9jb250ZW50TGF5ZXItPnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKIAog
ICAgICAgICAvLyBNb3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3Jt
IGxheWVyLgogICAgICAgICBpZiAocGFyZW50KCkpCi0gICAgICAgICAgICBwYXJlbnQoKS0+cGxh
dGZvcm1MYXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllciwgbV90cmFuc2Zvcm1MYXllcik7Ci0g
ICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuYWRkQ2hpbGQobV9sYXllcik7CisgICAgICAgICAgICBw
YXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllciwgbV90cmFuc2Zv
cm1MYXllci5nZXQoKSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPmFkZENoaWxkKG1fbGF5
ZXIpOwogCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwotICAgIH0gZWxzZSBpZiAoIW1fcHJl
c2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICB9IGVsc2UgaWYg
KG1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8gUmVsYWNl
IHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBsYXllci4KLSAgICAg
ICAgbV9sYXllci5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgIG1fbGF5ZXItPnJlbW92ZUZy
b21QYXJlbnQoKTsKICAgICAgICAgaWYgKHBhcmVudCgpKQotICAgICAgICAgICAgcGFyZW50KCkt
PnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIsIG1fbGF5ZXIp
OworICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1f
dHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXIpOwogCi0gICAgICAgIG1fbGF5ZXIuc2V0QW5p
bWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIudHJhbnNmZXJB
bmltYXRpb25zVG8oJm1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5zZXRBbmltYXRpb25EZWxl
Z2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+dHJhbnNmZXJBbmltYXRpb25z
VG8obV9sYXllcik7CiAKICAgICAgICAgLy8gUmVsZWFzZSB0aGUgdHJhbnNmb3JtIGxheWVyLgot
ICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOwotICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyLnJlc2V0KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNl
dEFuaW1hdGlvbkRlbGVnYXRlKDApOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLmNsZWFyKCk7
CiAKICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogICAgICAgICB1cGRhdGVMYXllclNp
emUoKTsKQEAgLTc2OCw4ICs3MDksOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBk
YXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwogICAgIH0K
IAotICAgIG1fbGF5ZXIuc2V0UHJlc2VydmVzM0QobV9wcmVzZXJ2ZXMzRCk7Ci0gICAgcHJpbWFy
eUxheWVyKCkuc2V0T3BhY2l0eShtX29wYWNpdHkpOworICAgIG1fbGF5ZXItPnNldFByZXNlcnZl
czNEKG1fcHJlc2VydmVzM0QpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0T3BhY2l0eShtX29w
YWNpdHkpOwogICAgIHVwZGF0ZU5hbWVzKCk7CiB9CiAKQEAgLTc4MCwyNyArNzIxLDI3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUoKQogICAgIC8v
IGZsYWdzIGFyZSBjb21iaW5lZCBoZXJlLiBtX2NvbnRlbnRzTGF5ZXIgc2hvdWxkbid0IHJlY2Vp
dmUgdGhlIGRyYXdzQ29udGVudCBmbGFnCiAgICAgLy8gc28gaXQgaXMgb25seSBnaXZlbiBjb250
ZW50c1Zpc2libGUuCiAKLSAgICBtX2xheWVyLnNldERyYXdzQ29udGVudChtX2RyYXdzQ29udGVu
dCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CisgICAgbV9sYXllci0+c2V0RHJhd3NDb250ZW50KG1f
ZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKIAotICAgIGlmICghbV9jb250ZW50
c0xheWVyLmlzTnVsbCgpKQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RHJhd3NDb250ZW50
KG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBt
X2NvbnRlbnRzTGF5ZXItPnNldERyYXdzQ29udGVudChtX2NvbnRlbnRzVmlzaWJsZSk7CiAKICAg
ICBpZiAobV9kcmF3c0NvbnRlbnQpCi0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgpOworICAg
ICAgICBtX2xheWVyLT5pbnZhbGlkYXRlKCk7CiAKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyQmFja2dyb3Vu
ZENvbG9yKCkKIHsKLSAgICBpZiAobV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQorICAgIGlmICgh
bV9jb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBuZXZlciBjcmVh
dGUgdGhlIGNvbnRlbnRzIGxheWVyIGp1c3QgZm9yIGJhY2tncm91bmQgY29sb3IgeWV0LgogICAg
IGlmIChtX2JhY2tncm91bmRDb2xvclNldCkKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldEJh
Y2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvci5yZ2IoKSk7CisgICAgICAgIG1fY29udGVu
dHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dyb3VuZENvbG9yLnJnYigpKTsKICAg
ICBlbHNlCi0gICAgICAgIG1fY29udGVudHNMYXllci5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGlj
X2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29udGVudHNWaWRlbygpCkBAIC04MTAsNTAgKzc1MSw0OSBAQCB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNWaWRlbygpCiAKIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c1JlY3QoKQogewotICAgIGlmIChtX2Nv
bnRlbnRzTGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fY29udGVudHNMYXllci5zZXRQb3NpdGlvbihGbG9hdFBvaW50KG1f
Y29udGVudHNSZWN0LngoKSwgbV9jb250ZW50c1JlY3QueSgpKSk7Ci0gICAgbV9jb250ZW50c0xh
eWVyLnNldEJvdW5kcyhJbnRTaXplKG1fY29udGVudHNSZWN0LndpZHRoKCksIG1fY29udGVudHNS
ZWN0LmhlaWdodCgpKSk7CisgICAgbV9jb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KG1fY29udGVudHNSZWN0LngoKSwgbV9jb250ZW50c1JlY3QueSgpKSk7CisgICAgbV9jb250
ZW50c0xheWVyLT5zZXRCb3VuZHMoSW50U2l6ZShtX2NvbnRlbnRzUmVjdC53aWR0aCgpLCBtX2Nv
bnRlbnRzUmVjdC5oZWlnaHQoKSkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQ29udGVudHNTY2FsZSgpCiB7CiAgICAgLy8gSWYgcGFnZSBzY2FsZSBpcyBhbHJlYWR5
IGFwcGxpZWQgdGhlbiB0aGVyZSdzIG5vIG5lZWQgdG8gYXBwbHkgaXQgYWdhaW4uCi0gICAgaWYg
KGFwcGxpZXNQYWdlU2NhbGUoKSB8fCBtX2xheWVyLmlzTnVsbCgpKQorICAgIGlmIChhcHBsaWVz
UGFnZVNjYWxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbGF5ZXIuc2V0Q29udGVudHNT
Y2FsZShjb250ZW50c1NjYWxlKCkpOworICAgIG1fY29udGVudExheWVyLT5zZXRDb250ZW50c1Nj
YWxlKGNvbnRlbnRzU2NhbGUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXR1cENvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIgY29udGVudHNMYXllcikKK3ZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIqIGNvbnRlbnRzTGF5ZXIp
CiB7CiAgICAgaWYgKGNvbnRlbnRzTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNlKTsKLSAg
ICAgICAgbV9jb250ZW50c0xheWVyLnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICAgICAgbV9jb250
ZW50c0xheWVyLnJlc2V0KCk7CisgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAgICAgICBt
X2NvbnRlbnRzTGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShmYWxzZSk7Cisg
ICAgICAgIG1fY29udGVudHNMYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIH0KIAogICAg
IG1fY29udGVudHNMYXllciA9IGNvbnRlbnRzTGF5ZXI7CiAKLSAgICBpZiAoIW1fY29udGVudHNM
YXllci5pc051bGwoKSkgewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QW5jaG9yUG9pbnQo
RmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5zZXRVc2VQYXJlbnRC
YWNrZmFjZVZpc2liaWxpdHkodHJ1ZSk7CisgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwor
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh0
cnVlKTsKIAogICAgICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2FsbCBzZXREcmF3c0NvbnRl
bnQgYXMgc29vbiBhcyB3ZSByZWNlaXZlIHRoZSBuZXcgY29udGVudHNMYXllciwgZm9yCiAgICAg
ICAgIC8vIHRoZSBjb3JyZWN0bmVzcyBvZiBlYXJseSBleGl0IGNvbmRpdGlvbnMgaW4gc2V0RHJh
d3NDb250ZW50KCkgYW5kIHNldENvbnRlbnRzVmlzaWJsZSgpLgotICAgICAgICBtX2NvbnRlbnRz
TGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fY29udGVudHNWaXNpYmxlKTsKKyAgICAgICAgbV9jb250
ZW50c0xheWVyLT5zZXREcmF3c0NvbnRlbnQobV9jb250ZW50c1Zpc2libGUpOwogCiAgICAgICAg
IC8vIEluc2VydCB0aGUgY29udGVudCBsYXllciBmaXJzdC4gVmlkZW8gZWxlbWVudHMgcmVxdWly
ZSB0aGlzLCBiZWNhdXNlIHRoZXkgaGF2ZQogICAgICAgICAvLyBzaGFkb3cgY29udGVudCB0aGF0
IG11c3QgZGlzcGxheSBpbiBmcm9udCBvZiB0aGUgdmlkZW8uCi0gICAgICAgIG1fbGF5ZXIuaW5z
ZXJ0Q2hpbGQobV9jb250ZW50c0xheWVyLCAwKTsKKyAgICAgICAgbV9sYXllci0+aW5zZXJ0Q2hp
bGQobV9jb250ZW50c0xheWVyLCAwKTsKIAogICAgICAgICBpZiAoc2hvd0RlYnVnQm9yZGVycygp
KSB7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RGVidWdCb3JkZXJDb2xvcihDb2xv
cigwLCAwLCAxMjgsIDE4MCkucmdiKCkpOwotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLnNl
dERlYnVnQm9yZGVyV2lkdGgoMSk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldERl
YnVnQm9yZGVyQ29sb3IoQ29sb3IoMCwgMCwgMTI4LCAxODApLnJnYigpKTsKKyAgICAgICAgICAg
IG1fY29udGVudHNMYXllci0+c2V0RGVidWdCb3JkZXJXaWR0aCgxKTsKICAgICAgICAgfQogICAg
IH0KICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmgKaW5kZXggYWE2NGVhZDZkNjY1ZTI1OGQ5MGQwMjYwZmFhOTExNTBiOTZkYWQ2Yi4u
YTIyYmExZjRiNDQ5MDYxMjFiODU2MjcxNjJlZWJmM2Q3NGVlNjkxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9t
aXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJBbmltYXRpb25EZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5
ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXllci5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTEwMSw3ICsxMDIs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSop
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuICFtX2NvbnRl
bnRzTGF5ZXIuaXNOdWxsKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCiAgICAgdmlydHVhbCBib29sIGFk
ZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNp
emUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGRvdWJsZSB0aW1lT2Zmc2V0KTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25O
YW1lLCBkb3VibGUgdGltZU9mZnNldCk7CkBAIC0xMjUsMTUgKzEyNiwxMyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHN0YXJ0VGltZSkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJs
ZSBmaW5pc2hUaW1lKSBPVkVSUklERTsKIAorICAgIFdlYktpdDo6V2ViQ29udGVudExheWVyKiBj
b250ZW50TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllci5nZXQoKTsgfQorCiAg
ICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCi0gICAgV2ViS2l0OjpXZWJMYXllciBjb250ZW50c0xh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CisgICAgV2ViS2l0OjpXZWJM
YXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQog
ICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7Ci0KLSAgICBXZWJLaXQ6OldlYkxheWVyIHByaW1hcnlM
YXllcigpIGNvbnN0OwotCiAgICAgdm9pZCB1cGRhdGVOYW1lcygpOwogICAgIHZvaWQgdXBkYXRl
Q2hpbGRMaXN0KCk7CiAgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC0xNTEsMzIg
KzE1MCwzMyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAg
dm9pZCB1cGRhdGVDb250ZW50c1NjYWxlKCk7CiAKLSAgICB2b2lkIHNldHVwQ29udGVudHNMYXll
cihXZWJLaXQ6OldlYkxheWVyKTsKKyAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKKyAg
ICAgICAgTm9Db250ZW50c0xheWVyID0gMCwKKyAgICAgICAgQ29udGVudHNMYXllckZvckltYWdl
LAorICAgICAgICBDb250ZW50c0xheWVyRm9yVmlkZW8sCisgICAgICAgIENvbnRlbnRzTGF5ZXJG
b3JDYW52YXMsCisgICAgfTsKKworICAgIHZvaWQgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVy
UHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVy
KFdlYktpdDo6V2ViTGF5ZXIqKTsKIAogICAgIGludCBtYXBBbmltYXRpb25OYW1lVG9JZChjb25z
dCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOwogCiAgICAgU3RyaW5nIG1fbmFtZUJhc2U7CiAKLSAg
ICBXZWJLaXQ6OldlYkNvbnRlbnRMYXllciBtX2xheWVyOwotICAgIFdlYktpdDo6V2ViTGF5ZXIg
bV90cmFuc2Zvcm1MYXllcjsKLSAgICBXZWJLaXQ6OldlYkxheWVyIG1fY29udGVudHNMYXllcjsK
KyAgICBPd25QdHI8V2ViS2l0OjpXZWJDb250ZW50TGF5ZXI+IG1fY29udGVudExheWVyOworICAg
IFdlYktpdDo6V2ViTGF5ZXIqIG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViTGF5ZXI+
IG1fdHJhbnNmb3JtTGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViSW1hZ2VMYXllcj4gbV9p
bWFnZUxheWVyOworICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1fY29udGVudHNMYXllcjsKIAogICAg
IE93blB0cjxPcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZT4gbV9vcGFxdWVS
ZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZTsKIAotICAgIGVudW0gQ29udGVudHNMYXll
clB1cnBvc2UgewotICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBDb250ZW50
c0xheWVyRm9ySW1hZ2UsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JWaWRlbywKLSAgICAgICAg
Q29udGVudHNMYXllckZvckNhbnZhcywKLSAgICB9OwotCiAgICAgQ29udGVudHNMYXllclB1cnBv
c2UgbV9jb250ZW50c0xheWVyUHVycG9zZTsKICAgICBib29sIG1fY29udGVudHNMYXllckhhc0Jh
Y2tncm91bmRDb2xvciA6IDE7CiAgICAgYm9vbCBtX2luU2V0Q2hpbGRyZW47CiAgICAgYm9vbCBt
X3BhZ2VTY2FsZUNoYW5nZWQ7CiAKLSAgICBSZWZQdHI8TGlua0hpZ2hsaWdodD4gbV9saW5rSGln
aGxpZ2h0OwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBBbmltYXRpb25JZE1h
cDsKICAgICBBbmltYXRpb25JZE1hcCBtX2FuaW1hdGlvbklkTWFwOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggOWIwZTUzNGQ5OWIwYzNhOTc3ZTc5YmJjZTk5MmNiOWMyMzE1YTg0YS4u
ZWI5MGMwNDFjYjEzYzMzYjhiYmJhZDZhNGRiZDA1MzgyZjMxYTMzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTIzNCwxMCArMjM0LDExIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0Qm91
bmRzKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAK
LWNvbnN0IExheWVyQ2hyb21pdW0qIExheWVyQ2hyb21pdW06OnJvb3RMYXllcigpIGNvbnN0CitM
YXllckNocm9taXVtKiBMYXllckNocm9taXVtOjpyb290TGF5ZXIoKQogewotICAgIGNvbnN0IExh
eWVyQ2hyb21pdW0qIGxheWVyID0gdGhpczsKLSAgICBmb3IgKExheWVyQ2hyb21pdW0qIHBhcmVu
dCA9IGxheWVyLT5wYXJlbnQoKTsgcGFyZW50OyBsYXllciA9IHBhcmVudCwgcGFyZW50ID0gcGFy
ZW50LT5wYXJlbnQoKSkgeyB9CisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSB0aGlzOworICAg
IHdoaWxlIChsYXllci0+cGFyZW50KCkpCisgICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVudCgp
OwogICAgIHJldHVybiBsYXllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDU0YWI4M2Ew
MTQ0ODBlZTFlMDYzZjZhODU4NTM3NWZlYzk1MDcyMjEuLmNjYzM2YzM3MjY3ZGZmZDk1ODQ4ZWM0
YmUzZDBhZTExYjU0OGRkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTk1LDcgKzk1LDcgQEAg
cHVibGljOgogICAgIC8vIFRoZSByb290IGxheWVyIGlzIGEgc3BlY2lhbCBjYXNlIC0tIGl0IG9w
ZXJhdGVzIGluIHBoeXNpY2FsIHBpeGVscy4KICAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fdHJhbnNmb3JtOyB9CiAKLSAgICBjb25zdCBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSBj
b25zdDsKKyAgICBMYXllckNocm9taXVtKiByb290TGF5ZXIoKTsKICAgICBMYXllckNocm9taXVt
KiBwYXJlbnQoKSBjb25zdDsKICAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4pOwogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiwg
c2l6ZV90IGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiZWE2ZjllY2Y5
ODJmNzViMDhkODdiMjVhODQ0NTZjMGZhMDVhYmE0Li44MWY4Zjc4MjZiYjY3M2M2NGY1ZjM5MzZh
ZDQ4NmVjZTkzODVjN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00ODYsNyAr
NDg2LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbW1vbi5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgnLAotICAgICAgICAg
ICAgICAgICdzcmMvV2ViQ29udGVudExheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJDb250ZW50TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50
TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ3Jvc3NPcmlnaW5QcmVmbGln
aHRSZXN1bHRDYWNoZS5jcHAnLApAQCAtNTE1LDcgKzUxNCw4IEBACiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbnRpdGllcy5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMuaCcsCi0gICAgICAgICAgICAg
ICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAnLAorICAgICAgICAgICAgICAgICdz
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
RmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwJywKQEAgLTU2NCw5ICs1NjQsMTEgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmgnLAotICAgICAgICAgICAg
ICAgICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YklPU3VyZmFjZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSU9TdXJm
YWNlTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VEZWNvZGVyLmNw
cCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVyLmNwcCcsCisgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViSW1hZ2VMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZVNraWEu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RWxlbWVudC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSW5wdXRFdmVudC5jcHAnLApAQCAtNTc3LDcgKzU3OSw2IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViS2l0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVs
ZW1lbnQuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
JywKQEAgLTYxOCw4ICs2MTksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2NvcGVkTWlj
cm90YXNrU3VwcHJlc3Npb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVz
ZXJHZXN0dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVy
LmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAnLAotICAg
ICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3Jj
L1dlYlNjcm9sbGJhckxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9s
bGJhckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuaCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwuY3BwJywK
QEAgLTYzOCw4ICs2MzksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU29ja2V0LmNwcCcs
CiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJbXBsLmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJTb2NrZXRJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViU29saWRD
b2xvckxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoR3JhbW1hci5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlLmNwcCcsCkBAIC02NTUsNyArNjU2LDggQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAn
c3JjL1dlYlZpZGVvTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZGVvTGF5
ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWRlb0xheWVySW1wbC5oJywK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDY1
ZGFjNjJjYWUyNTNkNTE2NTg3NWNlNGUzMzZiZTg1Zjk3OGMxYmEuLjRkZjQyMDRiMzQ3YmM4ZGNl
ODdmMTNhNmZiMGM2MjM0NWU3MGNjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBs
LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgpAQCAtNDgsMTEgKzQ5LDEx
IEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFdl
YlZpZXdJbXBsKiB3ZWJWaWV3KQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgibm9uLWNv
bXBvc2l0ZWQgY29udGVudCIpOwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3
c0NvbnRlbnQodHJ1ZSk7Ci0gICAgV2ViQ29udGVudExheWVyIGxheWVyID0gbV9ncmFwaGljc0xh
eWVyLT5wbGF0Zm9ybUxheWVyKCktPnRvPFdlYkNvbnRlbnRMYXllcj4oKTsKLSAgICBsYXllci5z
ZXRVc2VMQ0RUZXh0KHRydWUpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBXZWJD
b250ZW50TGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtKj4obV9ncmFwaGljc0xheWVyLmdldCgpKS0+Y29udGVudExheWVyKCk7CisgICAgbGF5
ZXItPnNldFVzZUxDRFRleHQodHJ1ZSk7CisgICAgbGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZSh0
cnVlKTsKICNpZiAhT1MoQU5EUk9JRCkKLSAgICBsYXllci5zZXREcmF3Q2hlY2tlcmJvYXJkRm9y
TWlzc2luZ1RpbGVzKHRydWUpOworICAgIGxheWVyLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlz
c2luZ1RpbGVzKHRydWUpOwogI2VuZGlmCiB9CiAKQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXIqIGxheWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCpsYXllci0+cGxh
dGZvcm1MYXllcigpID09IHNjcm9sbExheWVyKCkpCisgICAgaWYgKGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkgPT0gc2Nyb2xsTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGF5ZXItPmFk
ZENoaWxkQXRJbmRleChtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIDApOwpAQCAtOTUsMTIgKzk2LDEy
IEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydChjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgYm9vbCB2aXNpYmxlUmVjdENoYW5nZWQg
PSBtX3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX3ZpZXdwb3J0U2l6ZSA9
IHZpZXdwb3J0U2l6ZTsKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgbGF5ZXIgPSBzY3JvbGxMYXll
cigpOwotICAgIGxheWVyLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xs
T3JpZ2luKTsKLSAgICBsYXllci5zZXRQb3NpdGlvbihXZWJGbG9hdFBvaW50KC1zY3JvbGxQb3Np
dGlvbikpOworICAgIFdlYkxheWVyKiBsYXllciA9IHNjcm9sbExheWVyKCk7CisgICAgbGF5ZXIt
PnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsT3JpZ2luKTsKKyAgICBs
YXllci0+c2V0UG9zaXRpb24oV2ViRmxvYXRQb2ludCgtc2Nyb2xsUG9zaXRpb24pKTsKICAgICAv
LyBEdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIHBpbmNoIHpvb20sIHRoZSBub25jb21wb3NpdGVk
IGxheWVyIGlzIGFsd2F5cwogICAgIC8vIGFzc3VtZWQgdG8gYmUgc2Nyb2xsYWJsZS4KLSAgICBs
YXllci5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlKHRydWUp
OwogICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZTsKICAgICBtX2dyYXBoaWNz
TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0U2l6ZShjb250ZW50c1NpemUpOwpAQCAtMTI3LDExICsxMjgsMTEgQEAgYm9vbCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmhhdmVTY3JvbGxMYXllcigpCiAgICAgcmV0dXJuIG1f
Z3JhcGhpY3NMYXllci0+cGFyZW50KCk7CiB9CiAKLVdlYlNjcm9sbGFibGVMYXllciBOb25Db21w
b3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKCkKK1dlYkxheWVyKiBOb25Db21wb3NpdGVk
Q29udGVudEhvc3Q6OnNjcm9sbExheWVyKCkKIHsKICAgICBpZiAoIW1fZ3JhcGhpY3NMYXllci0+
cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBXZWJTY3JvbGxhYmxlTGF5ZXIoKTsKLSAgICByZXR1
cm4gbV9ncmFwaGljc0xheWVyLT5wYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3Jv
bGxhYmxlTGF5ZXI+KCk7CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2dyYXBoaWNz
TGF5ZXItPnBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCk7CiB9CiAKIHZvaWQgTm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29u
dGVudEhvc3QuaAppbmRleCBlNjBlOWVmNDg2YjE0MjMxMjQ3MTNjNjhkZDZhYWMwZWVhNGE3ZGIz
Li4wOGI1ZjZhNDFmNzcwNjFlN2ViMjgxNTQyZjBmZThlNjM1ZmNjNzNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApA
QCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNs
dWRlICJJbnRTaXplLmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0K
IAogICAgIGJvb2wgaGF2ZVNjcm9sbExheWVyKCk7Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNj
cm9sbExheWVyKCk7CisgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCk7CiAKICAgICBPd25QdHI8
V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xheWVyOwogICAgIFdlYlZpZXdJbXBs
KiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJD
b250ZW50TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNzQ2NWIxN2MxMzE2NzY5
ODhmYTY1YThkNmJhMDRmYjQ3YzY2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+Ci0KLSNpbmNsdWRlICJD
b250ZW50TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllckltcGwuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJD
b250ZW50TGF5ZXIgV2ViQ29udGVudExheWVyOjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50
KiBjb250ZW50Q2xpZW50KQotewotICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVu
dExheWVySW1wbDo6Y3JlYXRlKGNvbnRlbnRDbGllbnQpKTsKLX0KLQotdm9pZCBXZWJDb250ZW50
TGF5ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8Q29udGVudExheWVyQ2hyb21pdW0+
KCktPmNsZWFyRGVsZWdhdGUoKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldERvdWJs
ZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREb3VibGVTaWRl
ZChkb3VibGVTaWRlZCk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRDb250ZW50c1Nj
YWxlKGZsb2F0IHNjYWxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Q29udGVudHNTY2FsZShzY2Fs
ZSk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRVc2VMQ0RUZXh0KGJvb2wgZW5hYmxl
KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VXNlTENEVGV4dChlbmFibGUpOwotfQotCi12b2lkIFdl
YkNvbnRlbnRMYXllcjo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sIGVu
YWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGls
ZXMoZW5hYmxlKTsKLX0KLQotV2ViQ29udGVudExheWVyOjpXZWJDb250ZW50TGF5ZXIoY29uc3Qg
UGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBXZWJTY3JvbGxh
YmxlTGF5ZXIobm9kZSkKLXsKLX0KLQotV2ViQ29udGVudExheWVyJiBXZWJDb250ZW50TGF5ZXI6
Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiYgbm9kZSkK
LXsKLSAgICBtX3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViQ29u
dGVudExheWVyOjpvcGVyYXRvciBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPigpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRlbnRMYXllckNocm9taXVtKj4obV9w
cml2YXRlLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCmluZGV4IDY5ZGEx
ZWEzZjBlODkyMDE2OTZkOGRkZWM3NjQ4ZTRmNDY0Yzk2NDguLmZhMjFlODk3NGZkM2IxYjk4MDZh
NWMyZTFjYTk5ZTY5YzY5OGRjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCkBAIC0yNiwzNyArMjYsNjYgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRl
ICJTa01hdHJpeDQ0LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dl
YkZsb2F0UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlNpemUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IFdlYkNvbnRlbnRMYXll
ckltcGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCitXZWJD
b250ZW50TGF5ZXIqIFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVu
dCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVudExheWVySW1w
bChjb250ZW50Q2xpZW50KSk7CisgICAgcmV0dXJuIG5ldyBXZWJDb250ZW50TGF5ZXJJbXBsKGNs
aWVudCk7CiB9CiAKLVdlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRMYXllckltcGwoV2Vi
Q29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotICAgIDogQ29udGVudExheWVyQ2hy
b21pdW0odGhpcykKLSAgICAsIG1fY29udGVudENsaWVudChjb250ZW50Q2xpZW50KQorV2ViQ29u
dGVudExheWVySW1wbDo6V2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQq
IGNsaWVudCkKKyAgICA6IG1fd2ViTGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwo
Q29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKSkpKQorICAgICwgbV9jbGllbnQoY2xp
ZW50KQogewotICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CisgICAgbV93ZWJMYXllckltcGwtPmxh
eWVyKCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYkNvbnRlbnRMYXllckltcGw6On5X
ZWJDb250ZW50TGF5ZXJJbXBsKCkKIHsKLSAgICBjbGVhckRlbGVnYXRlKCk7CisgICAgc3RhdGlj
X2Nhc3Q8Q29udGVudExheWVyQ2hyb21pdW0qPihtX3dlYkxheWVySW1wbC0+bGF5ZXIoKSktPmNs
ZWFyRGVsZWdhdGUoKTsKIH0KIAorV2ViTGF5ZXIqIFdlYkNvbnRlbnRMYXllckltcGw6OmxheWVy
KCkKK3sKKyAgICByZXR1cm4gbV93ZWJMYXllckltcGwuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViQ29u
dGVudExheWVySW1wbDo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKK3sKKyAgICBt
X3dlYkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0RG91YmxlU2lkZWQoZG91YmxlU2lkZWQpOworfQor
Cit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUp
Cit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldENvbnRlbnRzU2NhbGUoc2NhbGUp
OworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldFVzZUxDRFRleHQoYm9vbCBlbmFi
bGUpCit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldFVzZUxDRFRleHQoZW5hYmxl
KTsKK30KKwordm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREcmF3Q2hlY2tlcmJvYXJkRm9y
TWlzc2luZ1RpbGVzKGJvb2wgZW5hYmxlKQoreworICAgIG1fd2ViTGF5ZXJJbXBsLT5sYXllcigp
LT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGVuYWJsZSk7Cit9CisKKwogdm9p
ZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKFNrQ2FudmFzKiBjYW52YXMsIGNv
bnN0IEludFJlY3QmIGNsaXAsIEZsb2F0UmVjdCYgb3BhcXVlKQogewotICAgIGlmICghbV9jb250
ZW50Q2xpZW50KQorICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJG
bG9hdFJlY3Qgd2ViT3BhcXVlOwotICAgIG1fY29udGVudENsaWVudC0+cGFpbnRDb250ZW50cyhj
YW52YXMsIFdlYlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7CisgICAgbV9jbGllbnQtPnBhaW50Q29u
dGVudHMoY2FudmFzLCBXZWJSZWN0KGNsaXApLCB3ZWJPcGFxdWUpOwogICAgIG9wYXF1ZSA9IHdl
Yk9wYXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVu
dExheWVySW1wbC5oCmluZGV4IDk3NzI5ZWExZTBjMjAxYTA4YjFmOTA5MDdhNjI4MjgxYTRlMTBi
NTkuLjUxMWY4ZTBiYTA4NjBiNDZhMDgxNTY1ZjA5ODdkZmYwZThhY2I1ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKQEAgLTI3LDIz
ICsyNywzMyBAQAogI2RlZmluZSBXZWJDb250ZW50TGF5ZXJJbXBsX2gKIAogI2luY2x1ZGUgIkNv
bnRlbnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisjaW5jbHVk
ZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OwogCi1j
bGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckNo
cm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVyRGVsZWdhdGUgeworY2xhc3MgV2Vi
Q29udGVudExheWVySW1wbCA6IHB1YmxpYyBXZWJDb250ZW50TGF5ZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckRlbGVnYXRlIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBjcmVhdGUo
V2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKKyAgICBleHBsaWNpdCBXZWJD
b250ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRMYXllckNsaWVudCopOworCisgICAgLy8gV2ViQ29u
dGVudExheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpICBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VMQ0RUZXh0KGJvb2wpICBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sKSAgT1ZFUlJJ
REU7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNv
bnRlbnRMYXllckNsaWVudCogY29udGVudENsaWVudCk7CiAgICAgdmlydHVhbCB+V2ViQ29udGVu
dExheWVySW1wbCgpOwogCiAgICAgLy8gQ29udGVudExheWVyRGVsZWdhdGUgaW1wbGVtZW50YXRp
b24uCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoU2tDYW52YXMqLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjbGlwLCBXZWJDb3JlOjpGbG9hdFJlY3QmIG9wYXF1ZSkgT1ZFUlJJREU7
CiAKLSAgICBXZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY29udGVudENsaWVudDsKKyAgICBPd25Q
dHI8V2ViTGF5ZXJJbXBsPiBtX3dlYkxheWVySW1wbDsKKyAgICBXZWJDb250ZW50TGF5ZXJDbGll
bnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDFmOGRkYmY2ZThlNDE4MDFhOTRlMzY3
M2FkYWFlYzg5MjJjNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+Ci0KLSNp
bmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDVGV4dHVyZVVw
ZGF0ZVF1ZXVlLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xp
ZW50Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJTaXplLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotY2xhc3MgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIDogcHVibGljIFdlYlRleHR1cmVV
cGRhdGVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJUZXh0dXJlVXBkYXRlckltcGwoQ0NU
ZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKQotICAgICAgICA6IG1fcXVldWUocXVldWUpCi0gICAg
ewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRl
eHR1cmUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uVGV4dHVyZSwgV2ViU2l6ZSBzaXplKSBPVkVSUklE
RQotICAgIHsKLSAgICAgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5ID0geyBzb3Vy
Y2VUZXh0dXJlLCBkZXN0aW5hdGlvblRleHR1cmUsIHNpemUgfTsKLSAgICAgICAgbV9xdWV1ZS5h
cHBlbmRDb3B5KGNvcHkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVR
dWV1ZSYgbV9xdWV1ZTsKLX07Ci0KLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6
IHB1YmxpYyBUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCwgcHVibGljIFRleHR1cmVMYXllckNo
cm9taXVtIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGwoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKLSAgICAgICAgOiBUZXh0
dXJlTGF5ZXJDaHJvbWl1bShjbGllbnQgPyB0aGlzIDogMCkKLSAgICAgICAgLCBtX2NsaWVudChj
bGllbnQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1
cmUoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKSBPVkVSUklERQotICAgIHsKLSAgICAgICAg
V2ViVGV4dHVyZVVwZGF0ZXJJbXBsIHVwZGF0ZXJJbXBsKHF1ZXVlKTsKLSAgICAgICAgcmV0dXJu
IG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgT1ZFUlJJREUKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX2NsaWVudC0+Y29udGV4dCgpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi1X
ZWJFeHRlcm5hbFRleHR1cmVMYXllciBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgUmVmUHRyPFRleHR1
cmVMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGwoY2xpZW50KSk7Ci0gICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0gICAg
cmV0dXJuIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7Ci19Ci0KLXZv
aWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8
VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPmNsZWFyQ2xpZW50KCk7Ci19Ci0KLXZvaWQgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKLXsKLSAgICB1bndy
YXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFRleHR1cmVJZChpZCk7Ci19Ci0KLXZvaWQg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQotewotICAg
IHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0RmxpcHBlZChmbGlwcGVkKTsKLX0K
LQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0
UmVjdCYgcmVjdCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFVW
UmVjdChyZWN0KTsKLX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0T3BhcXVl
KGJvb2wgb3BhcXVlKQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0
T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFBy
ZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKLXsKLSAgICB1bndyYXA8
VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBs
aWVkQWxwaGEpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjp3aWxsTW9kaWZ5
VGV4dHVyZSgpCi17Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT53aWxsTW9k
aWZ5VGV4dHVyZSgpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRSYXRl
TGltaXRDb250ZXh0KGJvb2wgcmF0ZUxpbWl0KQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJD
aHJvbWl1bT4oKS0+c2V0UmF0ZUxpbWl0Q29udGV4dChyYXRlTGltaXQpOwotfQotCi1XZWJFeHRl
cm5hbFRleHR1cmVMYXllcjo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxUZXh0
dXJlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40Njhj
MzQ4MjRiNzE5MmI5OTEwNDgwNWZmNTAzMDUzY2EwMjUzNjBkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNw
cApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCIKKworI2luY2x1ZGUgIlRleHR1cmVMYXll
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NU
ZXh0dXJlVXBkYXRlUXVldWUuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYlNpemUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJFeHRlcm5hbFRleHR1cmVMYXllciogV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI6OmNyZWF0ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogY2xpZW50KQor
eworICAgIHJldHVybiBuZXcgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKGNsaWVudCk7Cit9
CisKK1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVu
dChjbGllbnQpCit7CisgICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXllcjsKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNy
ZWF0ZSh0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21p
dW06OmNyZWF0ZSgwKTsKKyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICBtX2xh
eWVyID0gYWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllci5yZWxlYXNlKCkpKTsKK30KKwor
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjp+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
KCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxh
eWVyKCkpLT5jbGVhckNsaWVudCgpOworfQorCitXZWJMYXllciogV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsOjpsYXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK3Zv
aWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQp
Cit7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZUxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXll
cigpKS0+c2V0VGV4dHVyZUlkKGlkKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGw6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQoreworICAgIHN0YXRpY19jYXN0PFRleHR1
cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldEZsaXBwZWQoZmxpcHBlZCk7
Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJlY3QoY29uc3Qg
V2ViRmxvYXRSZWN0JiByZWN0KQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9t
aXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldFVWUmVjdChyZWN0KTsKK30KKwordm9pZCBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBz
dGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRP
cGFxdWUob3BhcXVlKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNl
dFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKK3sKKyAgICBzdGF0
aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRQcmVt
dWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKTsKK30KKwordm9pZCBXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw6OndpbGxNb2RpZnlUZXh0dXJlKCkKK3sKKyAgICBzdGF0aWNfY2Fz
dDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT53aWxsTW9kaWZ5VGV4
dHVyZSgpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UmF0ZUxp
bWl0Q29udGV4dChib29sIHJhdGVMaW1pdCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5
ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRSYXRlTGltaXRDb250ZXh0KHJhdGVM
aW1pdCk7Cit9CisKK2NsYXNzIFdlYlRleHR1cmVVcGRhdGVySW1wbCA6IHB1YmxpYyBXZWJUZXh0
dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViVGV4dHVyZVVwZGF0ZXJJbXBs
KENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKKyAgICAgICAgOiBtX3F1ZXVlKHF1ZXVlKQor
ICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25lZCBzb3Vy
Y2VUZXh0dXJlLCB1bnNpZ25lZCBkZXN0aW5hdGlvblRleHR1cmUsIFdlYlNpemUgc2l6ZSkgT1ZF
UlJJREUKKyAgICB7CisgICAgICAgIFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgY29weSA9IHsg
c291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlLCBzaXplIH07CisgICAgICAgIG1fcXVl
dWUuYXBwZW5kQ29weShjb3B5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ0NUZXh0dXJlVXBk
YXRlUXVldWUmIG1fcXVldWU7Cit9OworCit1bnNpZ25lZCBXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGw6OnByZXBhcmVUZXh0dXJlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKK3sKKyAg
ICBBU1NFUlQobV9jbGllbnQpOworICAgIFdlYlRleHR1cmVVcGRhdGVySW1wbCB1cGRhdGVySW1w
bChxdWV1ZSk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRhdGVySW1w
bCk7Cit9CisKK1dlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGw6OmNvbnRleHQoKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgcmV0dXJuIG1fY2xp
ZW50LT5jb250ZXh0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41MzQ4ODk1YmYxY2Q1M2I1NDQ5M2IyMzU3ZDA4MTk2MmJmNTgzNGU1Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsX2gKKworI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSA8cHVi
bGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6
IHB1YmxpYyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBpbXBsZW1l
bnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRGbGlwcGVkKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVVlJl
Y3QoY29uc3QgV2ViRmxvYXRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9w
YXF1ZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFs
cGhhKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTW9kaWZ5VGV4dHVyZSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlTGltaXRDb250ZXh0KGJvb2wpIE9W
RVJSSURFOworCisgICAgLy8gVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRp
b24uCisgICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShXZWJDb3JlOjpDQ1RleHR1
cmVVcGRhdGVRdWV1ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBXZWJFeHRlcm5hbFRleHR1
cmVMYXllckNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXll
cjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbF9oCisK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdkYjBjODc3NzdmZmI0NWZjODNiYzk5MGQ1
ZWRmOTI1NGZiODUxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oPgotCi0jaW5jbHVkZSAiSU9TdXJm
YWNlTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSU9TdXJmYWNl
TGF5ZXIgV2ViSU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgUmVmUHRyPElPU3VyZmFj
ZUxheWVyQ2hyb21pdW0+IGxheWVyID0gSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
Ci0gICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIFdlYklPU3VyZmFj
ZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2ViSU9TdXJmYWNlTGF5ZXI6OnNl
dElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUgc2l6ZSkK
LXsKLSAgICB1bndyYXA8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0SU9TdXJmYWNlUHJv
cGVydGllcyhpb1N1cmZhY2VJZCwgc2l6ZSk7Ci19Ci0KLVdlYklPU3VyZmFjZUxheWVyOjpXZWJJ
T1N1cmZhY2VMYXllcihQYXNzUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyKQot
ICAgIDogV2ViTGF5ZXIobGF5ZXIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYmFiNzBjNjFkOGI0MTc0NDIyZDdmYzUzNTQzMjlmODkxZTkwOGI0ZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFj
ZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJJT1N1cmZhY2VMYXllckltcGwuaCIKKworI2luY2x1ZGUgIklPU3Vy
ZmFjZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwordXNpbmcg
V2ViQ29yZTo6SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYklPU3VyZmFjZUxheWVyKiBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkKK3sKKyAgICBS
ZWZQdHI8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBJT1N1cmZhY2VMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKKyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICByZXR1
cm4gbmV3IFdlYklPU3VyZmFjZUxheWVySW1wbChsYXllci5yZWxlYXNlKCkpOworfQorCitXZWJJ
T1N1cmZhY2VMYXllckltcGw6OldlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPElPU3Vy
ZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2Vi
TGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dlYklPU3VyZmFjZUxheWVySW1wbDo6fldlYklP
U3VyZmFjZUxheWVySW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpz
ZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplIHNpemUp
Cit7CisgICAgc3RhdGljX2Nhc3Q8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxh
eWVyKCkpLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBzaXplKTsKK30KKwor
V2ViTGF5ZXIqIFdlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVybiBt
X2xheWVyLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2RiYjAyNzU5YTVjYmQ3NGQzNTY0ODk5OGFlYzYyMTBhMmY0NzI5YwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oCkBA
IC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklPU3VyZmFjZUxheWVySW1wbF9oCisj
ZGVmaW5lIFdlYklPU3VyZmFjZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViSU9T
dXJmYWNlTGF5ZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIElPU3VyZmFjZUxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitjbGFzcyBXZWJJT1N1cmZhY2VMYXllckltcGwgOiBwdWJsaWMgV2ViSU9TdXJmYWNl
TGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYklPU3VyZmFjZUxheWVySW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6OklPU3VyZmFjZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5X
ZWJJT1N1cmZhY2VMYXllckltcGwoKTsKKworICAgIC8vIFdlYklPU3VyZmFjZUxheWVyIGltcGxl
bWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQs
IFdlYlNpemUpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXllckltcGw+
IG1fbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJT1N1cmZhY2VMYXllckltcGxfaAor
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzYxNTE1MzBkMTA3NTdkMmNkNDRhNzgwMzBhOTY5ZjU2
ZTI0MDZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxw
dWJsaWMvV2ViSW1hZ2VMYXllci5oPgotCi0jaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJbWFnZUxheWVyIFdlYkltYWdlTGF5ZXI6OmNy
ZWF0ZSgpCi17Ci0gICAgcmV0dXJuIFdlYkltYWdlTGF5ZXIoV2ViQ29yZTo6SW1hZ2VMYXllckNo
cm9taXVtOjpjcmVhdGUoKSk7Ci19Ci0KLVdlYkltYWdlTGF5ZXI6OldlYkltYWdlTGF5ZXIoUGFz
c1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogV2ViTGF5
ZXIobGF5ZXIpCi17Ci19Ci0KLXZvaWQgV2ViSW1hZ2VMYXllcjo6c2V0Qml0bWFwKFNrQml0bWFw
IGJpdG1hcCkKLXsKLSAgICB1bndyYXA8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtPigpLT5z
ZXRCaXRtYXAoYml0bWFwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDkzYWY4MDQ1YTI2ZjY4ZTgyNmQwMGNhZDRkOTI3NjVlOTFlOWRjMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcApAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYklt
YWdlTGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJJbWFnZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNs
dWRlICJXZWJMYXllckltcGwuaCIKKwordXNpbmcgV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVt
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW1hZ2VMYXllciogV2ViSW1hZ2VMYXllcjo6
Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkltYWdlTGF5ZXJJbXBsKFdlYkNvcmU6Oklt
YWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOworfQorCitXZWJJbWFnZUxheWVySW1wbDo6V2Vi
SW1hZ2VMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+IGxh
eWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7
Cit9CisKK1dlYkltYWdlTGF5ZXJJbXBsOjp+V2ViSW1hZ2VMYXllckltcGwoKQoreworfQorCitX
ZWJMYXllciogV2ViSW1hZ2VMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXll
ci5nZXQoKTsKK30KKwordm9pZCBXZWJJbWFnZUxheWVySW1wbDo6c2V0Qml0bWFwKFNrQml0bWFw
IGJpdG1hcCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbWFnZUxheWVyQ2hyb21pdW0qPihtX2xheWVy
LT5sYXllcigpKS0+c2V0Qml0bWFwKGJpdG1hcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllcklt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uOWE0YjhiM2ViMGZmOTIyOTJiOWQ5MGVlZDFiZDU0MjdiYjg0NGYyOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBs
LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW1hZ2VMYXllckltcGxfaAor
I2RlZmluZSBXZWJJbWFnZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VM
YXllci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
Y2xhc3MgSW1hZ2VMYXllckNocm9taXVtOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYkxheWVySW1wbDsKKworY2xhc3MgV2ViSW1hZ2VMYXllckltcGwgOiBwdWJsaWMgV2ViSW1h
Z2VMYXllciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViSW1hZ2VMYXllckltcGwoUGFzc1Jl
ZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJJbWFn
ZUxheWVySW1wbCgpOworCisgICAgLy8gV2ViSW1hZ2VMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAg
ICBXZWJMYXllciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Qml0bWFw
KFNrQml0bWFwKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBs
PiBtX2xheWVyOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSW1hZ2VMYXllckltcGxfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzNzg5N2U2ZjgxMmIxNzFmOTBmMjI2OGViYzU3ZDUwNjEwMzM5N2JlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgot
Ci0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKLSNp
bmNsdWRlICJXZWJBbmltYXRpb25JbXBsLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCi0j
aW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDxwdWJsaWMv
V2ViRmxvYXRQb2ludC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KLSNpbmNs
dWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0KLW5hbWVzcGFjZSB7Ci0KLVdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0
NCYgbWF0cml4KQotewotICAgIGRvdWJsZSBkYXRhWzE2XTsKLSAgICBtYXRyaXguYXNDb2xNYWpv
cmQoZGF0YSk7Ci0gICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRh
dGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRhWzExXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBk
YXRhWzE0XSwgZGF0YVsxNV0pOwotfQotCi1Ta01hdHJpeDQ0IHNrTWF0cml4NDRGcm9tVHJhbnNm
b3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsK
LSAgICBTa01hdHJpeDQ0IHNrTWF0cml4OwotICAgIHNrTWF0cml4LnNldCgwLCAwLCBTa0RvdWJs
ZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMCwgU2tEb3Vi
bGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDAsIFNrRG91
YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAwLCBTa0Rv
dWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKLSAgICBza01hdHJpeC5zZXQoMCwgMSwgU2tE
b3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDEsIDEsIFNr
RG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOwotICAgIHNrTWF0cml4LnNldCgyLCAxLCBT
a0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMywgMSwg
U2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDAsIDIs
IFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOwotICAgIHNrTWF0cml4LnNldCgxLCAy
LCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMiwg
MiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDMs
IDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkpOwotICAgIHNrTWF0cml4LnNldCgw
LCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkpKTsKLSAgICBza01hdHJpeC5zZXQo
MSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MigpKSk7Ci0gICAgc2tNYXRyaXguc2V0
KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOwotICAgIHNrTWF0cml4LnNl
dCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKLSAgICByZXR1cm4gc2tN
YXRyaXg7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIFdlYkxheWVy
KFdlYkxheWVySW1wbDo6Y3JlYXRlKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZXNldCgpCi17
Ci0gICAgbV9wcml2YXRlLnJlc2V0KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmFzc2lnbihjb25z
dCBXZWJMYXllciYgb3RoZXIpCi17Ci0gICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwot
fQotCi1ib29sIFdlYkxheWVyOjplcXVhbHMoY29uc3QgV2ViTGF5ZXImIG4pIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gbi5tX3ByaXZhdGUuZ2V0KCkpOwotfQotCi12
b2lkIFdlYkxheWVyOjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmIGRpcnR5UmVj
dCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0KTsKLX0K
LQotdm9pZCBXZWJMYXllcjo6aW52YWxpZGF0ZSgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXROZWVk
c0Rpc3BsYXkoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6YWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXIm
IGNoaWxkKQotewotICAgIG1fcHJpdmF0ZS0+YWRkQ2hpbGQoY2hpbGQpOwotfQotCi12b2lkIFdl
YkxheWVyOjppbnNlcnRDaGlsZChjb25zdCBXZWJMYXllciYgY2hpbGQsIHNpemVfdCBpbmRleCkK
LXsKLSAgICBtX3ByaXZhdGUtPmluc2VydENoaWxkKGNoaWxkLCBpbmRleCk7Ci19Ci0KLXZvaWQg
V2ViTGF5ZXI6OnJlcGxhY2VDaGlsZChjb25zdCBXZWJMYXllciYgcmVmZXJlbmNlLCBjb25zdCBX
ZWJMYXllciYgbmV3TGF5ZXIpCi17Ci0gICAgV2ViTGF5ZXIgcmVmID0gcmVmZXJlbmNlOwotICAg
IG1fcHJpdmF0ZS0+cmVwbGFjZUNoaWxkKHJlZi51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKSwgbmV3
TGF5ZXIpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8
V2ViTGF5ZXI+JiB3ZWJDaGlsZHJlbikKLXsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21p
dW0+ID4gY2hpbGRyZW4od2ViQ2hpbGRyZW4uc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHdlYkNoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBjaGlsZHJlbltpXSA9IHdl
YkNoaWxkcmVuW2ldLnVud3JhcDxMYXllckNocm9taXVtPigpOwotICAgIG1fcHJpdmF0ZS0+c2V0
Q2hpbGRyZW4oY2hpbGRyZW4pOwotfQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVGcm9tUGFyZW50
KCkKLXsKLSAgICBtX3ByaXZhdGUtPnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQotdm9pZCBXZWJM
YXllcjo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlQWxsQ2hp
bGRyZW4oKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxv
YXRQb2ludCYgYW5jaG9yUG9pbnQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRBbmNob3JQb2ludChh
bmNob3JQb2ludCk7Ci19Ci0KLVdlYkZsb2F0UG9pbnQgV2ViTGF5ZXI6OmFuY2hvclBvaW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX3ByaXZhdGUtPmFuY2hvclBvaW50
KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmNob3JQb2ludFooZmxvYXQgYW5jaG9yUG9p
bnRaKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QW5jaG9yUG9pbnRaKGFuY2hvclBvaW50Wik7Ci19
Ci0KLWZsb2F0IFdlYkxheWVyOjphbmNob3JQb2ludFooKSBjb25zdAotewotICAgIHJldHVybiBt
X3ByaXZhdGUtPmFuY2hvclBvaW50WigpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCb3VuZHMo
Y29uc3QgV2ViU2l6ZSYgc2l6ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldEJvdW5kcyhzaXplKTsK
LX0KLQotV2ViU2l6ZSBXZWJMYXllcjo6Ym91bmRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2Vi
U2l6ZShtX3ByaXZhdGUtPmJvdW5kcygpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0TWFza3NU
b0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRNYXNrc1Rv
Qm91bmRzKG1hc2tzVG9Cb3VuZHMpOwotfQotCi1ib29sIFdlYkxheWVyOjptYXNrc1RvQm91bmRz
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXNrc1RvQm91bmRzKCk7Ci19Ci0K
LXZvaWQgV2ViTGF5ZXI6OnNldE1hc2tMYXllcihjb25zdCBXZWJMYXllciYgbWFza0xheWVyKQot
ewotICAgIFdlYkxheWVyIHJlZiA9IG1hc2tMYXllcjsKLSAgICBtX3ByaXZhdGUtPnNldE1hc2tM
YXllcihyZWYudW53cmFwPExheWVyQ2hyb21pdW0+KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpz
ZXRSZXBsaWNhTGF5ZXIoY29uc3QgV2ViTGF5ZXImIHJlcGxpY2FMYXllcikKLXsKLSAgICBXZWJM
YXllciByZWYgPSByZXBsaWNhTGF5ZXI7Ci0gICAgbV9wcml2YXRlLT5zZXRSZXBsaWNhTGF5ZXIo
cmVmLnVud3JhcDxMYXllckNocm9taXVtPigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3Bh
Y2l0eShmbG9hdCBvcGFjaXR5KQotewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhY2l0eShvcGFjaXR5
KTsKLX0KLQotZmxvYXQgV2ViTGF5ZXI6Om9wYWNpdHkoKSBjb25zdAotewotICAgIHJldHVybiBt
X3ByaXZhdGUtPm9wYWNpdHkoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhcXVlKGJvb2wg
b3BhcXVlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KLWJvb2wg
V2ViTGF5ZXI6Om9wYXF1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+b3BhcXVl
KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQm
IHBvc2l0aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwotfQot
Ci1XZWJGbG9hdFBvaW50IFdlYkxheWVyOjpwb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IFdlYkZsb2F0UG9pbnQobV9wcml2YXRlLT5wb3NpdGlvbigpKTsKLX0KLQotdm9pZCBXZWJMYXll
cjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAg
IG1fcHJpdmF0ZS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9t
U2tNYXRyaXg0NChtYXRyaXgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFu
c2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBtX3By
aXZhdGUtPnNldFN1YmxheWVyVHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2Vi
TGF5ZXI6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2tNYXRyaXg0
NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3ByaXZhdGUtPnN1YmxheWVyVHJhbnNmb3JtKCkp
OwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0
cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9uTWF0cml4
RnJvbVNrTWF0cml4NDQobWF0cml4KSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFRyYW5zZm9y
bShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0
ZS0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnRyYW5z
Zm9ybSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25N
YXRyaXgobV9wcml2YXRlLT50cmFuc2Zvcm0oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERy
YXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzRHJh
d2FibGUoZHJhd3NDb250ZW50KTsKLX0KLQotYm9vbCBXZWJMYXllcjo6ZHJhd3NDb250ZW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5kcmF3c0NvbnRlbnQoKTsKLX0KLQotdm9p
ZCBXZWJMYXllcjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQotewotICAgIG1fcHJp
dmF0ZS0+c2V0UHJlc2VydmVzM0QocHJlc2VydmUzRCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNl
dFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJp
bGl0eSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh1
c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCYWNr
Z3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IoY29sb3IpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IFdl
YkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25z
dCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QmFj
a2dyb3VuZEZpbHRlcnMoZmlsdGVycyk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9y
ZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RGVi
dWdCb3JkZXJDb2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVy
V2lkdGgoZmxvYXQgd2lkdGgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREZWJ1Z0JvcmRlcldpZHRo
KHdpZHRoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0RGVidWdOYW1lKFdlYlN0cmluZyBuYW1l
KQotewotICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdOYW1lKG5hbWUpOwotfQotCi12b2lkIFdlYkxh
eWVyOjpzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUp
Ci17Ci0gICAgbV9wcml2YXRlLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKGRlbGVnYXRlKTsK
LX0KLQotYm9vbCBXZWJMYXllcjo6YWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9u
KQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmFkZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJB
bmltYXRpb25JbXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOwotfQotCi12
b2lkIFdlYkxheWVyOjpyZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKQotewotICAgIG1f
cHJpdmF0ZS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkKTsKLX0KLQotdm9pZCBXZWJMYXll
cjo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQ
cm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyQW5pbWF0aW9u
Q29udHJvbGxlcigpLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQsIHN0YXRpY19jYXN0PEND
QWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eT4odGFyZ2V0UHJvcGVydHkpKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6cGF1c2VBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGlt
ZU9mZnNldCkKLXsKLSAgICBtX3ByaXZhdGUtPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0
aW1lT2Zmc2V0KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91Ymxl
IG1vbm90b25pY1RpbWUpCi17Ci0gICAgbV9wcml2YXRlLT5zdXNwZW5kQW5pbWF0aW9ucyhtb25v
dG9uaWNUaW1lKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUg
bW9ub3RvbmljVGltZSkKLXsKLSAgICBtX3ByaXZhdGUtPnJlc3VtZUFuaW1hdGlvbnMobW9ub3Rv
bmljVGltZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbigpCi17Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci19Ci0KLXZvaWQgV2Vi
TGF5ZXI6OnRyYW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKiBvdGhlcikKLXsKLSAgICBBU1NF
UlQob3RoZXIpOwotICAgIGlmIChvdGhlcikKLSAgICAgICAgb3RoZXItPm1fcHJpdmF0ZS0+c2V0
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKG1fcHJpdmF0ZS0+cmVsZWFzZUxheWVyQW5pbWF0aW9u
Q29udHJvbGxlcigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNl
KGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rm9yY2VSZW5k
ZXJTdXJmYWNlKGZvcmNlUmVuZGVyU3VyZmFjZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmNsZWFy
UmVuZGVyU3VyZmFjZSgpCi17Ci0gICAgbV9wcml2YXRlLT5jbGVhclJlbmRlclN1cmZhY2UoKTsK
LX0KLQotV2ViTGF5ZXI6OldlYkxheWVyKGNvbnN0IFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4m
IG5vZGUpCi0gICAgOiBtX3ByaXZhdGUobm9kZSkKLXsKLX0KLQotV2ViTGF5ZXImIFdlYkxheWVy
OjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiYgbm9kZSkKLXsKLSAg
ICBtX3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViTGF5ZXI6Om9w
ZXJhdG9yIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiBt
X3ByaXZhdGUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKaW5kZXggMTZlMTIwNmNhMzM1YzNlOTgx
NGRlYmVjYjRlZDhiYjJiMDJlYjc3Ny4uNTRhNzFkODA5MDgyMTViNGQzNGZkYjYzMjUwODc4OWZm
MDMwNmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3Bw
CkBAIC0yNiwyNSArMjYsMzcxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
TGF5ZXJJbXBsLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgIkxheWVy
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJTa01hdHJpeDQ0LmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0
aW9uSW1wbC5oIgorI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSA8
cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+
CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXguaD4KKwordXNpbmcgV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRpb247Cit1
c2luZyBXZWJDb3JlOjpMYXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFz
c1JlZlB0cjxXZWJMYXllckltcGw+IFdlYkxheWVySW1wbDo6Y3JlYXRlKCkKK25hbWVzcGFjZSB7
CisKK1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0
cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQoreworICAgIGRvdWJsZSBkYXRhWzE2XTsK
KyAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7CisgICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFb
N10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0s
IGRhdGFbMTBdLCBkYXRhWzExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOworfQorCitTa01hdHJpeDQ0
IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBTa01hdHJpeDQ0IHNrTWF0cml4OworICAgIHNrTWF0
cml4LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKKyAgICBza01h
dHJpeC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7CisgICAgc2tN
YXRyaXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOworICAgIHNr
TWF0cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKKyAgICBz
a01hdHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7CisgICAg
c2tNYXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOworICAg
IHNrTWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsKKyAg
ICBza01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7Cisg
ICAgc2tNYXRyaXguc2V0KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOwor
ICAgIHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsK
KyAgICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7
CisgICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkp
OworICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkp
KTsKKyAgICBza01hdHJpeC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00Migp
KSk7CisgICAgc2tNYXRyaXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMo
KSkpOworICAgIHNrTWF0cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0
KCkpKTsKKyAgICByZXR1cm4gc2tNYXRyaXg7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFj
ZQorCisKK1dlYkxheWVyKiBXZWJMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkxheWVySW1wbCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYkxheWVySW1wbChMYXll
ckNocm9taXVtOjpjcmVhdGUoKSk7CiB9CiAKLVdlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKCkK
LSAgICA6IExheWVyQ2hyb21pdW0oKQorV2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwoUGFzc1Jl
ZlB0cjxMYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCiB7Ci0gICAg
Ly8gTWFrZSBzdXJlIHRoYXQgdGhpcyBsYXllciBkb2VzIG5vdCBkcmF3IGNvbnRlbnQuIFRoaXMg
d2F5IHdlIGRvbid0IGhhdmUgdG8gb3ZlcnJpZGUKLSAgICAvLyB0aGUgYmFzZSBjbGFzcyBpbXBs
ZW1lbnRhdGlvbiBvZiBkcmF3c0NvbnRlbnQoKS4KLSAgICBBU1NFUlQoIWRyYXdzQ29udGVudCgp
KTsKIH0KIAogV2ViTGF5ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKCkKIHsKKyAgICBtX2xheWVyLT5j
bGVhclJlbmRlclN1cmZhY2UoKTsKKyAgICBtX2xheWVyLT5zZXRMYXllckFuaW1hdGlvbkRlbGVn
YXRlKDApOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2Vi
RmxvYXRSZWN0JiByZWN0KQoreworICAgIG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheVJlY3QocmVj
dCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2xheWVy
LT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OmFkZENoaWxkKFdl
YkxheWVyKiBjaGlsZCkKK3sKKyAgICBtX2xheWVyLT5hZGRDaGlsZChzdGF0aWNfY2FzdDxXZWJM
YXllckltcGwqPihjaGlsZCktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW5z
ZXJ0Q2hpbGQoV2ViTGF5ZXIqIGNoaWxkLCBzaXplX3QgaW5kZXgpCit7CisgICAgbV9sYXllci0+
aW5zZXJ0Q2hpbGQoc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4oY2hpbGQpLT5sYXllcigpLCBp
bmRleCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQoV2ViTGF5ZXIqIHJl
ZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKQoreworICAgIG1fbGF5ZXItPnJlcGxhY2VDaGls
ZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihyZWZlcmVuY2UpLT5sYXllcigpLCBzdGF0aWNf
Y2FzdDxXZWJMYXllckltcGwqPihuZXdMYXllciktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6c2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkxheWVyKj4mIHdlYkNoaWxk
cmVuKQoreworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBjaGlsZHJlbih3ZWJD
aGlsZHJlbi5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hpbGRyZW4u
c2l6ZSgpOyArK2kpCisgICAgICAgIGNoaWxkcmVuW2ldID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJ
bXBsKj4od2ViQ2hpbGRyZW5baV0pLT5sYXllcigpOworICAgIG1fbGF5ZXItPnNldENoaWxkcmVu
KGNoaWxkcmVuKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUZyb21QYXJlbnQoKQor
eworICAgIG1fbGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKK30KKwordm9pZCBXZWJMYXllcklt
cGw6OnJlbW92ZUFsbENoaWxkcmVuKCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbGxDaGlsZHJl
bigpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxv
YXRQb2ludCYgYW5jaG9yUG9pbnQpCit7CisgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoYW5j
aG9yUG9pbnQpOworfQorCitXZWJGbG9hdFBvaW50IFdlYkxheWVySW1wbDo6YW5jaG9yUG9pbnQo
KSBjb25zdAoreworICAgIHJldHVybiBXZWJGbG9hdFBvaW50KG1fbGF5ZXItPmFuY2hvclBvaW50
KCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hv
clBvaW50WikKK3sKKyAgICBtX2xheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yUG9pbnRaKTsK
K30KKworZmxvYXQgV2ViTGF5ZXJJbXBsOjphbmNob3JQb2ludFooKSBjb25zdAoreworICAgIHJl
dHVybiBtX2xheWVyLT5hbmNob3JQb2ludFooKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNl
dEJvdW5kcyhjb25zdCBXZWJTaXplJiBzaXplKQoreworICAgIG1fbGF5ZXItPnNldEJvdW5kcyhz
aXplKTsKK30KKworV2ViU2l6ZSBXZWJMYXllckltcGw6OmJvdW5kcygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIFdlYlNpemUobV9sYXllci0+Ym91bmRzKCkpOworfQorCit2b2lkIFdlYkxheWVySW1w
bDo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgbV9sYXllci0+
c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKTsKK30KKworYm9vbCBXZWJMYXllckltcGw6
Om1hc2tzVG9Cb3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5tYXNrc1RvQm91
bmRzKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqIG1h
c2tMYXllcikKK3sKKyAgICBtX2xheWVyLT5zZXRNYXNrTGF5ZXIobWFza0xheWVyID8gc3RhdGlj
X2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obWFza0xheWVyKS0+bGF5ZXIoKSA6IDApOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKFdlYkxheWVyKiByZXBsaWNhTGF5ZXIpCit7
CisgICAgbV9sYXllci0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2FMYXllciA/IHN0YXRpY19jYXN0
PFdlYkxheWVySW1wbCo+KHJlcGxpY2FMYXllciktPmxheWVyKCkgOiAwKTsKK30KKwordm9pZCBX
ZWJMYXllckltcGw6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBtX2xheWVyLT5z
ZXRPcGFjaXR5KG9wYWNpdHkpOworfQorCitmbG9hdCBXZWJMYXllckltcGw6Om9wYWNpdHkoKSBj
b25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5vcGFjaXR5KCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJJbXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCit7CisgICAgbV9sYXllci0+c2V0T3BhcXVl
KG9wYXF1ZSk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJJbXBsOjpvcGFxdWUoKSBjb25zdAoreworICAg
IHJldHVybiBtX2xheWVyLT5vcGFxdWUoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFBv
c2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIG1fbGF5ZXItPnNl
dFBvc2l0aW9uKHBvc2l0aW9uKTsKK30KKworV2ViRmxvYXRQb2ludCBXZWJMYXllckltcGw6OnBv
c2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX2xheWVyLT5wb3Np
dGlvbigpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNv
bnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5z
Zm9ybSh0cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Ta01hdHJpeDQ0KG1hdHJpeCkpOworfQorCit2
b2lkIFdlYkxheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9y
bShtYXRyaXgpOworfQorCitTa01hdHJpeDQ0IFdlYkxheWVySW1wbDo6c3VibGF5ZXJUcmFuc2Zv
cm0oKSBjb25zdAoreworICAgIHJldHVybiBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9uTWF0
cml4KG1fbGF5ZXItPnN1YmxheWVyVHJhbnNmb3JtKCkpOworfQorCit2b2lkIFdlYkxheWVySW1w
bDo6c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVy
LT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRyaXgp
KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4KQoreworICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybShtYXRy
aXgpOworfQorCitTa01hdHJpeDQ0IFdlYkxheWVySW1wbDo6dHJhbnNmb3JtKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xheWVyLT50
cmFuc2Zvcm0oKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQoYm9v
bCBkcmF3c0NvbnRlbnQpCit7CisgICAgbV9sYXllci0+c2V0SXNEcmF3YWJsZShkcmF3c0NvbnRl
bnQpOworfQorCitib29sIFdlYkxheWVySW1wbDo6ZHJhd3NDb250ZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9sYXllci0+ZHJhd3NDb250ZW50KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBs
OjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlM0QpCit7CisgICAgbV9sYXllci0+c2V0UHJl
c2VydmVzM0QocHJlc2VydmUzRCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRVc2VQYXJl
bnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpCit7
CisgICAgbV9sYXllci0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5k
Q29sb3IoV2ViQ29sb3IgY29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9y
KGNvbG9yKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3QgV2ViRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKGZpbHRl
cnMpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3Qg
V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRCYWNrZ3Jv
dW5kRmlsdGVycyhmaWx0ZXJzKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnQm9y
ZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQoreworICAgIG1fbGF5ZXItPnNldERlYnVn
Qm9yZGVyQ29sb3IoY29sb3IpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0RGVidWdCb3Jk
ZXJXaWR0aChmbG9hdCB3aWR0aCkKK3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcldpZHRo
KHdpZHRoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnTmFtZShXZWJTdHJpbmcg
bmFtZSkKK3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z05hbWUobmFtZSk7Cit9CisKK3ZvaWQgV2Vi
TGF5ZXJJbXBsOjpzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVs
ZWdhdGUpCit7CisgICAgbV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShkZWxlZ2F0
ZSk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJJbXBsOjphZGRBbmltYXRpb24oV2ViQW5pbWF0aW9uKiBh
bmltYXRpb24pCit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmFkZEFuaW1hdGlvbihzdGF0aWNfY2Fz
dDxXZWJBbmltYXRpb25JbXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOwor
fQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCkK
K3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0
aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKK3sKKyAgICBtX2xheWVyLT5sYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCBzdGF0
aWNfY2FzdDxDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHk+KHRhcmdldFByb3BlcnR5
KSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9u
SWQsIGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIG1fbGF5ZXItPnBhdXNlQW5pbWF0aW9uKGFu
aW1hdGlvbklkLCB0aW1lT2Zmc2V0KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnN1c3BlbmRB
bmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQoreworICAgIG1fbGF5ZXItPnN1c3BlbmRB
bmltYXRpb25zKG1vbm90b25pY1RpbWUpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVzdW1l
QW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKK3sKKyAgICBtX2xheWVyLT5yZXN1bWVB
bmltYXRpb25zKG1vbm90b25pY1RpbWUpOworfQorCitib29sIFdlYkxheWVySW1wbDo6aGFzQWN0
aXZlQW5pbWF0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci0+aGFzQWN0aXZlQW5pbWF0aW9u
KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJMYXll
ciogb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJMYXll
ckltcGwqPihvdGhlciktPm1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlcihtX2xh
eWVyLT5yZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNlKQor
eworICAgIG1fbGF5ZXItPnNldEZvcmNlUmVuZGVyU3VyZmFjZShmb3JjZVJlbmRlclN1cmZhY2Up
OworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQgcG9z
aXRpb24pCit7CisgICAgbV9sYXllci0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOworfQor
Cit2b2lkIFdlYkxheWVySW1wbDo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCit7Cisg
ICAgbV9sYXllci0+c2V0U2Nyb2xsYWJsZShzY3JvbGxhYmxlKTsKK30KKwordm9pZCBXZWJMYXll
ckltcGw6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKQoreworICAgIG1fbGF5ZXItPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVs
RXZlbnRIYW5kbGVycyk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRTaG91bGRTY3JvbGxP
bk1haW5UaHJlYWQoYm9vbCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAgbV9sYXll
ci0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk7
Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25z
dCBXZWJWZWN0b3I8V2ViUmVjdD4mIHJlY3RzKQoreworICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdp
b247CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgeworICAg
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKKyAgICAgICAgcmVnaW9uLnVu
aXRlKHJlY3QpOworICAgIH0KKyAgICBtX2xheWVyLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bihyZWdpb24pOworCit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRJc0NvbnRhaW5lckZvckZp
eGVkUG9zaXRpb25MYXllcnMoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXllci0+c2V0SXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJ
bXBsOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXll
ci0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Cit9CisKK0xheWVyQ2hyb21pdW0q
IFdlYkxheWVySW1wbDo6bGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLmdldCgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJJbXBsLmgKaW5kZXggN2U0ZTc1MDYyNDhmNGNhNWVlNjdlNzUxYzM4ZThlYmY0YzE5
YzE5Yi4uNGI0NGZiY2Q0NDY5ZmExOTY4ZTU3NGM2YzkzNDk3ZmI5Yzc0ZTQwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAgLTI2LDE4ICsyNiw4MyBAQAog
I2lmbmRlZiBXZWJMYXllckltcGxfaAogI2RlZmluZSBXZWJMYXllckltcGxfaAogCi0jaW5jbHVk
ZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkxheWVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBMYXllckNocm9taXVtOworfQogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkxheWVyQ2hyb21pdW0g
eworY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOworICAgIGV4cGxpY2l0IFdl
YkxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0
dWFsIH5XZWJMYXllckltcGwoKTsKKworICAgIC8vIFdlYkxheWVyIGltcGxlbWVudGF0aW9uLgor
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBhZGRDaGlsZChXZWJMYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBp
bnNlcnRDaGlsZChXZWJMYXllciosIHNpemVfdCBpbmRleCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHJlcGxhY2VDaGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3TGF5
ZXIpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0
b3I8V2ViTGF5ZXIqPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFy
ZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9p
bnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
bWFza3NUb0JvdW5kcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNr
TGF5ZXIoV2ViTGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxh
eWVyKFdlYkxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxv
YXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBib29sIG9wYXF1ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3Np
dGlvbihjb25zdCBXZWJGbG9hdFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJGbG9h
dFBvaW50IHBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFN1
YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0
cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0
IHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0Nv
bnRlbnQoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJv
b2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29s
b3IpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRl
ck9wZXJhdGlvbnMmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZEZp
bHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXREZWJ1Z05hbWUoV2ViU3RyaW5nKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0QW5pbWF0aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwg
V2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rvbmlj
VGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91Ymxl
IG1vbm90b25pY1RpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVBbmlt
YXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBbmltYXRpb25zVG8o
V2ViTGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJm
YWNlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihX
ZWJQb2ludCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9v
bCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVh
ZChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIE9WRVJSSURF
OworCisgICAgV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSogbGF5ZXIoKSBjb25zdDsKIAogcHJvdGVj
dGVkOgotICAgIFdlYkxheWVySW1wbCgpOwotICAgIHZpcnR1YWwgfldlYkxheWVySW1wbCgpOwor
ICAgIFJlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiBtX2xheWVyOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXcuY3BwCmluZGV4IGVkZDQzZGYyMGQyNWNiODQwZmFkMzc1MzRkNmIzMDdkZjM2OTA4
NjYuLmJkOGQ2Y2Q4MzNhMmU4YTQ3ZGM1NzY4OWQxZmI2ZWZlZTQ1ZmY1NmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KIAogI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNsdWRlICJX
ZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgiCiAjaW5j
bHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKQEAgLTgzLDcgKzg0LDcgQEAgdm9pZCBXZWJM
YXllclRyZWVWaWV3OjpzZXRTdXJmYWNlUmVhZHkoKQogdm9pZCBXZWJMYXllclRyZWVWaWV3Ojpz
ZXRSb290TGF5ZXIoV2ViTGF5ZXIgKnJvb3QpCiB7CiAgICAgaWYgKHJvb3QpCi0gICAgICAgIG1f
cHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoKnJvb3QpOworICAgICAgICBt
X3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKHN0YXRpY19jYXN0PFdlYkxh
eWVySW1wbCo+KHJvb3QpLT5sYXllcigpKTsKICAgICBlbHNlCiAgICAgICAgIG1fcHJpdmF0ZS0+
bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPigp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZp
ZXdJbXBsLmNwcAppbmRleCBhN2JmNjRkMzY4MDU3NjVkYjI2OGU3Y2UwNmM4NDI4MWFiMjhjNGNj
Li44YTNmYzg5NjQ0NTUwYjUzMWFjNzkwNDNlYTM3MDFhNjIxMzZjYjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKIAogI2luY2x1
ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAj
aW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CkBAIC0xNDIsNyArMTQzLDcg
QEAgUGFzc093blB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2wKICAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0lt
cGw+IGltcGwgPSBhZG9wdFB0cihuZXcgV2ViTGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0
aW5ncykpOwogICAgIGlmICghaW1wbC0+bGF5ZXJUcmVlSG9zdCgpKQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihyb290KTsK
KyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25z
dCBXZWJMYXllckltcGwqPigmcm9vdCktPmxheWVyKCkpOwogICAgIHJldHVybiBpbXBsLnJlbGVh
c2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNGE5MGE5ODhkNDFjNmNlNGU1NmJhNTlhNGQ3
NmJkNjVhZmE5MTNkZC4uY2I3NTYyMzNlMWE3ZTQ4OGIxNzE1M2YzMmEyM2YwNzlkZDcwYWVkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuY3BwCkBAIC0xMDksOSArMTA5LDkgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7
CiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZygpICYmIG1fdmlkZW9MYXllci5pc051bGwoKSkgewotICAgICAgICBtX3Zp
ZGVvTGF5ZXIgPSBXZWJWaWRlb0xheWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgICAgIG1fdmlkZW9M
YXllci5zZXRPcGFxdWUobV9vcGFxdWUpOworICAgIGlmIChoYXNWaWRlbygpICYmIHN1cHBvcnRz
QWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAmJiAhbV92aWRlb0xheWVyKSB7CisgICAgICAgIG1fdmlk
ZW9MYXllciA9IGFkb3B0UHRyKFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgICAg
IG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG1fb3BhcXVlKTsKICAgICB9CiAjZW5k
aWYKIH0KQEAgLTEzOCw4ICsxMzgsOCBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
cmVwYWludCgpCiB7CiAgICAgQVNTRVJUKG1fbWVkaWFQbGF5ZXIpOwogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBzdXBw
b3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCi0gICAgICAgIG1fdmlkZW9MYXllci5pbnZhbGlk
YXRlKCk7CisgICAgaWYgKG1fdmlkZW9MYXllciAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVy
aW5nKCkpCisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOwogI2Vu
ZGlmCiAgICAgbV9tZWRpYVBsYXllci0+cmVwYWludCgpOwogfQpAQCAtMTY2LDggKzE2Niw4IEBA
IHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCiB7
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1fb3BhcXVlID0gb3BhcXVl
OwotICAgIGlmICghbV92aWRlb0xheWVyLmlzTnVsbCgpKQotICAgICAgICBtX3ZpZGVvTGF5ZXIu
c2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAgICBpZiAobV92aWRlb0xheWVyKQorICAgICAgICBtX3Zp
ZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShtX29wYXF1ZSk7CiAjZW5kaWYKIH0KIApAQCAt
MzQzLDcgKzM0Myw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjYW5jZWxMb2Fk
KCkKIFdlYkxheWVyKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnBsYXRmb3JtTGF5ZXIoKSBj
b25zdAogewogICAgIEFTU0VSVChtX3N1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk7Ci0g
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViVmlkZW9MYXllcio+KCZtX3ZpZGVvTGF5ZXIpOworICAg
IHJldHVybiBtX3ZpZGVvTGF5ZXIgPyBtX3ZpZGVvTGF5ZXItPmxheWVyKCkgOiAwOwogfQogI2Vu
ZGlmCiAKQEAgLTc0NSw3ICs3NDUsNyBAQCBib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0CiAKIGJvb2wgV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsOjphY2NlbGVyYXRlZFJlbmRlcmluZ0luVXNlKCkKIHsKLSAgICByZXR1cm4g
IW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBtX3ZpZGVvTGF5ZXIuYWN0aXZlKCk7CisgICAgcmV0
dXJuIG1fdmlkZW9MYXllciAmJiBtX3ZpZGVvTGF5ZXItPmFjdGl2ZSgpOwogfQogCiB2b2lkIFdl
Yk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KFdlYlZp
ZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IDM3MzAxNWVi
NzU2YWYwZjQ1MTFkYWU5ODFlNmJmMmUxYjU0ZGQ0ODguLjMyOWZkOWVjMGY0ODhhOWVhYWZlYTZl
OTVjOGZiYjI0OTA0MTVjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0
ZToKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgUmVm
UHRyPFdlYkhlbHBlclBsdWdpbkltcGw+IG1faGVscGVyUGx1Z2luOwogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKLSAgICBXZWJWaWRlb0xheWVyIG1fdmlkZW9MYXllcjsKKyAgICBP
d25QdHI8V2ViVmlkZW9MYXllcj4gbV92aWRlb0xheWVyOwogICAgIGJvb2wgbV9zdXBwb3J0c0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAgICAgYm9vbCBtX29wYXF1ZTsKICAgICBXZWJWaWRlb0Zy
YW1lUHJvdmlkZXI6OkNsaWVudCogbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3Bw
CmluZGV4IDcxMzYxNzgwYjQ1YWI0YjlmMDg3MGFmYzRlMDU3ZTRjMTI5ZTQ3MjAuLmYxMDc1NDkw
NDJkZWM5MjBjYTI0YzM4ZTIwNWMyYmM4ZDRkNTk1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC0zNjYsMTEg
KzM2NiwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJl
SWQodW5zaWduZWQgdGV4dHVyZUlkKQogICAgIGlmIChtX3RleHR1cmVJZCA9PSB0ZXh0dXJlSWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2lvU3VyZmFjZUxheWVyLmlzTnVsbCgp
KTsKKyAgICBBU1NFUlQoIW1faW9TdXJmYWNlTGF5ZXIpOwogCi0gICAgaWYgKG1fdGV4dHVyZUxh
eWVyLmlzTnVsbCgpKQotICAgICAgICBtX3RleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3RleHR1cmVMYXllci5zZXRUZXh0dXJlSWQodGV4dHVy
ZUlkKTsKKyAgICBpZiAoIW1fdGV4dHVyZUxheWVyKQorICAgICAgICBtX3RleHR1cmVMYXllciA9
IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKSk7CisgICAgbV90ZXh0
dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwogCiAgICAgLy8gSWYgYW55b25lIG9m
IHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAgICAg
Ly8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmluZyBh
IHN0eWxlIHJlY2FsYwpAQCAtMzkwLDExICszOTAsMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRoLAogICAgIGlmIChpb1N1cmZh
Y2VJZCA9PSBtX2lvU3VyZmFjZUlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV90
ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJlTGF5ZXIpOwogCi0g
ICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5
ZXIgPSBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCk7Ci0gICAgbV9pb1N1cmZhY2VMYXllci5z
ZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBXZWJTaXplKHdpZHRoLCBoZWlnaHQp
KTsKKyAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIpCisgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIg
PSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkpOworICAgIG1faW9TdXJmYWNl
TGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMoaW9TdXJmYWNlSWQsIFdlYlNpemUod2lkdGgs
IGhlaWdodCkpOwogCiAgICAgLy8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVk
IHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0
aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtNDA5LDEx
ICs0MDksMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJm
YWNlSWQoaW50IHdpZHRoLAogdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb21taXRCYWNr
aW5nVGV4dHVyZSgpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlm
ICghbV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1fdGV4dHVyZUxheWVyLmludmFs
aWRhdGUoKTsKKyAgICBpZiAobV90ZXh0dXJlTGF5ZXIpCisgICAgICAgIG1fdGV4dHVyZUxheWVy
LT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIuaXNO
dWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmICht
X2lvU3VyZmFjZUxheWVyKQorICAgICAgICBtX2lvU3VyZmFjZUxheWVyLT5sYXllcigpLT5pbnZh
bGlkYXRlKCk7CiAjZW5kaWYKIH0KIApAQCAtNDgwLDExICs0ODAsMTEgQEAgdm9pZCBXZWJQbHVn
aW5Db250YWluZXJJbXBsOjp6b29tTGV2ZWxDaGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwpCiB2b2lk
IFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKIHsKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFtX3RleHR1cmVMYXllci5pc051
bGwoKSkKLSAgICAgICAgbV90ZXh0dXJlTGF5ZXIuc2V0T3BhcXVlKG9wYXF1ZSk7CisgICAgaWYg
KG1fdGV4dHVyZUxheWVyKQorICAgICAgICBtX3RleHR1cmVMYXllci0+bGF5ZXIoKS0+c2V0T3Bh
cXVlKG9wYXF1ZSk7CiAKLSAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAg
ICAgIG1faW9TdXJmYWNlTGF5ZXIuc2V0T3BhcXVlKG9wYXF1ZSk7CisgICAgaWYgKG1faW9TdXJm
YWNlTGF5ZXIpCisgICAgICAgIG1faW9TdXJmYWNlTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShv
cGFxdWUpOwogI2VuZGlmCiB9CiAKQEAgLTU3Niw5ICs1NzYsOSBAQCB2b2lkIFdlYlBsdWdpbkNv
bnRhaW5lckltcGw6OndpbGxEZXN0cm95UGx1Z2luTG9hZE9ic2VydmVyKFdlYlBsdWdpbkxvYWRP
YnNlcnZlcgogV2ViTGF5ZXIqIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIo
KSBjb25zdAogewogICAgIGlmIChtX3RleHR1cmVJZCkKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqPigmbV90ZXh0dXJlTGF5ZXIpOworICAgICAgICBy
ZXR1cm4gbV90ZXh0dXJlTGF5ZXItPmxheWVyKCk7CiAgICAgaWYgKG1faW9TdXJmYWNlSWQpCi0g
ICAgICAgIHJldHVybiBjb25zdF9jYXN0PFdlYklPU3VyZmFjZUxheWVyKj4oJm1faW9TdXJmYWNl
TGF5ZXIpOworICAgICAgICByZXR1cm4gbV9pb1N1cmZhY2VMYXllci0+bGF5ZXIoKTsKICAgICBy
ZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4IDA3NGEwY2NkY2QwM2JiNTI1NmUzNjU4MDcy
YTgxZTlhNWY4M2M4ODYuLjk5OGJlNmU0MTlmODk1ZmE4MjE3OTQwMzkzNDRiYzE2ZjMxMWY5MjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5l
ckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWlu
ZXJJbXBsLmgKQEAgLTE4NiwxMCArMTg2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gQSBjb21wb3Np
dGVkIHBsdWdpbiB3aWxsIGVpdGhlciBoYXZlIG5vIGNvbXBvc2l0ZWQgbGF5ZXIsIGEgdGV4dHVy
ZSBsYXllciwgb3IgYW4gSU9TdXJmYWNlIGxheWVyLgogICAgIC8vIEl0IHdpbGwgbmV2ZXIgaGF2
ZSBib3RoIGEgdGV4dHVyZSBhbmQgSU9TdXJmYWNlIG91dHB1dC4KICAgICB1bnNpZ25lZCBtX3Rl
eHR1cmVJZDsKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBtX3RleHR1cmVMYXllcjsKKyAg
ICBPd25QdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fdGV4dHVyZUxheWVyOwogCiAgICAg
dW5zaWduZWQgbV9pb1N1cmZhY2VJZDsKLSAgICBXZWJJT1N1cmZhY2VMYXllciBtX2lvU3VyZmFj
ZUxheWVyOworICAgIE93blB0cjxXZWJJT1N1cmZhY2VMYXllcj4gbV9pb1N1cmZhY2VMYXllcjsK
ICNlbmRpZgogCiAgICAgLy8gVGhlIGFzc29jaWF0ZWQgc2Nyb2xsYmFyIGdyb3VwIG9iamVjdCwg
Y3JlYXRlZCBsYXppbHkuIFVzZWQgZm9yIFBlcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNjcm9sbGFibGVMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGEyMGU4MWQ4MTM3NTljM2Y3OTA5N2EyOWMxNDY5YjI1NzBmOWJhODkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlNj
cm9sbGFibGVMYXllci5oPgotCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUg
IlJlZ2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5
ZXI6OnNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50IHBvc2l0aW9uKQotewotICAgIG1fcHJpdmF0
ZS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVM
YXllcjo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCi17Ci0gICAgbV9wcml2YXRlLT5z
ZXRTY3JvbGxhYmxlKHNjcm9sbGFibGUpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6
c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCi17
Ci0gICAgbV9wcml2YXRlLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGhhdmVXaGVlbEV2ZW50
SGFuZGxlcnMpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2hvdWxkU2Nyb2xs
T25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKQotewotICAgIG1fcHJp
dmF0ZS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVh
ZCk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4mIHJlY3RzKQotewotICAgIFdlYkNvcmU6OlJl
Z2lvbiByZWdpb247Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsr
aSkgewotICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKLSAgICAgICAg
cmVnaW9uLnVuaXRlKHJlY3QpOwotICAgIH0KLSAgICBtX3ByaXZhdGUtPnNldE5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uKHJlZ2lvbik7Ci0KLX0KLQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNl
dElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sIGVuYWJsZSkKLXsKLSAgICBt
X3ByaXZhdGUtPnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwot
fQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJv
b2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVu
YWJsZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxlTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5h
MjBlODFkODEzNzU5YzNmNzkwOTdhMjljMTQ2OWIyNTcwZjliYTg5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVySW1wbC5jcHAK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CisKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgi
CisjaW5jbHVkZSAiUmVnaW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlNj
cm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQgcG9zaXRpb24pCit7Cisg
ICAgbV9wcml2YXRlLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbik7Cit9CisKK3ZvaWQgV2Vi
U2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxhYmxlKGJvb2wgc2Nyb2xsYWJsZSkKK3sKKyAgICBt
X3ByaXZhdGUtPnNldFNjcm9sbGFibGUoc2Nyb2xsYWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xs
YWJsZUxheWVyOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRI
YW5kbGVycykKK3sKKyAgICBtX3ByaXZhdGUtPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2
ZVdoZWVsRXZlbnRIYW5kbGVycyk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRT
aG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7
CisgICAgbV9wcml2YXRlLT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoc2hvdWxkU2Nyb2xs
T25NYWluVGhyZWFkKTsKK30KKwordm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYgcmVjdHMpCit7CisgICAg
V2ViQ29yZTo6UmVnaW9uIHJlZ2lvbjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3Rz
LnNpemUoKTsgKytpKSB7CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IHJlY3RzW2ld
OworICAgICAgICByZWdpb24udW5pdGUocmVjdCk7CisgICAgfQorICAgIG1fcHJpdmF0ZS0+c2V0
Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24ocmVnaW9uKTsKKworfQorCit2b2lkIFdlYlNjcm9sbGFi
bGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wgZW5hYmxl
KQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJz
KGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRGaXhlZFRvQ29udGFp
bmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRGaXhlZFRvQ29udGFp
bmVyTGF5ZXIoZW5hYmxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJiZDFiMjBmYjQwZjdjNjRkN2UxNzYzYWE2ODY2YjE0ZTE1Zjli
YWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxw
dWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4KLQotI2luY2x1ZGUgIlNjcm9sbGJhckxheWVyQ2hy
b21pdW0uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotCi12b2lkIFdlYlNjcm9sbGJhckxheWVyOjpzZXRTY3JvbGxMYXllcihjb25zdCBXZWJMYXll
ciBsYXllcikKLXsKLSAgICBpbnQgaWQgPSBsYXllci5pc051bGwoKSA/IDAgOiBsYXllci5jb25z
dFVud3JhcDxMYXllckNocm9taXVtPigpLT5pZCgpOwotICAgIHVud3JhcDxTY3JvbGxiYXJMYXll
ckNocm9taXVtPigpLT5zZXRTY3JvbGxMYXllcklkKGlkKTsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5
ZXIgV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShXZWJDb3JlOjpTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xs
YmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkpCi17Ci0gICAgcmV0dXJuIFdlYlNjcm9sbGJhckxh
eWVyKFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShz
Y3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwgMCkpOwotfQotCi1XZWJTY3JvbGxiYXJMYXll
cjo6V2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9s
bGJhckxheWVyQ2hyb21pdW0+JiBsYXllcikKLSAgICA6IFdlYkxheWVyKGxheWVyKQotewotfQot
Ci1XZWJTY3JvbGxiYXJMYXllciYgV2ViU2Nyb2xsYmFyTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mIGxheWVyKQot
ewotICAgIG1fcHJpdmF0ZSA9IGxheWVyOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViU2Ny
b2xsYmFyTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4o
KSBjb25zdAotewotICAgIHJldHVybiB1bndyYXA8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzZlOTg5NWRk
YmQ1OTE5NTdlMWFkMGU0ODVjMWIwMTBmYmZmODIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsx
LDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNjcm9sbGJh
ckxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oIgorI2lu
Y2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1c2luZyBXZWJDb3JlOjpTY3JvbGxiYXI7Cit1c2lu
ZyBXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworV2ViU2Nyb2xsYmFyTGF5ZXIqIFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoV2ViQ29yZTo6
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBQ
YXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+IGdlb21ldHJ5KQoreworICAgIHJl
dHVybiBuZXcgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNy
ZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwg
MCkpOworfQorCisKK1dlYlNjcm9sbGJhckxheWVySW1wbDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBs
KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAg
OiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIpKSkKK3sKK30KKworV2Vi
U2Nyb2xsYmFyTGF5ZXJJbXBsOjp+V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKCkKK3sKK30KKworV2Vi
TGF5ZXIqIFdlYlNjcm9sbGJhckxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xh
eWVyLmdldCgpOworfQorCit2b2lkIFdlYlNjcm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsTGF5
ZXIoV2ViTGF5ZXIqIGxheWVyKQoreworICAgIGludCBpZCA9IGxheWVyID8gc3RhdGljX2Nhc3Q8
V2ViTGF5ZXJJbXBsKj4obGF5ZXIpLT5sYXllcigpLT5pZCgpIDogMDsKKyAgICBzdGF0aWNfY2Fz
dDxTY3JvbGxiYXJMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldFNjcm9sbExh
eWVySWQoaWQpOworfQorCisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjcyMGY3OWM1NThlNDEwMjJhZWNkNjI5OWVjNmZkNDE4M2YxMjI5YzIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuaApA
QCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTY3JvbGxiYXJMYXllckltcGxfaAor
I2RlZmluZSBXZWJTY3JvbGxiYXJMYXllckltcGxfaAorCisjaW5jbHVkZSA8cHVibGljL1dlYlNj
cm9sbGJhckxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNjcm9sbGJhckxheWVy
Q2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTGF5ZXJJbXBsOwor
CitjbGFzcyBXZWJTY3JvbGxiYXJMYXllckltcGwgOiBwdWJsaWMgV2ViU2Nyb2xsYmFyTGF5ZXIg
eworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNjcm9sbGJhckxheWVySW1wbChQYXNzUmVmUHRy
PFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJTY3Jv
bGxiYXJMYXllckltcGwoKTsKKworICAgIC8vIFdlYlNjcm9sbGJhckxheWVyIGltcGxlbWVudGF0
aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxheWVyKikgT1ZFUlJJREU7CisKK3ByaXZhdGU6Cisg
ICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdl
YlNjcm9sbGJhckxheWVySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU29saWRDb2xvckxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM5
MTRiMjYzMjk0YjUzZjU0NjYxMWFkY2E4OTgzODQ2MTY3MGFlZS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTb2xpZENvbG9yTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0g
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU29saWRDb2xvckxh
eWVyLmg+Ci0KLSNpbmNsdWRlICJXZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSA8
cHVibGljL1dlYkZsb2F0UmVjdC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViU29saWRD
b2xvckxheWVyIFdlYlNvbGlkQ29sb3JMYXllcjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gV2Vi
U29saWRDb2xvckxheWVyKFdlYlNvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSgpKTsKLX0KLQot
V2ViU29saWRDb2xvckxheWVyOjpXZWJTb2xpZENvbG9yTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxX
ZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiYgbm9kZSkKLSAgICA6IFdlYkxheWVyKG5vZGUpCi17Ci19
Ci0KLXZvaWQgV2ViU29saWRDb2xvckxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2Vi
Q29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9y
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCmluZGV4IDMzYjFhMzBlMzhj
MzBhOTU3ZGRlM2E4NjFhNDg3ZGExN2M4MWQyOTkuLjk0NDA0MjYyY2E4MWMzYTY3ZmI0ZTIxMmYz
YmZlZDg2MTk5NjBlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNvbGlkQ29sb3JMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCkBAIC0yNiwyNCArMjYsMzcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgIlNvbGlkQ29sb3JMYXllckNocm9taXVtLmgi
CisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisKK3VzaW5nIFdlYkNvcmU6OlNvbGlkQ29sb3JM
YXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJTb2xp
ZENvbG9yTGF5ZXJJbXBsPiBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUoKQorV2ViU29s
aWRDb2xvckxheWVyKiBXZWJTb2xpZENvbG9yTGF5ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkpOworICAgIHJldHVybiBuZXcg
V2ViU29saWRDb2xvckxheWVySW1wbChTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkp
OwogfQogCi1XZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkK
LSAgICA6IFNvbGlkQ29sb3JMYXllckNocm9taXVtKCkKK1dlYlNvbGlkQ29sb3JMYXllckltcGw6
OldlYlNvbGlkQ29sb3JMYXllckltcGwoUGFzc1JlZlB0cjxTb2xpZENvbG9yTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIp
KSkKIHsKLSAgICBzZXRJc0RyYXdhYmxlKHRydWUpOworICAgIG1fbGF5ZXItPmxheWVyKCktPnNl
dElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYlNvbGlkQ29sb3JMYXllckltcGw6On5XZWJTb2xp
ZENvbG9yTGF5ZXJJbXBsKCkKIHsKIH0KIAorV2ViTGF5ZXIqIFdlYlNvbGlkQ29sb3JMYXllcklt
cGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwordm9pZCBXZWJT
b2xpZENvbG9yTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCit7
CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNvbGlkQ29sb3JMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNv
bGlkQ29sb3JMYXllckltcGwuaAppbmRleCBkMjY3M2I0MmI2OGY4Y2QxZTcxMWI5MWUxMjcwZDY3
NmQ1ZDc2OWVhLi43NzQyYmE0OTJkNGM1MTRkYzM3ODI3YzBiZDZlMDUzMGRkZDQwMTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBs
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1w
bC5oCkBAIC0yNiwxOCArMjYsMjggQEAKICNpZm5kZWYgV2ViU29saWRDb2xvckxheWVySW1wbF9o
CiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllckltcGxfaAogCi0jaW5jbHVkZSAiU29saWRDb2xv
ckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNvbGlkQ29sb3JMYXllckNocm9taXVtOworfQor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVySW1wbDsKIAotY2xhc3MgV2ViU29s
aWRDb2xvckxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2xpZENvbG9yTGF5ZXJDaHJvbWl1
bSB7CitjbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsIDogcHVibGljIFdlYlNvbGlkQ29sb3JM
YXllciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29saWRDb2xvckxheWVy
SW1wbD4gY3JlYXRlKCk7Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJTb2xpZENvbG9yTGF5ZXJJbXBs
KCk7CisgICAgZXhwbGljaXQgV2ViU29saWRDb2xvckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNv
cmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtPik7CiAgICAgdmlydHVhbCB+V2ViU29saWRDb2xv
ckxheWVySW1wbCgpOworCisgICAgLy8gV2ViU29saWRDb2xvckxheWVyIGltcGxlbWVudGF0aW9u
LgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcikgT1ZFUlJJREU7CisKK3ByaXZhdGU6Cisg
ICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYzNDIxNTVkYWNlZWFhYTdkODY2NjUzN2Y3MDAz
YWExOTMzMDQyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVyLmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiVmlkZW9MYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlZpZGVvTGF5ZXIu
aD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlZpZGVvTGF5ZXIgV2ViVmlkZW9MYXllcjo6
Y3JlYXRlKFdlYlZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIFdl
YlZpZGVvTGF5ZXIoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJvdmlkZXIp
KTsKLX0KLQotV2ViVmlkZW9MYXllcjo6V2ViVmlkZW9MYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6
OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0K
LQotYm9vbCBXZWJWaWRlb0xheWVyOjphY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3By
aXZhdGUtPmxheWVyVHJlZUhvc3QoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWJmZWQ2NzQyZjJkYzdmOTA5ZmFlMjU1MzcyMjZlMWFkMGUwOWJkZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNw
cApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYlZpZGVvTGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIK
KyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlZp
ZGVvTGF5ZXIqIFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqIHBy
b3ZpZGVyKQoreworICAgIHJldHVybiBuZXcgV2ViVmlkZW9MYXllckltcGwoV2ViQ29yZTo6Vmlk
ZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJvdmlkZXIpKTsKK30KKworV2ViVmlkZW9MYXllcklt
cGw6OldlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9t
aXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIoYWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXll
cikpKQoreworfQorCitXZWJWaWRlb0xheWVySW1wbDo6fldlYlZpZGVvTGF5ZXJJbXBsKCkKK3sK
K30KKworV2ViTGF5ZXIqIFdlYlZpZGVvTGF5ZXJJbXBsOjpsYXllcigpCit7CisgICAgcmV0dXJu
IG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgV2ViVmlkZW9MYXllckltcGw6OmFjdGl2ZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmxheWVyKCktPmxheWVyVHJlZUhvc3QoKTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlkZW9MYXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODdlNGI1ZTIwZGM5NmFiNzJiNjQwYjEx
YTI5YjY5ODdmZmNmZmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJWaWRlb0xheWVySW1wbF9oCisjZGVmaW5lIFdlYlZpZGVvTGF5ZXJJbXBsX2gKKworI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0xheWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFZpZGVvTGF5ZXJDaHJvbWl1bTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBX
ZWJMYXllckltcGw7CisKK2NsYXNzIFdlYlZpZGVvTGF5ZXJJbXBsIDogcHVibGljIFdlYlZpZGVv
TGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtPik7CisgICAgdmlydHVhbCB+V2ViVmlkZW9M
YXllckltcGwoKTsKKworICAgIC8vIFdlYlZpZGVvTGF5ZXIgaW1wbGVtZW50YXRpb24uCisgICAg
dmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYWN0
aXZlKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1w
bD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlZpZGVvTGF5ZXJJbXBsX2gKKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDBiZDNlYTEx
NmU0YzA1MmRlYWEwNWU2NjMwNzY0ZTMyZjljYTQxNjguLjJhZjM4MDZlMDNkODE1N2U1NWE3MDUx
Nzg3ODA5Mzg2MDAzNGNmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTE4Myw2ICsxODMsMTEgQEAKICN1bmRlZiBwb3cKICNpbmNsdWRlIDxjbWF0
aD4gLy8gZm9yIHN0ZDo6cG93CiAKKy8vIFdoZWVlISBHZXQgYWNjZXNzIHRvIHNldFNjcm9sbExh
eWVyKCkKKyNkZWZpbmUgcHJpdmF0ZSBwdWJsaWMKKyNpbmNsdWRlICJTY3JvbGxpbmdDb29yZGlu
YXRvci5oIgorI3VuZGVmIHByaXZhdGUKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00MTAsNiArNDE1LDcgQEAgV2ViVmlld0ltcGw6OldlYlZp
ZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1faXNDYW5jZWxpbmdGdWxsU2Ny
ZWVuKGZhbHNlKQogICAgICwgbV9iZW5jaG1hcmtTdXBwb3J0KHRoaXMpCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICwgbV9yb290TGF5ZXIoMCkKICAgICAsIG1fcm9vdEdy
YXBoaWNzTGF5ZXIoMCkKICAgICAsIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGZh
bHNlKQogICAgICwgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFsc2UpCkBAIC0zNTE0LDYg
KzM1MjAsMTAgQEAgYm9vbCBXZWJWaWV3SW1wbDo6YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZygpCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVy
KiBsYXllcikKIHsKICAgICBtX3Jvb3RHcmFwaGljc0xheWVyID0gbGF5ZXI7CisgICAgbV9yb290
TGF5ZXIgPSBsYXllciA/IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOworCisgICAgaWYgKCFs
YXllcikKKyAgICAgICAgbV9wYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zZXRTY3JvbGxM
YXllcigwKTsKIAogICAgIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShsYXllcik7
CiAgICAgaWYgKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KSB7CkBAIC0zNTI3LDExICszNTM3
LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXll
ciogbGF5ZXIpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTY3JvbGxM
YXllcihzY3JvbGxMYXllcik7CiAgICAgfQogCi0gICAgaWYgKGxheWVyKQotICAgICAgICBtX3Jv
b3RMYXllciA9ICpsYXllci0+cGxhdGZvcm1MYXllcigpOwotCiAgICAgaWYgKCFtX2xheWVyVHJl
ZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIobGF5
ZXIgPyAmbV9yb290TGF5ZXIgOiAwKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldFJvb3RM
YXllcihtX3Jvb3RMYXllcik7CiAKICAgICBJbnRSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIG1fc2l6
ZS53aWR0aCwgbV9zaXplLmhlaWdodCk7CiAgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0FjdGl2ZSkKQEAgLTM2NDQsNyArMzY1MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9ub25D
b21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5n
cygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC0+c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVl
Vmlldy5pbml0aWFsaXplKHRoaXMsIG1fcm9vdExheWVyLCBsYXllclRyZWVWaWV3U2V0dGluZ3Mp
OworICAgICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6ZSh0aGlzLCAqbV9yb290TGF5ZXIs
IGxheWVyVHJlZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVWaWV3Lmlz
TnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAobV93ZWJTZXR0aW5ncy0+YXBwbHlEZWZhdWx0RGV2
aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCktPmRldmljZVNjYWxlRmFjdG9y
KCkgIT0gMSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMzk3
ODM2ODBmYTE5ODk4ODZjNDYwYjEzZDQwZGQxNDA0MWEyYTQyYi4uMTIzZjM4YzRjMzViZGU5NzEw
OThkZGMyNjBkODgxNDM1YTI5MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCkBAIC04MTQsNyArODE0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRS
ZWN0IG1fcm9vdExheWVyU2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogICAgIFdlYkxheWVyVHJlZVZp
ZXcgbV9sYXllclRyZWVWaWV3OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIFdlYkxh
eWVyKiBtX3Jvb3RMYXllcjsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFw
aGljc0xheWVyOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAg
ICAgYm9vbCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGE1
Y2E1NTEyNGMyOTA0NzJjMjc0N2QwOTM5ZmIwMGRhMjA1OWY3N2QuLjQ5NDhmOTdjYzU4OGEwYjVi
YjIwMGQxNDM5YmM0ZjkxNzliNDlmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTIyLDEzICsxMjIs
MTMgQEAgVEVTVChJbWFnZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCiAgICAgUmVm
UHRyPEltYWdlPiBub25PcGFxdWVJbWFnZSA9IFRlc3RJbWFnZTo6Y3JlYXRlKEludFNpemUoMTAw
LCAxMDApLCBmYWxzZSk7CiAgICAgQVNTRVJUX1RSVUUobm9uT3BhcXVlSW1hZ2UuZ2V0KCkpOwog
Ci0gICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLmlzTnVsbCgp
KTsKKyAgICBBU1NFUlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpKTsKIAog
ICAgIGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShvcGFxdWVJbWFnZS5nZXQoKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLm9wYXF1ZSgp
KTsKKyAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCktPm9wYXF1
ZSgpKTsKIAogICAgIGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShub25PcGFxdWVJ
bWFnZS5nZXQoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5
ZXIoKS5vcGFxdWUoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRz
TGF5ZXIoKS0+b3BhcXVlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IDY2NzIwMDQxMDM4NTk2Mzli
ZWE2MjNjY2RlZjUxYjkyMzIzMGI2ZDAuLjliOGU1OGNhMTAwZTc3ZDkwMzY1YmQ0NjI4YjFkZTM4
MTA5Mzc0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVz
dC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KIAog
I2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRl
ICJXZWJMYXllckltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5oPgogI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29u
dGVudExheWVyQ2xpZW50Lmg+CkBAIC03Niw5ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICAgICAgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgICAgICBtX3Jvb3RMYXllciA9
IFdlYkxheWVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJM
YXllcjo6Y3JlYXRlKCkpOwogICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVD
b21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3Zp
ZXcuaW5pdGlhbGl6ZSgmbV9jbGllbnQsIG1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpT
ZXR0aW5ncygpKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdmlldy5pbml0aWFsaXplKCZtX2Ns
aWVudCwgKm1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAg
ICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAgICAgfQog
CkBAIC04NywxNCArODgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBXZSBtYXkgZ2V0IGFueSBu
dW1iZXIgb2Ygc2NoZWR1bGVDb21wb3NpdGUgY2FsbHMgZHVyaW5nIHNodXRkb3duLgogICAgICAg
ICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVt
YmVyKCkpOwogICAgICAgICBtX3ZpZXcuc2V0Um9vdExheWVyKDApOwotICAgICAgICBtX3Jvb3RM
YXllci5yZXNldCgpOworICAgICAgICBtX3Jvb3RMYXllci5jbGVhcigpOwogICAgICAgICBtX3Zp
ZXcucmVzZXQoKTsKICAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwog
ICAgIH0KIAogcHJvdGVjdGVkOgogICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1fY2xp
ZW50OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9y
b290TGF5ZXI7CiAgICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCkBAIC0xMDQsNzMg
KzEwNSw3MyBAQCBURVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiB7CiAgICAgLy8gQmFzZSBs
YXllci4KICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGlt
ZXMoQW55TnVtYmVyKCkpOwotICAgIFdlYkxheWVyIGxheWVyID0gV2ViTGF5ZXI6OmNyZWF0ZSgp
OwotICAgIG1fcm9vdExheWVyLmFkZENoaWxkKGxheWVyKTsKKyAgICBPd25QdHI8V2ViTGF5ZXI+
IGxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+
YWRkQ2hpbGQobGF5ZXIuZ2V0KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtX2NsaWVudCk7CiAKICAgICBXZWJGbG9hdFBvaW50IHBvaW50KDMsIDQpOwogICAgIEVY
UEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEp
KTsKLSAgICBsYXllci5zZXRBbmNob3JQb2ludChwb2ludCk7CisgICAgbGF5ZXItPnNldEFuY2hv
clBvaW50KHBvaW50KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9j
bGllbnQpOwotICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXIuYW5jaG9yUG9pbnQoKSk7CisgICAg
RVhQRUNUX0VRKHBvaW50LCBsYXllci0+YW5jaG9yUG9pbnQoKSk7CiAKICAgICBFWFBFQ1RfQ0FM
TChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7CiAgICAg
ZmxvYXQgYW5jaG9yWiA9IDU7Ci0gICAgbGF5ZXIuc2V0QW5jaG9yUG9pbnRaKGFuY2hvclopOwor
ICAgIGxheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yWik7CiAgICAgTW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEoYW5jaG9yWiwgbGF5
ZXIuYW5jaG9yUG9pbnRaKCkpOworICAgIEVYUEVDVF9FUShhbmNob3JaLCBsYXllci0+YW5jaG9y
UG9pbnRaKCkpOwogCiAgICAgV2ViU2l6ZSBzaXplKDcsIDgpOwogICAgIEVYUEVDVF9DQUxMKG1f
Y2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXll
ci5zZXRCb3VuZHMoc2l6ZSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKICAgICBNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9FUShz
aXplLCBsYXllci5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKHNpemUsIGxheWVyLT5ib3VuZHMo
KSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGlt
ZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBs
YXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4
cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyLm1hc2tzVG9Cb3Vu
ZHMoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSk7CiAKICAgICBF
WFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVy
KCkpOwotICAgIFdlYkxheWVyIG90aGVyTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAg
bV9yb290TGF5ZXIuYWRkQ2hpbGQob3RoZXJMYXllcik7CisgICAgT3duUHRyPFdlYkxheWVyPiBv
dGhlckxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXll
ci0+YWRkQ2hpbGQob3RoZXJMYXllci5nZXQoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQs
IHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE1h
c2tMYXllcihvdGhlckxheWVyKTsKKyAgICBsYXllci0+c2V0TWFza0xheWVyKG90aGVyTGF5ZXIu
Z2V0KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7
CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMo
QXRMZWFzdCgxKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IDAuMTIzZjsKLSAgICBsYXllci5zZXRP
cGFjaXR5KG9wYWNpdHkpOworICAgIGxheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogICAgIE1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VR
KG9wYWNpdHksIGxheWVyLm9wYWNpdHkoKSk7CisgICAgRVhQRUNUX0VRKG9wYWNpdHksIGxheWVy
LT5vcGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9z
aXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAg
ICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIub3BhcXVlKCkpOworICAg
IEVYUEVDVF9UUlVFKGxheWVyLT5vcGFxdWUoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVu
dCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0
UG9zaXRpb24ocG9pbnQpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CiAgICAgTW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEo
cG9pbnQsIGxheWVyLnBvc2l0aW9uKCkpOworICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXItPnBv
c2l0aW9uKCkpOwogCiAgICAgLy8gVGV4dHVyZSBsYXllci4KICAgICBFWFBFQ1RfQ0FMTChtX2Ns
aWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
OjpjcmVhdGUoKTsKLSAgICBtX3Jvb3RMYXllci5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXIpOworICAg
IE93blB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gdGV4dHVyZUxheWVyID0gYWRvcHRQdHIo
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRk
Q2hpbGQodGV4dHVyZUxheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4
cGVjdGF0aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVk
dWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIHRleHR1cmVMYXllci5zZXRU
ZXh0dXJlSWQoMyk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMyk7CiAgICAgTW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9D
QUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAg
ICB0ZXh0dXJlTGF5ZXIuc2V0RmxpcHBlZCh0cnVlKTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldEZs
aXBwZWQodHJ1ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xp
ZW50KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5U
aW1lcyhBdExlYXN0KDEpKTsKICAgICBXZWJGbG9hdFJlY3QgdXZSZWN0KDAuMWYsIDAuMWYsIDAu
OWYsIDAuOWYpOwotICAgIHRleHR1cmVMYXllci5zZXRVVlJlY3QodXZSZWN0KTsKKyAgICB0ZXh0
dXJlTGF5ZXItPnNldFVWUmVjdCh1dlJlY3QpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKIApAQCAtMTc4LDE0ICsxNzksMTQgQEAgVEVTVF9GKFdl
YkxheWVyVGVzdCwgQ2xpZW50KQogICAgIE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQgY29udGVu
dENsaWVudDsKICAgICBFWFBFQ1RfQ0FMTChjb250ZW50Q2xpZW50LCBwYWludENvbnRlbnRzKF8s
IF8sIF8pKS5UaW1lcyhBbnlOdW1iZXIoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNj
aGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJDb250ZW50TGF5
ZXIgY29udGVudExheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNvbnRlbnRDbGllbnQp
OwotICAgIG1fcm9vdExheWVyLmFkZENoaWxkKGNvbnRlbnRMYXllcik7CisgICAgT3duUHRyPFdl
YkNvbnRlbnRMYXllcj4gY29udGVudExheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpj
cmVhdGUoJmNvbnRlbnRDbGllbnQpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQoY29udGVu
dExheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygm
bV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRl
KCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGNvbnRlbnRMYXllci5zZXREcmF3c0NvbnRlbnQo
ZmFsc2UpOworICAgIGNvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50KGZhbHNl
KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAg
IEVYUEVDVF9GQUxTRShjb250ZW50TGF5ZXIuZHJhd3NDb250ZW50KCkpOworICAgIEVYUEVDVF9G
QUxTRShjb250ZW50TGF5ZXItPmxheWVyKCktPmRyYXdzQ29udGVudCgpKTsKIH0KIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0
LmNwcAppbmRleCBiZWMyYzYwMzVhY2FlZjA3MzQwYTFiOGMzNjRlMWE5OTA4MmYzY2Q1Li4xYzE2
MDJjMjM0MTY5OWQ5ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAtNjAs
OCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAg
ICAgIGluaXRpYWxpemVDb21wb3NpdG9yKCk7Ci0gICAgICAgIG1fcm9vdExheWVyID0gV2ViTGF5
ZXI6OmNyZWF0ZSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGll
bnQoKSwgbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKKyAgICAg
ICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBF
WFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJM
YXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIG1fdmlldy5zZXRTdXJmYWNlUmVh
ZHkoKTsKICAgICB9CiAKQEAgLTcwLDEzICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIE1vY2s6
OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKGNsaWVudCgpKTsKIAogICAgICAgICBtX3ZpZXcu
c2V0Um9vdExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5yZXNldCgpOworICAgICAgICBt
X3Jvb3RMYXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVzZXQoKTsKICAgICAgICAgV2Vi
S2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAg
IFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7
CiAgICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158935</attachid>
            <date>2012-08-16 16:29:39 -0700</date>
            <delta_ts>2012-08-16 17:29:31 -0700</delta_ts>
            <desc>rebased to ToT</desc>
            <filename>bug-94174-20120816162904.patch</filename>
            <type>text/plain</type>
            <size>200911</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkNjE1ZmJlYzdhYTI2
NGRkZmZiYWM2MGIwMDI5NmY1OTI2MGE4NjMyLi5jODY3YWNlM2YzNzI4M2Y0OWZmMTZmNzhjZWFj
MjBiZGNlODU2MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1NCBAQAogMjAxMi0wOC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1
bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFs
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZXMgV2ViTGF5ZXIgZnJvbSBhIHZhbHVlIHR5cGUgdG8gYSBwdXJlIHZpcnR1
YWwgaW50ZXJmYWNlIGFuZCBjaGFuZ2VzIFdlYipMYXllcnMgZnJvbSBzdWJ0eXBlcyB0bworICAg
ICAgICBzdGFuZGFsb25lIHR5cGVzIHRoYXQgaGF2ZSBhIFdlYkxheWVyLiBUaGlzIGJldHRlciBp
c29sYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgaW50ZXJmYWNlIGFuZCwgc2luY2UK
KyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gcmUtd3JhcCBhbiBleGlzdGluZyBsYXllciwg
bWFrZXMgY2xlYW51cCBleHBsaWNpdCBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgY2FsbGVyIHRv
IGludm9rZQorICAgICAgICBzcGVjaWFsIGNsZWFudXAgbWV0aG9kcyBiZWZvcmUgc2h1dGRvd24u
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmg6CisgICAgICAg
IChXZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oOgorICAgICAgICAoV2Vi
SU9TdXJmYWNlTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVy
Lmg6CisgICAgICAgIChXZWJJbWFnZUxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjp+V2ViTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaDoKKyAgICAgICAgKFdlYlNjcm9sbGFibGVMYXllcik6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg6CisgICAgICAg
IChXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNvbGlk
Q29sb3JMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllcjo6fldlYlNvbGlkQ29s
b3JMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYlZpZGVvTGF5ZXIpOgorCisyMDEyLTA4LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgdW5uZWNlc3Nh
cnkgdHJlZSBoaWVyYXJjaHkgaW5zcGVjdGlvbiBBUElzIGZyb20gV2ViTGF5ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjI5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgaXQgdHVybnMgb3V0LCB0
aGVzZSBBUElzIGFyZSBuZWVkZWQuIFdpdGhvdXQgdGhlbSwgdGhlcmUgaXMgbm8gd2F5IHRvIHJl
LXdyYXAgYW4gZXhpc3RpbmcgbGF5ZXIgc28gd2UgY2FuCisgICAgICAgIGtub3cgdGhhdCB3aGVu
IGFsbCBXZWJMYXllciB3cmFwcGVycyBvZiBhIGdpdmVuIGxheWVyIGdvIGF3YXkgdGhhdCBsYXll
ciB3aWxsIG5ldmVyIGJlIGV4cG9zZWQgdG8gdGhlIHB1YmxpYyBBUEkKKyAgICAgICAgYWdhaW4g
YW5kIHJ1biBhcHByb3ByaWF0ZSBjbGVhbnVwIGNvZGUuCisKKyAgICAgICAgKiBjaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYkxheWVyKToKKworMjAxMi0wOC0xNiAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0g
UmVtb3ZlIHVubmVjZXNzYXJ5IHRyZWUgaGllcmFyY2h5IGluc3BlY3Rpb24gQVBJcyBmcm9tIFdl
YkxheWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NDIyOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2E0MjYyM2Y0NGQxNmQwYTdhMzQyMzUwOTlhYTM2MzE2YzNk
ZDVlNC4uNDJiMmU0OTU5YWJjZTJkZTlhNWZiMjg3MjJjOWRlNzk5MGUwNzNkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDExOSBAQAogMjAxMi0wOC0xNiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20g
YSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFsIGludGVyZmFjZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHVwZGF0ZXMgV2ViQ29yZSBj
b2RlIGZvciB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIGNoYW5nZXMuIENsYXNzZXMgdGhhdCBoYXZl
IG93bmVyc2hpcCBvZiBzcGVjaWZpYyBsYXllcgorICAgICAgICB0eXBlcyAoc3VjaCBhcyBEcmF3
aW5nQnVmZmVyQ2hyb21pdW0sIENhbnZhczJETGF5ZXJCcmlkZ2UgYW5kIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW0pIGhvbGQgb3duZXJzaGlwCisgICAgICAgIG9mIGEgc3BlY2lmaWMgdHlw
ZSBhbmQgYSBwb2ludGVyIHRvIHRoZSBXZWJMYXllciB0byBHcmFwaGljc0xheWVyQ2hyb21pdW0g
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIGxheWVyCisgICAgICAgIHRyZWUuIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSBob2xkcyBhIFdlYkNvbnRlbnRMYXllciBhbmQgKG9wdGlvbmFsbHkpIGEg
V2ViSW1hZ2VMYXllciBhbmQgV2ViTGF5ZXIgKGZvcgorICAgICAgICBtX3RyYW5zZm9ybUxheWVy
KSBhbmQgYXNzZW1ibGVzIHRoZSBmaW5hbCBsYXllciB0cmVlLgorCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpzZXRTY3JvbGxM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNl
dEhvcml6b250YWxTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvclByaXZhdGU6OnNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpzY3JvbGxMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2Nyb2xsYmFyTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXROb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hl
ZWxFdmVudEhhbmRsZXJDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJc0NvbnRhaW5l
ckZvckZpeGVkUG9zaXRpb25MYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0OjpBY2NlbGVyYXRlZERldmljZUNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0OjpjbGVh
ckxheWVyKToKKyAgICAgICAgKEFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2NlbGVyYXRlZERldmljZUNvbnRleHQ6OnByZXBhcmVGb3JEcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6fkNhbnZhczJETGF5ZXJCcmlk
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6c2tDYW52YXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6bGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6Y29udGV4dEFjcXVpcmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbnZhczJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6RHJhd2luZ0J1ZmZlclByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6On5EcmF3aW5nQnVm
ZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6bGF5
ZXIpOgorICAgICAgICAoRHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06On5HcmFwaGljc0xheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVO
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUZy
b21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y2xlYXJCYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRDb250ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01lZGlhKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUbyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c3VzcGVuZEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpyZXN1bWVBbmltYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkTGlua0hpZ2hs
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmRpZEZpbmlz
aExpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNob3JQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkcmVuVHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTWFz
a3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzU2NhbGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRz
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpo
YXNDb250ZW50c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6Y29udGVudExheWVyKToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNvbnRlbnRzTGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cm9vdExheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisKKzIwMTItMDgtMTYgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBpbnNwZWN0aW9uIEFQSXMgZnJvbSBX
ZWJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTQyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
d2VhayB1cGRhdGVMYXllclByZXNlcnZlczNEKCkgbG9naWMgdG8gdXNlIHRoZSBleGlzdGluZyBH
cmFwaGljc0xheWVyIHRyZWUgaGllcmFyY2h5IGluc3RlYWQgb2YgcHVsbGluZyB0aGUKKyAgICAg
ICAgaGllcmFyY2h5IG9mZiBvZiBXZWJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorCisyMDEy
LTA4LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAg
W2Nocm9taXVtXSBSZW1vdmUgdW5uZWNlc3NhcnkgdHJlZSBoaWVyYXJjaHkgaW5zcGVjdGlvbiBB
UElzIGZyb20gV2ViTGF5ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk0MjI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjYyNjBlOGQ5
NTM2YjM2ODFiYWYxNGExNzA4MWI3YWU5NjE3OGNjMC4uNTUyMmJjNGRiYTJhMWFmNTRlNDlkMjk4
MDg3MDQ4MDU1NDllYTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwy
MjkgQEAKIDIwMTItMDgtMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAorICAgICAgICBbY2hyb21pdW1dIENoYW5nZSBXZWJMYXllciBmcm9tIGEgY29uY3JldGUgdHlw
ZSB0byBhIHB1cmUgdmlydHVhbCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgV2ViKkxheWVyIGZhbWlseSB0byB0aGUgbmV3IGRlc2lnbiBhbmQgdXBkYXRlcyBjYWxsZXJz
IGluIFdlYlZpZXdJbXBsIC8KKyAgICAgICAgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LgorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpOb25D
b21wb3NpdGVkQ29udGVudEhvc3QpOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q6OnNldFNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDo6c2Nyb2xsTGF5ZXIpOgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuaDoKKyAgICAgICAgKiBzcmMvV2ViQ29udGVudExheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVudExheWVySW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6On5XZWJDb250ZW50TGF5ZXJJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6Y2xlYXJDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXRVc2VMQ0RUZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6c2V0RHJhd0NoZWNrZXJib2FyZEZv
ck1pc3NpbmdUaWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OnBh
aW50Q29udGVudHMpOgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJDb250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6fldlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGw6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsOjpzZXRUZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OnNldEZsaXBwZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw6OnNldFVWUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbDo6c2V0T3BhcXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRQcmVtdWx0aXBsaWVkQWxwaGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OndpbGxNb2RpZnlUZXh0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRSYXRlTGlt
aXRDb250ZXh0KToKKyAgICAgICAgKFdlYlRleHR1cmVVcGRhdGVySW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRleHR1cmVVcGRhdGVySW1wbDo6V2ViVGV4dHVyZVVwZGF0ZXJJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpwcmVwYXJlVGV4dHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y29udGV4
dCk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgor
ICAgICAgICAqIHNyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXIuY3BwLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklPU3VyZmFjZUxheWVySW1wbDo6V2ViSU9TdXJmYWNlTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjp+V2ViSU9TdXJm
YWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpz
ZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5
ZXJJbXBsOjpsYXllcik6CisgICAgICAgICogc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIu
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklP
U3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXll
ci5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZUxheWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZUxheWVySW1wbDo6V2ViSW1hZ2VM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZUxheWVySW1wbDo6fldlYkltYWdl
TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VMYXllckltcGw6OmxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VMYXllckltcGw6OnNldEJpdG1hcCk6CisgICAgICAg
ICogc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbWFnZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkltYWdlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMv
V2ViTGF5ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJMYXllckltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjpXZWJMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
On5XZWJMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6YWRkQ2hpbGQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6Omluc2VydENoaWxkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnNldENoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBs
OjpyZW1vdmVGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpyZW1v
dmVBbGxDaGlsZHJlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5jaG9y
UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmFuY2hvclBvaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2ludFopOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OmFuY2hvclBvaW50Wik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c2V0Qm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpi
b3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldE1hc2tzVG9Cb3VuZHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6Om1hc2tzVG9Cb3VuZHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpvcGFj
aXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6Om9wYXF1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVySW1wbDo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnBv
c2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRTdWJsYXllclRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c3VibGF5ZXJUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0UHJl
c2VydmVzM0QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QmFj
a2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRGaWx0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RGVidWdOYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJJbXBsOjpzZXRBbmltYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW1wbDo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjpyZW1vdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnBh
dXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzdXNwZW5kQW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVzdW1lQW5pbWF0aW9u
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpjbGVhclJlbmRlclN1cmZhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRTY3JvbGxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllckltcGw6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXll
cnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEZpeGVkVG9Db250YWluZXJM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAq
IHNyYy9XZWJMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViTGF5
ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFJvb3RMYXllcik6CisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJl
cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNldE9w
YXF1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cGxhdGZv
cm1MYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6YWNj
ZWxlcmF0ZWRSZW5kZXJpbmdJblVzZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5oOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
dWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldE9wYXF1ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIpOgor
ICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgIChXZWJQbHVn
aW5Db250YWluZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYWJsZUxheWVySW1wbC5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxl
TGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xs
YWJsZUxheWVyOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9s
bGFibGVMYXllcjo6c2V0U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFi
bGVMYXllcjo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNjcm9sbGFibGVMYXllcjo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVyOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JG
aXhlZFBvc2l0aW9uTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVy
OjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJTY3JvbGxiYXJM
YXllckltcGwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2Nyb2xsYmFyTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJh
ckxheWVySW1wbDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2Nyb2xsYmFyTGF5ZXJJbXBsOjp+V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNjcm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsTGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJT
Y3JvbGxiYXJMYXllckltcGwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKiBz
cmMvV2ViU29saWRDb2xvckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlk
Q29sb3JMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29saWRDb2xvckxheWVy
SW1wbDo6V2ViU29saWRDb2xvckxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlk
Q29sb3JMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNvbGlkQ29sb3JMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAg
ICogc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JMYXllckltcGwpOgorICAgICAg
ICAqIHNyYy9XZWJWaWRlb0xheWVySW1wbC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9MYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9MYXllckltcGw6OldlYlZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9MYXllckltcGw6On5XZWJWaWRlb0xheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJ
bXBsOjphY3RpdmUpOgorICAgICAgICAqIHNyYy9XZWJWaWRlb0xheWVySW1wbC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJWaWRlb0xheWVy
SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMv
V2ViTGF5ZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5j
cHA6CisKKzIwMTItMDgtMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBp
bnNwZWN0aW9uIEFQSXMgZnJvbSBXZWJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGVhZCBXZWJMYXllciBmdW5jdGlvbiBpbXBsZW1l
bnRhdGlvbnMgYW5kIHRlc3RzIG9mIHNhbWUuCisKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3Bw
OgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVGVzdC5jcHA6CisKKzIwMTItMDgtMTYgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIFJl
bW92ZSB1bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBpbnNwZWN0aW9uIEFQSXMgZnJvbSBXZWJM
YXllcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQy
MjkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250
ZW50TGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExh
eWVyLmgKaW5kZXggNzMzNmJmYWJjZDc0NjE4MjE4YjlkZWRlYmEwMWJjMjczMjMyNmM2Ny4uNDUz
ODFlZTkzZmYwNjE4MGM1YzFhYjVkOGEwMzA1NjlmM2NkNTM1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCkBAIC0yOSw1MyArMjks
MzYgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJTY3JvbGxhYmxlTGF5
ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW07
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50Owot
Y2xhc3MgV2ViQ29udGVudExheWVySW1wbDsKIAotY2xhc3MgV2ViQ29udGVudExheWVyIDogcHVi
bGljIFdlYlNjcm9sbGFibGVMYXllciB7CitjbGFzcyBXZWJDb250ZW50TGF5ZXIgewogcHVibGlj
OgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkNvbnRlbnRMYXllciBjcmVhdGUoV2ViQ29u
dGVudExheWVyQ2xpZW50Kik7CisgICAgLy8gVGhlIGNsaWVudCBtdXN0IG91dGxpdmUgdGhlIFdl
YkNvbnRlbnRMYXllci4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250ZW50TGF5ZXIq
IGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqKTsKIAotICAgIFdlYkNvbnRlbnRMYXllcigp
IHsgfQotICAgIFdlYkNvbnRlbnRMYXllcihjb25zdCBXZWJDb250ZW50TGF5ZXImIGxheWVyKSA6
IFdlYlNjcm9sbGFibGVMYXllcihsYXllcikgeyB9CiAgICAgdmlydHVhbCB+V2ViQ29udGVudExh
eWVyKCkgeyB9Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29udGVu
dExheWVyJiBsYXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgLy8gQ2FsbGVkIHdoZW4gdGhlIFdl
YkNvbnRlbnRMYXllckNsaWVudCBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQu
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CisgICAgLy8gVGhlIFdlYkNv
bnRlbnRMYXllciBoYXMgb3duZXJzaGlwIG9mIHRoaXMgd3JhcHBlci4KKyAgICB2aXJ0dWFsIFdl
YkxheWVyKiBsYXllcigpID0gMDsKIAogICAgIC8vIFNldCB0byB0cnVlIGlmIHRoZSBiYWNrc2lk
ZSBvZiB0aGlzIGxheWVyJ3MgY29udGVudHMgc2hvdWxkIGJlIHZpc2libGUgd2hlbiBjb21wb3Np
dGVkLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXREb3VibGVTaWRlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9v
bCkgPSAwOwogCiAgICAgLy8gU2V0IHRvIGFwcGx5IGEgc2NhbGUgZmFjdG9yIHVzZWQgd2hlbiBw
YWludGluZyBhbmQgZHJhd2luZyB0aGlzIGxheWVyJ3MgY29udGVudC4gRGVmYXVsdHMgdG8gMS4w
LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgPSAwOwogCiAgICAgLy8gU2V0IHRv
IHJlbmRlciB0ZXh0IGluIHRoaXMgbGF5ZXIgd2l0aCBMQ0QgYW50aWFsaWFzaW5nLiBPbmx5IHNl
dCBpZiB5b3Uga25vdyB0aGF0IHRoaXMgbGF5ZXIgd2lsbCBiZQogICAgIC8vIGRyYXduIGluIGEg
d2F5IHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgLSBpLmUuIG9wYXF1ZSBiYWNrZ3JvdW5kLCBub3Qg
cm90YXRlZCBvciBzY2FsZWQsIGV0Yy4KICAgICAvLyBEZWZhdWx0cyB0byBmYWxzZTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0VXNlTENEVGV4dChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VXNlTENEVGV4dChib29sKSA9IDA7CiAKICAgICAvLyBTZXQgdG8gZHJhdyBhIHN5c3RlbS1k
ZWZpbmVkIGNoZWNrZXJib2FyZCBpZiB0aGUgY29tcG9zaXRvciB3b3VsZCBvdGhlcndpc2UgZHJh
dyBhIHRpbGUgaW4gdGhpcyBsYXllcgogICAgIC8vIGFuZCB0aGUgYWN0dWFsIGNvbnRlbnRzIGFy
ZSB1bmF2YWlsYWJsZS4gSWYgZmFsc2UsIHRoZSBjb21wb3NpdG9yIHdpbGwgZHJhdyB0aGUgbGF5
ZXIncyBiYWNrZ3JvdW5kIGNvbG9yCiAgICAgLy8gZm9yIHRoZXNlIHRpbGVzLgogICAgIC8vIERl
ZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREcmF3Q2hlY2tlcmJv
YXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0g
ICAgV2ViQ29udGVudExheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBXZWJDb250ZW50TGF5ZXImIG9wZXJhdG9yPShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW0+Jik7Ci0gICAgb3Bl
cmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtPigpIGNv
bnN0OwotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNz
aW5nVGlsZXMoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmgKaW5kZXggYjE5YzA1ZjNlM2IwOThkOGViMDNlZTU2MTI3OTY0NmI5MDgxZjQ1NC4u
OTJkMmM0ZmVlODc2YTkxYmRiZjYwYmUzODUxMzczY2NlZjcxYjE3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJXZWJMYXllci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBUZXh0dXJlTGF5
ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyQ2xpZW50OwpAQCAtNDQsNDkgKzQwLDQzIEBAIGNsYXNzIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyQ2xpZW50OwogLy8gV2hlbiBpbiBzaW5nbGUtdGhyZWFkIG1vZGUsIHRoaXMg
bWVhbnMgZHVyaW5nIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpLgogLy8gV2hlbiB1c2lu
ZyB0aGUgdGhyZWFkZWQgY29tcG9zaXRvciwgdGhpcyBjYW4gbWVhbiBhdCBhbiBhcmJpdHJhcnkg
dGltZSB1bnRpbAogLy8gdGhlIFdlYkxheWVyVHJlZVZpZXcgaXMgZGVzdHJveWVkLgotY2xhc3Mg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIgewogcHVibGljOgogICAgIC8vIFRoZSBvd25lciBvZiB0aGlzIGxh
eWVyIG1heSBvcHRpb25hbGx5IHByb3ZpZGUgYSBjbGllbnQuIFRoaXMgY2xpZW50IHdpbGwKICAg
ICAvLyBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbXBvc2l0b3Igd2lzaGVzIHRvIHByb2R1Y2Ug
YSBuZXcgZnJhbWUgYW5kIGNhbgogICAgIC8vIHByb3ZpZGUgYSBuZXcgZnJvbnQgYnVmZmVyIHRl
eHR1cmUgSUQuIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBjbGllbnQgd2FudHMgdG8KICAgICAvLyBp
bXBsZW1lbnQgYSBkb3VibGUtYnVmZmVyaW5nIHNjaGVtZSB0aGF0IGlzIHN5bmNocm9uaXplZCB3
aXRoIHRoZSBjb21wb3NpdG9yLCBmb3IgaW5zdGFuY2UuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgY3JlYXRlKFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
Q2xpZW50KiA9IDApOwotCi0gICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVudCBmb3IgdGhp
cyBsYXllciBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGRuJ3QgYmUgdXNlZC4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKKyAgICAvLyBUaGUgY2xpZW50IG11c3Qgb3V0bGl2
ZSB0aGUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqIGNyZWF0ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNs
aWVudCogPSAwKTsKIAotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9CiAgICAgdmly
dHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KIAorICAgIHZpcnR1YWwgV2ViTGF5
ZXIqIGxheWVyKCkgPSAwOworCiAgICAgLy8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0aGF0IHJlcHJl
c2VudHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQogICAgIC8vIGNvbXBvc2l0
b3IgY29udGV4dC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKSA9IDA7CiAKICAgICAv
LyBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRo
ZSBZIGRpcmVjdGlvbiB3aGVuCiAgICAgLy8gcmVuZGVyZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldEZsaXBwZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEZsaXBwZWQoYm9vbCkg
PSAwOwogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUgdGV4dHVyZSB0
aGF0IGlzIG1hcHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpID0gMDsKIAogICAgIC8vIFNldHMgd2hl
dGhlciBldmVyeSBwaXhlbCBpbiB0aGlzIGxheWVyIGlzIG9wYXF1ZS4gRGVmYXVsdHMgdG8gZmFs
c2UuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0T3BhcXVlKGJvb2wpID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhlciB0aGlzIGxh
eWVyJ3MgdGV4dHVyZSBoYXMgcHJlbXVsdGlwbGllZCBhbHBoYSBvciBub3QuIERlZmF1bHRzIHRv
IHRydWUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29s
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wpID0gMDsKIAog
ICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IHByb3ZpZGVkIHRleHR1cmUg
SUQgaXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgZXh0ZXJuYWxseS4KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgd2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vZGlmeVRl
eHR1cmUoKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBjb250ZXh0IHNob3VsZCBi
ZSByYXRlIGxpbWl0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuIFJhdGUgbGltaXRpbmcgd29ya3MgYnkg
YmxvY2tpbmcKICAgICAvLyBpbnZhbGlkYXRlKCkgYW5kIGludmFsaWRhdGVSZWN0KCkgY2FsbHMg
aWYgdGhlIGNvbXBvc2l0b3IgaXMgdG9vIG1hbnkgZnJhbWVzIGJlaGluZC4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKTsKLQotcHJpdmF0ZToKLSNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVMYXll
cihQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtPik7Ci0jZW5kaWYKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKSA9IDA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViSU9TdXJmYWNlTGF5ZXIuaAppbmRleCAzN2E0YzY3OTJjMWM3NmVlY2MwYzYwYzBmM2Zj
OWQwZWEzZDMzOWJiLi5iY2YxNDExMmFhNGI5NDkwZDAzNjlkYmE0YTdjZjVhMDg3NjZmMjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklPU3VyZmFjZUxh
eWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VM
YXllci5oCkBAIC0zMCwyNyArMzAsMTkgQEAKICNpbmNsdWRlICJXZWJMYXllci5oIgogI2luY2x1
ZGUgIldlYlNpemUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSU9TdXJmYWNlTGF5
ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMgY2xhc3MgcmVw
cmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSU9TdXJm
YWNlLgotY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3Mg
V2ViSU9TdXJmYWNlTGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
YklPU3VyZmFjZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklP
U3VyZmFjZUxheWVyKiBjcmVhdGUoKTsKIAotICAgIFdlYklPU3VyZmFjZUxheWVyKCkgeyB9CiAg
ICAgdmlydHVhbCB+V2ViSU9TdXJmYWNlTGF5ZXIoKSB7IH0KIAotICAgIC8vIFNldHMgdGhlIElP
IHN1cmZhY2UgaWQgdGhhdCByZXByZXNlbnRzIHRoaXMgbGF5ZXIncyBjb250ZW50cy4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZh
Y2VJZCwgV2ViU2l6ZSk7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CiAKLXBy
aXZhdGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViSU9TdXJm
YWNlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJT1N1cmZhY2VMYXllckNocm9taXVtPik7Ci0j
ZW5kaWYKKyAgICAvLyBTZXRzIHRoZSBJTyBzdXJmYWNlIGlkIHRoYXQgcmVwcmVzZW50cyB0aGlz
IGxheWVyJ3MgY29udGVudHMuCisgICAgdmlydHVhbCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRp
ZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJJbWFnZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdl
TGF5ZXIuaAppbmRleCBhOTE2ODM1ZjIwNWJjMDZmNTg0ZDQyMzMyYTQxZTRjNjBlOTkwMGI0Li5j
NzczN2YzMWEzNzk2ZmQwNGRjZGM0YmRlZjI2YjVhYjU2MGMwMTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaApAQCAtMzAsMjQgKzMwLDE2
IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2VMYXllckNocm9taXVtOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViSW1hZ2VMYXllciA6IHB1YmxpYyBXZWJMYXllciB7Citj
bGFzcyBXZWJJbWFnZUxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBX
ZWJJbWFnZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkltYWdl
TGF5ZXIqIGNyZWF0ZSgpOwogCi0gICAgV2ViSW1hZ2VMYXllcigpIHsgfQogICAgIHZpcnR1YWwg
fldlYkltYWdlTGF5ZXIoKSB7IH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCaXRtYXAo
U2tCaXRtYXApOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2Vi
SW1hZ2VMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bT4pOwotI2Vu
ZGlmCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldEJpdG1hcChTa0JpdG1hcCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggNjQzMWY4NDhj
NmE5OGY5YzZlYjI1YzFkY2FkYzJhMTM2MjNkNjUxZi4uYWZlNTliMTlkNGExNzk5ZmM4MTJlMDlk
Yjk3ZTU0YzA2YjM5ODhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXIuaApAQCAtMjksODggKzI5LDgzIEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJX
ZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJSZWN0
LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIGNs
YXNzIFNrTWF0cml4NDQ7Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKIGNs
YXNzIFdlYkZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
K2NsYXNzIFdlYlNjcm9sbGFibGVMYXllcjsKIHN0cnVjdCBXZWJGbG9hdFBvaW50Owogc3RydWN0
IFdlYkZsb2F0UmVjdDsKIHN0cnVjdCBXZWJTaXplOwogCitjbGFzcyBXZWJMYXllckltcGw7CisK
IGNsYXNzIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJM
YXllciBjcmVhdGUoKTsKLQotICAgIFdlYkxheWVyKCkgeyB9Ci0gICAgV2ViTGF5ZXIoY29uc3Qg
V2ViTGF5ZXImIGxheWVyKSB7IGFzc2lnbihsYXllcik7IH0KLSAgICB2aXJ0dWFsIH5XZWJMYXll
cigpIHsgcmVzZXQoKTsgfQotICAgIFdlYkxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViTGF5ZXIm
IGxheWVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKGxheWVyKTsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5p
c051bGwoKTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7CisjZGVmaW5lIFdFQkxBWUVSX0lTX1BV
UkVfVklSVFVBTAorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxheWVyKiBjcmVhdGUoKTsK
KworICAgIHZpcnR1YWwgfldlYkxheWVyKCkgeyB9CiAKICAgICAvLyBTZXRzIGEgcmVnaW9uIG9m
IHRoZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4K
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0
Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYp
ID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5l
ZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxp
ZGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90IGluZGV4KTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiByZWZlcmVuY2Us
IGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENo
aWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcj4mKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZW1vdmVBbGxD
aGlsZHJlbigpOworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgdGFrZSBvd25lcnNoaXAg
b2YgdGhlIFdlYkxheWVyKiBwYXJhbWV0ZXIuCisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFdl
YkxheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChXZWJMYXllciosIHNp
emVfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlQ2hpbGQoV2ViTGF5ZXIq
IHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcio+JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVGcm9tUGFyZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxD
aGlsZHJlbigpID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNob3JQb2ludChj
b25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9hdFBvaW50IGFu
Y2hvclBvaW50KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0
IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IGFuY2hvclBv
aW50KCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuY2hvclBvaW50
WihmbG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSA9IDA7CisgICAgdmlydHVh
bCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlNpemUg
Ym91bmRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kcyhjb25zdCBXZWJTaXpl
JikgPSAwOworICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCA9IDA7CiAKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNr
c1RvQm91bmRzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0JvdW5kcygpIGNv
bnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNYXNrTGF5ZXIoY29uc3QgV2Vi
TGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwbGljYUxheWVyKGNvbnN0IFdl
YkxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihXZWJMYXllciopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikgPSAwOwogCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotICAgIFdFQktJVF9FWFBPUlQg
ZmxvYXQgb3BhY2l0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0
KSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3QgPSAwOwogCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
b3BhcXVlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIG9wYXF1ZSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9S
VCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBv
c2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJGbG9hdFBv
aW50IHBvc2l0aW9uKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFN1
YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsK
LSAgICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0IHN1YmxheWVy
VHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRyYW5z
Zm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRyYW5z
Zm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIFdFQktJVF9FWFBPUlQg
U2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNm
b3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0dWFsIFNrTWF0
cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoZSBs
YXllciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGRy
YXdzQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CiAKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisgICAgdmlydHVhbCB2
b2lkIHNldFByZXNlcnZlczNEKGJvb2wpID0gMDsKIAogICAgIC8vIE1hcmsgdGhhdCB0aGlzIGxh
eWVyIHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIHRyYW5zZm9ybSBhbmQgZG91YmxlLXNpZGVkCiAg
ICAgLy8gcHJvcGVydGllcyBpbiBkZXRlcm1pbmluZyB0aGlzIGxheWVyJ3MgYmFja2ZhY2Ugdmlz
aWJpbGl0eSBpbnN0ZWFkIG9mCkBAIC0xMTksMTA1ICsxMTQsNjggQEAgcHVibGljOgogICAgIC8v
IE5vdGU6IFRoaXMgQVBJIGlzIHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIHZpc2liaWxpdHkg
dGhlIGhhbmRsaW5nIG9mCiAgICAgLy8gV2ViS2l0IGxheWVycyB0aGF0IGhhdmUgYSBjb250ZW50
cyBsYXllciAoY2FudmFzLCBwbHVnaW4sIFdlYkdMLCB2aWRlbywKICAgICAvLyBldGMpLgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSA9
IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9y
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yKSA9IDA7CiAK
ICAgICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2luZyBpbiBhIG5ld2x5IGlu
c3RhbnRpYXRlZAogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0LgotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJikgPSAw
OwogCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBwaXhlbHMgdGhhdCBzaG93IHRocm91Z2ggdGhl
IGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAgICAvLyBOb3RlOiBUaGVzZSBmaWx0ZXJzIGFy
ZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3biBkaXJlY3RseQogICAgIC8v
IHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRoIGFuIG9wYXF1ZSBiYWNrZ3JvdW5kLiBUaGlz
IG1lYW5zIGlmIGFuCiAgICAgLy8gYW5jZXN0b3Igb2YgdGhlIGJhY2tncm91bmQtZmlsdGVyZWQg
bGF5ZXIgc2V0cyBjZXJ0YWluIHByb3BlcnRpZXMKICAgICAvLyAob3BhY2l0eSwgdHJhbnNmb3Jt
cyksIGl0IG1heSBjb25mbGljdCBhbmQgaGlkZSB0aGUgYmFja2dyb3VuZCBmaWx0ZXJzLgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJP
cGVyYXRpb25zJik7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0
IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RGVidWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RGVidWdOYW1lKFdlYlN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyQ29s
b3IoY29uc3QgV2ViQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVy
V2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdOYW1lKFdlYlN0cmlu
ZykgPSAwOwogCiAgICAgLy8gQW4gYW5pbWF0aW9uIGRlbGVnYXRlIGlzIG5vdGlmaWVkIHdoZW4g
YW5pbWF0aW9ucyBhcmUgc3RhcnRlZCBhbmQKICAgICAvLyBzdG9wcGVkLiBUaGUgV2ViTGF5ZXIg
ZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGRlbGVnYXRlLCBhbmQgaXQgaXMKICAgICAv
LyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNsaWVudCB0byByZXNldCB0aGUgbGF5ZXIncyBk
ZWxlZ2F0ZSBiZWZvcmUKICAgICAvLyBkZWxldGluZyB0aGUgZGVsZWdhdGUuCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRlbGVnYXRlKik7
CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRlbGVn
YXRlKikgPSAwOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgYW5pbWF0aW9uIGNhbm5v
dCBiZSBhZGRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1h
dGlvbiopOworICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oV2ViQW5pbWF0aW9uKikgPSAw
OwogCiAgICAgLy8gUmVtb3ZlcyBhbGwgYW5pbWF0aW9ucyB3aXRoIHRoZSBnaXZlbiBpZC4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpID0gMDsKIAog
ICAgIC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQgdGFyZ2V0aW5n
IHRoZSBnaXZlbiBwcm9wZXJ0eS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQW5pbWF0
aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSk7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIFdlYkFuaW1hdGlv
bjo6VGFyZ2V0UHJvcGVydHkpID0gMDsKIAogICAgIC8vIFBhdXNlcyBhbGwgYW5pbWF0aW9ucyB3
aXRoIHRoZSBnaXZlbiBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcGF1c2VBbmltYXRpb24o
aW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIHBh
dXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpID0gMDsKIAog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHN1c3BlbmQgYW5kIHJlc3VtZSBhbGwgYW5p
bWF0aW9ucy4gVGhlIGdpdmVuIHRpbWUKICAgICAvLyBpcyBhc3N1bWVkIHRvIHVzZSB0aGUgc2Ft
ZSB0aW1lIGJhc2UgYXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSk7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNU
aW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90
b25pY1RpbWUpID0gMDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxheWVyIGhhcyBh
bnkgYWN0aXZlIGFuaW1hdGlvbnMgLSB1c2VmdWwgZm9yIHRlc3RzLgotICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQWN0aXZl
QW5pbWF0aW9uKCkgPSAwOwogCiAgICAgLy8gVHJhbnNmZXJzIGFsbCBhbmltYXRpb25zIHJ1bm5p
bmcgb24gdGhlIGN1cnJlbnQgbGF5ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHRyYW5zZmVy
QW5pbWF0aW9uc1RvKFdlYkxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQW5pbWF0
aW9uc1RvKFdlYkxheWVyKikgPSAwOworCisgICAgLy8gU2Nyb2xsaW5nCisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNjcm9sbGFibGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVu
dEhhbmRsZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25N
YWluVGhyZWFkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwogCiAgICAgLy8g
Rm9yY2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZhY2UuIFRoZXJlIGlzIG5vIGJl
bmVmaXQgaW4gZG9pbmcKICAgICAvLyBzbywgYnV0IHRoaXMgaXMgdG8gZmFjaWxpdGF0ZSBiZW5j
aG1hcmtzIGFuZCB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rm9yY2VSZW5kZXJT
dXJmYWNlKGJvb2wpOwotCi0gICAgLy8gRHJvcHMgdGhpcyBsYXllcidzIHJlbmRlciBzdXJmYWNl
LCBpZiBpdCBoYXMgb25lLiBVc2VkIHRvIGJyZWFrIGN5Y2xlcyBpbiBzb21lCi0gICAgLy8gY2Fz
ZXMgLSBpZiB5b3UgYXJlbid0IHN1cmUsIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwgdGhpcy4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBUIHRvKCkKLSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAgICByZXMu
V2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCB0b0NvbnN0KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIFQgcmVzOwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAg
ICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAg
V2ViTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+Jik7
Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiB1bndy
YXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3ByaXZh
dGUuZ2V0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIGNv
bnN0VW53cmFwKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBUKj4obV9wcml2YXRlLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAg
IFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gbV9wcml2YXRlOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGb3JjZVJlbmRlclN1cmZhY2UoYm9vbCkgPSAwOwogfTsKIAotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5ZXImIGIpCi17
Ci0gICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKLXsKLSAgICByZXR1cm4gIShhID09
IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkxheWVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJs
ZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGFibGVM
YXllci5oCmluZGV4IGVhMDJmOGM3Mzk2MWFmZDNmMzk1YzdlMmFjOWI2MzgwZmQ4ZDc2YWQuLmFh
MzQ1YWFhNTE4YmI0ZDI4OTQ1NGU0NDRkODhjYTIwNWYwMTZlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaApAQCAtMzQs
MjkgKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJTY3JvbGxhYmxl
TGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViU2Nyb2xsYWJsZUxheWVyIDogdmly
dHVhbCBwdWJsaWMgV2ViTGF5ZXIgewogcHVibGljOgotICAgIFdlYlNjcm9sbGFibGVMYXllcigp
IHsgfQotICAgIFdlYlNjcm9sbGFibGVMYXllcihjb25zdCBXZWJTY3JvbGxhYmxlTGF5ZXImIGxh
eWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0KLSAgICB2aXJ0dWFsIH5XZWJTY3JvbGxhYmxlTGF5
ZXIoKSB7IH0KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJTY3Jv
bGxhYmxlTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgV2ViTGF5ZXI6OmFzc2lnbihsYXll
cik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRTY3JvbGxhYmxlKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCk7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpeGVkVG9Db250YWluZXJMYXllcihib29sKTsKLQot
Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU2Nyb2xsYWJsZUxheWVyKGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiYgbGF5ZXIpIDogV2ViTGF5
ZXIobGF5ZXIpIHsgfQotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9u
KFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVj
dG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZp
eGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVy
LmgKaW5kZXggMWJmZTdkNmFiYjNhNTlmM2YzZWEzMzA0NDhjYzY0MDdkMzExYTFhOS4uNDUxYTBi
OWMxMzRiNmM0NDQ5NTBlMWEyYjYyM2YzYmUxZjAyMTEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oCisrKyBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaApAQCAtMzIsMjkgKzMy
LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFNj
cm9sbGJhckxheWVyQ2hyb21pdW07CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBX
ZWJTY3JvbGxiYXJMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFzcyBXZWJTY3JvbGxiYXJM
YXllciB7CiBwdWJsaWM6Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXIoKSB7IH0KLSAgICBXZWJTY3Jv
bGxiYXJMYXllcihjb25zdCBXZWJTY3JvbGxiYXJMYXllciYgbGF5ZXIpIDogV2ViTGF5ZXIobGF5
ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYlNjcm9sbGJhckxheWVyKCkgeyB9Ci0gICAgV2ViU2Ny
b2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJTY3JvbGxiYXJMYXllciYgbGF5ZXIpCi0g
ICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTY3JvbGxMYXllcihjb25z
dCBXZWJMYXllcik7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqKSA9IDA7CiAKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlKFdlYkNv
cmU6OlNjcm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7Ci0gICAgZXhwbGljaXQgV2ViU2Nyb2xsYmFyTGF5ZXIo
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+Jik7
Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKKyAgICBX
RUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciogY3JlYXRlKFdlYkNvcmU6OlNj
cm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5Pik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oCmluZGV4IGFkOTEyM2Q5NjJh
ZmVhZWE4YTU2MzEyOTQ1ZGUxZmM1Zjg5NmM5ZmMuLjAyZTQ2ZjA0N2ZhZjI1M2FjMTFlMTk3YzQ1
MTA4MTdiYTFmNDgyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViU29saWRDb2xvckxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaApAQCAtMjYsMjEgKzI2LDIwIEBACiAjaWZuZGVmIFdl
YlNvbGlkQ29sb3JMYXllcl9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllcl9oCiAKKyNpbmNs
dWRlICJXZWJDb2xvci5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkZs
b2F0UmVjdC5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
Y2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbDsKK2NsYXNzIFdlYkxheWVyOwogCi1jbGFzcyBX
ZWJTb2xpZENvbG9yTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViU29saWRDb2xv
ckxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTb2xpZENvbG9y
TGF5ZXIgY3JlYXRlKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xv
cihjb25zdCBXZWJDb2xvciYpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNvbGlkQ29s
b3JMYXllciogY3JlYXRlKCk7CiAKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJT
b2xpZENvbG9yTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYlNvbGlkQ29sb3JMYXllcklt
cGw+Jik7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIH5XZWJTb2xpZENvbG9yTGF5ZXIoKSB7IH0KKwor
ICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0xh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaApp
bmRleCA1NGRhMzQ1NGJhMDNlZmZiNWUzNGIwZDMzMmI5MmMwMTEyNDc1YWE0Li4xYWNmZmY1NGEw
NzI3YjQ5OGRkOTQxZmNjNDZhMjc3MjZhYTdkNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaApAQCAtMjksMjcgKzI5LDIwIEBACiAjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgVmlkZW9MYXllckNocm9taXVtOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViVmlkZW9GcmFtZVByb3ZpZGVyOwogCi1jbGFzcyBXZWJWaWRlb0xheWVy
IDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYlZpZGVvTGF5ZXIgewogcHVibGljOgotICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5ZXIgY3JlYXRlKFdlYlZpZGVvRnJhbWVQ
cm92aWRlciopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5ZXIqIGNyZWF0
ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAotICAgIFdlYlZpZGVvTGF5ZXIoKSB7IH0KICAg
ICB2aXJ0dWFsIH5XZWJWaWRlb0xheWVyKCkgeyB9CiAKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyBsYXllciBpcyBhY3RpdmVseSByZW5kZXJpbmcgKGUuZy4gY3VycmVudGx5IGF0dGFjaGVk
IHRvIGEgV2ViTGF5ZXJUcmVlVmlldykuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGFjdGl2ZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOwogCi0jaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViVmlkZW9MYXllcihQYXNzUmVmUHRyPFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4pOwotI2VuZGlmCisgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoaXMgbGF5ZXIgaXMgYWN0aXZlbHkgcmVuZGVyaW5nIChlLmcuIGN1cnJlbnRseSBhdHRh
Y2hlZCB0byBhIFdlYkxheWVyVHJlZVZpZXcpLgorICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUoKSBj
b25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMWRiNzU5NDA0N2M4OGNhYjBkZGFmZTAw
MzdhM2JlNmNhYzM4Njg4Ni4uMWQ0Y2ZmOTg2YTJmN2EyMzc4ZjQ4NzZiNDhjZTlhMDUxMjBkMmIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKQEAgLTM0
LDcgKzM0LDYgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuaCIKICNpbmNsdWRlICJXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0
aXZlLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJTY3JvbGxiYXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5
ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oPgpAQCAt
NDIsNyArNDEsNiBAQAogCiB1c2luZyBXZWJLaXQ6OldlYkxheWVyOwogdXNpbmcgV2ViS2l0OjpX
ZWJSZWN0OwotdXNpbmcgV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI7CiB1c2luZyBXZWJLaXQ6
OldlYlNjcm9sbGJhckxheWVyOwogdXNpbmcgV2ViS2l0OjpXZWJWZWN0b3I7CiAKQEAgLTUxLDM2
ICs0OSwzOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRv
clByaXZhdGUgewogV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2
YXRlKTsKIHB1YmxpYzoKLSAgICBTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGUoKSB7IH0KKyAg
ICBTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGUoKQorICAgICAgICA6IG1fc2Nyb2xsTGF5ZXIo
MCkKKyAgICB7CisgICAgfQorCiAgICAgflNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSgpIHsg
fQogCi0gICAgdm9pZCBzZXRTY3JvbGxMYXllcihXZWJTY3JvbGxhYmxlTGF5ZXIgbGF5ZXIpCisg
ICAgdm9pZCBzZXRTY3JvbGxMYXllcihXZWJMYXllciogbGF5ZXIpCiAgICAgewogICAgICAgICBt
X3Njcm9sbExheWVyID0gbGF5ZXI7CiAKLSAgICAgICAgaWYgKCFtX2hvcml6b250YWxTY3JvbGxi
YXJMYXllci5pc051bGwoKSkKLSAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVy
LnNldFNjcm9sbExheWVyKGxheWVyKTsKLSAgICAgICAgaWYgKCFtX3ZlcnRpY2FsU2Nyb2xsYmFy
TGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIuc2V0
U2Nyb2xsTGF5ZXIobGF5ZXIpOworICAgICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5
ZXIpCisgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xsTGF5
ZXIobGF5ZXIpOworICAgICAgICBpZiAobV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyKQorICAgICAg
ICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyLT5zZXRTY3JvbGxMYXllcihsYXllcik7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoV2ViU2Nyb2xsYmFy
TGF5ZXIgbGF5ZXIpCisgICAgdm9pZCBzZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoUGFzc093
blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gbGF5ZXIpCiAgICAgewogICAgICAgICBtX2hvcml6b250
YWxTY3JvbGxiYXJMYXllciA9IGxheWVyOwogICAgIH0KIAotICAgIHZvaWQgc2V0VmVydGljYWxT
Y3JvbGxiYXJMYXllcihXZWJTY3JvbGxiYXJMYXllciBsYXllcikKKyAgICB2b2lkIHNldFZlcnRp
Y2FsU2Nyb2xsYmFyTGF5ZXIoUGFzc093blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gbGF5ZXIpCiAg
ICAgewogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKICAgICB9CiAK
LSAgICBib29sIGhhc1Njcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gIW1fc2Nyb2xsTGF5ZXIu
aXNOdWxsKCk7IH0KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgc2Nyb2xsTGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbExheWVyOyB9CisgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsgfQogCiBwcml2YXRlOgotICAgIFdlYlNjcm9sbGFi
bGVMYXllciBtX3Njcm9sbExheWVyOwotICAgIFdlYlNjcm9sbGJhckxheWVyIG1faG9yaXpvbnRh
bFNjcm9sbGJhckxheWVyOwotICAgIFdlYlNjcm9sbGJhckxheWVyIG1fdmVydGljYWxTY3JvbGxi
YXJMYXllcjsKKyAgICBXZWJMYXllciogbV9zY3JvbGxMYXllcjsKKyAgICBPd25QdHI8V2ViU2Ny
b2xsYmFyTGF5ZXI+IG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyOworICAgIE93blB0cjxXZWJT
Y3JvbGxiYXJMYXllcj4gbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyOwogfTsKIAogUGFzc1JlZlB0
cjxTY3JvbGxpbmdDb29yZGluYXRvcj4gU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdl
KiBwYWdlKQpAQCAtMTEyLDE1ICsxMTMsMjAgQEAgc3RhdGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9s
bExheWVyRm9yRnJhbWVWaWV3KEZyYW1lVmlldyogZnJhbWVWaWV3KQogI2VuZGlmCiB9CiAKLXN0
YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGVTY3JvbGxiYXJMYXllcihTY3JvbGxiYXIqIHNj
cm9sbGJhciwgV2ViU2Nyb2xsYWJsZUxheWVyIHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVyKiBz
Y3JvbGxiYXJHcmFwaGljc0xheWVyLCBGcmFtZVZpZXcqIGZyYW1lVmlldykKK3N0YXRpYyBXZWJM
YXllciogc2Nyb2xsYWJsZUxheWVyRm9yR3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXll
cikKK3sKKyAgICByZXR1cm4gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKK30KKworc3RhdGljIFBh
c3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGNyZWF0ZVNjcm9sbGJhckxheWVyKFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBXZWJMYXllciogc2Nyb2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9s
bGJhckdyYXBoaWNzTGF5ZXIsIEZyYW1lVmlldyogZnJhbWVWaWV3KQogewogICAgIEFTU0VSVChz
Y3JvbGxiYXIpOwogICAgIEFTU0VSVChzY3JvbGxiYXJHcmFwaGljc0xheWVyKTsKIAotICAgIGlm
IChzY3JvbGxMYXllci5pc051bGwoKSkgeworICAgIGlmICghc2Nyb2xsTGF5ZXIpIHsKICAgICAg
ICAgLy8gRklYTUU6IHNvbWV0aW1lcyB3ZSBnZXQgY2FsbGVkIGJlZm9yZSBzZXRTY3JvbGxMYXll
ciwgd29ya2Fyb3VuZCBieSBmaW5kaW5nIHRoZSBzY3JvbGwgbGF5b3V0IG91cnNlbHZlcy4KLSAg
ICAgICAgc2Nyb2xsTGF5ZXIgPSBzY3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpLT5w
bGF0Zm9ybUxheWVyKCktPnRvPFdlYlNjcm9sbGFibGVMYXllcj4oKTsKLSAgICAgICAgQVNTRVJU
KCFzY3JvbGxMYXllci5pc051bGwoKSk7CisgICAgICAgIHNjcm9sbExheWVyID0gc2Nyb2xsYWJs
ZUxheWVyRm9yR3JhcGhpY3NMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcp
KTsKKyAgICAgICAgQVNTRVJUKHNjcm9sbExheWVyKTsKICAgICB9CiAKICAgICAvLyBSb290IGxh
eWVyIG5vbi1vdmVybGF5IHNjcm9sbGJhcnMgc2hvdWxkIGJlIG1hcmtlZCBvcGFxdWUgdG8gZGlz
YWJsZQpAQCAtMTM4LDcgKzE0NCw3IEBAIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGVT
Y3JvbGxiYXJMYXllcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYWJsCiAgICAgaWYg
KCFwbGF0Zm9ybVN1cHBvcnRlZCB8fCBzY3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xsYmFyKCkpIHsK
ICAgICAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb01lZGlhKDApOwog
ICAgICAgICBzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0g
ICAgICAgIHJldHVybiBXZWJTY3JvbGxiYXJMYXllcigpOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKICAgICAvLyBBbGwgQ2hyb21pdW0gc2Nyb2xsYmFyIHRoZW1lcyBkZXJpdmUg
ZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS4KQEAgLTE0NiwxNCArMTUyLDE0IEBAIHN0YXRp
YyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGVTY3JvbGxiYXJMYXllcihTY3JvbGxiYXIqIHNjcm9s
bGJhciwgV2ViU2Nyb2xsYWJsCiAgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIg
cGFpbnRlcih0aGVtZUNvbXBvc2l0ZSwgc2Nyb2xsYmFyKTsKICAgICBPd25QdHI8V2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5PiBnZW9tZXRyeShXZWJLaXQ6OldlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnlOYXRpdmU6OmNyZWF0ZSh0aGVtZUNvbXBvc2l0ZSkpOwogCi0gICAgV2ViU2Ny
b2xsYmFyTGF5ZXIgc2Nyb2xsYmFyTGF5ZXIgPSBXZWJTY3JvbGxiYXJMYXllcjo6Y3JlYXRlKHNj
cm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnkucmVsZWFzZSgpKTsKLSAgICBzY3JvbGxiYXJMYXll
ci5zZXRTY3JvbGxMYXllcihzY3JvbGxMYXllcik7CisgICAgT3duUHRyPFdlYlNjcm9sbGJhckxh
eWVyPiBzY3JvbGxiYXJMYXllciA9IGFkb3B0UHRyKFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUo
c2Nyb2xsYmFyLCBwYWludGVyLCBnZW9tZXRyeS5yZWxlYXNlKCkpKTsKKyAgICBzY3JvbGxiYXJM
YXllci0+c2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIpOwogCi0gICAgc2Nyb2xsYmFyR3JhcGhp
Y3NMYXllci0+c2V0Q29udGVudHNUb01lZGlhKCZzY3JvbGxiYXJMYXllcik7CisgICAgc2Nyb2xs
YmFyR3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb01lZGlhKHNjcm9sbGJhckxheWVyLT5sYXll
cigpKTsKICAgICBzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2Up
OwotICAgIHNjcm9sbGJhckxheWVyLnNldE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5j
b250ZW50c09wYXF1ZSgpKTsKKyAgICBzY3JvbGxiYXJMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVl
KHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzT3BhcXVlKCkpOwogCi0gICAgcmV0dXJu
IHNjcm9sbGJhckxheWVyOworICAgIHJldHVybiBzY3JvbGxiYXJMYXllci5yZWxlYXNlKCk7CiB9
CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hvcml6b250YWxTY3JvbGxi
YXJMYXllckRpZENoYW5nZShGcmFtZVZpZXcqIGZyYW1lVmlldywgR3JhcGhpY3NMYXllciogaG9y
aXpvbnRhbFNjcm9sbGJhckxheWVyKQpAQCAtMTc0LDIwICsxODAsMTcgQEAgdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3VmVydGljYWxTY3JvbGxiYXJMYXllckRpZENoYW5nZShG
cmFtZVZpZXcqIGYKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsTGF5ZXIo
R3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIGxh
eWVyOwotICAgIGlmIChzY3JvbGxMYXllcikKLSAgICAgICAgbGF5ZXIgPSBzY3JvbGxMYXllci0+
cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7Ci0gICAgbV9wcml2YXRl
LT5zZXRTY3JvbGxMYXllcihsYXllcik7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxMYXllcihz
Y3JvbGxMYXllciA/IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXIp
IDogMCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vbkZhc3RTY3JvbGxh
YmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQogewotICAgIGlmIChtX3ByaXZhdGUtPmhh
c1Njcm9sbExheWVyKCkpIHsKKyAgICBpZiAobV9wcml2YXRlLT5zY3JvbGxMYXllcigpKSB7CiAg
ICAgICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlZ2lvbi5yZWN0cygpOwogICAgICAgICBX
ZWJWZWN0b3I8V2ViUmVjdD4gd2ViUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIHdlYlJlY3Rz
W2ldID0gcmVjdHNbaV07Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXROb25G
YXN0U2Nyb2xsYWJsZVJlZ2lvbih3ZWJSZWN0cyk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xs
TGF5ZXIoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24od2ViUmVjdHMpOwogICAgIH0KIH0K
IApAQCAtMTk4LDE0ICsyMDEsMTQgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Ny
b2xsUGFyYW1ldGVycyhjb25zdCBTY3JvbGxQYXJhbWV0ZXJzJikKIAogdm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2ZW50
SGFuZGxlckNvdW50KQogewotICAgIGlmIChtX3ByaXZhdGUtPmhhc1Njcm9sbExheWVyKCkpCi0g
ICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJz
KHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKKyAgICBpZiAobV9wcml2YXRlLT5zY3JvbGxM
YXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNldEhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDApOwogfQogCiB2b2lkIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWlu
VGhyZWFkKGJvb2wgc2hvdWxkKQogewotICAgIGlmIChtX3ByaXZhdGUtPmhhc1Njcm9sbExheWVy
KCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRTaG91bGRTY3JvbGxPbk1h
aW5UaHJlYWQoc2hvdWxkKTsKKyAgICBpZiAobV9wcml2YXRlLT5zY3JvbGxMYXllcigpKQorICAg
ICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVh
ZChzaG91bGQpOwogfQogCiBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzdXBwb3J0c0ZpeGVk
UG9zaXRpb25MYXllcnMoKSBjb25zdApAQCAtMjE1LDE0ICsyMTgsMTQgQEAgYm9vbCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QKIAogdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRp
b25MYXllcnMoR3JhcGhpY3NMYXllciogbGF5ZXIsIGJvb2wgZW5hYmxlKQogewotICAgIGlmIChX
ZWJMYXllciogcGxhdGZvcm1MYXllciA9IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAg
IHBsYXRmb3JtTGF5ZXItPnRvPFdlYlNjcm9sbGFibGVMYXllcj4oKS5zZXRJc0NvbnRhaW5lckZv
ckZpeGVkUG9zaXRpb25MYXllcnMoZW5hYmxlKTsKKyAgICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFi
bGVMYXllciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIobGF5ZXIpKQorICAgICAg
ICBzY3JvbGxhYmxlTGF5ZXItPnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhl
bmFibGUpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRMYXllcklzRml4ZWRU
b0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBib29sIGVuYWJsZSkKIHsKLSAg
ICBpZiAoV2ViTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBsYXllci0+cGxhdGZvcm1MYXllcigpKQot
ICAgICAgICBwbGF0Zm9ybUxheWVyLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCkuc2V0Rml4ZWRU
b0NvbnRhaW5lckxheWVyKGVuYWJsZSk7CisgICAgaWYgKFdlYkxheWVyKiBzY3JvbGxhYmxlTGF5
ZXIgPSBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xheWVyKGxheWVyKSkKKyAgICAgICAgc2Ny
b2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzMkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAppbmRleCBkYjUxN2NhZDI2MzNiOGJmNGU3
MTU0YjU3NDgyMjU3MmM0NjU5MGFhLi4xMDY1NDMxMmNmMmVmYmFjN2U1YzIwYmYwZGMwNjUxYzg0
ZjM0MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApAQCAtNjksMjIgKzY5
LDIxIEBAIENhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2UoUGFzc1JlZlB0
cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKICAgICAgICAgICAgIGdyQ29udGV4dC0+cmVz
ZXRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgbV9sYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgbV9sYXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsK
LSAgICBtX2xheWVyLnNldFJhdGVMaW1pdENvbnRleHQoIVdlYktpdDo6V2ViQ29tcG9zaXRvcjo6
dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91YmxlQnVmZmVyaW5nKTsKKyAgICBtX2xheWVy
ID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAg
bV9sYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CisgICAgbV9sYXllci0+c2V0UmF0ZUxp
bWl0Q29udGV4dCghV2ViS2l0OjpXZWJDb21wb3NpdG9yOjp0aHJlYWRpbmdFbmFibGVkKCkgfHwg
bV91c2VEb3VibGVCdWZmZXJpbmcpOwogfQogCiBDYW52YXMyRExheWVyQnJpZGdlOjp+Q2FudmFz
MkRMYXllckJyaWRnZSgpCiB7CiAgICAgaWYgKFNrRGVmZXJyZWRDYW52YXMqIGRlZmVycmVkID0g
ZGVmZXJyZWRDYW52YXMoKSkKICAgICAgICAgZGVmZXJyZWQtPnNldE5vdGlmaWNhdGlvbkNsaWVu
dCgwKTsKLSAgICBtX2xheWVyLnNldFRleHR1cmVJZCgwKTsKKyAgICBtX2xheWVyLT5zZXRUZXh0
dXJlSWQoMCk7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKSB7CiAgICAgICAgIG1fY29u
dGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCks
IG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2Zyb250QnVmZmVyVGV4dHVyZSkpOwogICAgICAg
ICBtX2NvbnRleHQtPmZsdXNoKCk7CiAgICAgfQotICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsK
IH0KIAogU2tEZWZlcnJlZENhbnZhcyogQ2FudmFzMkRMYXllckJyaWRnZTo6ZGVmZXJyZWRDYW52
YXMoKQpAQCAtOTgsNyArOTcsNyBAQCB2b2lkIENhbnZhczJETGF5ZXJCcmlkZ2U6OnByZXBhcmVG
b3JEcmF3KCkKIHsKICAgICBBU1NFUlQoZGVmZXJyZWRDYW52YXMoKSk7CiAgICAgaWYgKCFtX3Vz
ZURvdWJsZUJ1ZmZlcmluZykKLSAgICAgICAgbV9sYXllci53aWxsTW9kaWZ5VGV4dHVyZSgpOwor
ICAgICAgICBtX2xheWVyLT53aWxsTW9kaWZ5VGV4dHVyZSgpOwogICAgIG1fY29udGV4dC0+bWFr
ZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKQEAgLTE0OCwxMyArMTQ3LDEzIEBAIFdlYkdyYXBoaWNz
Q29udGV4dDNEKiBDYW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0KCkKIAogV2ViS2l0OjpXZWJM
YXllciogQ2FudmFzMkRMYXllckJyaWRnZTo6bGF5ZXIoKQogewotICAgIHJldHVybiAmbV9sYXll
cjsKKyAgICByZXR1cm4gbV9sYXllci0+bGF5ZXIoKTsKIH0KIAogdm9pZCBDYW52YXMyRExheWVy
QnJpZGdlOjpjb250ZXh0QWNxdWlyZWQoKQogewogICAgIGlmIChtX2RlZmVycmFsTW9kZSA9PSBO
b25EZWZlcnJlZCAmJiAhbV91c2VEb3VibGVCdWZmZXJpbmcpCi0gICAgICAgIG1fbGF5ZXIud2ls
bE1vZGlmeVRleHR1cmUoKTsKKyAgICAgICAgbV9sYXllci0+d2lsbE1vZGlmeVRleHR1cmUoKTsK
IH0KIAogdW5zaWduZWQgQ2FudmFzMkRMYXllckJyaWRnZTo6YmFja0J1ZmZlclRleHR1cmUoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2Fu
dmFzMkRMYXllckJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oCmluZGV4IDQwOWQyMDdjNTVlNDk1MThjMzkyNDRk
MTQ4N2MwYTBhZjc0MTgyMWUuLjI3YjFlYTY1OWM0MWM3YzY4YzMyNzQ1Y2ExZDEwNmFlNTA1NWE0
YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJp
dmF0ZToKICAgICB1bnNpZ25lZCBtX2JhY2tCdWZmZXJUZXh0dXJlOwogICAgIEludFNpemUgbV9z
aXplOwogICAgIFNrQ2FudmFzKiBtX2NhbnZhczsKLSAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4
dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcAppbmRleCAxZDE2N2E1
NTZlNmExZGZjZDExYWM2Zjg0OTE4ZjJkMWQ4ODk0ZDlhLi42MTAyYTNlNmY3ODY5NzYwZTFmMzc4
MDJkMDZmZTY1ZjRlYmQzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5j
cHAKQEAgLTE1NiwxNiArMTU2LDE1IEBAIGNsYXNzIERyYXdpbmdCdWZmZXJQcml2YXRlIDogcHVi
bGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQgewogcHVibGljOgogICAg
IGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZm
ZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRyYXdpbmdCdWZmZXIpCi0gICAgICAgICwg
bV9sYXllcihXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpCisg
ICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVy
OjpjcmVhdGUodGhpcykpKQogICAgIHsKICAgICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJp
YnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+
Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgbV9sYXllci5zZXRPcGFxdWUoIWF0dHJp
YnV0ZXMuYWxwaGEpOwotICAgICAgICBtX2xheWVyLnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRy
aWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgICAgIG1fbGF5ZXItPnNldE9wYXF1ZSgh
YXR0cmlidXRlcy5hbHBoYSk7CisgICAgICAgIG1fbGF5ZXItPnNldFByZW11bHRpcGxpZWRBbHBo
YShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+
RHJhd2luZ0J1ZmZlclByaXZhdGUoKQogICAgIHsKLSAgICAgICAgbV9sYXllci5jbGVhckNsaWVu
dCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoV2ViS2l0
OjpXZWJUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikgT1ZFUlJJREUKQEAgLTE4NywxMSArMTg2LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0
cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0
M0QoKSk7CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJMYXllciogbGF5ZXIoKSB7IHJldHVybiAm
bV9sYXllcjsgfQorICAgIFdlYktpdDo6V2ViTGF5ZXIqIGxheWVyKCkgeyByZXR1cm4gbV9sYXll
ci0+bGF5ZXIoKTsgfQogCiBwcml2YXRlOgogICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1
ZmZlcjsKLSAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAg
T3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiB9OwogCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJD
aHJvbWl1bS5jcHAKaW5kZXggZmIwOTAwYmJjMWE3NTdjMWRhM2I4MWNjY2M3MDBiZDk0NDJkYjJh
Yy4uYzkyY2Y0N2M2Y2ViMDcxOWY2ODYzZGEwNzY3MDg1ODgxMDkyYWM5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC04MywxNCArODMsMTYgQEAgUGFzc093blB0
cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckNsaWVu
dCogY2xpZW50KQogCiBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVu
dCkKKyAgICAsIG1fY29udGVudHNMYXllcigwKQogICAgICwgbV9jb250ZW50c0xheWVyUHVycG9z
ZShOb0NvbnRlbnRzTGF5ZXIpCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29s
b3IoZmFsc2UpCiAgICAgLCBtX2luU2V0Q2hpbGRyZW4oZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2Fs
ZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgbV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJE
ZWxlZ2F0ZSA9IGFkb3B0UHRyKG5ldyBPcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxl
Z2F0ZSh0aGlzKSk7Ci0gICAgbV9sYXllciA9IFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKG1fb3Bh
cXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkpOwotICAgIG1fbGF5ZXIu
c2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKKyAg
ICBtX2NvbnRlbnRMYXllciA9IGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKG1fb3Bh
cXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkpKTsKKyAgICBtX2xheWVy
ID0gbV9jb250ZW50TGF5ZXItPmxheWVyKCk7CisgICAgbV9sYXllci0+c2V0RHJhd3NDb250ZW50
KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKICAgICBpZiAoY2xpZW50KQog
ICAgICAgICBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICB1cGRhdGVEZWJ1
Z0luZGljYXRvcnMoKTsKQEAgLTk4LDM0ICsxMDAsOSBAQCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAKIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpCiB7Ci0gICAgLy8g
RG8gY2xlYW51cCB3aGlsZSB3ZSBjYW4gc3RpbGwgc2FmZWx5IGNhbGwgbWV0aG9kcyBvbiB0aGUg
ZGVyaXZlZCBjbGFzcy4KICAgICB3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OndpbGxCZURlc3Ryb3llZCgpCi17Ci0gICAgaWYgKCFtX2xheWVyLmlz
TnVsbCgpKSB7Ci0gICAgICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKLSAgICAgICAgbV9sYXll
ci5jbGVhclJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgbV9sYXllci5zZXRBbmltYXRpb25EZWxl
Z2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewot
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIG1f
Y29udGVudHNMYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAo
IW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5j
bGVhclJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRBbmltYXRp
b25EZWxlZ2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAg
ICBtX2xpbmtIaWdobGlnaHQuY2xlYXIoKTsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OndpbGxCZURl
c3Ryb3llZCgpOwotfQotCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFtZShjb25z
dCBTdHJpbmcmIGluTmFtZSkKIHsKICAgICBtX25hbWVCYXNlID0gaW5OYW1lOwpAQCAtMTM2LDIx
ICsxMTMsMTYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5hbWUoY29uc3QgU3Ry
aW5nJiBpbk5hbWUpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVOYW1lcygp
CiB7Ci0gICAgaWYgKCFtX2xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBkZWJ1Z05h
bWUgPSAiTGF5ZXIgZm9yICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX2xheWVyLnNldERlYnVn
TmFtZShkZWJ1Z05hbWUpOwotICAgIH0KLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxs
KCkpIHsKKyAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxheWVyIGZvciAiICsgbV9uYW1lQmFzZTsK
KyAgICBtX2xheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKKworICAgIGlmIChtX3RyYW5z
Zm9ybUxheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiVHJhbnNmb3JtTGF5ZXIg
Zm9yICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldERlYnVnTmFt
ZShkZWJ1Z05hbWUpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXREZWJ1Z05hbWUoZGVi
dWdOYW1lKTsKICAgICB9Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKKyAg
ICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiQ29u
dGVudHNMYXllciBmb3IgIiArIG1fbmFtZUJhc2U7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5z
ZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKLSAgICB9Ci0gICAgaWYgKG1fbGlua0hpZ2hsaWdodCkg
ewotICAgICAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxpbmtIaWdobGlnaHQgZm9yICIgKyBtX25h
bWVCYXNlOwotICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRMYXllcigpLT5zZXREZWJ1
Z05hbWUoZGVidWdOYW1lKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z05hbWUo
ZGVidWdOYW1lKTsKICAgICB9CiB9CiAKQEAgLTIwMyw3ICsxNzUsNyBAQCBib29sIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFw
aGljc0xheWVyKgogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQo
KQogewogICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBwcmltYXJ5
TGF5ZXIoKS5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgcGxhdGZvcm1MYXllcigpLT5yZW1vdmVG
cm9tUGFyZW50KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIzMyw4ICsyMDUsOCBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgR3Jh
cGhpY3NMYXllcjo6c2V0U2l6ZShjbGFtcGVkU2l6ZSk7CiAgICAgdXBkYXRlTGF5ZXJTaXplKCk7
CiAKLSAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkICYmICFtX2xheWVyLmlzTnVsbCgpKQotICAg
ICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkKQor
ICAgICAgICBtX2xheWVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9wYWdlU2NhbGVDaGFuZ2VkID0g
ZmFsc2U7CiB9CiAKQEAgLTMwMSwxMyArMjczLDEzIEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKIHsKICAgICBHcmFwaGljc0xh
eWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1fY29udGVudHNMYXllci5zZXRCYWNr
Z3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgbV9jb250ZW50c0xheWVy
LT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZShib29sIG9wYXF1ZSkKIHsK
ICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFxdWUpOwotICAgIG1fbGF5
ZXIuc2V0T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworICAgIG1fbGF5ZXItPnNldE9wYXF1ZSht
X2NvbnRlbnRzT3BhcXVlKTsKIH0KIAogc3RhdGljIGJvb2wgY29weVdlYkNvcmVGaWx0ZXJPcGVy
YXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMsIFdlYkZpbHRlck9wZXJhdGlvbnMmIHdlYkZpbHRlcnMpCkBAIC0zOTEsMTEgKzM2MywxMSBA
QCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25zdCBGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzKQogICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9X
ZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7CiAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0Zm9ybSBsYXllciwg
YXMgdGhleSBhcmUKICAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8gc29mdHdhcmUgbW9k
ZS4KLSAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKFdlYkZpbHRlck9wZXJhdGlvbnMoKSk7Cisg
ICAgICAgIG1fbGF5ZXItPnNldEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKICAgICAg
ICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJPcGVyYXRpb25zKCkpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIG1fbGF5ZXIuc2V0RmlsdGVycyh3ZWJGaWx0ZXJz
KTsKKyAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwogICAgIHJldHVybiBHcmFw
aGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogCkBAIC00MDQsNyArMzc2LDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIGZpbHRlcnMKICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRl
cnM7CiAgICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJh
dGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2xheWVy
LnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZpbHRlcnMpOworICAgIG1fbGF5ZXItPnNldEJhY2tn
cm91bmRGaWx0ZXJzKHdlYkZpbHRlcnMpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllcikKQEAgLTQxNCwyMyArMzg2
LDIxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NM
YXllciogbWFza0xheWVyKQogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKG1hc2tM
YXllcik7CiAKLSAgICBXZWJMYXllciBtYXNrV2ViTGF5ZXI7Ci0gICAgaWYgKG1fbWFza0xheWVy
KQotICAgICAgICBtYXNrV2ViTGF5ZXIgPSAqbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsK
LSAgICBtX2xheWVyLnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOworICAgIFdlYkxheWVyKiBt
YXNrV2ViTGF5ZXIgPSBtX21hc2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkg
OiAwOworICAgIG1fbGF5ZXItPnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOwogfQogCiB2b2lk
IEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdmlzaWJs
ZSkKIHsKICAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlzaWJsZSk7
Ci0gICAgbV9sYXllci5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAg
bV9jb250ZW50TGF5ZXItPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5KTsKIH0K
IAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkK
IHsKICAgICBmbG9hdCBjbGFtcGVkT3BhY2l0eSA9IG1heChtaW4ob3BhY2l0eSwgMS4wZiksIDAu
MGYpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkoY2xhbXBlZE9wYWNpdHkpOwotICAg
IHByaW1hcnlMYXllcigpLnNldE9wYWNpdHkob3BhY2l0eSk7CisgICAgcGxhdGZvcm1MYXllcigp
LT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCkBAIC00MzgsMjkgKzQw
OCwyNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIo
R3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgR3JhcGhpY3NMYXllckNocm9taXVtKiBsYXllckNo
cm9taXVtID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtKj4obGF5ZXIpOwogICAg
IEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVyKTsKIAotICAgIFdlYkxh
eWVyIHdlYlJlcGxpY2FMYXllcjsKLSAgICBpZiAobGF5ZXJDaHJvbWl1bSkKLSAgICAgICAgd2Vi
UmVwbGljYUxheWVyID0gbGF5ZXJDaHJvbWl1bS0+cHJpbWFyeUxheWVyKCk7Ci0gICAgcHJpbWFy
eUxheWVyKCkuc2V0UmVwbGljYUxheWVyKHdlYlJlcGxpY2FMYXllcik7CisgICAgV2ViTGF5ZXIq
IHdlYlJlcGxpY2FMYXllciA9IGxheWVyQ2hyb21pdW0gPyBsYXllckNocm9taXVtLT5wbGF0Zm9y
bUxheWVyKCkgOiAwOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0UmVwbGljYUxheWVyKHdlYlJl
cGxpY2FMYXllcik7CiB9CiAKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRl
bnRzTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkK
LSAgICAgICAgbV9jb250ZW50c0xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9jb250ZW50
c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmludmFsaWRhdGUoKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSgpCiB7CiAgICAgaWYgKGRy
YXdzQ29udGVudCgpKQotICAgICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsKKyAgICAgICAgbV9s
YXllci0+aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoZHJh
d3NDb250ZW50KCkpCi0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZVJlY3QocmVjdCk7CisgICAg
ICAgIG1fbGF5ZXItPmludmFsaWRhdGVSZWN0KHJlY3QpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC00NzYs
NDYgKzQ0NCw1NiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0lt
YWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBib29sIGNoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwog
ICAgIGlmIChpbWFnZSkgewotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyLmlzTnVsbCgpIHx8
IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7Ci0gICAg
ICAgICAgICBXZWJLaXQ6OldlYkltYWdlTGF5ZXIgaW1hZ2VMYXllciA9IFdlYktpdDo6V2ViSW1h
Z2VMYXllcjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoaW1hZ2VM
YXllcik7CisgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyIHx8IG1fY29udGVudHNMYXllclB1
cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CisgICAgICAgICAgICBtX2ltYWdlTGF5
ZXIgPSBhZG9wdFB0cihXZWJJbWFnZUxheWVyOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBzZXR1
cENvbnRlbnRzTGF5ZXIobV9pbWFnZUxheWVyLT5sYXllcigpKTsKICAgICAgICAgICAgIG1fY29u
dGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7CiAgICAgICAgICAgICBj
aGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIFdlYktpdDo6V2ViSW1h
Z2VMYXllciBpbWFnZUxheWVyID0gbV9jb250ZW50c0xheWVyLnRvPFdlYktpdDo6V2ViSW1hZ2VM
YXllcj4oKTsKICAgICAgICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJbWFnZSA9IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICBpbWFnZUxheWVyLnNldEJpdG1h
cChuYXRpdmVJbWFnZS0+Yml0bWFwKCkpOwotICAgICAgICBpbWFnZUxheWVyLnNldE9wYXF1ZShp
bWFnZS0+aXNCaXRtYXBJbWFnZSgpICYmICFpbWFnZS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKSk7
CisgICAgICAgIG1faW1hZ2VMYXllci0+c2V0Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSk7
CisgICAgICAgIG1faW1hZ2VMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKGltYWdlLT5pc0JpdG1h
cEltYWdlKCkgJiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKICAgICAgICAgdXBk
YXRlQ29udGVudHNSZWN0KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG1faW1hZ2VMYXllcikgewogICAgICAgICAg
ICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKIAotICAgICAgICAgICAgLy8gVGhlIG9sZCBjb250
ZW50cyBsYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZUNoaWxkTGlzdC4KLSAgICAgICAg
ICAgIG1fY29udGVudHNMYXllci5yZXNldCgpOworICAgICAgICAgICAgbV9pbWFnZUxheWVyLmNs
ZWFyKCk7CiAgICAgICAgIH0KKyAgICAgICAgLy8gVGhlIG9sZCBjb250ZW50cyBsYXllciB3aWxs
IGJlIHJlbW92ZWQgdmlhIHVwZGF0ZUNoaWxkTGlzdC4KKyAgICAgICAgbV9jb250ZW50c0xheWVy
ID0gMDsKICAgICB9CiAKICAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQogICAgICAgICB1cGRhdGVD
aGlsZExpc3QoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
VG9DYW52YXMoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKK3ZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQorewor
ICAgIHNldENvbnRlbnRzVG8oQ29udGVudHNMYXllckZvckNhbnZhcywgbGF5ZXIpOworfQorCit2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5
ZXIqIGxheWVyKQoreworICAgIHNldENvbnRlbnRzVG8oQ29udGVudHNMYXllckZvclZpZGVvLCBs
YXllcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvKENv
bnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UsIFdlYktpdDo6V2ViTGF5ZXIqIGxheWVyKQogewog
ICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7Ci0gICAgaWYgKHBsYXRmb3JtTGF5ZXIp
IHsKLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllciAhPSAqcGxhdGZvcm1MYXllcikgewotICAg
ICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKCpwbGF0Zm9ybUxheWVyKTsKLSAgICAgICAgICAg
IG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yQ2FudmFzOworICAgIGlm
IChsYXllcikgeworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyIHx8IG1fY29udGVudHNMYXll
clB1cnBvc2UgIT0gcHVycG9zZSkgeworICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGxh
eWVyKTsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBwdXJwb3NlOwogICAg
ICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICB1cGRh
dGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1fY29udGVudHNM
YXllci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAg
ICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBUaGUgb2xkIGNv
bnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5
ZXIgPSAwOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MjUsNyArNTAzLDcgQEAgdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogcGxh
dGZvcm1MYXllcikKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbihj
b25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBj
b25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBk
b3VibGUgdGltZU9mZnNldCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRBbmltYXRpb25EZWxl
Z2F0ZSh0aGlzKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldEFuaW1hdGlvbkRlbGVnYXRlKHRo
aXMpOwogCiAgICAgaW50IGFuaW1hdGlvbklkID0gbWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0
aW9uTmFtZSk7CiAgICAgaW50IGdyb3VwSWQgPSBBbmltYXRpb25JZFZlbmRvcjo6Z2V0TmV4dEdy
b3VwSWQoKTsKQEAgLTUzNCw4ICs1MTIsOCBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0CiAKICAg
ICBpZiAodG9BZGQpIHsKICAgICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBhbmltYXRpb25z
IHdpdGggdGhlIHNhbWUgYW5pbWF0aW9uIGlkIGFuZCB0YXJnZXQgcHJvcGVydHkuCi0gICAgICAg
IHByaW1hcnlMYXllcigpLnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb25JZCwgdG9BZGQtPnRhcmdl
dFByb3BlcnR5KCkpOwotICAgICAgICByZXR1cm4gcHJpbWFyeUxheWVyKCkuYWRkQW5pbWF0aW9u
KHRvQWRkLmdldCgpKTsKKyAgICAgICAgcGxhdGZvcm1MYXllcigpLT5yZW1vdmVBbmltYXRpb24o
YW5pbWF0aW9uSWQsIHRvQWRkLT50YXJnZXRQcm9wZXJ0eSgpKTsKKyAgICAgICAgcmV0dXJuIHBs
YXRmb3JtTGF5ZXIoKS0+YWRkQW5pbWF0aW9uKHRvQWRkLmdldCgpKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC01NDMsMTIgKzUyMSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVzZUFuaW1hdGlvbihjb25zdCBTdHJp
bmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewotICAgIHByaW1hcnlMYXll
cigpLnBhdXNlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpLCB0
aW1lT2Zmc2V0KTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnBhdXNlQW5pbWF0aW9uKG1hcEFuaW1h
dGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zmc2V0KTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkucmVtb3ZlQW5pbWF0aW9uKG1hcEFuaW1hdGlv
bk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnJlbW92ZUFu
aW1hdGlvbihtYXBBbmltYXRpb25OYW1lVG9JZChhbmltYXRpb25OYW1lKSk7CiB9CiAKIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2Nr
VGltZSkKQEAgLTU1Niw4OCArNTM0LDU0IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpz
dXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrVGltZSkKICAgICAvLyB8d2FsbENsb2Nr
VGltZXwgaXMgaW4gdGhlIHdyb25nIHRpbWUgYmFzZS4gTmVlZCB0byBjb252ZXJ0IGhlcmUuCiAg
ICAgLy8gRklYTUU6IGZpbmQgYSBtb3JlIHJlbGlhYmxlIHdheSB0byBkbyB0aGlzLgogICAgIGRv
dWJsZSBtb25vdG9uaWNUaW1lID0gd2FsbENsb2NrVGltZSArIG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpIC0gY3VycmVudFRpbWUoKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zdXNwZW5kQW5p
bWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnN1c3BlbmRBbmlt
YXRpb25zKG1vbm90b25pY1RpbWUpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
cmVzdW1lQW5pbWF0aW9ucygpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkucmVzdW1lQW5pbWF0aW9u
cyhtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5y
ZXN1bWVBbmltYXRpb25zKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKIH0KIAotdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQoY29uc3QgUGF0aCYgcGF0
aCkKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRMaW5rSGlnaGxpZ2h0KGNvbnN0IFBh
dGgmKQogewotICAgIG1fbGlua0hpZ2hsaWdodCA9IExpbmtIaWdobGlnaHQ6OmNyZWF0ZSh0aGlz
LCBwYXRoLCBBbmltYXRpb25JZFZlbmRvcjo6TGlua0hpZ2hsaWdodEFuaW1hdGlvbklkLCBBbmlt
YXRpb25JZFZlbmRvcjo6Z2V0TmV4dEdyb3VwSWQoKSk7Ci0gICAgdXBkYXRlQ2hpbGRMaXN0KCk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpkaWRGaW5pc2hMaW5rSGlnaGxpZ2h0
KCkKIHsKLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAgICBtX2xpbmtIaWdobGlnaHQt
PmNvbnRlbnRMYXllcigpLT5yZW1vdmVGcm9tUGFyZW50KCk7Ci0KLSAgICBtX2xpbmtIaWdobGln
aHQuY2xlYXIoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
VG9NZWRpYShQbGF0Zm9ybUxheWVyKiBsYXllcikKLXsKLSAgICBib29sIGNoaWxkcmVuQ2hhbmdl
ZCA9IGZhbHNlOwotICAgIGlmIChsYXllcikgewotICAgICAgICBpZiAobV9jb250ZW50c0xheWVy
LmlzTnVsbCgpIHx8IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvclZp
ZGVvKSB7Ci0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoKmxheWVyKTsKLSAgICAgICAg
ICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9yVmlkZW87Ci0gICAg
ICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHVwZGF0
ZUNvbnRlbnRzUmVjdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9jb250ZW50c0xh
eWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwotCi0g
ICAgICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEg
dXBkYXRlQ2hpbGRMaXN0LgotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQotICAgICAgICB1cGRh
dGVDaGlsZExpc3QoKTsKLX0KLQotV2ViS2l0OjpXZWJMYXllciBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnByaW1hcnlMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHJhbnNmb3JtTGF5ZXIu
aXNOdWxsKCkgPyBtX2xheWVyIDogbV90cmFuc2Zvcm1MYXllcjsKIH0KIAogUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gY29uc3RfY2FzdDxQbGF0Zm9ybUxheWVyKj4obV90cmFuc2Zvcm1MYXllci5pc051bGwo
KSA/ICZtX2xheWVyIDogJm1fdHJhbnNmb3JtTGF5ZXIpOworICAgIHJldHVybiBtX3RyYW5zZm9y
bUxheWVyID8gbV90cmFuc2Zvcm1MYXllci5nZXQoKSA6IG1fbGF5ZXI7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiB7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgbV9sYXllci5zZXRC
YWNrZ3JvdW5kQ29sb3IoY29sb3IucmdiKCkpOworICAgICAgICBtX2xheWVyLT5zZXRCYWNrZ3Jv
dW5kQ29sb3IoY29sb3IucmdiKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9sYXllci5zZXRCYWNr
Z3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgICAgIG1fbGF5ZXItPnNl
dEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldERlYnVnQm9yZGVyKGNvbnN0IENvbG9yJiBjb2xvciwgZmxv
YXQgYm9yZGVyV2lkdGgpCiB7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkgewotICAgICAgICBt
X2xheWVyLnNldERlYnVnQm9yZGVyQ29sb3IoY29sb3IucmdiKCkpOwotICAgICAgICBtX2xheWVy
LnNldERlYnVnQm9yZGVyV2lkdGgoYm9yZGVyV2lkdGgpOworICAgICAgICBtX2xheWVyLT5zZXRE
ZWJ1Z0JvcmRlckNvbG9yKGNvbG9yLnJnYigpKTsKKyAgICAgICAgbV9sYXllci0+c2V0RGVidWdC
b3JkZXJXaWR0aChib3JkZXJXaWR0aCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9sYXllci5z
ZXREZWJ1Z0JvcmRlckNvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOwotICAgICAgICBtX2xh
eWVyLnNldERlYnVnQm9yZGVyV2lkdGgoMCk7CisgICAgICAgIG1fbGF5ZXItPnNldERlYnVnQm9y
ZGVyQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgICAgIG1fbGF5ZXItPnNldERl
YnVnQm9yZGVyV2lkdGgoMCk7CiAgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlQ2hpbGRMaXN0KCkKIHsKLSAgICBWZWN0b3I8V2ViTGF5ZXI+IG5ld0NoaWxkcmVu
OworICAgIFZlY3RvcjxXZWJMYXllcio+IG5ld0NoaWxkcmVuOwogCi0gICAgaWYgKCFtX3RyYW5z
Zm9ybUxheWVyLmlzTnVsbCgpKSB7CisgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAg
ICAgLy8gQWRkIHRoZSBwcmltYXJ5IGxheWVyIGZpcnN0LiBFdmVuIGlmIHdlIGhhdmUgbmVnYXRp
dmUgei1vcmRlciBjaGlsZHJlbiwgdGhlIHByaW1hcnkgbGF5ZXIgYWx3YXlzIGNvbWVzIGJlaGlu
ZC4KICAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKG1fbGF5ZXIpOwotICAgIH0gZWxzZSBpZiAo
IW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgIH0gZWxzZSBpZiAobV9jb250ZW50c0xh
eWVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBj
b3JyZWN0IG9yZGVyIHdpdGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KICAgICAgICAgLy8g
VGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1ZXMgYmVjYXVzZSBjdXJy
ZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKICAgICAgICAgLy8gZm9yIHJlcGxh
Y2VkIGVsZW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KQEAgLTY0OSw3OSArNTkzLDc2
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDaGlsZExpc3QoKQogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewogICAgICAgICBHcmFwaGlj
c0xheWVyQ2hyb21pdW0qIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9t
aXVtKj4oY2hpbGRMYXllcnNbaV0pOwogCi0gICAgICAgIG5ld0NoaWxkcmVuLmFwcGVuZChjdXJD
aGlsZC0+cHJpbWFyeUxheWVyKCkpOworICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQoY3VyQ2hp
bGQtPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgfQogCi0gICAgaWYgKG1fbGlua0hpZ2hsaWdodCkK
LSAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKG1fbGlua0hpZ2hsaWdodC0+Y29udGVudExheWVy
KCkpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDaGlsZHJlbi5zaXplKCk7ICsr
aSkKLSAgICAgICAgbmV3Q2hpbGRyZW5baV0ucmVtb3ZlRnJvbVBhcmVudCgpOworICAgICAgICBu
ZXdDaGlsZHJlbltpXS0+cmVtb3ZlRnJvbVBhcmVudCgpOwogCi0gICAgV2ViVmVjdG9yPFdlYkxh
eWVyPiBuZXdXZWJDaGlsZHJlbjsKKyAgICBXZWJWZWN0b3I8V2ViTGF5ZXIqPiBuZXdXZWJDaGls
ZHJlbjsKICAgICBuZXdXZWJDaGlsZHJlbi5hc3NpZ24obmV3Q2hpbGRyZW4uZGF0YSgpLCBuZXdD
aGlsZHJlbi5zaXplKCkpOwogCi0gICAgaWYgKCFtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7
Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4pOwor
ICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNl
dENoaWxkcmVuKG5ld1dlYkNoaWxkcmVuKTsKIAotICAgICAgICBpZiAoIW1fY29udGVudHNMYXll
ci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgICAg
ICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxheWVyLCB0aGVuIHRoZSBjb250ZW50cyBsYXll
ciBpcyBwYXJlbnRlZCBpbiB0aGUKICAgICAgICAgICAgIC8vIHByaW1hcnkgbGF5ZXIgKHdoaWNo
IGlzIGl0c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIpLgotICAgICAgICAgICAg
bV9sYXllci5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgICAgICAgICAgbV9sYXllci5hZGRDaGls
ZChtX2NvbnRlbnRzTGF5ZXIpOworICAgICAgICAgICAgbV9sYXllci0+cmVtb3ZlQWxsQ2hpbGRy
ZW4oKTsKKyAgICAgICAgICAgIG1fbGF5ZXItPmFkZENoaWxkKG1fY29udGVudHNMYXllcik7CiAg
ICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgbV9sYXllci5zZXRDaGlsZHJlbihuZXdXZWJD
aGlsZHJlbik7CisgICAgICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKG5ld1dlYkNoaWxkcmVuKTsK
IH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24oKQog
ewotICAgIHByaW1hcnlMYXllcigpLnNldFBvc2l0aW9uKG1fcG9zaXRpb24pOworICAgIHBsYXRm
b3JtTGF5ZXIoKS0+c2V0UG9zaXRpb24obV9wb3NpdGlvbik7CiB9CiAKIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjp1cGRhdGVMYXllclNpemUoKQogewogICAgIEludFNpemUgbGF5ZXJTaXpl
KG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgIGlmICghbV90cmFuc2Zvcm1M
YXllci5pc051bGwoKSkgewotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldEJvdW5kcyhsYXll
clNpemUpOwotICAgICAgICBtX2xheWVyLnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoKSk7CisgICAg
aWYgKG1fdHJhbnNmb3JtTGF5ZXIpIHsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0Qm91
bmRzKGxheWVyU2l6ZSk7CisgICAgICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQo
KSk7CiAgICAgfQogCi0gICAgbV9sYXllci5zZXRCb3VuZHMobGF5ZXJTaXplKTsKKyAgICBtX2xh
eWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIAotICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCBy
ZXNpemUgbV9jb250ZW50c0xheWVyLiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKyAg
ICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVudHNMYXllci0+IEl0J3MgdXAg
dGhlIGNhbGxlciB0byBkbyB0aGF0LgogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
dXBkYXRlQW5jaG9yUG9pbnQoKQogewotICAgIHByaW1hcnlMYXllcigpLnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQobV9hbmNob3JQb2ludC54KCksIG1fYW5jaG9yUG9pbnQueSgpKSk7Ci0gICAg
cHJpbWFyeUxheWVyKCkuc2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9yUG9pbnQueigpKTsKKyAgICBw
bGF0Zm9ybUxheWVyKCktPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQobV9hbmNob3JQb2ludC54
KCksIG1fYW5jaG9yUG9pbnQueSgpKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRBbmNob3JQ
b2ludFoobV9hbmNob3JQb2ludC56KCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlVHJhbnNmb3JtKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRUcmFuc2Zvcm0o
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm0pKTsKKyAgICBwbGF0Zm9ybUxheWVy
KCktPnNldFRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3RyYW5zZm9ybSkpOwog
fQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0o
KQogewotICAgIHByaW1hcnlMYXllcigpLnNldFN1YmxheWVyVHJhbnNmb3JtKFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4KG1fY2hpbGRyZW5UcmFuc2Zvcm0pKTsKKyAgICBwbGF0Zm9ybUxheWVyKCkt
PnNldFN1YmxheWVyVHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG1fY2hpbGRyZW5U
cmFuc2Zvcm0pKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZU1hc2tz
VG9Cb3VuZHMoKQogewotICAgIG1fbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyhtX21hc2tzVG9Cb3Vu
ZHMpOworICAgIG1fbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKICAg
ICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogewotICAgIGlmIChtX3ByZXNlcnZlczNEICYm
IG1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAobV9wcmVzZXJ2ZXMzRCAmJiAh
bV90cmFuc2Zvcm1MYXllcikgewogICAgICAgICAvLyBDcmVhdGUgdGhlIHRyYW5zZm9ybSBsYXll
ci4KLSAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IFdlYkxheWVyOjpjcmVhdGUoKTsKLSAgICAg
ICAgbV90cmFuc2Zvcm1MYXllci5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKLSAgICAgICAgbV90cmFu
c2Zvcm1MYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKLSAgICAgICAgbV9sYXllci50
cmFuc2ZlckFuaW1hdGlvbnNUbygmbV90cmFuc2Zvcm1MYXllcik7CisgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBtX3RyYW5z
Zm9ybUxheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXll
ci0+c2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CisgICAgICAgIG1fbGF5ZXItPnRyYW5zZmVy
QW5pbWF0aW9uc1RvKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkpOwogCiAgICAgICAgIC8vIENvcHkg
dGhlIHBvc2l0aW9uIGZyb20gdGhpcyBsYXllci4KICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlv
bigpOwpAQCAtNzMwLDM0ICs2NzEsMzQgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKICAgICAg
ICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKIAotICAgICAgICBtX2xheWVyLnNldFBvc2l0
aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CisgICAgICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKEZs
b2F0UG9pbnQ6Onplcm8oKSk7CiAKLSAgICAgICAgbV9sYXllci5zZXRBbmNob3JQb2ludChGbG9h
dFBvaW50KDAuNWYsIDAuNWYpKTsKLSAgICAgICAgbV9sYXllci5zZXRUcmFuc2Zvcm0oU2tNYXRy
aXg0NCgpKTsKKyAgICAgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLjVm
LCAwLjVmKSk7CisgICAgICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybShTa01hdHJpeDQ0KCkpOwog
CiAgICAgICAgIC8vIFNldCB0aGUgb2xkIGxheWVyIHRvIG9wYWNpdHkgb2YgMS4gRnVydGhlciBk
b3duIHdlIHdpbGwgc2V0IHRoZSBvcGFjaXR5IG9uIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCi0gICAg
ICAgIG1fbGF5ZXIuc2V0T3BhY2l0eSgxKTsKKyAgICAgICAgbV9sYXllci0+c2V0T3BhY2l0eSgx
KTsKIAotICAgICAgICBtX2xheWVyLnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsK
KyAgICAgICAgbV9jb250ZW50TGF5ZXItPnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgp
KTsKIAogICAgICAgICAvLyBNb3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJh
bnNmb3JtIGxheWVyLgogICAgICAgICBpZiAocGFyZW50KCkpCi0gICAgICAgICAgICBwYXJlbnQo
KS0+cGxhdGZvcm1MYXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllciwgbV90cmFuc2Zvcm1MYXll
cik7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuYWRkQ2hpbGQobV9sYXllcik7CisgICAgICAg
ICAgICBwYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllciwgbV90
cmFuc2Zvcm1MYXllci5nZXQoKSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPmFkZENoaWxk
KG1fbGF5ZXIpOwogCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwotICAgIH0gZWxzZSBpZiAo
IW1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICB9IGVs
c2UgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8g
UmVsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBsYXllci4K
LSAgICAgICAgbV9sYXllci5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgIG1fbGF5ZXItPnJl
bW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgaWYgKHBhcmVudCgpKQotICAgICAgICAgICAgcGFy
ZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIsIG1f
bGF5ZXIpOworICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNo
aWxkKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXIpOwogCi0gICAgICAgIG1fbGF5ZXIu
c2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIudHJh
bnNmZXJBbmltYXRpb25zVG8oJm1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5zZXRBbmltYXRp
b25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+dHJhbnNmZXJBbmlt
YXRpb25zVG8obV9sYXllcik7CiAKICAgICAgICAgLy8gUmVsZWFzZSB0aGUgdHJhbnNmb3JtIGxh
eWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOwot
ICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnJlc2V0KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5
ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLmNs
ZWFyKCk7CiAKICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogICAgICAgICB1cGRhdGVM
YXllclNpemUoKTsKQEAgLTc2OCw4ICs3MDksOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwog
ICAgIH0KIAotICAgIG1fbGF5ZXIuc2V0UHJlc2VydmVzM0QobV9wcmVzZXJ2ZXMzRCk7Ci0gICAg
cHJpbWFyeUxheWVyKCkuc2V0T3BhY2l0eShtX29wYWNpdHkpOworICAgIG1fbGF5ZXItPnNldFBy
ZXNlcnZlczNEKG1fcHJlc2VydmVzM0QpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0T3BhY2l0
eShtX29wYWNpdHkpOwogICAgIHVwZGF0ZU5hbWVzKCk7CiB9CiAKQEAgLTc4MCwyNyArNzIxLDI3
IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUoKQog
ICAgIC8vIGZsYWdzIGFyZSBjb21iaW5lZCBoZXJlLiBtX2NvbnRlbnRzTGF5ZXIgc2hvdWxkbid0
IHJlY2VpdmUgdGhlIGRyYXdzQ29udGVudCBmbGFnCiAgICAgLy8gc28gaXQgaXMgb25seSBnaXZl
biBjb250ZW50c1Zpc2libGUuCiAKLSAgICBtX2xheWVyLnNldERyYXdzQ29udGVudChtX2RyYXdz
Q29udGVudCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CisgICAgbV9sYXllci0+c2V0RHJhd3NDb250
ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKIAotICAgIGlmICghbV9j
b250ZW50c0xheWVyLmlzTnVsbCgpKQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RHJhd3ND
b250ZW50KG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBpZiAobV9jb250ZW50c0xheWVyKQorICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldERyYXdzQ29udGVudChtX2NvbnRlbnRzVmlzaWJsZSk7
CiAKICAgICBpZiAobV9kcmF3c0NvbnRlbnQpCi0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgp
OworICAgICAgICBtX2xheWVyLT5pbnZhbGlkYXRlKCk7CiAKICAgICB1cGRhdGVEZWJ1Z0luZGlj
YXRvcnMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyQmFj
a2dyb3VuZENvbG9yKCkKIHsKLSAgICBpZiAobV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQorICAg
IGlmICghbV9jb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBXZSBuZXZl
ciBjcmVhdGUgdGhlIGNvbnRlbnRzIGxheWVyIGp1c3QgZm9yIGJhY2tncm91bmQgY29sb3IgeWV0
LgogICAgIGlmIChtX2JhY2tncm91bmRDb2xvclNldCkKLSAgICAgICAgbV9jb250ZW50c0xheWVy
LnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvci5yZ2IoKSk7CisgICAgICAgIG1f
Y29udGVudHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dyb3VuZENvbG9yLnJnYigp
KTsKICAgICBlbHNlCi0gICAgICAgIG1fY29udGVudHNMYXllci5zZXRCYWNrZ3JvdW5kQ29sb3Io
c3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFj
a2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNWaWRlbygpCkBAIC04MTAsNTAgKzc1MSw0OSBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNWaWRlbygpCiAKIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c1JlY3QoKQogewotICAgIGlm
IChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGVudHNMYXllci5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KG1fY29udGVudHNSZWN0LngoKSwgbV9jb250ZW50c1JlY3QueSgpKSk7Ci0gICAgbV9jb250
ZW50c0xheWVyLnNldEJvdW5kcyhJbnRTaXplKG1fY29udGVudHNSZWN0LndpZHRoKCksIG1fY29u
dGVudHNSZWN0LmhlaWdodCgpKSk7CisgICAgbV9jb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihG
bG9hdFBvaW50KG1fY29udGVudHNSZWN0LngoKSwgbV9jb250ZW50c1JlY3QueSgpKSk7CisgICAg
bV9jb250ZW50c0xheWVyLT5zZXRCb3VuZHMoSW50U2l6ZShtX2NvbnRlbnRzUmVjdC53aWR0aCgp
LCBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29udGVudHNTY2FsZSgpCiB7CiAgICAgLy8gSWYgcGFnZSBzY2FsZSBpcyBh
bHJlYWR5IGFwcGxpZWQgdGhlbiB0aGVyZSdzIG5vIG5lZWQgdG8gYXBwbHkgaXQgYWdhaW4uCi0g
ICAgaWYgKGFwcGxpZXNQYWdlU2NhbGUoKSB8fCBtX2xheWVyLmlzTnVsbCgpKQorICAgIGlmIChh
cHBsaWVzUGFnZVNjYWxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbGF5ZXIuc2V0Q29u
dGVudHNTY2FsZShjb250ZW50c1NjYWxlKCkpOworICAgIG1fY29udGVudExheWVyLT5zZXRDb250
ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIgY29udGVudHNMYXllcikKK3ZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIqIGNvbnRlbnRz
TGF5ZXIpCiB7CiAgICAgaWYgKGNvbnRlbnRzTGF5ZXIgPT0gbV9jb250ZW50c0xheWVyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewotICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGZhbHNl
KTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICAgICAg
bV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAgaWYgKG1fY29udGVudHNMYXllcikgeworICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShmYWxz
ZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOwogICAgIH0K
IAogICAgIG1fY29udGVudHNMYXllciA9IGNvbnRlbnRzTGF5ZXI7CiAKLSAgICBpZiAoIW1fY29u
dGVudHNMYXllci5pc051bGwoKSkgewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QW5jaG9y
UG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5zZXRVc2VQ
YXJlbnRCYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSk7CisgICAgaWYgKG1fY29udGVudHNMYXllcikg
eworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwg
MCkpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJp
bGl0eSh0cnVlKTsKIAogICAgICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2FsbCBzZXREcmF3
c0NvbnRlbnQgYXMgc29vbiBhcyB3ZSByZWNlaXZlIHRoZSBuZXcgY29udGVudHNMYXllciwgZm9y
CiAgICAgICAgIC8vIHRoZSBjb3JyZWN0bmVzcyBvZiBlYXJseSBleGl0IGNvbmRpdGlvbnMgaW4g
c2V0RHJhd3NDb250ZW50KCkgYW5kIHNldENvbnRlbnRzVmlzaWJsZSgpLgotICAgICAgICBtX2Nv
bnRlbnRzTGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fY29udGVudHNWaXNpYmxlKTsKKyAgICAgICAg
bV9jb250ZW50c0xheWVyLT5zZXREcmF3c0NvbnRlbnQobV9jb250ZW50c1Zpc2libGUpOwogCiAg
ICAgICAgIC8vIEluc2VydCB0aGUgY29udGVudCBsYXllciBmaXJzdC4gVmlkZW8gZWxlbWVudHMg
cmVxdWlyZSB0aGlzLCBiZWNhdXNlIHRoZXkgaGF2ZQogICAgICAgICAvLyBzaGFkb3cgY29udGVu
dCB0aGF0IG11c3QgZGlzcGxheSBpbiBmcm9udCBvZiB0aGUgdmlkZW8uCi0gICAgICAgIG1fbGF5
ZXIuaW5zZXJ0Q2hpbGQobV9jb250ZW50c0xheWVyLCAwKTsKKyAgICAgICAgbV9sYXllci0+aW5z
ZXJ0Q2hpbGQobV9jb250ZW50c0xheWVyLCAwKTsKIAogICAgICAgICBpZiAoc2hvd0RlYnVnQm9y
ZGVycygpKSB7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RGVidWdCb3JkZXJDb2xv
cihDb2xvcigwLCAwLCAxMjgsIDE4MCkucmdiKCkpOwotICAgICAgICAgICAgbV9jb250ZW50c0xh
eWVyLnNldERlYnVnQm9yZGVyV2lkdGgoMSk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IoMCwgMCwgMTI4LCAxODApLnJnYigpKTsKKyAgICAg
ICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RGVidWdCb3JkZXJXaWR0aCgxKTsKICAgICAgICAg
fQogICAgIH0KICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NM
YXllckNocm9taXVtLmgKaW5kZXggYWE2NGVhZDZkNjY1ZTI1OGQ5MGQwMjYwZmFhOTExNTBiOTZk
YWQ2Yi4uYTIyYmExZjRiNDQ5MDYxMjFiODU2MjcxNjJlZWJmM2Q3NGVlNjkxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogI2luY2x1ZGUg
PHB1YmxpYy9XZWJBbmltYXRpb25EZWxlZ2F0ZS5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb250
ZW50TGF5ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXllci5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKQEAgLTEwMSw3
ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJ
bWFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXll
ciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIq
KTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuICFt
X2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogCiAgICAgdmlydHVhbCBi
b29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUm
IGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYsIGRvdWJsZSB0aW1lT2Zm
c2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29uc3QgU3RyaW5nJiBhbmlt
YXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CkBAIC0xMjUsMTUgKzEyNiwxMyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoZG91YmxlIHN0YXJ0
VGltZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVk
KGRvdWJsZSBmaW5pc2hUaW1lKSBPVkVSUklERTsKIAorICAgIFdlYktpdDo6V2ViQ29udGVudExh
eWVyKiBjb250ZW50TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYXllci5nZXQoKTsg
fQorCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCi0gICAgV2ViS2l0OjpXZWJMYXllciBjb250
ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVyOyB9CisgICAgV2ViS2l0
OjpXZWJMYXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXll
cjsgfQogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7Ci0KLSAgICBXZWJLaXQ6OldlYkxheWVyIHBy
aW1hcnlMYXllcigpIGNvbnN0OwotCiAgICAgdm9pZCB1cGRhdGVOYW1lcygpOwogICAgIHZvaWQg
dXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAgdm9pZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC0x
NTEsMzIgKzE1MCwzMyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7
CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c1NjYWxlKCk7CiAKLSAgICB2b2lkIHNldHVwQ29udGVu
dHNMYXllcihXZWJLaXQ6OldlYkxheWVyKTsKKyAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3Nl
IHsKKyAgICAgICAgTm9Db250ZW50c0xheWVyID0gMCwKKyAgICAgICAgQ29udGVudHNMYXllckZv
ckltYWdlLAorICAgICAgICBDb250ZW50c0xheWVyRm9yVmlkZW8sCisgICAgICAgIENvbnRlbnRz
TGF5ZXJGb3JDYW52YXMsCisgICAgfTsKKworICAgIHZvaWQgc2V0Q29udGVudHNUbyhDb250ZW50
c0xheWVyUHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50
c0xheWVyKFdlYktpdDo6V2ViTGF5ZXIqKTsKIAogICAgIGludCBtYXBBbmltYXRpb25OYW1lVG9J
ZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOwogCiAgICAgU3RyaW5nIG1fbmFtZUJhc2U7
CiAKLSAgICBXZWJLaXQ6OldlYkNvbnRlbnRMYXllciBtX2xheWVyOwotICAgIFdlYktpdDo6V2Vi
TGF5ZXIgbV90cmFuc2Zvcm1MYXllcjsKLSAgICBXZWJLaXQ6OldlYkxheWVyIG1fY29udGVudHNM
YXllcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJDb250ZW50TGF5ZXI+IG1fY29udGVudExheWVy
OworICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2Vi
TGF5ZXI+IG1fdHJhbnNmb3JtTGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViSW1hZ2VMYXll
cj4gbV9pbWFnZUxheWVyOworICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1fY29udGVudHNMYXllcjsK
IAogICAgIE93blB0cjxPcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZT4gbV9v
cGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZTsKIAotICAgIGVudW0gQ29udGVu
dHNMYXllclB1cnBvc2UgewotICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBD
b250ZW50c0xheWVyRm9ySW1hZ2UsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JWaWRlbywKLSAg
ICAgICAgQ29udGVudHNMYXllckZvckNhbnZhcywKLSAgICB9OwotCiAgICAgQ29udGVudHNMYXll
clB1cnBvc2UgbV9jb250ZW50c0xheWVyUHVycG9zZTsKICAgICBib29sIG1fY29udGVudHNMYXll
ckhhc0JhY2tncm91bmRDb2xvciA6IDE7CiAgICAgYm9vbCBtX2luU2V0Q2hpbGRyZW47CiAgICAg
Ym9vbCBtX3BhZ2VTY2FsZUNoYW5nZWQ7CiAKLSAgICBSZWZQdHI8TGlua0hpZ2hsaWdodD4gbV9s
aW5rSGlnaGxpZ2h0OwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBBbmltYXRp
b25JZE1hcDsKICAgICBBbmltYXRpb25JZE1hcCBtX2FuaW1hdGlvbklkTWFwOwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggOWIwZTUzNGQ5OWIwYzNhOTc3ZTc5YmJjZTk5MmNiOWMyMzE1
YTg0YS4uZWI5MGMwNDFjYjEzYzMzYjhiYmJhZDZhNGRiZDA1MzgyZjMxYTMzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5jcHAKQEAgLTIzNCwxMCArMjM0LDExIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6
c2V0Qm91bmRzKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7
CiB9CiAKLWNvbnN0IExheWVyQ2hyb21pdW0qIExheWVyQ2hyb21pdW06OnJvb3RMYXllcigpIGNv
bnN0CitMYXllckNocm9taXVtKiBMYXllckNocm9taXVtOjpyb290TGF5ZXIoKQogewotICAgIGNv
bnN0IExheWVyQ2hyb21pdW0qIGxheWVyID0gdGhpczsKLSAgICBmb3IgKExheWVyQ2hyb21pdW0q
IHBhcmVudCA9IGxheWVyLT5wYXJlbnQoKTsgcGFyZW50OyBsYXllciA9IHBhcmVudCwgcGFyZW50
ID0gcGFyZW50LT5wYXJlbnQoKSkgeyB9CisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSB0aGlz
OworICAgIHdoaWxlIChsYXllci0+cGFyZW50KCkpCisgICAgICAgIGxheWVyID0gbGF5ZXItPnBh
cmVudCgpOwogICAgIHJldHVybiBsYXllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDU0
YWI4M2EwMTQ0ODBlZTFlMDYzZjZhODU4NTM3NWZlYzk1MDcyMjEuLmNjYzM2YzM3MjY3ZGZmZDk1
ODQ4ZWM0YmUzZDBhZTExYjU0OGRkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTk1LDcgKzk1
LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSByb290IGxheWVyIGlzIGEgc3BlY2lhbCBjYXNlIC0t
IGl0IG9wZXJhdGVzIGluIHBoeXNpY2FsIHBpeGVscy4KICAgICB2aXJ0dWFsIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKLSAgICBjb25zdCBMYXllckNocm9taXVtKiByb290TGF5
ZXIoKSBjb25zdDsKKyAgICBMYXllckNocm9taXVtKiByb290TGF5ZXIoKTsKICAgICBMYXllckNo
cm9taXVtKiBwYXJlbnQoKSBjb25zdDsKICAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4pOwogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUGFzc1JlZlB0cjxMYXllckNocm9t
aXVtPiwgc2l6ZV90IGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBiZWE2
ZjllY2Y5ODJmNzViMDhkODdiMjVhODQ0NTZjMGZhMDVhYmE0Li44MWY4Zjc4MjZiYjY3M2M2NGY1
ZjM5MzZhZDQ4NmVjZTkzODVjN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00
ODYsNyArNDg2LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbW1vbi5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgnLAotICAg
ICAgICAgICAgICAgICdzcmMvV2ViQ29udGVudExheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJD
b250ZW50TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ3Jvc3NPcmlnaW5Q
cmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAnLApAQCAtNTE1LDcgKzUxNCw4IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbnRp
dGllcy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMuaCcsCi0gICAgICAg
ICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAnLAorICAgICAgICAgICAg
ICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwJywKQEAgLTU2NCw5ICs1NjQsMTEgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmgnLAotICAgICAg
ICAgICAgICAgICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAn
c3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
SU9TdXJmYWNlTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VEZWNv
ZGVyLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVyLmNwcCcsCisgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAg
ICdzcmMvV2ViSW1hZ2VMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFn
ZVNraWEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RWxlbWVudC5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViSW5wdXRFdmVudC5jcHAnLApAQCAtNTc3LDcgKzU3OSw2
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViS2l0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJM
YWJlbEVsZW1lbnQuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZp
ZXcuY3BwJywKQEAgLTYxOCw4ICs2MTksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nv
cGVkTWljcm90YXNrU3VwcHJlc3Npb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNj
b3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250
cm9sbGVyLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAn
LAotICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcCcsCisgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3BwJywKKyAgICAgICAgICAgICAg
ICAnc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YlNjcm9sbGJhckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhcklt
cGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwu
Y3BwJywKQEAgLTYzOCw4ICs2MzksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU29ja2V0
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2Vi
U29saWRDb2xvckxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9y
TGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoR3JhbW1hci5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlLmNwcCcsCkBAIC02NTUsNyArNjU2
LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKLSAgICAgICAgICAg
ICAgICAnc3JjL1dlYlZpZGVvTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlZp
ZGVvTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWRlb0xheWVySW1w
bC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5j
cHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmgn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmlu
ZGV4IDY1ZGFjNjJjYWUyNTNkNTE2NTg3NWNlNGUzMzZiZTg1Zjk3OGMxYmEuLjRkZjQyMDRiMzQ3
YmM4ZGNlODdmMTNhNmZiMGM2MjM0NWU3MGNjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIK
ICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIldlYlZp
ZXdJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgpAQCAtNDgsMTEg
KzQ5LDExIEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3KQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgi
bm9uLWNvbXBvc2l0ZWQgY29udGVudCIpOwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5z
ZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgV2ViQ29udGVudExheWVyIGxheWVyID0gbV9ncmFw
aGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnRvPFdlYkNvbnRlbnRMYXllcj4oKTsKLSAgICBs
YXllci5zZXRVc2VMQ0RUZXh0KHRydWUpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAg
ICBXZWJDb250ZW50TGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtKj4obV9ncmFwaGljc0xheWVyLmdldCgpKS0+Y29udGVudExheWVyKCk7Cisg
ICAgbGF5ZXItPnNldFVzZUxDRFRleHQodHJ1ZSk7CisgICAgbGF5ZXItPmxheWVyKCktPnNldE9w
YXF1ZSh0cnVlKTsKICNpZiAhT1MoQU5EUk9JRCkKLSAgICBsYXllci5zZXREcmF3Q2hlY2tlcmJv
YXJkRm9yTWlzc2luZ1RpbGVzKHRydWUpOworICAgIGxheWVyLT5zZXREcmF3Q2hlY2tlcmJvYXJk
Rm9yTWlzc2luZ1RpbGVzKHRydWUpOwogI2VuZGlmCiB9CiAKQEAgLTgwLDcgKzgxLDcgQEAgdm9p
ZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqIGxheWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCpsYXll
ci0+cGxhdGZvcm1MYXllcigpID09IHNjcm9sbExheWVyKCkpCisgICAgaWYgKGxheWVyLT5wbGF0
Zm9ybUxheWVyKCkgPT0gc2Nyb2xsTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGF5
ZXItPmFkZENoaWxkQXRJbmRleChtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIDApOwpAQCAtOTUsMTIg
Kzk2LDEyIEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgYm9vbCB2aXNpYmxlUmVjdENo
YW5nZWQgPSBtX3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX3ZpZXdwb3J0
U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgbGF5ZXIgPSBzY3Jv
bGxMYXllcigpOwotICAgIGxheWVyLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsg
c2Nyb2xsT3JpZ2luKTsKLSAgICBsYXllci5zZXRQb3NpdGlvbihXZWJGbG9hdFBvaW50KC1zY3Jv
bGxQb3NpdGlvbikpOworICAgIFdlYkxheWVyKiBsYXllciA9IHNjcm9sbExheWVyKCk7CisgICAg
bGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsT3JpZ2luKTsK
KyAgICBsYXllci0+c2V0UG9zaXRpb24oV2ViRmxvYXRQb2ludCgtc2Nyb2xsUG9zaXRpb24pKTsK
ICAgICAvLyBEdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIHBpbmNoIHpvb20sIHRoZSBub25jb21w
b3NpdGVkIGxheWVyIGlzIGFsd2F5cwogICAgIC8vIGFzc3VtZWQgdG8gYmUgc2Nyb2xsYWJsZS4K
LSAgICBsYXllci5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxl
KHRydWUpOwogICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZTsKICAgICBtX2dy
YXBoaWNzTGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fZ3Jh
cGhpY3NMYXllci0+c2V0U2l6ZShjb250ZW50c1NpemUpOwpAQCAtMTI3LDExICsxMjgsMTEgQEAg
Ym9vbCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmhhdmVTY3JvbGxMYXllcigpCiAgICAgcmV0
dXJuIG1fZ3JhcGhpY3NMYXllci0+cGFyZW50KCk7CiB9CiAKLVdlYlNjcm9sbGFibGVMYXllciBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKCkKK1dlYkxheWVyKiBOb25Db21w
b3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKCkKIHsKICAgICBpZiAoIW1fZ3JhcGhpY3NM
YXllci0+cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBXZWJTY3JvbGxhYmxlTGF5ZXIoKTsKLSAg
ICByZXR1cm4gbV9ncmFwaGljc0xheWVyLT5wYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT50bzxX
ZWJTY3JvbGxhYmxlTGF5ZXI+KCk7CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2dy
YXBoaWNzTGF5ZXItPnBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCk7CiB9CiAKIHZvaWQgTm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuaAppbmRleCBlNjBlOWVmNDg2YjE0MjMxMjQ3MTNjNjhkZDZhYWMwZWVh
NGE3ZGIzLi4wOGI1ZjZhNDFmNzcwNjFlN2ViMjgxNTQyZjBmZThlNjM1ZmNjNzNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhv
c3QuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJJbnRTaXplLmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBkZXZp
Y2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0
b3I7IH0KIAogICAgIGJvb2wgaGF2ZVNjcm9sbExheWVyKCk7Ci0gICAgV2ViU2Nyb2xsYWJsZUxh
eWVyIHNjcm9sbExheWVyKCk7CisgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCk7CiAKICAgICBP
d25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xheWVyOwogICAgIFdlYlZp
ZXdJbXBsKiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDb250ZW50TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29u
dGVudExheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNzQ2NWIxN2Mx
MzE2NzY5ODhmYTY1YThkNmJhMDRmYjQ3YzY2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50
TGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+Ci0KLSNpbmNs
dWRlICJDb250ZW50TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllcklt
cGwuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1XZWJDb250ZW50TGF5ZXIgV2ViQ29udGVudExheWVyOjpjcmVhdGUoV2ViQ29udGVudExheWVy
Q2xpZW50KiBjb250ZW50Q2xpZW50KQotewotICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2Vi
Q29udGVudExheWVySW1wbDo6Y3JlYXRlKGNvbnRlbnRDbGllbnQpKTsKLX0KLQotdm9pZCBXZWJD
b250ZW50TGF5ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8Q29udGVudExheWVyQ2hy
b21pdW0+KCktPmNsZWFyRGVsZWdhdGUoKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNl
dERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREb3Vi
bGVTaWRlZChkb3VibGVTaWRlZCk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRDb250
ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Q29udGVudHNTY2Fs
ZShzY2FsZSk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRVc2VMQ0RUZXh0KGJvb2wg
ZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0VXNlTENEVGV4dChlbmFibGUpOwotfQotCi12
b2lkIFdlYkNvbnRlbnRMYXllcjo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhi
b29sIGVuYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNz
aW5nVGlsZXMoZW5hYmxlKTsKLX0KLQotV2ViQ29udGVudExheWVyOjpXZWJDb250ZW50TGF5ZXIo
Y29uc3QgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBXZWJT
Y3JvbGxhYmxlTGF5ZXIobm9kZSkKLXsKLX0KLQotV2ViQ29udGVudExheWVyJiBXZWJDb250ZW50
TGF5ZXI6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiYg
bm9kZSkKLXsKLSAgICBtX3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQot
V2ViQ29udGVudExheWVyOjpvcGVyYXRvciBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVt
PigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRlbnRMYXllckNocm9taXVt
Kj4obV9wcml2YXRlLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCmluZGV4
IDY5ZGExZWEzZjBlODkyMDE2OTZkOGRkZWM3NjQ4ZTRmNDY0Yzk2NDguLmZhMjFlODk3NGZkM2Ix
Yjk4MDZhNWMyZTFjYTk5ZTY5YzY5OGRjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCkBAIC0yNiwzNyArMjYsNjYgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCiAKKyNp
bmNsdWRlICJTa01hdHJpeDQ0LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllckNs
aWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYkZsb2F0UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYlNpemUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IFdlYkNvbnRl
bnRMYXllckltcGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQp
CitXZWJDb250ZW50TGF5ZXIqIFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKFdlYkNvbnRlbnRMYXll
ckNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVudExh
eWVySW1wbChjb250ZW50Q2xpZW50KSk7CisgICAgcmV0dXJuIG5ldyBXZWJDb250ZW50TGF5ZXJJ
bXBsKGNsaWVudCk7CiB9CiAKLVdlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRMYXllcklt
cGwoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotICAgIDogQ29udGVudExh
eWVyQ2hyb21pdW0odGhpcykKLSAgICAsIG1fY29udGVudENsaWVudChjb250ZW50Q2xpZW50KQor
V2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJD
bGllbnQqIGNsaWVudCkKKyAgICA6IG1fd2ViTGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBXZWJMYXll
ckltcGwoQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKSkpKQorICAgICwgbV9jbGll
bnQoY2xpZW50KQogewotICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CisgICAgbV93ZWJMYXllcklt
cGwtPmxheWVyKCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYkNvbnRlbnRMYXllcklt
cGw6On5XZWJDb250ZW50TGF5ZXJJbXBsKCkKIHsKLSAgICBjbGVhckRlbGVnYXRlKCk7CisgICAg
c3RhdGljX2Nhc3Q8Q29udGVudExheWVyQ2hyb21pdW0qPihtX3dlYkxheWVySW1wbC0+bGF5ZXIo
KSktPmNsZWFyRGVsZWdhdGUoKTsKIH0KIAorV2ViTGF5ZXIqIFdlYkNvbnRlbnRMYXllckltcGw6
OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV93ZWJMYXllckltcGwuZ2V0KCk7Cit9CisKK3ZvaWQg
V2ViQ29udGVudExheWVySW1wbDo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKK3sK
KyAgICBtX3dlYkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0RG91YmxlU2lkZWQoZG91YmxlU2lkZWQp
OworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQg
c2NhbGUpCit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldENvbnRlbnRzU2NhbGUo
c2NhbGUpOworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldFVzZUxDRFRleHQoYm9v
bCBlbmFibGUpCit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldFVzZUxDRFRleHQo
ZW5hYmxlKTsKK30KKwordm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREcmF3Q2hlY2tlcmJv
YXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wgZW5hYmxlKQoreworICAgIG1fd2ViTGF5ZXJJbXBsLT5s
YXllcigpLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGVuYWJsZSk7Cit9CisK
Kwogdm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKFNrQ2FudmFzKiBjYW52
YXMsIGNvbnN0IEludFJlY3QmIGNsaXAsIEZsb2F0UmVjdCYgb3BhcXVlKQogewotICAgIGlmICgh
bV9jb250ZW50Q2xpZW50KQorICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKICAg
ICBXZWJGbG9hdFJlY3Qgd2ViT3BhcXVlOwotICAgIG1fY29udGVudENsaWVudC0+cGFpbnRDb250
ZW50cyhjYW52YXMsIFdlYlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7CisgICAgbV9jbGllbnQtPnBh
aW50Q29udGVudHMoY2FudmFzLCBXZWJSZWN0KGNsaXApLCB3ZWJPcGFxdWUpOwogICAgIG9wYXF1
ZSA9IHdlYk9wYXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViQ29udGVudExheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Q29udGVudExheWVySW1wbC5oCmluZGV4IDk3NzI5ZWExZTBjMjAxYTA4YjFmOTA5MDdhNjI4Mjgx
YTRlMTBiNTkuLjUxMWY4ZTBiYTA4NjBiNDZhMDgxNTY1ZjA5ODdkZmYwZThhY2I1ZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKQEAg
LTI3LDIzICsyNywzMyBAQAogI2RlZmluZSBXZWJDb250ZW50TGF5ZXJJbXBsX2gKIAogI2luY2x1
ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisj
aW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50
OwogCi1jbGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRM
YXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVyRGVsZWdhdGUgeworY2xh
c3MgV2ViQ29udGVudExheWVySW1wbCA6IHB1YmxpYyBXZWJDb250ZW50TGF5ZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckRlbGVnYXRl
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBj
cmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKKyAgICBleHBsaWNp
dCBXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRMYXllckNsaWVudCopOworCisgICAgLy8g
V2ViQ29udGVudExheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxh
eWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpICBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VMQ0RUZXh0KGJvb2wpICBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sKSAg
T1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJDb250ZW50TGF5ZXJJbXBs
KFdlYkNvbnRlbnRMYXllckNsaWVudCogY29udGVudENsaWVudCk7CiAgICAgdmlydHVhbCB+V2Vi
Q29udGVudExheWVySW1wbCgpOwogCiAgICAgLy8gQ29udGVudExheWVyRGVsZWdhdGUgaW1wbGVt
ZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoU2tDYW52YXMqLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwLCBXZWJDb3JlOjpGbG9hdFJlY3QmIG9wYXF1ZSkgT1ZF
UlJJREU7CiAKLSAgICBXZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY29udGVudENsaWVudDsKKyAg
ICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX3dlYkxheWVySW1wbDsKKyAgICBXZWJDb250ZW50TGF5
ZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDFmOGRkYmY2ZThlNDE4MDFh
OTRlMzY3M2FkYWFlYzg5MjJjNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+
Ci0KLSNpbmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgImNjL0NDVGV4
dHVyZVVwZGF0ZVF1ZXVlLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotI2luY2x1ZGUg
PHB1YmxpYy9XZWJTaXplLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3Bh
Y2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIDogcHVibGljIFdlYlRl
eHR1cmVVcGRhdGVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJUZXh0dXJlVXBkYXRlcklt
cGwoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKQotICAgICAgICA6IG1fcXVldWUocXVldWUp
Ci0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDb3B5KHVuc2lnbmVkIHNv
dXJjZVRleHR1cmUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uVGV4dHVyZSwgV2ViU2l6ZSBzaXplKSBP
VkVSUklERQotICAgIHsKLSAgICAgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5ID0g
eyBzb3VyY2VUZXh0dXJlLCBkZXN0aW5hdGlvblRleHR1cmUsIHNpemUgfTsKLSAgICAgICAgbV9x
dWV1ZS5hcHBlbmRDb3B5KGNvcHkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVV
cGRhdGVRdWV1ZSYgbV9xdWV1ZTsKLX07Ci0KLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbCA6IHB1YmxpYyBUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCwgcHVibGljIFRleHR1cmVM
YXllckNocm9taXVtIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGwoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKLSAgICAgICAg
OiBUZXh0dXJlTGF5ZXJDaHJvbWl1bShjbGllbnQgPyB0aGlzIDogMCkKLSAgICAgICAgLCBtX2Ns
aWVudChjbGllbnQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFy
ZVRleHR1cmUoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKSBPVkVSUklERQotICAgIHsKLSAg
ICAgICAgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIHVwZGF0ZXJJbXBsKHF1ZXVlKTsKLSAgICAgICAg
cmV0dXJuIG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgT1ZFUlJJ
REUKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NsaWVudC0+Y29udGV4dCgpOwotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogbV9jbGllbnQ7Ci19
OwotCi1XZWJFeHRlcm5hbFRleHR1cmVMYXllciBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3Jl
YXRlKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgUmVmUHRy
PFRleHR1cmVMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGwoY2xpZW50KSk7Ci0gICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7
Ci0gICAgcmV0dXJuIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7Ci19
Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1
bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPmNsZWFyQ2xpZW50KCk7Ci19Ci0KLXZvaWQg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKLXsKLSAg
ICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFRleHR1cmVJZChpZCk7Ci19Ci0K
LXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQot
ewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0RmxpcHBlZChmbGlwcGVk
KTsKLX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VVZSZWN0KGNvbnN0IFdl
YkZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCkt
PnNldFVWUmVjdChyZWN0KTsKLX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0
T3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4o
KS0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6
OnNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKLXsKLSAgICB1
bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFByZW11bHRpcGxpZWRBbHBoYShwcmVt
dWx0aXBsaWVkQWxwaGEpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjp3aWxs
TW9kaWZ5VGV4dHVyZSgpCi17Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT53
aWxsTW9kaWZ5VGV4dHVyZSgpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpz
ZXRSYXRlTGltaXRDb250ZXh0KGJvb2wgcmF0ZUxpbWl0KQotewotICAgIHVud3JhcDxUZXh0dXJl
TGF5ZXJDaHJvbWl1bT4oKS0+c2V0UmF0ZUxpbWl0Q29udGV4dChyYXRlTGltaXQpOwotfQotCi1X
ZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0
cjxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAgOiBXZWJMYXllcihsYXllcikKLXsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40NjhjMzQ4MjRiNzE5MmI5OTEwNDgwNWZmNTAzMDUzY2EwMjUzNjBkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCIKKworI2luY2x1ZGUgIlRleHR1
cmVMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSAi
Y2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJFeHRlcm5hbFRleHR1cmVMYXllciogV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogY2xp
ZW50KQoreworICAgIHJldHVybiBuZXcgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKGNsaWVu
dCk7Cit9CisKK1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBt
X2NsaWVudChjbGllbnQpCit7CisgICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXll
cjsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21p
dW06OmNyZWF0ZSh0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVy
Q2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAg
ICBtX2xheWVyID0gYWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllci5yZWxlYXNlKCkpKTsK
K30KKworV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjp+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsKCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5
ZXItPmxheWVyKCkpLT5jbGVhckNsaWVudCgpOworfQorCitXZWJMYXllciogV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsOjpsYXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9
CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRUZXh0dXJlSWQodW5zaWdu
ZWQgaWQpCit7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZUxheWVyQ2hyb21pdW0qPihtX2xheWVy
LT5sYXllcigpKS0+c2V0VGV4dHVyZUlkKGlkKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGw6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQoreworICAgIHN0YXRpY19jYXN0
PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldEZsaXBwZWQoZmxp
cHBlZCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJlY3Qo
Y29uc3QgV2ViRmxvYXRSZWN0JiByZWN0KQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXll
ckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldFVWUmVjdChyZWN0KTsKK30KKwordm9p
ZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sK
KyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkp
LT5zZXRPcGFxdWUob3BhcXVlKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGw6OnNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5z
ZXRQcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKTsKK30KKwordm9pZCBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OndpbGxNb2RpZnlUZXh0dXJlKCkKK3sKKyAgICBzdGF0
aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT53aWxsTW9k
aWZ5VGV4dHVyZSgpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0
UmF0ZUxpbWl0Q29udGV4dChib29sIHJhdGVMaW1pdCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0
dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRSYXRlTGltaXRDb250ZXh0
KHJhdGVMaW1pdCk7Cit9CisKK2NsYXNzIFdlYlRleHR1cmVVcGRhdGVySW1wbCA6IHB1YmxpYyBX
ZWJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViVGV4dHVyZVVwZGF0
ZXJJbXBsKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKKyAgICAgICAgOiBtX3F1ZXVlKHF1
ZXVlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25l
ZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25lZCBkZXN0aW5hdGlvblRleHR1cmUsIFdlYlNpemUgc2l6
ZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgY29w
eSA9IHsgc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlLCBzaXplIH07CisgICAgICAg
IG1fcXVldWUuYXBwZW5kQ29weShjb3B5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ0NUZXh0
dXJlVXBkYXRlUXVldWUmIG1fcXVldWU7Cit9OworCit1bnNpZ25lZCBXZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGw6OnByZXBhcmVUZXh0dXJlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkK
K3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIFdlYlRleHR1cmVVcGRhdGVySW1wbCB1cGRh
dGVySW1wbChxdWV1ZSk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRh
dGVySW1wbCk7Cit9CisKK1dlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6OmNvbnRleHQoKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgcmV0dXJu
IG1fY2xpZW50LT5jb250ZXh0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41MzQ4ODk1YmYxY2Q1M2I1NDQ5M2IyMzU3ZDA4MTk2MmJmNTgz
NGU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCisjaW5jbHVk
ZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbCA6IHB1YmxpYyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bUNs
aWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
KFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBp
bXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGbGlwcGVkKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldE9wYXF1ZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlw
bGllZEFscGhhKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTW9kaWZ5VGV4
dHVyZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlTGltaXRDb250ZXh0KGJv
b2wpIE9WRVJSSURFOworCisgICAgLy8gVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQgaW1wbGVt
ZW50YXRpb24uCisgICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShXZWJDb3JlOjpD
Q1RleHR1cmVVcGRhdGVRdWV1ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBXZWJFeHRlcm5h
bFRleHR1cmVMYXllckNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4g
bV9sYXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFj
ZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdkYjBjODc3NzdmZmI0NWZjODNi
Yzk5MGQ1ZWRmOTI1NGZiODUxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllci5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oPgotCi0jaW5jbHVkZSAi
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSU9T
dXJmYWNlTGF5ZXIgV2ViSU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgUmVmUHRyPElP
U3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyID0gSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7Ci0gICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIFdlYklP
U3VyZmFjZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2ViSU9TdXJmYWNlTGF5
ZXI6OnNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUg
c2l6ZSkKLXsKLSAgICB1bndyYXA8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0SU9TdXJm
YWNlUHJvcGVydGllcyhpb1N1cmZhY2VJZCwgc2l6ZSk7Ci19Ci0KLVdlYklPU3VyZmFjZUxheWVy
OjpXZWJJT1N1cmZhY2VMYXllcihQYXNzUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxh
eWVyKQotICAgIDogV2ViTGF5ZXIobGF5ZXIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVy
SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFiNzBjNjFkOGI0MTc0NDIyZDdmYzUzNTQzMjlmODkxZTkw
OGI0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklP
U3VyZmFjZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJJT1N1cmZhY2VMYXllckltcGwuaCIKKworI2luY2x1ZGUg
IklPU3VyZmFjZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwor
dXNpbmcgV2ViQ29yZTo6SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1dlYklPU3VyZmFjZUxheWVyKiBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkKK3sK
KyAgICBSZWZQdHI8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBJT1N1cmZhY2VMYXll
ckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAg
ICByZXR1cm4gbmV3IFdlYklPU3VyZmFjZUxheWVySW1wbChsYXllci5yZWxlYXNlKCkpOworfQor
CitXZWJJT1N1cmZhY2VMYXllckltcGw6OldlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRy
PElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihu
ZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dlYklPU3VyZmFjZUxheWVySW1wbDo6
fldlYklPU3VyZmFjZUxheWVySW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViSU9TdXJmYWNlTGF5ZXJJ
bXBsOjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXpl
IHNpemUpCit7CisgICAgc3RhdGljX2Nhc3Q8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5
ZXItPmxheWVyKCkpLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBzaXplKTsK
K30KKworV2ViTGF5ZXIqIFdlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJl
dHVybiBtX2xheWVyLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uM2RiYjAyNzU5YTVjYmQ3NGQzNTY0ODk5OGFlYzYyMTBhMmY0NzI5YwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1w
bC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklPU3VyZmFjZUxheWVySW1w
bF9oCisjZGVmaW5lIFdlYklPU3VyZmFjZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMv
V2ViSU9TdXJmYWNlTGF5ZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIElPU3VyZmFjZUxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJJT1N1cmZhY2VMYXllckltcGwgOiBwdWJsaWMgV2ViSU9T
dXJmYWNlTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYklPU3VyZmFjZUxheWVySW1w
bChQYXNzUmVmUHRyPFdlYkNvcmU6OklPU3VyZmFjZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0
dWFsIH5XZWJJT1N1cmZhY2VMYXllckltcGwoKTsKKworICAgIC8vIFdlYklPU3VyZmFjZUxheWVy
IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJm
YWNlSWQsIFdlYlNpemUpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXll
ckltcGw+IG1fbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJT1N1cmZhY2VMYXllcklt
cGxfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzYxNTE1MzBkMTA3NTdkMmNkNDRhNzgwMzBh
OTY5ZjU2ZTI0MDZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXllci5oPgotCi0jaW5jbHVkZSAiSW1hZ2VMYXllckNocm9t
aXVtLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJbWFnZUxheWVyIFdlYkltYWdlTGF5
ZXI6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIFdlYkltYWdlTGF5ZXIoV2ViQ29yZTo6SW1hZ2VM
YXllckNocm9taXVtOjpjcmVhdGUoKSk7Ci19Ci0KLVdlYkltYWdlTGF5ZXI6OldlYkltYWdlTGF5
ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDog
V2ViTGF5ZXIobGF5ZXIpCi17Ci19Ci0KLXZvaWQgV2ViSW1hZ2VMYXllcjo6c2V0Qml0bWFwKFNr
Qml0bWFwIGJpdG1hcCkKLXsKLSAgICB1bndyYXA8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVt
PigpLT5zZXRCaXRtYXAoYml0bWFwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDkzYWY4MDQ1YTI2ZjY4ZTgyNmQwMGNhZDRkOTI3NjVlOTFlOWRjMwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNw
cApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYkltYWdlTGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJJbWFnZUxheWVyQ2hyb21pdW0uaCIK
KyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwordXNpbmcgV2ViQ29yZTo6SW1hZ2VMYXllckNo
cm9taXVtOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW1hZ2VMYXllciogV2ViSW1hZ2VM
YXllcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkltYWdlTGF5ZXJJbXBsKFdlYkNv
cmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOworfQorCitXZWJJbWFnZUxheWVySW1w
bDo6V2ViSW1hZ2VMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21p
dW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVy
KSkpCit7Cit9CisKK1dlYkltYWdlTGF5ZXJJbXBsOjp+V2ViSW1hZ2VMYXllckltcGwoKQorewor
fQorCitXZWJMYXllciogV2ViSW1hZ2VMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4g
bV9sYXllci5nZXQoKTsKK30KKwordm9pZCBXZWJJbWFnZUxheWVySW1wbDo6c2V0Qml0bWFwKFNr
Qml0bWFwIGJpdG1hcCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbWFnZUxheWVyQ2hyb21pdW0qPiht
X2xheWVyLT5sYXllcigpKS0+c2V0Qml0bWFwKGJpdG1hcCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VM
YXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOWE0YjhiM2ViMGZmOTIyOTJiOWQ5MGVlZDFiZDU0MjdiYjg0NGYyOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5
ZXJJbXBsLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW1hZ2VMYXllcklt
cGxfaAorI2RlZmluZSBXZWJJbWFnZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
SW1hZ2VMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgSW1hZ2VMYXllckNocm9taXVtOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYkxheWVySW1wbDsKKworY2xhc3MgV2ViSW1hZ2VMYXllckltcGwgOiBwdWJsaWMg
V2ViSW1hZ2VMYXllciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViSW1hZ2VMYXllckltcGwo
UGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5X
ZWJJbWFnZUxheWVySW1wbCgpOworCisgICAgLy8gV2ViSW1hZ2VMYXllciBpbXBsZW1lbnRhdGlv
bi4KKyAgICBXZWJMYXllciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Qml0bWFwKFNrQml0bWFwKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViTGF5
ZXJJbXBsPiBtX2xheWVyOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSW1hZ2VMYXllckltcGxf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzNzg5N2U2ZjgxMmIxNzFmOTBmMjI2OGViYzU3ZDUwNjEwMzM5N2JlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXll
ci5oPgotCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlNrTWF0cml4NDQu
aCIKLSNpbmNsdWRlICJXZWJBbmltYXRpb25JbXBsLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXJJbXBs
LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDxw
dWJsaWMvV2ViRmxvYXRQb2ludC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4K
LSNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0KLW5hbWVzcGFjZSB7Ci0KLVdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tN
YXRyaXg0NCYgbWF0cml4KQotewotICAgIGRvdWJsZSBkYXRhWzE2XTsKLSAgICBtYXRyaXguYXND
b2xNYWpvcmQoZGF0YSk7Ci0gICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFb
MF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRh
WzExXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFb
MTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOwotfQotCi1Ta01hdHJpeDQ0IHNrTWF0cml4NDRGcm9t
VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCkKLXsKLSAgICBTa01hdHJpeDQ0IHNrTWF0cml4OwotICAgIHNrTWF0cml4LnNldCgwLCAwLCBT
a0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMCwg
U2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDAs
IFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAw
LCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKLSAgICBza01hdHJpeC5zZXQoMCwg
MSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDEs
IDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOwotICAgIHNrTWF0cml4LnNldCgy
LCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsKLSAgICBza01hdHJpeC5zZXQo
MywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7Ci0gICAgc2tNYXRyaXguc2V0
KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOwotICAgIHNrTWF0cml4LnNl
dCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsKLSAgICBza01hdHJpeC5z
ZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7Ci0gICAgc2tNYXRyaXgu
c2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkpOwotICAgIHNrTWF0cml4
LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkpKTsKLSAgICBza01hdHJp
eC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MigpKSk7Ci0gICAgc2tNYXRy
aXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOwotICAgIHNrTWF0
cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKLSAgICByZXR1
cm4gc2tNYXRyaXg7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIFdl
YkxheWVyKFdlYkxheWVySW1wbDo6Y3JlYXRlKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZXNl
dCgpCi17Ci0gICAgbV9wcml2YXRlLnJlc2V0KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmFzc2ln
bihjb25zdCBXZWJMYXllciYgb3RoZXIpCi17Ci0gICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2
YXRlOwotfQotCi1ib29sIFdlYkxheWVyOjplcXVhbHMoY29uc3QgV2ViTGF5ZXImIG4pIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gbi5tX3ByaXZhdGUuZ2V0KCkpOwot
fQotCi12b2lkIFdlYkxheWVyOjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmIGRp
cnR5UmVjdCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0
KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6aW52YWxpZGF0ZSgpCi17Ci0gICAgbV9wcml2YXRlLT5z
ZXROZWVkc0Rpc3BsYXkoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6YWRkQ2hpbGQoY29uc3QgV2Vi
TGF5ZXImIGNoaWxkKQotewotICAgIG1fcHJpdmF0ZS0+YWRkQ2hpbGQoY2hpbGQpOwotfQotCi12
b2lkIFdlYkxheWVyOjppbnNlcnRDaGlsZChjb25zdCBXZWJMYXllciYgY2hpbGQsIHNpemVfdCBp
bmRleCkKLXsKLSAgICBtX3ByaXZhdGUtPmluc2VydENoaWxkKGNoaWxkLCBpbmRleCk7Ci19Ci0K
LXZvaWQgV2ViTGF5ZXI6OnJlcGxhY2VDaGlsZChjb25zdCBXZWJMYXllciYgcmVmZXJlbmNlLCBj
b25zdCBXZWJMYXllciYgbmV3TGF5ZXIpCi17Ci0gICAgV2ViTGF5ZXIgcmVmID0gcmVmZXJlbmNl
OwotICAgIG1fcHJpdmF0ZS0+cmVwbGFjZUNoaWxkKHJlZi51bndyYXA8TGF5ZXJDaHJvbWl1bT4o
KSwgbmV3TGF5ZXIpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBXZWJW
ZWN0b3I8V2ViTGF5ZXI+JiB3ZWJDaGlsZHJlbikKLXsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4gY2hpbGRyZW4od2ViQ2hpbGRyZW4uc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHdlYkNoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBjaGlsZHJlbltp
XSA9IHdlYkNoaWxkcmVuW2ldLnVud3JhcDxMYXllckNocm9taXVtPigpOwotICAgIG1fcHJpdmF0
ZS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwotfQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVGcm9t
UGFyZW50KCkKLXsKLSAgICBtX3ByaXZhdGUtPnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQotdm9p
ZCBXZWJMYXllcjo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3Zl
QWxsQ2hpbGRyZW4oKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3Qg
V2ViRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRBbmNob3JQ
b2ludChhbmNob3JQb2ludCk7Ci19Ci0KLVdlYkZsb2F0UG9pbnQgV2ViTGF5ZXI6OmFuY2hvclBv
aW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX3ByaXZhdGUtPmFuY2hv
clBvaW50KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmNob3JQb2ludFooZmxvYXQgYW5j
aG9yUG9pbnRaKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QW5jaG9yUG9pbnRaKGFuY2hvclBvaW50
Wik7Ci19Ci0KLWZsb2F0IFdlYkxheWVyOjphbmNob3JQb2ludFooKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUtPmFuY2hvclBvaW50WigpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRC
b3VuZHMoY29uc3QgV2ViU2l6ZSYgc2l6ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldEJvdW5kcyhz
aXplKTsKLX0KLQotV2ViU2l6ZSBXZWJMYXllcjo6Ym91bmRzKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gV2ViU2l6ZShtX3ByaXZhdGUtPmJvdW5kcygpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0
TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRN
YXNrc1RvQm91bmRzKG1hc2tzVG9Cb3VuZHMpOwotfQotCi1ib29sIFdlYkxheWVyOjptYXNrc1Rv
Qm91bmRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXNrc1RvQm91bmRzKCk7
Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldE1hc2tMYXllcihjb25zdCBXZWJMYXllciYgbWFza0xh
eWVyKQotewotICAgIFdlYkxheWVyIHJlZiA9IG1hc2tMYXllcjsKLSAgICBtX3ByaXZhdGUtPnNl
dE1hc2tMYXllcihyZWYudW53cmFwPExheWVyQ2hyb21pdW0+KCkpOwotfQotCi12b2lkIFdlYkxh
eWVyOjpzZXRSZXBsaWNhTGF5ZXIoY29uc3QgV2ViTGF5ZXImIHJlcGxpY2FMYXllcikKLXsKLSAg
ICBXZWJMYXllciByZWYgPSByZXBsaWNhTGF5ZXI7Ci0gICAgbV9wcml2YXRlLT5zZXRSZXBsaWNh
TGF5ZXIocmVmLnVud3JhcDxMYXllckNocm9taXVtPigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6
c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQotewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhY2l0eShv
cGFjaXR5KTsKLX0KLQotZmxvYXQgV2ViTGF5ZXI6Om9wYWNpdHkoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUtPm9wYWNpdHkoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhcXVl
KGJvb2wgb3BhcXVlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0K
LWJvb2wgV2ViTGF5ZXI6Om9wYXF1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
b3BhcXVlKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0
UG9pbnQmIHBvc2l0aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c2V0UG9zaXRpb24ocG9zaXRpb24p
OwotfQotCi1XZWJGbG9hdFBvaW50IFdlYkxheWVyOjpwb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFdlYkZsb2F0UG9pbnQobV9wcml2YXRlLT5wb3NpdGlvbigpKTsKLX0KLQotdm9pZCBX
ZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQot
ewotICAgIG1fcHJpdmF0ZS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRy
aXhGcm9tU2tNYXRyaXg0NChtYXRyaXgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5
ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAg
ICBtX3ByaXZhdGUtPnNldFN1YmxheWVyVHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4
NDQgV2ViTGF5ZXI6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2tN
YXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3ByaXZhdGUtPnN1YmxheWVyVHJhbnNm
b3JtKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0
NCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9u
TWF0cml4RnJvbVNrTWF0cml4NDQobWF0cml4KSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFRy
YW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIG1f
cHJpdmF0ZS0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6
OnRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNmb3Jt
YXRpb25NYXRyaXgobV9wcml2YXRlLT50cmFuc2Zvcm0oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6
OnNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkKLXsKLSAgICBtX3ByaXZhdGUtPnNl
dElzRHJhd2FibGUoZHJhd3NDb250ZW50KTsKLX0KLQotYm9vbCBXZWJMYXllcjo6ZHJhd3NDb250
ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5kcmF3c0NvbnRlbnQoKTsKLX0K
LQotdm9pZCBXZWJMYXllcjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0UHJlc2VydmVzM0QocHJlc2VydmUzRCk7Ci19Ci0KLXZvaWQgV2ViTGF5
ZXI6OnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJp
bGl0eSh1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOwotfQotCi12b2lkIFdlYkxheWVyOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRC
YWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRGaWx0ZXJzKGNv
bnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRG
aWx0ZXJzKGZpbHRlcnMpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVy
cyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQotewotICAgIG1fcHJpdmF0ZS0+
c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVycyk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERl
YnVnQm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+
c2V0RGVidWdCb3JkZXJDb2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVn
Qm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREZWJ1Z0JvcmRl
cldpZHRoKHdpZHRoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0RGVidWdOYW1lKFdlYlN0cmlu
ZyBuYW1lKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdOYW1lKG5hbWUpOwotfQotCi12b2lk
IFdlYkxheWVyOjpzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVs
ZWdhdGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKGRlbGVn
YXRlKTsKLX0KLQotYm9vbCBXZWJMYXllcjo6YWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5p
bWF0aW9uKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmFkZEFuaW1hdGlvbihzdGF0aWNfY2Fz
dDxXZWJBbmltYXRpb25JbXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOwot
fQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKQotewot
ICAgIG1fcHJpdmF0ZS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkKTsKLX0KLQotdm9pZCBX
ZWJMYXllcjo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyQW5p
bWF0aW9uQ29udHJvbGxlcigpLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQsIHN0YXRpY19j
YXN0PENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eT4odGFyZ2V0UHJvcGVydHkpKTsK
LX0KLQotdm9pZCBXZWJMYXllcjo6cGF1c2VBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3Vi
bGUgdGltZU9mZnNldCkKLXsKLSAgICBtX3ByaXZhdGUtPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlv
bklkLCB0aW1lT2Zmc2V0KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMo
ZG91YmxlIG1vbm90b25pY1RpbWUpCi17Ci0gICAgbV9wcml2YXRlLT5zdXNwZW5kQW5pbWF0aW9u
cyhtb25vdG9uaWNUaW1lKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVzdW1lQW5pbWF0aW9ucyhk
b3VibGUgbW9ub3RvbmljVGltZSkKLXsKLSAgICBtX3ByaXZhdGUtPnJlc3VtZUFuaW1hdGlvbnMo
bW9ub3RvbmljVGltZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbigp
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci19Ci0KLXZv
aWQgV2ViTGF5ZXI6OnRyYW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKiBvdGhlcikKLXsKLSAg
ICBBU1NFUlQob3RoZXIpOwotICAgIGlmIChvdGhlcikKLSAgICAgICAgb3RoZXItPm1fcHJpdmF0
ZS0+c2V0TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKG1fcHJpdmF0ZS0+cmVsZWFzZUxheWVyQW5p
bWF0aW9uQ29udHJvbGxlcigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0Rm9yY2VSZW5kZXJT
dXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rm9y
Y2VSZW5kZXJTdXJmYWNlKGZvcmNlUmVuZGVyU3VyZmFjZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6
OmNsZWFyUmVuZGVyU3VyZmFjZSgpCi17Ci0gICAgbV9wcml2YXRlLT5jbGVhclJlbmRlclN1cmZh
Y2UoKTsKLX0KLQotV2ViTGF5ZXI6OldlYkxheWVyKGNvbnN0IFBhc3NSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4mIG5vZGUpCi0gICAgOiBtX3ByaXZhdGUobm9kZSkKLXsKLX0KLQotV2ViTGF5ZXImIFdl
YkxheWVyOjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiYgbm9kZSkK
LXsKLSAgICBtX3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViTGF5
ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKaW5kZXggMTZlMTIwNmNhMzM1
YzNlOTgxNGRlYmVjYjRlZDhiYjJiMDJlYjc3Ny4uNTRhNzFkODA5MDgyMTViNGQzNGZkYjYzMjUw
ODc4OWZmMDMwNmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllcklt
cGwuY3BwCkBAIC0yNiwyNSArMjYsMzcxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiV2ViTGF5ZXJJbXBsLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTa01hdHJpeDQ0LmgiCisjaW5jbHVkZSAiV2Vi
QW5pbWF0aW9uSW1wbC5oIgorI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCisjaW5j
bHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRS
ZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXguaD4KKwordXNpbmcgV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRp
b247Cit1c2luZyBXZWJDb3JlOjpMYXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotUGFzc1JlZlB0cjxXZWJMYXllckltcGw+IFdlYkxheWVySW1wbDo6Y3JlYXRlKCkKK25hbWVz
cGFjZSB7CisKK1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJv
bVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQoreworICAgIGRvdWJsZSBkYXRh
WzE2XTsKKyAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7CisgICAgcmV0dXJuIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0s
IGRhdGFbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRh
dGFbOV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOworfQorCitTa01h
dHJpeDQ0IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBTa01hdHJpeDQ0IHNrTWF0cml4OworICAg
IHNrTWF0cml4LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKKyAg
ICBza01hdHJpeC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7Cisg
ICAgc2tNYXRyaXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOwor
ICAgIHNrTWF0cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsK
KyAgICBza01hdHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7
CisgICAgc2tNYXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkp
OworICAgIHNrTWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkp
KTsKKyAgICBza01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgp
KSk7CisgICAgc2tNYXRyaXguc2V0KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEo
KSkpOworICAgIHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMy
KCkpKTsKKyAgICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0z
MygpKSk7CisgICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5t
MzQoKSkpOworICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgu
bTQxKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4
Lm00MigpKSk7CisgICAgc2tNYXRyaXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJp
eC5tNDMoKSkpOworICAgIHNrTWF0cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRy
aXgubTQ0KCkpKTsKKyAgICByZXR1cm4gc2tNYXRyaXg7Cit9CisKK30gLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQorCisKK1dlYkxheWVyKiBXZWJMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYobmV3IFdlYkxheWVySW1wbCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYkxheWVySW1w
bChMYXllckNocm9taXVtOjpjcmVhdGUoKSk7CiB9CiAKLVdlYkxheWVySW1wbDo6V2ViTGF5ZXJJ
bXBsKCkKLSAgICA6IExheWVyQ2hyb21pdW0oKQorV2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwo
UGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCiB7
Ci0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhpcyBsYXllciBkb2VzIG5vdCBkcmF3IGNvbnRlbnQu
IFRoaXMgd2F5IHdlIGRvbid0IGhhdmUgdG8gb3ZlcnJpZGUKLSAgICAvLyB0aGUgYmFzZSBjbGFz
cyBpbXBsZW1lbnRhdGlvbiBvZiBkcmF3c0NvbnRlbnQoKS4KLSAgICBBU1NFUlQoIWRyYXdzQ29u
dGVudCgpKTsKIH0KIAogV2ViTGF5ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKCkKIHsKKyAgICBtX2xh
eWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKKyAgICBtX2xheWVyLT5zZXRMYXllckFuaW1hdGlv
bkRlbGVnYXRlKDApOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QoY29u
c3QgV2ViRmxvYXRSZWN0JiByZWN0KQoreworICAgIG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheVJl
Y3QocmVjdCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjppbnZhbGlkYXRlKCkKK3sKKyAgICBt
X2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OmFkZENo
aWxkKFdlYkxheWVyKiBjaGlsZCkKK3sKKyAgICBtX2xheWVyLT5hZGRDaGlsZChzdGF0aWNfY2Fz
dDxXZWJMYXllckltcGwqPihjaGlsZCktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1w
bDo6aW5zZXJ0Q2hpbGQoV2ViTGF5ZXIqIGNoaWxkLCBzaXplX3QgaW5kZXgpCit7CisgICAgbV9s
YXllci0+aW5zZXJ0Q2hpbGQoc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4oY2hpbGQpLT5sYXll
cigpLCBpbmRleCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQoV2ViTGF5
ZXIqIHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKQoreworICAgIG1fbGF5ZXItPnJlcGxh
Y2VDaGlsZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihyZWZlcmVuY2UpLT5sYXllcigpLCBz
dGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihuZXdMYXllciktPmxheWVyKCkpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkxheWVyKj4mIHdl
YkNoaWxkcmVuKQoreworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBjaGlsZHJl
bih3ZWJDaGlsZHJlbi5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hp
bGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIGNoaWxkcmVuW2ldID0gc3RhdGljX2Nhc3Q8V2Vi
TGF5ZXJJbXBsKj4od2ViQ2hpbGRyZW5baV0pLT5sYXllcigpOworICAgIG1fbGF5ZXItPnNldENo
aWxkcmVuKGNoaWxkcmVuKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUZyb21QYXJl
bnQoKQoreworICAgIG1fbGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKK30KKwordm9pZCBXZWJM
YXllckltcGw6OnJlbW92ZUFsbENoaWxkcmVuKCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbGxD
aGlsZHJlbigpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnQoY29uc3Qg
V2ViRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCit7CisgICAgbV9sYXllci0+c2V0QW5jaG9yUG9p
bnQoYW5jaG9yUG9pbnQpOworfQorCitXZWJGbG9hdFBvaW50IFdlYkxheWVySW1wbDo6YW5jaG9y
UG9pbnQoKSBjb25zdAoreworICAgIHJldHVybiBXZWJGbG9hdFBvaW50KG1fbGF5ZXItPmFuY2hv
clBvaW50KCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0
IGFuY2hvclBvaW50WikKK3sKKyAgICBtX2xheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yUG9p
bnRaKTsKK30KKworZmxvYXQgV2ViTGF5ZXJJbXBsOjphbmNob3JQb2ludFooKSBjb25zdAorewor
ICAgIHJldHVybiBtX2xheWVyLT5hbmNob3JQb2ludFooKTsKK30KKwordm9pZCBXZWJMYXllcklt
cGw6OnNldEJvdW5kcyhjb25zdCBXZWJTaXplJiBzaXplKQoreworICAgIG1fbGF5ZXItPnNldEJv
dW5kcyhzaXplKTsKK30KKworV2ViU2l6ZSBXZWJMYXllckltcGw6OmJvdW5kcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFdlYlNpemUobV9sYXllci0+Ym91bmRzKCkpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgbV9s
YXllci0+c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKTsKK30KKworYm9vbCBXZWJMYXll
ckltcGw6Om1hc2tzVG9Cb3VuZHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5tYXNr
c1RvQm91bmRzKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoV2ViTGF5
ZXIqIG1hc2tMYXllcikKK3sKKyAgICBtX2xheWVyLT5zZXRNYXNrTGF5ZXIobWFza0xheWVyID8g
c3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obWFza0xheWVyKS0+bGF5ZXIoKSA6IDApOworfQor
Cit2b2lkIFdlYkxheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKFdlYkxheWVyKiByZXBsaWNhTGF5
ZXIpCit7CisgICAgbV9sYXllci0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2FMYXllciA/IHN0YXRp
Y19jYXN0PFdlYkxheWVySW1wbCo+KHJlcGxpY2FMYXllciktPmxheWVyKCkgOiAwKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBtX2xh
eWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOworfQorCitmbG9hdCBXZWJMYXllckltcGw6Om9wYWNp
dHkoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5vcGFjaXR5KCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCit7CisgICAgbV9sYXllci0+c2V0
T3BhcXVlKG9wYXF1ZSk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJJbXBsOjpvcGFxdWUoKSBjb25zdAor
eworICAgIHJldHVybiBtX2xheWVyLT5vcGFxdWUoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6
OnNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIG1fbGF5
ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKK30KKworV2ViRmxvYXRQb2ludCBXZWJMYXllcklt
cGw6OnBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX2xheWVy
LT5wb3NpdGlvbigpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFN1YmxheWVyVHJhbnNm
b3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXll
clRyYW5zZm9ybSh0cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Ta01hdHJpeDQ0KG1hdHJpeCkpOwor
fQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRy
YW5zZm9ybShtYXRyaXgpOworfQorCitTa01hdHJpeDQ0IFdlYkxheWVySW1wbDo6c3VibGF5ZXJU
cmFuc2Zvcm0oKSBjb25zdAoreworICAgIHJldHVybiBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0
aW9uTWF0cml4KG1fbGF5ZXItPnN1YmxheWVyVHJhbnNmb3JtKCkpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBt
X2xheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NCht
YXRyaXgpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQoreworICAgIG1fbGF5ZXItPnNldFRyYW5zZm9y
bShtYXRyaXgpOworfQorCitTa01hdHJpeDQ0IFdlYkxheWVySW1wbDo6dHJhbnNmb3JtKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xh
eWVyLT50cmFuc2Zvcm0oKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRl
bnQoYm9vbCBkcmF3c0NvbnRlbnQpCit7CisgICAgbV9sYXllci0+c2V0SXNEcmF3YWJsZShkcmF3
c0NvbnRlbnQpOworfQorCitib29sIFdlYkxheWVySW1wbDo6ZHJhd3NDb250ZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9sYXllci0+ZHJhd3NDb250ZW50KCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJJbXBsOjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlM0QpCit7CisgICAgbV9sYXllci0+
c2V0UHJlc2VydmVzM0QocHJlc2VydmUzRCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRV
c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxp
dHkpCit7CisgICAgbV9sYXllci0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBh
cmVudEJhY2tmYWNlVmlzaWJpbGl0eSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRCYWNr
Z3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbG9yKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3Qg
V2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRGaWx0ZXJz
KGZpbHRlcnMpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMo
Y29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRC
YWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJzKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldERl
YnVnQm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQoreworICAgIG1fbGF5ZXItPnNl
dERlYnVnQm9yZGVyQ29sb3IoY29sb3IpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0RGVi
dWdCb3JkZXJXaWR0aChmbG9hdCB3aWR0aCkKK3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRl
cldpZHRoKHdpZHRoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnTmFtZShXZWJT
dHJpbmcgbmFtZSkKK3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z05hbWUobmFtZSk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0
ZSogZGVsZWdhdGUpCit7CisgICAgbV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShk
ZWxlZ2F0ZSk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJJbXBsOjphZGRBbmltYXRpb24oV2ViQW5pbWF0
aW9uKiBhbmltYXRpb24pCit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmFkZEFuaW1hdGlvbihzdGF0
aWNfY2FzdDxXZWJBbmltYXRpb25JbXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9u
KCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRp
b25JZCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQpOworfQor
Cit2b2lkIFdlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2Vi
QW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKK3sKKyAgICBtX2xheWVy
LT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklk
LCBzdGF0aWNfY2FzdDxDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHk+KHRhcmdldFBy
b3BlcnR5KSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbihpbnQgYW5p
bWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIG1fbGF5ZXItPnBhdXNlQW5pbWF0
aW9uKGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnN1
c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQoreworICAgIG1fbGF5ZXItPnN1
c3BlbmRBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6
cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKK3sKKyAgICBtX2xheWVyLT5y
ZXN1bWVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOworfQorCitib29sIFdlYkxheWVySW1wbDo6
aGFzQWN0aXZlQW5pbWF0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci0+aGFzQWN0aXZlQW5p
bWF0aW9uKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyhX
ZWJMYXllciogb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBzdGF0aWNfY2FzdDxX
ZWJMYXllckltcGwqPihvdGhlciktPm1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxl
cihtX2xheWVyLT5yZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJm
YWNlKQoreworICAgIG1fbGF5ZXItPnNldEZvcmNlUmVuZGVyU3VyZmFjZShmb3JjZVJlbmRlclN1
cmZhY2UpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9p
bnQgcG9zaXRpb24pCit7CisgICAgbV9sYXllci0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24p
OworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUp
Cit7CisgICAgbV9sYXllci0+c2V0U2Nyb2xsYWJsZShzY3JvbGxhYmxlKTsKK30KKwordm9pZCBX
ZWJMYXllckltcGw6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVu
dEhhbmRsZXJzKQoreworICAgIG1fbGF5ZXItPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2
ZVdoZWVsRXZlbnRIYW5kbGVycyk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRTaG91bGRT
Y3JvbGxPbk1haW5UaHJlYWQoYm9vbCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAg
bV9sYXllci0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRo
cmVhZCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4mIHJlY3RzKQoreworICAgIFdlYkNvcmU6OlJlZ2lv
biByZWdpb247CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkg
eworICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKKyAgICAgICAgcmVn
aW9uLnVuaXRlKHJlY3QpOworICAgIH0KKyAgICBtX2xheWVyLT5zZXROb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbihyZWdpb24pOworCit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRJc0NvbnRhaW5l
ckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXllci0+c2V0
SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2Vi
TGF5ZXJJbXBsOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAg
bV9sYXllci0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Cit9CisKK0xheWVyQ2hy
b21pdW0qIFdlYkxheWVySW1wbDo6bGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVy
LmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJJbXBsLmgKaW5kZXggN2U0ZTc1MDYyNDhmNGNhNWVlNjdlNzUxYzM4ZThl
YmY0YzE5YzE5Yi4uNGI0NGZiY2Q0NDY5ZmExOTY4ZTU3NGM2YzkzNDk3ZmI5Yzc0ZTQwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAgLTI2LDE4ICsyNiw4
MyBAQAogI2lmbmRlZiBXZWJMYXllckltcGxfaAogI2RlZmluZSBXZWJMYXllckltcGxfaAogCi0j
aW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMYXllckNocm9taXVtOworfQogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkxheWVyQ2hy
b21pdW0geworY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkxheWVyIHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOworICAgIGV4cGxp
Y2l0IFdlYkxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+KTsKKyAg
ICB2aXJ0dWFsIH5XZWJMYXllckltcGwoKTsKKworICAgIC8vIFdlYkxheWVyIGltcGxlbWVudGF0
aW9uLgorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3Qm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBhZGRDaGlsZChXZWJMYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBpbnNlcnRDaGlsZChXZWJMYXllciosIHNpemVfdCBpbmRleCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHJlcGxhY2VDaGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciog
bmV3TGF5ZXIpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBX
ZWJWZWN0b3I8V2ViTGF5ZXIqPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVG
cm9tUGFyZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVu
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZs
b2F0UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9p
bnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZs
b2F0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVw
bGljYUxheWVyKFdlYkxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNp
dHkoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIG9wYXF1ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zv
cm0oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0
IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNv
bnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTa01h
dHJpeDQ0IHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRE
cmF3c0NvbnRlbnQoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVu
dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29s
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmls
aXR5KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3Io
V2ViQ29sb3IpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdl
YkZpbHRlck9wZXJhdGlvbnMmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dy
b3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z05hbWUoV2ViU3RyaW5nKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QW5pbWF0aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklk
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRp
b25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSkgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9u
b3RvbmljVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMo
ZG91YmxlIG1vbm90b25pY1RpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNBY3Rp
dmVBbmltYXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBbmltYXRp
b25zVG8oV2ViTGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VSZW5k
ZXJTdXJmYWNlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3Np
dGlvbihXZWJQb2ludCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUo
Ym9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxl
cnMoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFp
blRocmVhZChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9s
bGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIE9W
RVJSSURFOworCisgICAgV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSogbGF5ZXIoKSBjb25zdDsKIAog
cHJvdGVjdGVkOgotICAgIFdlYkxheWVySW1wbCgpOwotICAgIHZpcnR1YWwgfldlYkxheWVySW1w
bCgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiBtX2xheWVyOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGVkZDQzZGYyMGQyNWNiODQwZmFkMzc1MzRkNmIzMDdk
ZjM2OTA4NjYuLmJkOGQ2Y2Q4MzNhMmU4YTQ3ZGM1NzY4OWQxZmI2ZWZlZTQ1ZmY1NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaD4KIAogI2lu
Y2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNs
dWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgImNjL0NDRm9udEF0bGFzLmgi
CiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKQEAgLTgzLDcgKzg0LDcgQEAgdm9p
ZCBXZWJMYXllclRyZWVWaWV3OjpzZXRTdXJmYWNlUmVhZHkoKQogdm9pZCBXZWJMYXllclRyZWVW
aWV3OjpzZXRSb290TGF5ZXIoV2ViTGF5ZXIgKnJvb3QpCiB7CiAgICAgaWYgKHJvb3QpCi0gICAg
ICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoKnJvb3QpOworICAg
ICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExheWVyKHN0YXRpY19jYXN0
PFdlYkxheWVySW1wbCo+KHJvb3QpLT5sYXllcigpKTsKICAgICBlbHNlCiAgICAgICAgIG1fcHJp
dmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoUGFzc1JlZlB0cjxMYXllckNocm9t
aXVtPigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmNwcAppbmRleCBhN2JmNjRkMzY4MDU3NjVkYjI2OGU3Y2UwNmM4NDI4MWFi
MjhjNGNjLi44YTNmYzg5NjQ0NTUwYjUzMWFjNzkwNDNlYTM3MDFhNjIxMzZjYjRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCIKIAog
I2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNp
bmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5
LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CkBAIC0xNDIsNyAr
MTQzLDcgQEAgUGFzc093blB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4gV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2wKICAgICBPd25QdHI8V2ViTGF5ZXJUcmVl
Vmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcgV2ViTGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50
LCBzZXR0aW5ncykpOwogICAgIGlmICghaW1wbC0+bGF5ZXJUcmVlSG9zdCgpKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihy
b290KTsKKyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihzdGF0aWNfY2Fz
dDxjb25zdCBXZWJMYXllckltcGwqPigmcm9vdCktPmxheWVyKCkpOwogICAgIHJldHVybiBpbXBs
LnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNGE5MGE5ODhkNDFjNmNlNGU1NmJh
NTlhNGQ3NmJkNjVhZmE5MTNkZC4uY2I3NTYyMzNlMWE3ZTQ4OGIxNzE1M2YzMmEyM2YwNzlkZDcw
YWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5
ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0xMDksOSArMTA5LDkgQEAgdm9pZCBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICBBU1NFUlQobV9tZWRpYVBs
YXllcik7CiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNB
Y2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fdmlkZW9MYXllci5pc051bGwoKSkgewotICAgICAg
ICBtX3ZpZGVvTGF5ZXIgPSBXZWJWaWRlb0xheWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgICAgIG1f
dmlkZW9MYXllci5zZXRPcGFxdWUobV9vcGFxdWUpOworICAgIGlmIChoYXNWaWRlbygpICYmIHN1
cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAmJiAhbV92aWRlb0xheWVyKSB7CisgICAgICAg
IG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7Cisg
ICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG1fb3BhcXVlKTsKICAgICB9
CiAjZW5kaWYKIH0KQEAgLTEzOCw4ICsxMzgsOCBAQCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6cmVwYWludCgpCiB7CiAgICAgQVNTRVJUKG1fbWVkaWFQbGF5ZXIpOwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIW1fdmlkZW9MYXllci5pc051bGwoKSAm
JiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCi0gICAgICAgIG1fdmlkZW9MYXllci5p
bnZhbGlkYXRlKCk7CisgICAgaWYgKG1fdmlkZW9MYXllciAmJiBzdXBwb3J0c0FjY2VsZXJhdGVk
UmVuZGVyaW5nKCkpCisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgp
OwogI2VuZGlmCiAgICAgbV9tZWRpYVBsYXllci0+cmVwYWludCgpOwogfQpAQCAtMTY2LDggKzE2
Niw4IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFx
dWUpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIG1fb3BhcXVlID0g
b3BhcXVlOwotICAgIGlmICghbV92aWRlb0xheWVyLmlzTnVsbCgpKQotICAgICAgICBtX3ZpZGVv
TGF5ZXIuc2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAgICBpZiAobV92aWRlb0xheWVyKQorICAgICAg
ICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShtX29wYXF1ZSk7CiAjZW5kaWYKIH0K
IApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjYW5j
ZWxMb2FkKCkKIFdlYkxheWVyKiBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnBsYXRmb3JtTGF5
ZXIoKSBjb25zdAogewogICAgIEFTU0VSVChtX3N1cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Zyk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViVmlkZW9MYXllcio+KCZtX3ZpZGVvTGF5ZXIp
OworICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIgPyBtX3ZpZGVvTGF5ZXItPmxheWVyKCkgOiAwOwog
fQogI2VuZGlmCiAKQEAgLTc0NSw3ICs3NDUsNyBAQCBib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbDo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0CiAKIGJvb2wgV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjphY2NlbGVyYXRlZFJlbmRlcmluZ0luVXNlKCkKIHsKLSAgICBy
ZXR1cm4gIW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBtX3ZpZGVvTGF5ZXIuYWN0aXZlKCk7Cisg
ICAgcmV0dXJuIG1fdmlkZW9MYXllciAmJiBtX3ZpZGVvTGF5ZXItPmFjdGl2ZSgpOwogfQogCiB2
b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50
KFdlYlZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IDM3
MzAxNWViNzU2YWYwZjQ1MTFkYWU5ODFlNmJmMmUxYjU0ZGQ0ODguLjMyOWZkOWVjMGY0ODhhOWVh
YWZlYTZlOTVjOGZiYjI0OTA0MTVjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC0yMDUsNyArMjA1LDcgQEAg
cHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAg
ICAgUmVmUHRyPFdlYkhlbHBlclBsdWdpbkltcGw+IG1faGVscGVyUGx1Z2luOwogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBXZWJWaWRlb0xheWVyIG1fdmlkZW9MYXllcjsK
KyAgICBPd25QdHI8V2ViVmlkZW9MYXllcj4gbV92aWRlb0xheWVyOwogICAgIGJvb2wgbV9zdXBw
b3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAgICAgYm9vbCBtX29wYXF1ZTsKICAgICBXZWJW
aWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCogbV92aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lcklt
cGwuY3BwCmluZGV4IDcxMzYxNzgwYjQ1YWI0YjlmMDg3MGFmYzRlMDU3ZTRjMTI5ZTQ3MjAuLmYx
MDc1NDkwNDJkZWM5MjBjYTI0YzM4ZTIwNWMyYmM4ZDRkNTk1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC0z
NjYsMTEgKzM2NiwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdU
ZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQogICAgIGlmIChtX3RleHR1cmVJZCA9PSB0ZXh0
dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2lvU3VyZmFjZUxheWVyLmlz
TnVsbCgpKTsKKyAgICBBU1NFUlQoIW1faW9TdXJmYWNlTGF5ZXIpOwogCi0gICAgaWYgKG1fdGV4
dHVyZUxheWVyLmlzTnVsbCgpKQotICAgICAgICBtX3RleHR1cmVMYXllciA9IFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3RleHR1cmVMYXllci5zZXRUZXh0dXJlSWQo
dGV4dHVyZUlkKTsKKyAgICBpZiAoIW1fdGV4dHVyZUxheWVyKQorICAgICAgICBtX3RleHR1cmVM
YXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKSk7CisgICAg
bV90ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwogCiAgICAgLy8gSWYgYW55
b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJl
CiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dl
cmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtMzkwLDExICszOTAsMTEgQEAgdm9pZCBXZWJQbHVnaW5D
b250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRoLAogICAgIGlmIChp
b1N1cmZhY2VJZCA9PSBtX2lvU3VyZmFjZUlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NF
UlQobV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpOworICAgIEFTU0VSVCghbV90ZXh0dXJlTGF5ZXIp
OwogCi0gICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJm
YWNlTGF5ZXIgPSBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCk7Ci0gICAgbV9pb1N1cmZhY2VM
YXllci5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBXZWJTaXplKHdpZHRoLCBo
ZWlnaHQpKTsKKyAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIpCisgICAgICAgIG1faW9TdXJmYWNl
TGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkpOworICAgIG1faW9T
dXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMoaW9TdXJmYWNlSWQsIFdlYlNpemUo
d2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3
ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNv
bXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwpAQCAt
NDA5LDExICs0MDksMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5n
SU9TdXJmYWNlSWQoaW50IHdpZHRoLAogdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb21t
aXRCYWNraW5nVGV4dHVyZSgpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQot
ICAgIGlmICghbV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1fdGV4dHVyZUxheWVy
LmludmFsaWRhdGUoKTsKKyAgICBpZiAobV90ZXh0dXJlTGF5ZXIpCisgICAgICAgIG1fdGV4dHVy
ZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBpZiAoIW1faW9TdXJmYWNlTGF5
ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuaW52YWxpZGF0ZSgpOworICAg
IGlmIChtX2lvU3VyZmFjZUxheWVyKQorICAgICAgICBtX2lvU3VyZmFjZUxheWVyLT5sYXllcigp
LT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIH0KIApAQCAtNDgwLDExICs0ODAsMTEgQEAgdm9pZCBX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjp6b29tTGV2ZWxDaGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwp
CiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKIHsK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKCFtX3RleHR1cmVMYXll
ci5pc051bGwoKSkKLSAgICAgICAgbV90ZXh0dXJlTGF5ZXIuc2V0T3BhcXVlKG9wYXF1ZSk7Cisg
ICAgaWYgKG1fdGV4dHVyZUxheWVyKQorICAgICAgICBtX3RleHR1cmVMYXllci0+bGF5ZXIoKS0+
c2V0T3BhcXVlKG9wYXF1ZSk7CiAKLSAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkp
Ci0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuc2V0T3BhcXVlKG9wYXF1ZSk7CisgICAgaWYgKG1f
aW9TdXJmYWNlTGF5ZXIpCisgICAgICAgIG1faW9TdXJmYWNlTGF5ZXItPmxheWVyKCktPnNldE9w
YXF1ZShvcGFxdWUpOwogI2VuZGlmCiB9CiAKQEAgLTU3Niw5ICs1NzYsOSBAQCB2b2lkIFdlYlBs
dWdpbkNvbnRhaW5lckltcGw6OndpbGxEZXN0cm95UGx1Z2luTG9hZE9ic2VydmVyKFdlYlBsdWdp
bkxvYWRPYnNlcnZlcgogV2ViTGF5ZXIqIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAogewogICAgIGlmIChtX3RleHR1cmVJZCkKLSAgICAgICAgcmV0dXJuIGNv
bnN0X2Nhc3Q8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqPigmbV90ZXh0dXJlTGF5ZXIpOworICAg
ICAgICByZXR1cm4gbV90ZXh0dXJlTGF5ZXItPmxheWVyKCk7CiAgICAgaWYgKG1faW9TdXJmYWNl
SWQpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFdlYklPU3VyZmFjZUxheWVyKj4oJm1faW9T
dXJmYWNlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV9pb1N1cmZhY2VMYXllci0+bGF5ZXIoKTsK
ICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4IDA3NGEwY2NkY2QwM2JiNTI1NmUz
NjU4MDcyYTgxZTlhNWY4M2M4ODYuLjk5OGJlNmU0MTlmODk1ZmE4MjE3OTQwMzkzNDRiYzE2ZjMx
MWY5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5D
b250YWluZXJJbXBsLmgKQEAgLTE4NiwxMCArMTg2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gQSBj
b21wb3NpdGVkIHBsdWdpbiB3aWxsIGVpdGhlciBoYXZlIG5vIGNvbXBvc2l0ZWQgbGF5ZXIsIGEg
dGV4dHVyZSBsYXllciwgb3IgYW4gSU9TdXJmYWNlIGxheWVyLgogICAgIC8vIEl0IHdpbGwgbmV2
ZXIgaGF2ZSBib3RoIGEgdGV4dHVyZSBhbmQgSU9TdXJmYWNlIG91dHB1dC4KICAgICB1bnNpZ25l
ZCBtX3RleHR1cmVJZDsKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBtX3RleHR1cmVMYXll
cjsKKyAgICBPd25QdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fdGV4dHVyZUxheWVyOwog
CiAgICAgdW5zaWduZWQgbV9pb1N1cmZhY2VJZDsKLSAgICBXZWJJT1N1cmZhY2VMYXllciBtX2lv
U3VyZmFjZUxheWVyOworICAgIE93blB0cjxXZWJJT1N1cmZhY2VMYXllcj4gbV9pb1N1cmZhY2VM
YXllcjsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFzc29jaWF0ZWQgc2Nyb2xsYmFyIGdyb3VwIG9i
amVjdCwgY3JlYXRlZCBsYXppbHkuIFVzZWQgZm9yIFBlcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGFibGVMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGEyMGU4MWQ4MTM3NTljM2Y3OTA5N2EyOWMxNDY5YjI1NzBmOWJhODkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgot
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGlj
L1dlYlNjcm9sbGFibGVMYXllci5oPgotCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJTY3JvbGxh
YmxlTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50IHBvc2l0aW9uKQotewotICAgIG1f
cHJpdmF0ZS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwotfQotCi12b2lkIFdlYlNjcm9s
bGFibGVMYXllcjo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCi17Ci0gICAgbV9wcml2
YXRlLT5zZXRTY3JvbGxhYmxlKHNjcm9sbGFibGUpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVM
YXllcjo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxl
cnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGhhdmVXaGVl
bEV2ZW50SGFuZGxlcnMpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2hvdWxk
U2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFp
blRocmVhZCk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXROb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4mIHJlY3RzKQotewotICAgIFdlYkNv
cmU6OlJlZ2lvbiByZWdpb247Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXpl
KCk7ICsraSkgewotICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKLSAg
ICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOwotICAgIH0KLSAgICBtX3ByaXZhdGUtPnNldE5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uKHJlZ2lvbik7Ci0KLX0KLQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5
ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sIGVuYWJsZSkKLXsK
LSAgICBtX3ByaXZhdGUtPnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFi
bGUpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxh
eWVyKGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rml4ZWRUb0NvbnRhaW5lckxh
eWVyKGVuYWJsZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVySW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxlTGF5ZXJJbXBsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hMjBlODFkODEzNzU5YzNmNzkwOTdhMjljMTQ2OWIyNTcwZjliYTg5Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVySW1w
bC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CisKKyNpbmNsdWRlICJMYXllckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lk
IFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQgcG9zaXRpb24p
Cit7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxQb3NpdGlvbihwb3NpdGlvbik7Cit9CisKK3Zv
aWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxhYmxlKGJvb2wgc2Nyb2xsYWJsZSkKK3sK
KyAgICBtX3ByaXZhdGUtPnNldFNjcm9sbGFibGUoc2Nyb2xsYWJsZSk7Cit9CisKK3ZvaWQgV2Vi
U2Nyb2xsYWJsZUxheWVyOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVs
RXZlbnRIYW5kbGVycykKK3sKKyAgICBtX3ByaXZhdGUtPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxl
cnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVy
OjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCBzaG91bGRTY3JvbGxPbk1haW5UaHJl
YWQpCit7CisgICAgbV9wcml2YXRlLT5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoc2hvdWxk
U2Nyb2xsT25NYWluVGhyZWFkKTsKK30KKwordm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldE5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYgcmVjdHMpCit7
CisgICAgV2ViQ29yZTo6UmVnaW9uIHJlZ2lvbjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFdlYkNvcmU6OkludFJlY3QgcmVjdCA9IHJl
Y3RzW2ldOworICAgICAgICByZWdpb24udW5pdGUocmVjdCk7CisgICAgfQorICAgIG1fcHJpdmF0
ZS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24ocmVnaW9uKTsKKworfQorCit2b2lkIFdlYlNj
cm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wg
ZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9u
TGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAgbV9wcml2YXRlLT5zZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZDFiMjBmYjQwZjdjNjRkN2UxNzYzYWE2ODY2YjE0
ZTE1ZjliYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4KLQotI2luY2x1ZGUgIlNjcm9sbGJhckxh
eWVyQ2hyb21pdW0uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi12b2lkIFdlYlNjcm9sbGJhckxheWVyOjpzZXRTY3JvbGxMYXllcihjb25zdCBX
ZWJMYXllciBsYXllcikKLXsKLSAgICBpbnQgaWQgPSBsYXllci5pc051bGwoKSA/IDAgOiBsYXll
ci5jb25zdFVud3JhcDxMYXllckNocm9taXVtPigpLT5pZCgpOwotICAgIHVud3JhcDxTY3JvbGxi
YXJMYXllckNocm9taXVtPigpLT5zZXRTY3JvbGxMYXllcklkKGlkKTsKLX0KLQotV2ViU2Nyb2xs
YmFyTGF5ZXIgV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShXZWJDb3JlOjpTY3JvbGxiYXIqIHNj
cm9sbGJhciwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIsIFBhc3NPd25QdHI8V2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkpCi17Ci0gICAgcmV0dXJuIFdlYlNjcm9s
bGJhckxheWVyKFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNy
ZWF0ZShzY3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwgMCkpOwotfQotCi1XZWJTY3JvbGxi
YXJMYXllcjo6V2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6
OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+JiBsYXllcikKLSAgICA6IFdlYkxheWVyKGxheWVyKQot
ewotfQotCi1XZWJTY3JvbGxiYXJMYXllciYgV2ViU2Nyb2xsYmFyTGF5ZXI6Om9wZXJhdG9yPShj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mIGxh
eWVyKQotewotICAgIG1fcHJpdmF0ZSA9IGxheWVyOwotICAgIHJldHVybiAqdGhpczsKLX0KLQot
V2ViU2Nyb2xsYmFyTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8U2Nyb2xsYmFyTGF5ZXJDaHJv
bWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiB1bndyYXA8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1
bT4oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzZl
OTg5NWRkYmQ1OTE5NTdlMWFkMGU0ODVjMWIwMTBmYmZmODIyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlNj
cm9sbGJhckxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5o
IgorI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1c2luZyBXZWJDb3JlOjpTY3JvbGxiYXI7
Cit1c2luZyBXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOworCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworV2ViU2Nyb2xsYmFyTGF5ZXIqIFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoV2Vi
Q29yZTo6U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciBwYWlu
dGVyLCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+IGdlb21ldHJ5KQorewor
ICAgIHJldHVybiBuZXcgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKFNjcm9sbGJhckxheWVyQ2hyb21p
dW06OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3JvbGxiYXIpLCBwYWludGVyLCBnZW9t
ZXRyeSwgMCkpOworfQorCisKK1dlYlNjcm9sbGJhckxheWVySW1wbDo6V2ViU2Nyb2xsYmFyTGF5
ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4gbGF5ZXIp
CisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIpKSkKK3sKK30K
KworV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjp+V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKCkKK3sKK30K
KworV2ViTGF5ZXIqIFdlYlNjcm9sbGJhckxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVy
biBtX2xheWVyLmdldCgpOworfQorCit2b2lkIFdlYlNjcm9sbGJhckxheWVySW1wbDo6c2V0U2Ny
b2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVyKQoreworICAgIGludCBpZCA9IGxheWVyID8gc3RhdGlj
X2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obGF5ZXIpLT5sYXllcigpLT5pZCgpIDogMDsKKyAgICBzdGF0
aWNfY2FzdDxTY3JvbGxiYXJMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldFNj
cm9sbExheWVySWQoaWQpOworfQorCisKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjcyMGY3OWM1NThlNDEwMjJhZWNkNjI5OWVjNmZkNDE4M2YxMjI5YzIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllcklt
cGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTY3JvbGxiYXJMYXllcklt
cGxfaAorI2RlZmluZSBXZWJTY3JvbGxiYXJMYXllckltcGxfaAorCisjaW5jbHVkZSA8cHVibGlj
L1dlYlNjcm9sbGJhckxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNjcm9sbGJh
ckxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTGF5ZXJJ
bXBsOworCitjbGFzcyBXZWJTY3JvbGxiYXJMYXllckltcGwgOiBwdWJsaWMgV2ViU2Nyb2xsYmFy
TGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNjcm9sbGJhckxheWVySW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5X
ZWJTY3JvbGxiYXJMYXllckltcGwoKTsKKworICAgIC8vIFdlYlNjcm9sbGJhckxheWVyIGltcGxl
bWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxheWVyKikgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlm
IC8vIFdlYlNjcm9sbGJhckxheWVySW1wbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggODM5MTRiMjYzMjk0YjUzZjU0NjYxMWFkY2E4OTgzODQ2MTY3MGFlZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU29saWRD
b2xvckxheWVyLmg+Ci0KLSNpbmNsdWRlICJXZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCi0jaW5j
bHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2Vi
U29saWRDb2xvckxheWVyIFdlYlNvbGlkQ29sb3JMYXllcjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1
cm4gV2ViU29saWRDb2xvckxheWVyKFdlYlNvbGlkQ29sb3JMYXllckltcGw6OmNyZWF0ZSgpKTsK
LX0KLQotV2ViU29saWRDb2xvckxheWVyOjpXZWJTb2xpZENvbG9yTGF5ZXIoY29uc3QgUGFzc1Jl
ZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiYgbm9kZSkKLSAgICA6IFdlYkxheWVyKG5vZGUp
Ci17Ci19Ci0KLXZvaWQgV2ViU29saWRDb2xvckxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29u
c3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZENvbG9y
KGNvbG9yKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCmluZGV4IDMzYjFh
MzBlMzhjMzBhOTU3ZGRlM2E4NjFhNDg3ZGExN2M4MWQyOTkuLjk0NDA0MjYyY2E4MWMzYTY3ZmI0
ZTIxMmYzYmZlZDg2MTk5NjBlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCkBAIC0yNiwyNCArMjYsMzcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgiCiAK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgIlNvbGlkQ29sb3JMYXllckNocm9t
aXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisKK3VzaW5nIFdlYkNvcmU6OlNvbGlk
Q29sb3JMYXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxX
ZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpjcmVhdGUoKQor
V2ViU29saWRDb2xvckxheWVyKiBXZWJTb2xpZENvbG9yTGF5ZXI6OmNyZWF0ZSgpCiB7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkpOworICAgIHJldHVy
biBuZXcgV2ViU29saWRDb2xvckxheWVySW1wbChTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCkpOwogfQogCi1XZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpXZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsKCkKLSAgICA6IFNvbGlkQ29sb3JMYXllckNocm9taXVtKCkKK1dlYlNvbGlkQ29sb3JMYXll
ckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwoUGFzc1JlZlB0cjxTb2xpZENvbG9yTGF5ZXJD
aHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwo
bGF5ZXIpKSkKIHsKLSAgICBzZXRJc0RyYXdhYmxlKHRydWUpOworICAgIG1fbGF5ZXItPmxheWVy
KCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYlNvbGlkQ29sb3JMYXllckltcGw6On5X
ZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkKIHsKIH0KIAorV2ViTGF5ZXIqIFdlYlNvbGlkQ29sb3JM
YXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwordm9p
ZCBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29s
b3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBkMjY3M2I0MmI2OGY4Y2QxZTcxMWI5MWUx
MjcwZDY3NmQ1ZDc2OWVhLi43NzQyYmE0OTJkNGM1MTRkYzM3ODI3YzBiZDZlMDUzMGRkZDQwMTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxh
eWVySW1wbC5oCkBAIC0yNiwxOCArMjYsMjggQEAKICNpZm5kZWYgV2ViU29saWRDb2xvckxheWVy
SW1wbF9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllckltcGxfaAogCi0jaW5jbHVkZSAiU29s
aWRDb2xvckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU29saWRDb2xvckxh
eWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNvbGlkQ29sb3JMYXllckNocm9taXVt
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVySW1wbDsKIAotY2xhc3Mg
V2ViU29saWRDb2xvckxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTb2xpZENvbG9yTGF5ZXJD
aHJvbWl1bSB7CitjbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsIDogcHVibGljIFdlYlNvbGlk
Q29sb3JMYXllciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29saWRDb2xv
ckxheWVySW1wbD4gY3JlYXRlKCk7Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJTb2xpZENvbG9yTGF5
ZXJJbXBsKCk7CisgICAgZXhwbGljaXQgV2ViU29saWRDb2xvckxheWVySW1wbChQYXNzUmVmUHRy
PFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtPik7CiAgICAgdmlydHVhbCB+V2ViU29s
aWRDb2xvckxheWVySW1wbCgpOworCisgICAgLy8gV2ViU29saWRDb2xvckxheWVyIGltcGxlbWVu
dGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcikgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlk
ZW9MYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVyLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYzNDIxNTVkYWNlZWFhYTdkODY2NjUz
N2Y3MDAzYWExOTMzMDQyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVyLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlZpZGVv
TGF5ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlZpZGVvTGF5ZXIgV2ViVmlkZW9M
YXllcjo6Y3JlYXRlKFdlYlZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlkZXIpCi17Ci0gICAgcmV0
dXJuIFdlYlZpZGVvTGF5ZXIoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJv
dmlkZXIpKTsKLX0KLQotV2ViVmlkZW9MYXllcjo6V2ViVmlkZW9MYXllcihQYXNzUmVmUHRyPFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAgOiBXZWJMYXllcihsYXllcikK
LXsKLX0KLQotYm9vbCBXZWJWaWRlb0xheWVyOjphY3RpdmUoKSBjb25zdAotewotICAgIHJldHVy
biBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWJmZWQ2NzQyZjJkYzdmOTA5ZmFlMjU1MzcyMjZlMWFkMGUwOWJkZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXJJ
bXBsLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYlZpZGVvTGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJWaWRlb0xheWVyQ2hyb21p
dW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYlZpZGVvTGF5ZXIqIFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZShXZWJWaWRlb0ZyYW1lUHJvdmlk
ZXIqIHByb3ZpZGVyKQoreworICAgIHJldHVybiBuZXcgV2ViVmlkZW9MYXllckltcGwoV2ViQ29y
ZTo6VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJvdmlkZXIpKTsKK30KKworV2ViVmlkZW9M
YXllckltcGw6OldlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXll
ckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIoYWRvcHRQdHIobmV3IFdlYkxheWVySW1w
bChsYXllcikpKQoreworfQorCitXZWJWaWRlb0xheWVySW1wbDo6fldlYlZpZGVvTGF5ZXJJbXBs
KCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlZpZGVvTGF5ZXJJbXBsOjpsYXllcigpCit7CisgICAg
cmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgV2ViVmlkZW9MYXllckltcGw6OmFjdGl2
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmxheWVyKCktPmxheWVyVHJlZUhvc3Qo
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODdlNGI1ZTIwZGM5NmFiNzJi
NjQwYjExYTI5YjY5ODdmZmNmZmFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApAQCAtMCwwICsxLDU0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJWaWRlb0xheWVySW1wbF9oCisjZGVmaW5lIFdlYlZpZGVvTGF5ZXJJbXBsX2gK
KworI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0xheWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7Citj
bGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYlZpZGVvTGF5ZXJJbXBsIDogcHVibGljIFdl
YlZpZGVvTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlZpZGVvTGF5ZXJJbXBsKFBh
c3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtPik7CisgICAgdmlydHVhbCB+V2Vi
VmlkZW9MYXllckltcGwoKTsKKworICAgIC8vIFdlYlZpZGVvTGF5ZXIgaW1wbGVtZW50YXRpb24u
CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgYWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxh
eWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlZpZGVvTGF5ZXJJbXBs
X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDBi
ZDNlYTExNmU0YzA1MmRlYWEwNWU2NjMwNzY0ZTMyZjljYTQxNjguLjJhZjM4MDZlMDNkODE1N2U1
NWE3MDUxNzg3ODA5Mzg2MDAzNGNmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKQEAgLTE4Myw2ICsxODMsMTEgQEAKICN1bmRlZiBwb3cKICNpbmNsdWRl
IDxjbWF0aD4gLy8gZm9yIHN0ZDo6cG93CiAKKy8vIFdoZWVlISBHZXQgYWNjZXNzIHRvIHNldFNj
cm9sbExheWVyKCkKKyNkZWZpbmUgcHJpdmF0ZSBwdWJsaWMKKyNpbmNsdWRlICJTY3JvbGxpbmdD
b29yZGluYXRvci5oIgorI3VuZGVmIHByaXZhdGUKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC00MTAsNiArNDE1LDcgQEAgV2ViVmlld0ltcGw6
OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1faXNDYW5jZWxpbmdG
dWxsU2NyZWVuKGZhbHNlKQogICAgICwgbV9iZW5jaG1hcmtTdXBwb3J0KHRoaXMpCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICwgbV9yb290TGF5ZXIoMCkKICAgICAsIG1f
cm9vdEdyYXBoaWNzTGF5ZXIoMCkKICAgICAsIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0
aXZlKGZhbHNlKQogICAgICwgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFsc2UpCkBAIC0z
NTE0LDYgKzM1MjAsMTAgQEAgYm9vbCBXZWJWaWV3SW1wbDo6YWxsb3dzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZygpCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcihHcmFwaGlj
c0xheWVyKiBsYXllcikKIHsKICAgICBtX3Jvb3RHcmFwaGljc0xheWVyID0gbGF5ZXI7CisgICAg
bV9yb290TGF5ZXIgPSBsYXllciA/IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOworCisgICAg
aWYgKCFsYXllcikKKyAgICAgICAgbV9wYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zZXRT
Y3JvbGxMYXllcigwKTsKIAogICAgIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShs
YXllcik7CiAgICAgaWYgKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KSB7CkBAIC0zNTI3LDEx
ICszNTM3LDggQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhp
Y3NMYXllciogbGF5ZXIpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRT
Y3JvbGxMYXllcihzY3JvbGxMYXllcik7CiAgICAgfQogCi0gICAgaWYgKGxheWVyKQotICAgICAg
ICBtX3Jvb3RMYXllciA9ICpsYXllci0+cGxhdGZvcm1MYXllcigpOwotCiAgICAgaWYgKCFtX2xh
eWVyVHJlZVZpZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5
ZXIobGF5ZXIgPyAmbV9yb290TGF5ZXIgOiAwKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LnNl
dFJvb3RMYXllcihtX3Jvb3RMYXllcik7CiAKICAgICBJbnRSZWN0IGRhbWFnZWRSZWN0KDAsIDAs
IG1fc2l6ZS53aWR0aCwgbV9zaXplLmhlaWdodCk7CiAgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZSkKQEAgLTM2NDQsNyArMzY1MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OnNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAg
bV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5z
ZXR0aW5ncygpLT5zaG93RGVidWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdC0+c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAgIG1fbGF5
ZXJUcmVlVmlldy5pbml0aWFsaXplKHRoaXMsIG1fcm9vdExheWVyLCBsYXllclRyZWVWaWV3U2V0
dGluZ3MpOworICAgICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6ZSh0aGlzLCAqbV9yb290
TGF5ZXIsIGxheWVyVHJlZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVW
aWV3LmlzTnVsbCgpKSB7CiAgICAgICAgICAgICBpZiAobV93ZWJTZXR0aW5ncy0+YXBwbHlEZWZh
dWx0RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCktPmRldmljZVNjYWxl
RmFjdG9yKCkgIT0gMSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRldmljZVNj
YWxlRmFjdG9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5k
ZXggMzk3ODM2ODBmYTE5ODk4ODZjNDYwYjEzZDQwZGQxNDA0MWEyYTQyYi4uMTIzZjM4YzRjMzVi
ZGU5NzEwOThkZGMyNjBkODgxNDM1YTI5MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oCkBAIC04MTQsNyArODE0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3Jl
OjpJbnRSZWN0IG1fcm9vdExheWVyU2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogICAgIFdlYkxheWVy
VHJlZVZpZXcgbV9sYXllclRyZWVWaWV3OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAg
IFdlYkxheWVyKiBtX3Jvb3RMYXllcjsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jv
b3RHcmFwaGljc0xheWVyOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmU7CiAgICAgYm9vbCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmlu
ZGV4IGE1Y2E1NTEyNGMyOTA0NzJjMjc0N2QwOTM5ZmIwMGRhMjA1OWY3N2QuLjQ5NDhmOTdjYzU4
OGEwYjViYjIwMGQxNDM5YmM0ZjkxNzliNDlmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTIyLDEz
ICsxMjIsMTMgQEAgVEVTVChJbWFnZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCiAg
ICAgUmVmUHRyPEltYWdlPiBub25PcGFxdWVJbWFnZSA9IFRlc3RJbWFnZTo6Y3JlYXRlKEludFNp
emUoMTAwLCAxMDApLCBmYWxzZSk7CiAgICAgQVNTRVJUX1RSVUUobm9uT3BhcXVlSW1hZ2UuZ2V0
KCkpOwogCi0gICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLmlz
TnVsbCgpKTsKKyAgICBBU1NFUlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigp
KTsKIAogICAgIGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShvcGFxdWVJbWFnZS5n
ZXQoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLm9w
YXF1ZSgpKTsKKyAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCkt
Pm9wYXF1ZSgpKTsKIAogICAgIGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShub25P
cGFxdWVJbWFnZS5nZXQoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRl
bnRzTGF5ZXIoKS5vcGFxdWUoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNv
bnRlbnRzTGF5ZXIoKS0+b3BhcXVlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IDY2NzIwMDQxMDM4
NTk2MzliZWE2MjNjY2RlZjUxYjkyMzIzMGI2ZDAuLjliOGU1OGNhMTAwZTc3ZDkwMzY1YmQ0NjI4
YjFkZTM4MTA5Mzc0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViTGF5ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxh
eWVyVGVzdC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIu
aD4KIAogI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNp
bmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViQ29udGVudExheWVyQ2xpZW50Lmg+CkBAIC03Niw5ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICAg
ICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgICAgICBtX3Jvb3RM
YXllciA9IFdlYkxheWVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0
cihXZWJMYXllcjo6Y3JlYXRlKCkpOwogICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2No
ZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgICAgICBFWFBFQ1RfVFJV
RShtX3ZpZXcuaW5pdGlhbGl6ZSgmbV9jbGllbnQsIG1fcm9vdExheWVyLCBXZWJMYXllclRyZWVW
aWV3OjpTZXR0aW5ncygpKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdmlldy5pbml0aWFsaXpl
KCZtX2NsaWVudCwgKm1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7
CiAgICAgICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAg
ICAgfQogCkBAIC04NywxNCArODgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBXZSBtYXkgZ2V0
IGFueSBudW1iZXIgb2Ygc2NoZWR1bGVDb21wb3NpdGUgY2FsbHMgZHVyaW5nIHNodXRkb3duLgog
ICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMo
QW55TnVtYmVyKCkpOwogICAgICAgICBtX3ZpZXcuc2V0Um9vdExheWVyKDApOwotICAgICAgICBt
X3Jvb3RMYXllci5yZXNldCgpOworICAgICAgICBtX3Jvb3RMYXllci5jbGVhcigpOwogICAgICAg
ICBtX3ZpZXcucmVzZXQoKTsKICAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93
bigpOwogICAgIH0KIAogcHJvdGVjdGVkOgogICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50
IG1fY2xpZW50OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXll
cj4gbV9yb290TGF5ZXI7CiAgICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCkBAIC0x
MDQsNzMgKzEwNSw3MyBAQCBURVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiB7CiAgICAgLy8g
QmFzZSBsYXllci4KICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUo
KSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgIFdlYkxheWVyIGxheWVyID0gV2ViTGF5ZXI6OmNy
ZWF0ZSgpOwotICAgIG1fcm9vdExheWVyLmFkZENoaWxkKGxheWVyKTsKKyAgICBPd25QdHI8V2Vi
TGF5ZXI+IGxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RM
YXllci0+YWRkQ2hpbGQobGF5ZXIuZ2V0KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhw
ZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKICAgICBXZWJGbG9hdFBvaW50IHBvaW50KDMsIDQpOwog
ICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExl
YXN0KDEpKTsKLSAgICBsYXllci5zZXRBbmNob3JQb2ludChwb2ludCk7CisgICAgbGF5ZXItPnNl
dEFuY2hvclBvaW50KHBvaW50KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9u
cygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXIuYW5jaG9yUG9pbnQoKSk7
CisgICAgRVhQRUNUX0VRKHBvaW50LCBsYXllci0+YW5jaG9yUG9pbnQoKSk7CiAKICAgICBFWFBF
Q1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7
CiAgICAgZmxvYXQgYW5jaG9yWiA9IDU7Ci0gICAgbGF5ZXIuc2V0QW5jaG9yUG9pbnRaKGFuY2hv
clopOworICAgIGxheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yWik7CiAgICAgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEoYW5jaG9y
WiwgbGF5ZXIuYW5jaG9yUG9pbnRaKCkpOworICAgIEVYUEVDVF9FUShhbmNob3JaLCBsYXllci0+
YW5jaG9yUG9pbnRaKCkpOwogCiAgICAgV2ViU2l6ZSBzaXplKDcsIDgpOwogICAgIEVYUEVDVF9D
QUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAg
ICBsYXllci5zZXRCb3VuZHMoc2l6ZSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKICAg
ICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVD
VF9FUShzaXplLCBsYXllci5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKHNpemUsIGxheWVyLT5i
b3VuZHMoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUo
KSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyh0cnVlKTsK
KyAgICBsYXllci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyLm1hc2tz
VG9Cb3VuZHMoKSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSk7CiAK
ICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55
TnVtYmVyKCkpOwotICAgIFdlYkxheWVyIG90aGVyTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7
Ci0gICAgbV9yb290TGF5ZXIuYWRkQ2hpbGQob3RoZXJMYXllcik7CisgICAgT3duUHRyPFdlYkxh
eWVyPiBvdGhlckxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jv
b3RMYXllci0+YWRkQ2hpbGQob3RoZXJMYXllci5nZXQoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9j
bGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVy
LnNldE1hc2tMYXllcihvdGhlckxheWVyKTsKKyAgICBsYXllci0+c2V0TWFza0xheWVyKG90aGVy
TGF5ZXIuZ2V0KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2Ns
aWVudCk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSku
VGltZXMoQXRMZWFzdCgxKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IDAuMTIzZjsKLSAgICBsYXll
ci5zZXRPcGFjaXR5KG9wYWNpdHkpOworICAgIGxheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwog
ICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQ
RUNUX0VRKG9wYWNpdHksIGxheWVyLm9wYWNpdHkoKSk7CisgICAgRVhQRUNUX0VRKG9wYWNpdHks
IGxheWVyLT5vcGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxl
Q29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVl
KTsKKyAgICBsYXllci0+c2V0T3BhcXVlKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFy
RXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIub3BhcXVlKCkp
OworICAgIEVYUEVDVF9UUlVFKGxheWVyLT5vcGFxdWUoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTCht
X2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5
ZXIuc2V0UG9zaXRpb24ocG9pbnQpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CiAg
ICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBF
Q1RfRVEocG9pbnQsIGxheWVyLnBvc2l0aW9uKCkpOworICAgIEVYUEVDVF9FUShwb2ludCwgbGF5
ZXItPnBvc2l0aW9uKCkpOwogCiAgICAgLy8gVGV4dHVyZSBsYXllci4KICAgICBFWFBFQ1RfQ0FM
TChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAg
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3Jvb3RMYXllci5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXIp
OworICAgIE93blB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gdGV4dHVyZUxheWVyID0gYWRv
cHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXll
ci0+YWRkQ2hpbGQodGV4dHVyZUxheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQs
IHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIHRleHR1cmVMYXll
ci5zZXRUZXh0dXJlSWQoMyk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMyk7CiAg
ICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIEVY
UEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEp
KTsKLSAgICB0ZXh0dXJlTGF5ZXIuc2V0RmxpcHBlZCh0cnVlKTsKKyAgICB0ZXh0dXJlTGF5ZXIt
PnNldEZsaXBwZWQodHJ1ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0
ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKICAgICBXZWJGbG9hdFJlY3QgdXZSZWN0KDAuMWYsIDAu
MWYsIDAuOWYsIDAuOWYpOwotICAgIHRleHR1cmVMYXllci5zZXRVVlJlY3QodXZSZWN0KTsKKyAg
ICB0ZXh0dXJlTGF5ZXItPnNldFVWUmVjdCh1dlJlY3QpOwogICAgIE1vY2s6OlZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKIApAQCAtMTc4LDE0ICsxNzksMTQgQEAgVEVT
VF9GKFdlYkxheWVyVGVzdCwgQ2xpZW50KQogICAgIE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQg
Y29udGVudENsaWVudDsKICAgICBFWFBFQ1RfQ0FMTChjb250ZW50Q2xpZW50LCBwYWludENvbnRl
bnRzKF8sIF8sIF8pKS5UaW1lcyhBbnlOdW1iZXIoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGll
bnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJDb250
ZW50TGF5ZXIgY29udGVudExheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNvbnRlbnRD
bGllbnQpOwotICAgIG1fcm9vdExheWVyLmFkZENoaWxkKGNvbnRlbnRMYXllcik7CisgICAgT3du
UHRyPFdlYkNvbnRlbnRMYXllcj4gY29udGVudExheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExh
eWVyOjpjcmVhdGUoJmNvbnRlbnRDbGllbnQpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQo
Y29udGVudExheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29t
cG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGNvbnRlbnRMYXllci5zZXREcmF3c0Nv
bnRlbnQoZmFsc2UpOworICAgIGNvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50
KGZhbHNlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQp
OwotICAgIEVYUEVDVF9GQUxTRShjb250ZW50TGF5ZXIuZHJhd3NDb250ZW50KCkpOworICAgIEVY
UEVDVF9GQUxTRShjb250ZW50TGF5ZXItPmxheWVyKCktPmRyYXdzQ29udGVudCgpKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVW
aWV3VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZp
ZXdUZXN0LmNwcAppbmRleCBiZWMyYzYwMzVhY2FlZjA3MzQwYTFiOGMzNjRlMWE5OTA4MmYzY2Q1
Li4xYzE2MDJjMjM0MTY5OWQ5ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApA
QCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7
CiAgICAgICAgIGluaXRpYWxpemVDb21wb3NpdG9yKCk7Ci0gICAgICAgIG1fcm9vdExheWVyID0g
V2ViTGF5ZXI6OmNyZWF0ZSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6
ZShjbGllbnQoKSwgbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsK
KyAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgKm1fcm9vdExheWVy
LCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIG1fdmlldy5zZXRTdXJm
YWNlUmVhZHkoKTsKICAgICB9CiAKQEAgLTcwLDEzICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAg
IE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKGNsaWVudCgpKTsKIAogICAgICAgICBt
X3ZpZXcuc2V0Um9vdExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5yZXNldCgpOworICAg
ICAgICBtX3Jvb3RMYXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVzZXQoKTsKICAgICAg
ICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogcHJvdGVjdGVk
OgotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290
TGF5ZXI7CiAgICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158957</attachid>
            <date>2012-08-16 17:29:36 -0700</date>
            <delta_ts>2012-08-17 17:17:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94174-20120816172901.patch</filename>
            <type>text/plain</type>
            <size>202033</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1ODIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkNjE1ZmJlYzdhYTI2
NGRkZmZiYWM2MGIwMDI5NmY1OTI2MGE4NjMyLi5jODY3YWNlM2YzNzI4M2Y0OWZmMTZmNzhjZWFj
MjBiZGNlODU2MmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw1NCBAQAogMjAxMi0wOC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1
bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFs
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZXMgV2ViTGF5ZXIgZnJvbSBhIHZhbHVlIHR5cGUgdG8gYSBwdXJlIHZpcnR1
YWwgaW50ZXJmYWNlIGFuZCBjaGFuZ2VzIFdlYipMYXllcnMgZnJvbSBzdWJ0eXBlcyB0bworICAg
ICAgICBzdGFuZGFsb25lIHR5cGVzIHRoYXQgaGF2ZSBhIFdlYkxheWVyLiBUaGlzIGJldHRlciBp
c29sYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgaW50ZXJmYWNlIGFuZCwgc2luY2UK
KyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gcmUtd3JhcCBhbiBleGlzdGluZyBsYXllciwg
bWFrZXMgY2xlYW51cCBleHBsaWNpdCBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgY2FsbGVyIHRv
IGludm9rZQorICAgICAgICBzcGVjaWFsIGNsZWFudXAgbWV0aG9kcyBiZWZvcmUgc2h1dGRvd24u
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmg6CisgICAgICAg
IChXZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oOgorICAgICAgICAoV2Vi
SU9TdXJmYWNlTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVy
Lmg6CisgICAgICAgIChXZWJJbWFnZUxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjp+V2ViTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaDoKKyAgICAgICAgKFdlYlNjcm9sbGFibGVMYXllcik6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg6CisgICAgICAg
IChXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNvbGlk
Q29sb3JMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllcjo6fldlYlNvbGlkQ29s
b3JMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYlZpZGVvTGF5ZXIpOgorCisyMDEyLTA4LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGph
bWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgdW5uZWNlc3Nh
cnkgdHJlZSBoaWVyYXJjaHkgaW5zcGVjdGlvbiBBUElzIGZyb20gV2ViTGF5ZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MjI5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXMgaXQgdHVybnMgb3V0LCB0
aGVzZSBBUElzIGFyZSBuZWVkZWQuIFdpdGhvdXQgdGhlbSwgdGhlcmUgaXMgbm8gd2F5IHRvIHJl
LXdyYXAgYW4gZXhpc3RpbmcgbGF5ZXIgc28gd2UgY2FuCisgICAgICAgIGtub3cgdGhhdCB3aGVu
IGFsbCBXZWJMYXllciB3cmFwcGVycyBvZiBhIGdpdmVuIGxheWVyIGdvIGF3YXkgdGhhdCBsYXll
ciB3aWxsIG5ldmVyIGJlIGV4cG9zZWQgdG8gdGhlIHB1YmxpYyBBUEkKKyAgICAgICAgYWdhaW4g
YW5kIHJ1biBhcHByb3ByaWF0ZSBjbGVhbnVwIGNvZGUuCisKKyAgICAgICAgKiBjaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYkxheWVyKToKKworMjAxMi0wOC0xNiAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0g
UmVtb3ZlIHVubmVjZXNzYXJ5IHRyZWUgaGllcmFyY2h5IGluc3BlY3Rpb24gQVBJcyBmcm9tIFdl
YkxheWVyCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NDIyOQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2E0MjYyM2Y0NGQxNmQwYTdhMzQyMzUwOTlhYTM2MzE2YzNk
ZDVlNC4uNDJiMmU0OTU5YWJjZTJkZTlhNWZiMjg3MjJjOWRlNzk5MGUwNzNkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSw1ICsxLDExOSBAQAogMjAxMi0wOC0xNiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JA
Y2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20g
YSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFsIGludGVyZmFjZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQxNzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHVwZGF0ZXMgV2ViQ29yZSBj
b2RlIGZvciB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIGNoYW5nZXMuIENsYXNzZXMgdGhhdCBoYXZl
IG93bmVyc2hpcCBvZiBzcGVjaWZpYyBsYXllcgorICAgICAgICB0eXBlcyAoc3VjaCBhcyBEcmF3
aW5nQnVmZmVyQ2hyb21pdW0sIENhbnZhczJETGF5ZXJCcmlkZ2UgYW5kIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW0pIGhvbGQgb3duZXJzaGlwCisgICAgICAgIG9mIGEgc3BlY2lmaWMgdHlw
ZSBhbmQgYSBwb2ludGVyIHRvIHRoZSBXZWJMYXllciB0byBHcmFwaGljc0xheWVyQ2hyb21pdW0g
dG8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIGxheWVyCisgICAgICAgIHRyZWUuIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSBob2xkcyBhIFdlYkNvbnRlbnRMYXllciBhbmQgKG9wdGlvbmFsbHkpIGEg
V2ViSW1hZ2VMYXllciBhbmQgV2ViTGF5ZXIgKGZvcgorICAgICAgICBtX3RyYW5zZm9ybUxheWVy
KSBhbmQgYXNzZW1ibGVzIHRoZSBmaW5hbCBsYXllciB0cmVlLgorCisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OlNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpzZXRTY3JvbGxM
YXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNl
dEhvcml6b250YWxTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvclByaXZhdGU6OnNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpzY3JvbGxMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xheWVyKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2Nyb2xsYmFyTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbExheWVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXROb25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hl
ZWxFdmVudEhhbmRsZXJDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJc0NvbnRhaW5l
ckZvckZpeGVkUG9zaXRpb25MYXllcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0OjpBY2NlbGVyYXRlZERldmljZUNv
bnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0OjpjbGVh
ckxheWVyKToKKyAgICAgICAgKEFjY2VsZXJhdGVkRGV2aWNlQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpBY2NlbGVyYXRlZERldmljZUNvbnRleHQ6OnByZXBhcmVGb3JEcmF3KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJCcmlkZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6fkNhbnZhczJETGF5ZXJCcmlk
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6c2tDYW52YXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6bGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6Y29udGV4dEFjcXVpcmVkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbnZhczJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6RHJhd2luZ0J1ZmZlclByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclByaXZhdGU6On5EcmF3aW5nQnVm
ZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6bGF5
ZXIpOgorICAgICAgICAoRHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06On5HcmFwaGljc0xheWVyQ2hy
b21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVO
YW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUZy
b21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y2xlYXJCYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRDb250ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5SW5S
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01lZGlhKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUbyk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c3VzcGVuZEFuaW1hdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpyZXN1bWVBbmltYXRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkTGlua0hpZ2hs
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmRpZEZpbmlz
aExpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNob3JQb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkcmVuVHJhbnNm
b3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTWFz
a3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzU2NhbGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRz
TGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5
ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpo
YXNDb250ZW50c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6Y29udGVudExheWVyKToKKyAgICAgICAgKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNvbnRlbnRzTGF5ZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cm9vdExheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisKKzIwMTItMDgtMTYgIEph
bWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21pdW1d
IFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBpbnNwZWN0aW9uIEFQSXMgZnJvbSBX
ZWJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTQyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
d2VhayB1cGRhdGVMYXllclByZXNlcnZlczNEKCkgbG9naWMgdG8gdXNlIHRoZSBleGlzdGluZyBH
cmFwaGljc0xheWVyIHRyZWUgaGllcmFyY2h5IGluc3RlYWQgb2YgcHVsbGluZyB0aGUKKyAgICAg
ICAgaGllcmFyY2h5IG9mZiBvZiBXZWJMYXllci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorCisyMDEy
LTA4LTE2ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKICAgICAgICAg
W2Nocm9taXVtXSBSZW1vdmUgdW5uZWNlc3NhcnkgdHJlZSBoaWVyYXJjaHkgaW5zcGVjdGlvbiBB
UElzIGZyb20gV2ViTGF5ZXIKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTk0MjI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjYyNjBlOGQ5
NTM2YjM2ODFiYWYxNGExNzA4MWI3YWU5NjE3OGNjMC4uNTUyMmJjNGRiYTJhMWFmNTRlNDlkMjk4
MDg3MDQ4MDU1NDllYTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwy
MjkgQEAKIDIwMTItMDgtMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
IAorICAgICAgICBbY2hyb21pdW1dIENoYW5nZSBXZWJMYXllciBmcm9tIGEgY29uY3JldGUgdHlw
ZSB0byBhIHB1cmUgdmlydHVhbCBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk0MTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyB1cGRhdGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0
aGUgV2ViKkxheWVyIGZhbWlseSB0byB0aGUgbmV3IGRlc2lnbiBhbmQgdXBkYXRlcyBjYWxsZXJz
IGluIFdlYlZpZXdJbXBsIC8KKyAgICAgICAgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LgorCisg
ICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpOb25D
b21wb3NpdGVkQ29udGVudEhvc3QpOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q6OnNldFNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRl
ZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydCk6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdDo6c2Nyb2xsTGF5ZXIpOgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVk
Q29udGVudEhvc3QuaDoKKyAgICAgICAgKiBzcmMvV2ViQ29udGVudExheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVudExheWVySW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6On5XZWJDb250ZW50TGF5ZXJJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6Y2xlYXJDbGllbnQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXRVc2VMQ0RUZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6c2V0RHJhd0NoZWNrZXJib2FyZEZv
ck1pc3NpbmdUaWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OnBh
aW50Q29udGVudHMpOgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmg6CisgICAg
ICAgIChXZWJDb250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6fldlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGw6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsOjpzZXRUZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OnNldEZsaXBwZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw6OnNldFVWUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbDo6c2V0T3BhcXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRQcmVtdWx0aXBsaWVkQWxwaGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OndpbGxNb2RpZnlUZXh0dXJlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRSYXRlTGlt
aXRDb250ZXh0KToKKyAgICAgICAgKFdlYlRleHR1cmVVcGRhdGVySW1wbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRleHR1cmVVcGRhdGVySW1wbDo6V2ViVGV4dHVyZVVwZGF0ZXJJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpwcmVwYXJlVGV4dHVy
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6Y29udGV4
dCk6CisgICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgor
ICAgICAgICAqIHNyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuY3BwOiBSZW5hbWVkIGZyb20gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXIuY3BwLgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklPU3VyZmFjZUxheWVySW1wbDo6V2ViSU9TdXJmYWNlTGF5ZXJJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjp+V2ViSU9TdXJm
YWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpz
ZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5
ZXJJbXBsOjpsYXllcik6CisgICAgICAgICogc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIu
aC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYklP
U3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXll
ci5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZUxheWVy
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZUxheWVySW1wbDo6V2ViSW1hZ2VM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZUxheWVySW1wbDo6fldlYkltYWdl
TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VMYXllckltcGw6OmxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViSW1hZ2VMYXllckltcGw6OnNldEJpdG1hcCk6CisgICAgICAg
ICogc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbWFnZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkltYWdlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMv
V2ViTGF5ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJMYXllckltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjpXZWJMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
On5XZWJMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6YWRkQ2hpbGQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6Omluc2VydENoaWxkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnNldENoaWxkcmVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBs
OjpyZW1vdmVGcm9tUGFyZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpyZW1v
dmVBbGxDaGlsZHJlbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5jaG9y
UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmFuY2hvclBvaW50KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRBbmNob3JQb2ludFopOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OmFuY2hvclBvaW50Wik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c2V0Qm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpi
b3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldE1hc2tzVG9Cb3VuZHMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6Om1hc2tzVG9Cb3VuZHMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRPcGFjaXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpvcGFj
aXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6Om9wYXF1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVySW1wbDo6c2V0UG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnBv
c2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRTdWJsYXllclRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c3VibGF5ZXJUcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OmRyYXdzQ29udGVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0UHJl
c2VydmVzM0QpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QmFj
a2dyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRGaWx0ZXJz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RGVidWdOYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJJbXBsOjpzZXRBbmltYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW1wbDo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjpyZW1vdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnBh
dXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzdXNwZW5kQW5p
bWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVzdW1lQW5pbWF0aW9u
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpjbGVhclJlbmRlclN1cmZhY2UpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRTY3JvbGxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllckltcGw6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXll
cnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEZpeGVkVG9Db250YWluZXJM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAq
IHNyYy9XZWJMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViTGF5
ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlldy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXc6OnNldFJvb3RMYXllcik6CisgICAgICAgICogc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVhZHlTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJl
cGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnNldE9w
YXF1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cGxhdGZv
cm1MYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6YWNj
ZWxlcmF0ZWRSZW5kZXJpbmdJblVzZSk6CisgICAgICAgICogc3JjL1dlYk1lZGlhUGxheWVyQ2xp
ZW50SW1wbC5oOgorICAgICAgICAoV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsKToKKyAgICAgICAg
KiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
dWdpbkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldE9wYXF1ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkNvbnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIpOgor
ICAgICAgICAqIHNyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmg6CisgICAgICAgIChXZWJQbHVn
aW5Db250YWluZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYWJsZUxheWVySW1wbC5j
cHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxl
TGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xs
YWJsZUxheWVyOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9s
bGFibGVMYXllcjo6c2V0U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFi
bGVMYXllcjo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNjcm9sbGFibGVMYXllcjo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVyOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JG
aXhlZFBvc2l0aW9uTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVy
OjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJTY3JvbGxiYXJM
YXllckltcGwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2Nyb2xsYmFyTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJh
ckxheWVySW1wbDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2Nyb2xsYmFyTGF5ZXJJbXBsOjp+V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNjcm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsTGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJT
Y3JvbGxiYXJMYXllckltcGwuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKToKKyAgICAgICAgKiBz
cmMvV2ViU29saWRDb2xvckxheWVySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlk
Q29sb3JMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViU29saWRDb2xvckxheWVy
SW1wbDo6V2ViU29saWRDb2xvckxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlk
Q29sb3JMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNvbGlkQ29sb3JMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAg
ICogc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JMYXllckltcGwpOgorICAgICAg
ICAqIHNyYy9XZWJWaWRlb0xheWVySW1wbC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlkZW9MYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9MYXllckltcGw6OldlYlZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VmlkZW9MYXllckltcGw6On5XZWJWaWRlb0xheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZGVvTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJ
bXBsOjphY3RpdmUpOgorICAgICAgICAqIHNyYy9XZWJWaWRlb0xheWVySW1wbC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJWaWRlb0xheWVy
SW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnNldFJvb3RHcmFwaGljc0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNl
dElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAg
ICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorICAgICAgICAqIHRlc3RzL0ltYWdlTGF5ZXJDaHJv
bWl1bVRlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisgICAgICAgICogdGVzdHMv
V2ViTGF5ZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5j
cHA6CisKKzIwMTItMDgtMTYgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIFJlbW92ZSB1bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBp
bnNwZWN0aW9uIEFQSXMgZnJvbSBXZWJMYXllcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQyMjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgZGVhZCBXZWJMYXllciBmdW5jdGlvbiBpbXBsZW1l
bnRhdGlvbnMgYW5kIHRlc3RzIG9mIHNhbWUuCisKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXIuY3Bw
OgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVGVzdC5jcHA6CisKKzIwMTItMDgtMTYgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIFJl
bW92ZSB1bm5lY2Vzc2FyeSB0cmVlIGhpZXJhcmNoeSBpbnNwZWN0aW9uIEFQSXMgZnJvbSBXZWJM
YXllcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQy
MjkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250
ZW50TGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExh
eWVyLmgKaW5kZXggNzMzNmJmYWJjZDc0NjE4MjE4YjlkZWRlYmEwMWJjMjczMjMyNmM2Ny4uNDUz
ODFlZTkzZmYwNjE4MGM1YzFhYjVkOGEwMzA1NjlmM2NkNTM1NSAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCkBAIC0yOSw1MyArMjks
MzYgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJTY3JvbGxhYmxlTGF5
ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGVudExheWVyQ2hyb21pdW07
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50Owot
Y2xhc3MgV2ViQ29udGVudExheWVySW1wbDsKIAotY2xhc3MgV2ViQ29udGVudExheWVyIDogcHVi
bGljIFdlYlNjcm9sbGFibGVMYXllciB7CitjbGFzcyBXZWJDb250ZW50TGF5ZXIgewogcHVibGlj
OgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkNvbnRlbnRMYXllciBjcmVhdGUoV2ViQ29u
dGVudExheWVyQ2xpZW50Kik7CisgICAgLy8gVGhlIGNsaWVudCBtdXN0IG91dGxpdmUgdGhlIFdl
YkNvbnRlbnRMYXllci4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250ZW50TGF5ZXIq
IGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqKTsKIAotICAgIFdlYkNvbnRlbnRMYXllcigp
IHsgfQotICAgIFdlYkNvbnRlbnRMYXllcihjb25zdCBXZWJDb250ZW50TGF5ZXImIGxheWVyKSA6
IFdlYlNjcm9sbGFibGVMYXllcihsYXllcikgeyB9CiAgICAgdmlydHVhbCB+V2ViQ29udGVudExh
eWVyKCkgeyB9Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29udGVu
dExheWVyJiBsYXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgLy8gQ2FsbGVkIHdoZW4gdGhlIFdl
YkNvbnRlbnRMYXllckNsaWVudCBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGQgbm90IGJlIHVzZWQu
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CisgICAgLy8gVGhlIFdlYkNv
bnRlbnRMYXllciBoYXMgb3duZXJzaGlwIG9mIHRoaXMgd3JhcHBlci4KKyAgICB2aXJ0dWFsIFdl
YkxheWVyKiBsYXllcigpID0gMDsKIAogICAgIC8vIFNldCB0byB0cnVlIGlmIHRoZSBiYWNrc2lk
ZSBvZiB0aGlzIGxheWVyJ3MgY29udGVudHMgc2hvdWxkIGJlIHZpc2libGUgd2hlbiBjb21wb3Np
dGVkLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXREb3VibGVTaWRlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9v
bCkgPSAwOwogCiAgICAgLy8gU2V0IHRvIGFwcGx5IGEgc2NhbGUgZmFjdG9yIHVzZWQgd2hlbiBw
YWludGluZyBhbmQgZHJhd2luZyB0aGlzIGxheWVyJ3MgY29udGVudC4gRGVmYXVsdHMgdG8gMS4w
LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgPSAwOwogCiAgICAgLy8gU2V0IHRv
IHJlbmRlciB0ZXh0IGluIHRoaXMgbGF5ZXIgd2l0aCBMQ0QgYW50aWFsaWFzaW5nLiBPbmx5IHNl
dCBpZiB5b3Uga25vdyB0aGF0IHRoaXMgbGF5ZXIgd2lsbCBiZQogICAgIC8vIGRyYXduIGluIGEg
d2F5IHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgLSBpLmUuIG9wYXF1ZSBiYWNrZ3JvdW5kLCBub3Qg
cm90YXRlZCBvciBzY2FsZWQsIGV0Yy4KICAgICAvLyBEZWZhdWx0cyB0byBmYWxzZTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0VXNlTENEVGV4dChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VXNlTENEVGV4dChib29sKSA9IDA7CiAKICAgICAvLyBTZXQgdG8gZHJhdyBhIHN5c3RlbS1k
ZWZpbmVkIGNoZWNrZXJib2FyZCBpZiB0aGUgY29tcG9zaXRvciB3b3VsZCBvdGhlcndpc2UgZHJh
dyBhIHRpbGUgaW4gdGhpcyBsYXllcgogICAgIC8vIGFuZCB0aGUgYWN0dWFsIGNvbnRlbnRzIGFy
ZSB1bmF2YWlsYWJsZS4gSWYgZmFsc2UsIHRoZSBjb21wb3NpdG9yIHdpbGwgZHJhdyB0aGUgbGF5
ZXIncyBiYWNrZ3JvdW5kIGNvbG9yCiAgICAgLy8gZm9yIHRoZXNlIHRpbGVzLgogICAgIC8vIERl
ZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREcmF3Q2hlY2tlcmJv
YXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0g
ICAgV2ViQ29udGVudExheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDb250ZW50
TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBXZWJDb250ZW50TGF5ZXImIG9wZXJhdG9yPShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW0+Jik7Ci0gICAgb3Bl
cmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtPigpIGNv
bnN0OwotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNz
aW5nVGlsZXMoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmgKaW5kZXggYjE5YzA1ZjNlM2IwOThkOGViMDNlZTU2MTI3OTY0NmI5MDgxZjQ1NC4u
OTJkMmM0ZmVlODc2YTkxYmRiZjYwYmUzODUxMzczY2NlZjcxYjE3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5oCisr
KyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJXZWJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJXZWJMYXllci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBUZXh0dXJlTGF5
ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyQ2xpZW50OwpAQCAtNDQsNDkgKzQwLDQzIEBAIGNsYXNzIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyQ2xpZW50OwogLy8gV2hlbiBpbiBzaW5nbGUtdGhyZWFkIG1vZGUsIHRoaXMg
bWVhbnMgZHVyaW5nIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpLgogLy8gV2hlbiB1c2lu
ZyB0aGUgdGhyZWFkZWQgY29tcG9zaXRvciwgdGhpcyBjYW4gbWVhbiBhdCBhbiBhcmJpdHJhcnkg
dGltZSB1bnRpbAogLy8gdGhlIFdlYkxheWVyVHJlZVZpZXcgaXMgZGVzdHJveWVkLgotY2xhc3Mg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIgewogcHVibGljOgogICAgIC8vIFRoZSBvd25lciBvZiB0aGlzIGxh
eWVyIG1heSBvcHRpb25hbGx5IHByb3ZpZGUgYSBjbGllbnQuIFRoaXMgY2xpZW50IHdpbGwKICAg
ICAvLyBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbXBvc2l0b3Igd2lzaGVzIHRvIHByb2R1Y2Ug
YSBuZXcgZnJhbWUgYW5kIGNhbgogICAgIC8vIHByb3ZpZGUgYSBuZXcgZnJvbnQgYnVmZmVyIHRl
eHR1cmUgSUQuIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBjbGllbnQgd2FudHMgdG8KICAgICAvLyBp
bXBsZW1lbnQgYSBkb3VibGUtYnVmZmVyaW5nIHNjaGVtZSB0aGF0IGlzIHN5bmNocm9uaXplZCB3
aXRoIHRoZSBjb21wb3NpdG9yLCBmb3IgaW5zdGFuY2UuCi0gICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgY3JlYXRlKFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
Q2xpZW50KiA9IDApOwotCi0gICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVudCBmb3IgdGhp
cyBsYXllciBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGRuJ3QgYmUgdXNlZC4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKKyAgICAvLyBUaGUgY2xpZW50IG11c3Qgb3V0bGl2
ZSB0aGUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMg
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqIGNyZWF0ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNs
aWVudCogPSAwKTsKIAotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9CiAgICAgdmly
dHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KIAorICAgIHZpcnR1YWwgV2ViTGF5
ZXIqIGxheWVyKCkgPSAwOworCiAgICAgLy8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0aGF0IHJlcHJl
c2VudHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQogICAgIC8vIGNvbXBvc2l0
b3IgY29udGV4dC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKSA9IDA7CiAKICAgICAv
LyBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlwcGVkIGluIHRo
ZSBZIGRpcmVjdGlvbiB3aGVuCiAgICAgLy8gcmVuZGVyZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldEZsaXBwZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEZsaXBwZWQoYm9vbCkg
PSAwOwogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUgdGV4dHVyZSB0
aGF0IGlzIG1hcHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpID0gMDsKIAogICAgIC8vIFNldHMgd2hl
dGhlciBldmVyeSBwaXhlbCBpbiB0aGlzIGxheWVyIGlzIG9wYXF1ZS4gRGVmYXVsdHMgdG8gZmFs
c2UuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0T3BhcXVlKGJvb2wpID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhlciB0aGlzIGxh
eWVyJ3MgdGV4dHVyZSBoYXMgcHJlbXVsdGlwbGllZCBhbHBoYSBvciBub3QuIERlZmF1bHRzIHRv
IHRydWUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29s
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wpID0gMDsKIAog
ICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IHByb3ZpZGVkIHRleHR1cmUg
SUQgaXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgZXh0ZXJuYWxseS4KLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgd2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbE1vZGlmeVRl
eHR1cmUoKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBjb250ZXh0IHNob3VsZCBi
ZSByYXRlIGxpbWl0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuIFJhdGUgbGltaXRpbmcgd29ya3MgYnkg
YmxvY2tpbmcKICAgICAvLyBpbnZhbGlkYXRlKCkgYW5kIGludmFsaWRhdGVSZWN0KCkgY2FsbHMg
aWYgdGhlIGNvbXBvc2l0b3IgaXMgdG9vIG1hbnkgZnJhbWVzIGJlaGluZC4KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKTsKLQotcHJpdmF0ZToKLSNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVMYXll
cihQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtPik7Ci0jZW5kaWYKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKSA9IDA7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViSU9TdXJmYWNlTGF5ZXIuaAppbmRleCAzN2E0YzY3OTJjMWM3NmVlY2MwYzYwYzBmM2Zj
OWQwZWEzZDMzOWJiLi5iY2YxNDExMmFhNGI5NDkwZDAzNjlkYmE0YTdjZjVhMDg3NjZmMjg5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklPU3VyZmFjZUxh
eWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VM
YXllci5oCkBAIC0zMCwyNyArMzAsMTkgQEAKICNpbmNsdWRlICJXZWJMYXllci5oIgogI2luY2x1
ZGUgIldlYlNpemUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSU9TdXJmYWNlTGF5
ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMgY2xhc3MgcmVw
cmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBhbiBleHRlcm5hbGx5IG1hbmFnZWQgSU9TdXJm
YWNlLgotY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3Mg
V2ViSU9TdXJmYWNlTGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
YklPU3VyZmFjZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYklP
U3VyZmFjZUxheWVyKiBjcmVhdGUoKTsKIAotICAgIFdlYklPU3VyZmFjZUxheWVyKCkgeyB9CiAg
ICAgdmlydHVhbCB+V2ViSU9TdXJmYWNlTGF5ZXIoKSB7IH0KIAotICAgIC8vIFNldHMgdGhlIElP
IHN1cmZhY2UgaWQgdGhhdCByZXByZXNlbnRzIHRoaXMgbGF5ZXIncyBjb250ZW50cy4KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZh
Y2VJZCwgV2ViU2l6ZSk7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CiAKLXBy
aXZhdGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViSU9TdXJm
YWNlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJT1N1cmZhY2VMYXllckNocm9taXVtPik7Ci0j
ZW5kaWYKKyAgICAvLyBTZXRzIHRoZSBJTyBzdXJmYWNlIGlkIHRoYXQgcmVwcmVzZW50cyB0aGlz
IGxheWVyJ3MgY29udGVudHMuCisgICAgdmlydHVhbCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRp
ZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJJbWFnZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdl
TGF5ZXIuaAppbmRleCBhOTE2ODM1ZjIwNWJjMDZmNTg0ZDQyMzMyYTQxZTRjNjBlOTkwMGI0Li5j
NzczN2YzMWEzNzk2ZmQwNGRjZGM0YmRlZjI2YjVhYjU2MGMwMTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaApAQCAtMzAsMjQgKzMwLDE2
IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2VMYXllckNocm9taXVtOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViSW1hZ2VMYXllciA6IHB1YmxpYyBXZWJMYXllciB7Citj
bGFzcyBXZWJJbWFnZUxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBX
ZWJJbWFnZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkltYWdl
TGF5ZXIqIGNyZWF0ZSgpOwogCi0gICAgV2ViSW1hZ2VMYXllcigpIHsgfQogICAgIHZpcnR1YWwg
fldlYkltYWdlTGF5ZXIoKSB7IH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCaXRtYXAo
U2tCaXRtYXApOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2Vi
SW1hZ2VMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bT4pOwotI2Vu
ZGlmCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldEJpdG1hcChTa0JpdG1hcCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXggNjQzMWY4NDhj
NmE5OGY5YzZlYjI1YzFkY2FkYzJhMTM2MjNkNjUxZi4uYWZlNTliMTlkNGExNzk5ZmM4MTJlMDlk
Yjk3ZTU0YzA2YjM5ODhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TGF5ZXIuaApAQCAtMjksODggKzI5LDgzIEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJX
ZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRlICJXZWJSZWN0
LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKIGNs
YXNzIFNrTWF0cml4NDQ7Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07
IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxlZ2F0ZTsKIGNs
YXNzIFdlYkZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
K2NsYXNzIFdlYlNjcm9sbGFibGVMYXllcjsKIHN0cnVjdCBXZWJGbG9hdFBvaW50Owogc3RydWN0
IFdlYkZsb2F0UmVjdDsKIHN0cnVjdCBXZWJTaXplOwogCitjbGFzcyBXZWJMYXllckltcGw7CisK
IGNsYXNzIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJM
YXllciBjcmVhdGUoKTsKLQotICAgIFdlYkxheWVyKCkgeyB9Ci0gICAgV2ViTGF5ZXIoY29uc3Qg
V2ViTGF5ZXImIGxheWVyKSB7IGFzc2lnbihsYXllcik7IH0KLSAgICB2aXJ0dWFsIH5XZWJMYXll
cigpIHsgcmVzZXQoKTsgfQotICAgIFdlYkxheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViTGF5ZXIm
IGxheWVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKGxheWVyKTsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJpdmF0ZS5p
c051bGwoKTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJv
b2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7CisjZGVmaW5lIFdFQkxBWUVSX0lTX1BV
UkVfVklSVFVBTAorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxheWVyKiBjcmVhdGUoKTsK
KworICAgIHZpcnR1YWwgfldlYkxheWVyKCkgeyB9CiAKICAgICAvLyBTZXRzIGEgcmVnaW9uIG9m
IHRoZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4K
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0
Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYp
ID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5l
ZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxp
ZGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90IGluZGV4KTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiByZWZlcmVuY2Us
IGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldENo
aWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcj4mKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZW1vdmVBbGxD
aGlsZHJlbigpOworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgdGFrZSBvd25lcnNoaXAg
b2YgdGhlIFdlYkxheWVyKiBwYXJhbWV0ZXIuCisgICAgdmlydHVhbCB2b2lkIGFkZENoaWxkKFdl
YkxheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChXZWJMYXllciosIHNp
emVfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlQ2hpbGQoV2ViTGF5ZXIq
IHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcio+JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVGcm9tUGFyZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxD
aGlsZHJlbigpID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNob3JQb2ludChj
b25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9hdFBvaW50IGFu
Y2hvclBvaW50KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0
IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IGFuY2hvclBv
aW50KCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuY2hvclBvaW50
WihmbG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSA9IDA7CisgICAgdmlydHVh
bCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYlNpemUg
Ym91bmRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kcyhjb25zdCBXZWJTaXpl
JikgPSAwOworICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCA9IDA7CiAKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNr
c1RvQm91bmRzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0JvdW5kcygpIGNv
bnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNYXNrTGF5ZXIoY29uc3QgV2Vi
TGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwbGljYUxheWVyKGNvbnN0IFdl
YkxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihXZWJMYXllciopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikgPSAwOwogCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotICAgIFdFQktJVF9FWFBPUlQg
ZmxvYXQgb3BhY2l0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5KGZsb2F0
KSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3QgPSAwOwogCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
b3BhcXVlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIG9wYXF1ZSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9S
VCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldFBv
c2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJGbG9hdFBv
aW50IHBvc2l0aW9uKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFN1
YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsK
LSAgICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0IHN1YmxheWVy
VHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRyYW5z
Zm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRyYW5z
Zm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIFdFQktJVF9FWFBPUlQg
U2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNm
b3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9y
bShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0dWFsIFNrTWF0
cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoZSBs
YXllciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGRy
YXdzQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7CiAKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisgICAgdmlydHVhbCB2
b2lkIHNldFByZXNlcnZlczNEKGJvb2wpID0gMDsKIAogICAgIC8vIE1hcmsgdGhhdCB0aGlzIGxh
eWVyIHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIHRyYW5zZm9ybSBhbmQgZG91YmxlLXNpZGVkCiAg
ICAgLy8gcHJvcGVydGllcyBpbiBkZXRlcm1pbmluZyB0aGlzIGxheWVyJ3MgYmFja2ZhY2Ugdmlz
aWJpbGl0eSBpbnN0ZWFkIG9mCkBAIC0xMTksMTA1ICsxMTQsNjggQEAgcHVibGljOgogICAgIC8v
IE5vdGU6IFRoaXMgQVBJIGlzIHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIHZpc2liaWxpdHkg
dGhlIGhhbmRsaW5nIG9mCiAgICAgLy8gV2ViS2l0IGxheWVycyB0aGF0IGhhdmUgYSBjb250ZW50
cyBsYXllciAoY2FudmFzLCBwbHVnaW4sIFdlYkdMLCB2aWRlbywKICAgICAvLyBldGMpLgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29sKSA9
IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9y
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yKSA9IDA7CiAK
ICAgICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2luZyBpbiBhIG5ld2x5IGlu
c3RhbnRpYXRlZAogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0LgotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJikgPSAw
OwogCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBwaXhlbHMgdGhhdCBzaG93IHRocm91Z2ggdGhl
IGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAgICAvLyBOb3RlOiBUaGVzZSBmaWx0ZXJzIGFy
ZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3biBkaXJlY3RseQogICAgIC8v
IHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRoIGFuIG9wYXF1ZSBiYWNrZ3JvdW5kLiBUaGlz
IG1lYW5zIGlmIGFuCiAgICAgLy8gYW5jZXN0b3Igb2YgdGhlIGJhY2tncm91bmQtZmlsdGVyZWQg
bGF5ZXIgc2V0cyBjZXJ0YWluIHByb3BlcnRpZXMKICAgICAvLyAob3BhY2l0eSwgdHJhbnNmb3Jt
cyksIGl0IG1heSBjb25mbGljdCBhbmQgaGlkZSB0aGUgYmFja2dyb3VuZCBmaWx0ZXJzLgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJP
cGVyYXRpb25zJik7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0
IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RGVidWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RGVidWdOYW1lKFdlYlN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyQ29s
b3IoY29uc3QgV2ViQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVy
V2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdOYW1lKFdlYlN0cmlu
ZykgPSAwOwogCiAgICAgLy8gQW4gYW5pbWF0aW9uIGRlbGVnYXRlIGlzIG5vdGlmaWVkIHdoZW4g
YW5pbWF0aW9ucyBhcmUgc3RhcnRlZCBhbmQKICAgICAvLyBzdG9wcGVkLiBUaGUgV2ViTGF5ZXIg
ZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGRlbGVnYXRlLCBhbmQgaXQgaXMKICAgICAv
LyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNsaWVudCB0byByZXNldCB0aGUgbGF5ZXIncyBk
ZWxlZ2F0ZSBiZWZvcmUKICAgICAvLyBkZWxldGluZyB0aGUgZGVsZWdhdGUuCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRlbGVnYXRlKik7
CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRlbGVn
YXRlKikgPSAwOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgYW5pbWF0aW9uIGNhbm5v
dCBiZSBhZGRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1h
dGlvbiopOworICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oV2ViQW5pbWF0aW9uKikgPSAw
OwogCiAgICAgLy8gUmVtb3ZlcyBhbGwgYW5pbWF0aW9ucyB3aXRoIHRoZSBnaXZlbiBpZC4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpID0gMDsKIAog
ICAgIC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQgdGFyZ2V0aW5n
IHRoZSBnaXZlbiBwcm9wZXJ0eS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQW5pbWF0
aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSk7CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIFdlYkFuaW1hdGlv
bjo6VGFyZ2V0UHJvcGVydHkpID0gMDsKIAogICAgIC8vIFBhdXNlcyBhbGwgYW5pbWF0aW9ucyB3
aXRoIHRoZSBnaXZlbiBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcGF1c2VBbmltYXRpb24o
aW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgdmlydHVhbCB2b2lkIHBh
dXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpID0gMDsKIAog
ICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHN1c3BlbmQgYW5kIHJlc3VtZSBhbGwgYW5p
bWF0aW9ucy4gVGhlIGdpdmVuIHRpbWUKICAgICAvLyBpcyBhc3N1bWVkIHRvIHVzZSB0aGUgc2Ft
ZSB0aW1lIGJhc2UgYXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGlt
ZSk7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNU
aW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90
b25pY1RpbWUpID0gMDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxheWVyIGhhcyBh
bnkgYWN0aXZlIGFuaW1hdGlvbnMgLSB1c2VmdWwgZm9yIHRlc3RzLgotICAgIFdFQktJVF9FWFBP
UlQgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQWN0aXZl
QW5pbWF0aW9uKCkgPSAwOwogCiAgICAgLy8gVHJhbnNmZXJzIGFsbCBhbmltYXRpb25zIHJ1bm5p
bmcgb24gdGhlIGN1cnJlbnQgbGF5ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHRyYW5zZmVy
QW5pbWF0aW9uc1RvKFdlYkxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVyQW5pbWF0
aW9uc1RvKFdlYkxheWVyKikgPSAwOworCisgICAgLy8gU2Nyb2xsaW5nCisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFNjcm9sbGFibGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVu
dEhhbmRsZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25N
YWluVGhyZWFkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwogCiAgICAgLy8g
Rm9yY2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZhY2UuIFRoZXJlIGlzIG5vIGJl
bmVmaXQgaW4gZG9pbmcKICAgICAvLyBzbywgYnV0IHRoaXMgaXMgdG8gZmFjaWxpdGF0ZSBiZW5j
aG1hcmtzIGFuZCB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rm9yY2VSZW5kZXJT
dXJmYWNlKGJvb2wpOwotCi0gICAgLy8gRHJvcHMgdGhpcyBsYXllcidzIHJlbmRlciBzdXJmYWNl
LCBpZiBpdCBoYXMgb25lLiBVc2VkIHRvIGJyZWFrIGN5Y2xlcyBpbiBzb21lCi0gICAgLy8gY2Fz
ZXMgLSBpZiB5b3UgYXJlbid0IHN1cmUsIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwgdGhpcy4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBUIHRvKCkKLSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAgICByZXMu
V2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCB0b0NvbnN0KCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIFQgcmVzOwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAg
ICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAg
V2ViTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+Jik7
Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6
TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUKiB1bndy
YXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX3ByaXZh
dGUuZ2V0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0IFQqIGNv
bnN0VW53cmFwKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25z
dCBUKj4obV9wcml2YXRlLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAg
IFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gbV9wcml2YXRlOworICAgIHZp
cnR1YWwgdm9pZCBzZXRGb3JjZVJlbmRlclN1cmZhY2UoYm9vbCkgPSAwOwogfTsKIAotaW5saW5l
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5ZXImIGIpCi17
Ci0gICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKLXsKLSAgICByZXR1cm4gIShhID09
IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkxheWVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJs
ZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGFibGVM
YXllci5oCmluZGV4IGVhMDJmOGM3Mzk2MWFmZDNmMzk1YzdlMmFjOWI2MzgwZmQ4ZDc2YWQuLmFh
MzQ1YWFhNTE4YmI0ZDI4OTQ1NGU0NDRkODhjYTIwNWYwMTZlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaApAQCAtMzQs
MjkgKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJTY3JvbGxhYmxl
TGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViU2Nyb2xsYWJsZUxheWVyIDogdmly
dHVhbCBwdWJsaWMgV2ViTGF5ZXIgewogcHVibGljOgotICAgIFdlYlNjcm9sbGFibGVMYXllcigp
IHsgfQotICAgIFdlYlNjcm9sbGFibGVMYXllcihjb25zdCBXZWJTY3JvbGxhYmxlTGF5ZXImIGxh
eWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0KLSAgICB2aXJ0dWFsIH5XZWJTY3JvbGxhYmxlTGF5
ZXIoKSB7IH0KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJTY3Jv
bGxhYmxlTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgV2ViTGF5ZXI6OmFzc2lnbihsYXll
cik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRTY3JvbGxhYmxlKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCk7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpeGVkVG9Db250YWluZXJMYXllcihib29sKTsKLQot
Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU2Nyb2xsYWJsZUxheWVyKGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiYgbGF5ZXIpIDogV2ViTGF5
ZXIobGF5ZXIpIHsgfQotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9u
KFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVj
dG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZp
eGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVy
LmgKaW5kZXggMWJmZTdkNmFiYjNhNTlmM2YzZWEzMzA0NDhjYzY0MDdkMzExYTFhOS4uNDUxYTBi
OWMxMzRiNmM0NDQ5NTBlMWEyYjYyM2YzYmUxZjAyMTEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oCisrKyBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaApAQCAtMzIsMjkgKzMy
LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcm9sbGJhcjsKLWNsYXNzIFNj
cm9sbGJhckxheWVyQ2hyb21pdW07CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBX
ZWJTY3JvbGxiYXJMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFzcyBXZWJTY3JvbGxiYXJM
YXllciB7CiBwdWJsaWM6Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXIoKSB7IH0KLSAgICBXZWJTY3Jv
bGxiYXJMYXllcihjb25zdCBXZWJTY3JvbGxiYXJMYXllciYgbGF5ZXIpIDogV2ViTGF5ZXIobGF5
ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYlNjcm9sbGJhckxheWVyKCkgeyB9Ci0gICAgV2ViU2Ny
b2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJTY3JvbGxiYXJMYXllciYgbGF5ZXIpCi0g
ICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKLSAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTY3JvbGxMYXllcihjb25z
dCBXZWJMYXllcik7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqKSA9IDA7CiAKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlKFdlYkNv
cmU6OlNjcm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7Ci0gICAgZXhwbGljaXQgV2ViU2Nyb2xsYmFyTGF5ZXIo
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+Jik7
Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKKyAgICBX
RUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciogY3JlYXRlKFdlYkNvcmU6OlNj
cm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5Pik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oCmluZGV4IGFkOTEyM2Q5NjJh
ZmVhZWE4YTU2MzEyOTQ1ZGUxZmM1Zjg5NmM5ZmMuLjAyZTQ2ZjA0N2ZhZjI1M2FjMTFlMTk3YzQ1
MTA4MTdiYTFmNDgyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViU29saWRDb2xvckxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaApAQCAtMjYsMjEgKzI2LDIwIEBACiAjaWZuZGVmIFdl
YlNvbGlkQ29sb3JMYXllcl9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllcl9oCiAKKyNpbmNs
dWRlICJXZWJDb2xvci5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkZs
b2F0UmVjdC5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewot
Y2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbDsKK2NsYXNzIFdlYkxheWVyOwogCi1jbGFzcyBX
ZWJTb2xpZENvbG9yTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViU29saWRDb2xv
ckxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTb2xpZENvbG9y
TGF5ZXIgY3JlYXRlKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tncm91bmRDb2xv
cihjb25zdCBXZWJDb2xvciYpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNvbGlkQ29s
b3JMYXllciogY3JlYXRlKCk7CiAKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJT
b2xpZENvbG9yTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYlNvbGlkQ29sb3JMYXllcklt
cGw+Jik7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIH5XZWJTb2xpZENvbG9yTGF5ZXIoKSB7IH0KKwor
ICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJWaWRlb0xh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaApp
bmRleCA1NGRhMzQ1NGJhMDNlZmZiNWUzNGIwZDMzMmI5MmMwMTEyNDc1YWE0Li4xYWNmZmY1NGEw
NzI3YjQ5OGRkOTQxZmNjNDZhMjc3MjZhYTdkNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaApAQCAtMjksMjcgKzI5LDIwIEBACiAjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotY2xhc3MgVmlkZW9MYXllckNocm9taXVtOwotfQotCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgV2ViVmlkZW9GcmFtZVByb3ZpZGVyOwogCi1jbGFzcyBXZWJWaWRlb0xheWVy
IDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYlZpZGVvTGF5ZXIgewogcHVibGljOgotICAg
IFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5ZXIgY3JlYXRlKFdlYlZpZGVvRnJhbWVQ
cm92aWRlciopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5ZXIqIGNyZWF0
ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAotICAgIFdlYlZpZGVvTGF5ZXIoKSB7IH0KICAg
ICB2aXJ0dWFsIH5XZWJWaWRlb0xheWVyKCkgeyB9CiAKLSAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhpcyBsYXllciBpcyBhY3RpdmVseSByZW5kZXJpbmcgKGUuZy4gY3VycmVudGx5IGF0dGFjaGVk
IHRvIGEgV2ViTGF5ZXJUcmVlVmlldykuCi0gICAgV0VCS0lUX0VYUE9SVCBib29sIGFjdGl2ZSgp
IGNvbnN0OworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOwogCi0jaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViVmlkZW9MYXllcihQYXNzUmVmUHRyPFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4pOwotI2VuZGlmCisgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoaXMgbGF5ZXIgaXMgYWN0aXZlbHkgcmVuZGVyaW5nIChlLmcuIGN1cnJlbnRseSBhdHRh
Y2hlZCB0byBhIFdlYkxheWVyVHJlZVZpZXcpLgorICAgIHZpcnR1YWwgYm9vbCBhY3RpdmUoKSBj
b25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hy
b21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMWRiNzU5NDA0N2M4OGNhYjBkZGFmZTAw
MzdhM2JlNmNhYzM4Njg4Ni4uZTI1NmJkZTFhNWE0YWU4N2E2NjA4MTk4YzczZGZhZjhlMTk4MTNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKQEAgLTI5
LDEyICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVH
ZW9tZXRyeU5hdGl2ZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNj
cm9sbGJhckxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0
cnkuaD4KQEAgLTQyLDcgKzQyLDYgQEAKIAogdXNpbmcgV2ViS2l0OjpXZWJMYXllcjsKIHVzaW5n
IFdlYktpdDo6V2ViUmVjdDsKLXVzaW5nIFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxheWVyOwogdXNp
bmcgV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllcjsKIHVzaW5nIFdlYktpdDo6V2ViVmVjdG9yOwog
CkBAIC01MSwzNiArNTAsMzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU2Nyb2xsaW5n
Q29vcmRpbmF0b3JQcml2YXRlIHsKIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJpdmF0ZSk7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRl
KCkgeyB9CisgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKCkKKyAgICAgICAgOiBtX3Nj
cm9sbExheWVyKDApCisgICAgeworICAgIH0KKwogICAgIH5TY3JvbGxpbmdDb29yZGluYXRvclBy
aXZhdGUoKSB7IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViU2Nyb2xsYWJsZUxheWVy
IGxheWVyKQorICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVyKQogICAgIHsK
ICAgICAgICAgbV9zY3JvbGxMYXllciA9IGxheWVyOwogCi0gICAgICAgIGlmICghbV9ob3Jpem9u
dGFsU2Nyb2xsYmFyTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX2hvcml6b250YWxTY3Jv
bGxiYXJMYXllci5zZXRTY3JvbGxMYXllcihsYXllcik7Ci0gICAgICAgIGlmICghbV92ZXJ0aWNh
bFNjcm9sbGJhckxheWVyLmlzTnVsbCgpKQotICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJh
ckxheWVyLnNldFNjcm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYgKG1faG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyKQorICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXItPnNl
dFNjcm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXJMYXll
cikKKyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xsTGF5ZXIo
bGF5ZXIpOwogICAgIH0KIAotICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKFdl
YlNjcm9sbGJhckxheWVyIGxheWVyKQorICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNjcm9sbGJhckxh
eWVyKFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGxheWVyKQogICAgIHsKICAgICAgICAg
bV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKICAgICB9CiAKLSAgICB2b2lkIHNl
dFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoV2ViU2Nyb2xsYmFyTGF5ZXIgbGF5ZXIpCisgICAgdm9p
ZCBzZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+
IGxheWVyKQogICAgIHsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyID0gbGF5ZXI7
CiAgICAgfQogCi0gICAgYm9vbCBoYXNTY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuICFtX3Nj
cm9sbExheWVyLmlzTnVsbCgpOyB9Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNjcm9sbExheWVy
KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsgfQorICAgIFdlYkxheWVyKiBzY3JvbGxM
YXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXI7IH0KIAogcHJpdmF0ZToKLSAgICBX
ZWJTY3JvbGxhYmxlTGF5ZXIgbV9zY3JvbGxMYXllcjsKLSAgICBXZWJTY3JvbGxiYXJMYXllciBt
X2hvcml6b250YWxTY3JvbGxiYXJMYXllcjsKLSAgICBXZWJTY3JvbGxiYXJMYXllciBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyTGF5ZXI7CisgICAgV2ViTGF5ZXIqIG1fc2Nyb2xsTGF5ZXI7CisgICAgT3du
UHRyPFdlYlNjcm9sbGJhckxheWVyPiBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllcjsKKyAgICBP
d25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IG1fdmVydGljYWxTY3JvbGxiYXJMYXllcjsKIH07CiAK
IFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpj
cmVhdGUoUGFnZSogcGFnZSkKQEAgLTExMiwxNSArMTE0LDIwIEBAIHN0YXRpYyBHcmFwaGljc0xh
eWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmlldykKICNlbmRp
ZgogfQogCi1zdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibGVMYXllciBzY3JvbGxMYXllciwgR3JhcGhp
Y3NMYXllciogc2Nyb2xsYmFyR3JhcGhpY3NMYXllciwgRnJhbWVWaWV3KiBmcmFtZVZpZXcpCitz
dGF0aWMgV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NM
YXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyLT5wbGF0Zm9ybUxheWVyKCk7Cit9CisK
K3N0YXRpYyBQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3JvbGxiYXJMYXll
cihTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViTGF5ZXIqIHNjcm9sbExheWVyLCBHcmFwaGljc0xh
eWVyKiBzY3JvbGxiYXJHcmFwaGljc0xheWVyLCBGcmFtZVZpZXcqIGZyYW1lVmlldykKIHsKICAg
ICBBU1NFUlQoc2Nyb2xsYmFyKTsKICAgICBBU1NFUlQoc2Nyb2xsYmFyR3JhcGhpY3NMYXllcik7
CiAKLSAgICBpZiAoc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAoIXNjcm9sbExheWVy
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBzb21ldGltZXMgd2UgZ2V0IGNhbGxlZCBiZWZvcmUgc2V0
U2Nyb2xsTGF5ZXIsIHdvcmthcm91bmQgYnkgZmluZGluZyB0aGUgc2Nyb2xsIGxheW91dCBvdXJz
ZWx2ZXMuCi0gICAgICAgIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcoZnJh
bWVWaWV3KS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7Ci0gICAg
ICAgIEFTU0VSVCghc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpOworICAgICAgICBzY3JvbGxMYXllciA9
IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXco
ZnJhbWVWaWV3KSk7CisgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAgfQogCiAgICAg
Ly8gUm9vdCBsYXllciBub24tb3ZlcmxheSBzY3JvbGxiYXJzIHNob3VsZCBiZSBtYXJrZWQgb3Bh
cXVlIHRvIGRpc2FibGUKQEAgLTEzOCw3ICsxNDUsNyBAQCBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5
ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFi
bAogICAgIGlmICghcGxhdGZvcm1TdXBwb3J0ZWQgfHwgc2Nyb2xsYmFyLT5pc0N1c3RvbVNjcm9s
bGJhcigpKSB7CiAgICAgICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9N
ZWRpYSgwKTsKICAgICAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250ZW50
KHRydWUpOwotICAgICAgICByZXR1cm4gV2ViU2Nyb2xsYmFyTGF5ZXIoKTsKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgLy8gQWxsIENocm9taXVtIHNjcm9sbGJhciB0aGVt
ZXMgZGVyaXZlIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuCkBAIC0xNDYsMTQgKzE1Mywx
NCBAQCBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibAogICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhl
bWVQYWludGVyIHBhaW50ZXIodGhlbWVDb21wb3NpdGUsIHNjcm9sbGJhcik7CiAgICAgT3duUHRy
PFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkoV2ViS2l0OjpXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhlbWVDb21wb3NpdGUpKTsKIAot
ICAgIFdlYlNjcm9sbGJhckxheWVyIHNjcm9sbGJhckxheWVyID0gV2ViU2Nyb2xsYmFyTGF5ZXI6
OmNyZWF0ZShzY3JvbGxiYXIsIHBhaW50ZXIsIGdlb21ldHJ5LnJlbGVhc2UoKSk7Ci0gICAgc2Ny
b2xsYmFyTGF5ZXIuc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIpOworICAgIE93blB0cjxXZWJT
Y3JvbGxiYXJMYXllcj4gc2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdFB0cihXZWJTY3JvbGxiYXJMYXll
cjo6Y3JlYXRlKHNjcm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnkucmVsZWFzZSgpKSk7CisgICAg
c2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKIAotICAgIHNjcm9s
bGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYSgmc2Nyb2xsYmFyTGF5ZXIpOwor
ICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShzY3JvbGxiYXJM
YXllci0+bGF5ZXIoKSk7CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250
ZW50KGZhbHNlKTsKLSAgICBzY3JvbGxiYXJMYXllci5zZXRPcGFxdWUoc2Nyb2xsYmFyR3JhcGhp
Y3NMYXllci0+Y29udGVudHNPcGFxdWUoKSk7CisgICAgc2Nyb2xsYmFyTGF5ZXItPmxheWVyKCkt
PnNldE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250ZW50c09wYXF1ZSgpKTsKIAot
ICAgIHJldHVybiBzY3JvbGxiYXJMYXllcjsKKyAgICByZXR1cm4gc2Nyb2xsYmFyTGF5ZXIucmVs
ZWFzZSgpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIb3Jpem9u
dGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcsIEdyYXBoaWNz
TGF5ZXIqIGhvcml6b250YWxTY3JvbGxiYXJMYXllcikKQEAgLTE2MSw2ICsxNjgsNyBAQCB2b2lk
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJE
aWRDaGFuZ2UoRnJhbWVWaWV3KgogICAgIGlmICghaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyIHx8
ICFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyhtX3Bh
Z2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKICAgICBtX3ByaXZhdGUtPnNldEhvcml6b250YWxT
Y3JvbGxiYXJMYXllcihjcmVhdGVTY3JvbGxiYXJMYXllcihmcmFtZVZpZXctPmhvcml6b250YWxT
Y3JvbGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCBob3Jpem9udGFsU2Nyb2xsYmFy
TGF5ZXIsIGZyYW1lVmlldykpOwogfQogCkBAIC0xNjksMjUgKzE3NywyNSBAQCB2b2lkIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0aWNhbFNjcm9sbGJhckxheWVyRGlkQ2hhbmdl
KEZyYW1lVmlldyogZgogICAgIGlmICghdmVydGljYWxTY3JvbGxiYXJMYXllciB8fCAhY29vcmRp
bmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcobV9wYWdlLT5tYWlu
RnJhbWUoKS0+dmlldygpKSk7CiAgICAgbV9wcml2YXRlLT5zZXRWZXJ0aWNhbFNjcm9sbGJhckxh
eWVyKGNyZWF0ZVNjcm9sbGJhckxheWVyKGZyYW1lVmlldy0+dmVydGljYWxTY3JvbGxiYXIoKSwg
bV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCB2ZXJ0aWNhbFNjcm9sbGJhckxheWVyLCBmcmFtZVZp
ZXcpKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xsTGF5ZXIoR3Jh
cGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIGxheWVy
OwotICAgIGlmIChzY3JvbGxMYXllcikKLSAgICAgICAgbGF5ZXIgPSBzY3JvbGxMYXllci0+cGxh
dGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7Ci0gICAgbV9wcml2YXRlLT5z
ZXRTY3JvbGxMYXllcihsYXllcik7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxMYXllcihzY3Jv
bGxMYXllciA/IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXIpIDog
MCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQogewotICAgIGlmIChtX3ByaXZhdGUtPmhhc1Nj
cm9sbExheWVyKCkpIHsKKyAgICAvLyBXZSB3b24ndCBuZWNlc3NhcmlseSBnZXQgYSBzZXRTY3Jv
bGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBncmFiIHRoZSByb290IG91cnNlbHZl
cy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyhtX3BhZ2UtPm1h
aW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAobV9wcml2YXRlLT5zY3JvbGxMYXllcigpKSB7
CiAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlZ2lvbi5yZWN0cygpOwogICAgICAg
ICBXZWJWZWN0b3I8V2ViUmVjdD4gd2ViUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIHdlYlJl
Y3RzW2ldID0gcmVjdHNbaV07Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbih3ZWJSZWN0cyk7CisgICAgICAgIG1fcHJpdmF0ZS0+c2Ny
b2xsTGF5ZXIoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24od2ViUmVjdHMpOwogICAgIH0K
IH0KIApAQCAtMTk4LDE0ICsyMDYsMTggQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsUGFyYW1ldGVycyhjb25zdCBTY3JvbGxQYXJhbWV0ZXJzJikKIAogdm9pZCBTY3JvbGxp
bmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25lZCB3aGVlbEV2
ZW50SGFuZGxlckNvdW50KQogewotICAgIGlmIChtX3ByaXZhdGUtPmhhc1Njcm9sbExheWVyKCkp
Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRIYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKKyAgICAvLyBXZSB3b24ndCBuZWNlc3Nh
cmlseSBnZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBncmFi
IHRoZSByb290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZy
YW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAobV9wcml2YXRl
LT5zY3JvbGxMYXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNldEhh
dmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDApOwogfQogCiB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0
aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkKQogewotICAgIGlmIChtX3ByaXZhdGUtPmhhc1Nj
cm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRTaG91bGRT
Y3JvbGxPbk1haW5UaHJlYWQoc2hvdWxkKTsKKyAgICAvLyBXZSB3b24ndCBuZWNlc3NhcmlseSBn
ZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBncmFiIHRoZSBy
b290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmll
dyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAobV9wcml2YXRlLT5zY3Jv
bGxMYXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNldFNob3VsZFNj
cm9sbE9uTWFpblRocmVhZChzaG91bGQpOwogfQogCiBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
OjpzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdApAQCAtMjE1LDE0ICsyMjcsMTQg
QEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJz
KCkgY29uc3QKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJc0NvbnRhaW5l
ckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllciogbGF5ZXIsIGJvb2wgZW5hYmxl
KQogewotICAgIGlmIChXZWJMYXllciogcGxhdGZvcm1MYXllciA9IGxheWVyLT5wbGF0Zm9ybUxh
eWVyKCkpCi0gICAgICAgIHBsYXRmb3JtTGF5ZXItPnRvPFdlYlNjcm9sbGFibGVMYXllcj4oKS5z
ZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoZW5hYmxlKTsKKyAgICBpZiAoV2Vi
TGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIo
bGF5ZXIpKQorICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldElzQ29udGFpbmVyRm9yRml4ZWRQ
b3NpdGlvbkxheWVycyhlbmFibGUpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyLCBib29s
IGVuYWJsZSkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBsYXllci0+cGxh
dGZvcm1MYXllcigpKQotICAgICAgICBwbGF0Zm9ybUxheWVyLT50bzxXZWJTY3JvbGxhYmxlTGF5
ZXI+KCkuc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7CisgICAgaWYgKFdlYkxheWVy
KiBzY3JvbGxhYmxlTGF5ZXIgPSBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xheWVyKGxheWVy
KSkKKyAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5h
YmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAppbmRleCBkYjUx
N2NhZDI2MzNiOGJmNGU3MTU0YjU3NDgyMjU3MmM0NjU5MGFhLi4xMDY1NDMxMmNmMmVmYmFjN2U1
YzIwYmYwZGMwNjUxYzg0ZjM0MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNw
cApAQCAtNjksMjIgKzY5LDIxIEBAIENhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZhczJETGF5ZXJC
cmlkZ2UoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKICAgICAgICAgICAg
IGdyQ29udGV4dC0+cmVzZXRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgbV9sYXllciA9IFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgbV9sYXllci5zZXRUZXh0dXJl
SWQodGV4dHVyZUlkKTsKLSAgICBtX2xheWVyLnNldFJhdGVMaW1pdENvbnRleHQoIVdlYktpdDo6
V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91YmxlQnVmZmVyaW5n
KTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0
ZSh0aGlzKSk7CisgICAgbV9sYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7CisgICAgbV9s
YXllci0+c2V0UmF0ZUxpbWl0Q29udGV4dCghV2ViS2l0OjpXZWJDb21wb3NpdG9yOjp0aHJlYWRp
bmdFbmFibGVkKCkgfHwgbV91c2VEb3VibGVCdWZmZXJpbmcpOwogfQogCiBDYW52YXMyRExheWVy
QnJpZGdlOjp+Q2FudmFzMkRMYXllckJyaWRnZSgpCiB7CiAgICAgaWYgKFNrRGVmZXJyZWRDYW52
YXMqIGRlZmVycmVkID0gZGVmZXJyZWRDYW52YXMoKSkKICAgICAgICAgZGVmZXJyZWQtPnNldE5v
dGlmaWNhdGlvbkNsaWVudCgwKTsKLSAgICBtX2xheWVyLnNldFRleHR1cmVJZCgwKTsKKyAgICBt
X2xheWVyLT5zZXRUZXh0dXJlSWQoMCk7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVmZmVyaW5nKSB7
CiAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgICAgIEdMQyht
X2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2Zyb250QnVmZmVyVGV4
dHVyZSkpOwogICAgICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiAgICAgfQotICAgIG1fbGF5ZXIu
Y2xlYXJDbGllbnQoKTsKIH0KIAogU2tEZWZlcnJlZENhbnZhcyogQ2FudmFzMkRMYXllckJyaWRn
ZTo6ZGVmZXJyZWRDYW52YXMoKQpAQCAtOTgsNyArOTcsNyBAQCB2b2lkIENhbnZhczJETGF5ZXJC
cmlkZ2U6OnByZXBhcmVGb3JEcmF3KCkKIHsKICAgICBBU1NFUlQoZGVmZXJyZWRDYW52YXMoKSk7
CiAgICAgaWYgKCFtX3VzZURvdWJsZUJ1ZmZlcmluZykKLSAgICAgICAgbV9sYXllci53aWxsTW9k
aWZ5VGV4dHVyZSgpOworICAgICAgICBtX2xheWVyLT53aWxsTW9kaWZ5VGV4dHVyZSgpOwogICAg
IG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKQEAgLTE0OCwxMyArMTQ3LDEz
IEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBDYW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0KCkK
IAogV2ViS2l0OjpXZWJMYXllciogQ2FudmFzMkRMYXllckJyaWRnZTo6bGF5ZXIoKQogewotICAg
IHJldHVybiAmbV9sYXllcjsKKyAgICByZXR1cm4gbV9sYXllci0+bGF5ZXIoKTsKIH0KIAogdm9p
ZCBDYW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0QWNxdWlyZWQoKQogewogICAgIGlmIChtX2Rl
ZmVycmFsTW9kZSA9PSBOb25EZWZlcnJlZCAmJiAhbV91c2VEb3VibGVCdWZmZXJpbmcpCi0gICAg
ICAgIG1fbGF5ZXIud2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICAgICAgbV9sYXllci0+d2lsbE1v
ZGlmeVRleHR1cmUoKTsKIH0KIAogdW5zaWduZWQgQ2FudmFzMkRMYXllckJyaWRnZTo6YmFja0J1
ZmZlclRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oCmluZGV4IDQwOWQyMDdj
NTVlNDk1MThjMzkyNDRkMTQ4N2MwYTBhZjc0MTgyMWUuLjI3YjFlYTY1OWM0MWM3YzY4YzMyNzQ1
Y2ExZDEwNmFlNTA1NWE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmgKQEAgLTc2
LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2JhY2tCdWZmZXJUZXh0dXJlOwog
ICAgIEludFNpemUgbV9zaXplOwogICAgIFNrQ2FudmFzKiBtX2NhbnZhczsKLSAgICBXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNw
cAppbmRleCAxZDE2N2E1NTZlNmExZGZjZDExYWM2Zjg0OTE4ZjJkMWQ4ODk0ZDlhLi42MTAyYTNl
NmY3ODY5NzYwZTFmMzc4MDJkMDZmZTY1ZjRlYmQzNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdC
dWZmZXJDaHJvbWl1bS5jcHAKQEAgLTE1NiwxNiArMTU2LDE1IEBAIGNsYXNzIERyYXdpbmdCdWZm
ZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQg
ewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERyYXdpbmdCdWZm
ZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRyYXdpbmdCdWZm
ZXIpCi0gICAgICAgICwgbV9sYXllcihXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpj
cmVhdGUodGhpcykpCisgICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZlci0+Z3JhcGhp
Y3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgbV9sYXllci5z
ZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOwotICAgICAgICBtX2xheWVyLnNldFByZW11bHRp
cGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CisgICAgICAgIG1fbGF5
ZXItPnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7CisgICAgICAgIG1fbGF5ZXItPnNldFBy
ZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQogICAgIHsKLSAgICAgICAgbV9s
YXllci5jbGVhckNsaWVudCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFy
ZVRleHR1cmUoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikgT1ZFUlJJREUKQEAg
LTE4NywxMSArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fZHJhd2luZ0J1ZmZlci0+
Z3JhcGhpY3NDb250ZXh0M0QoKSk7CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJMYXllciogbGF5
ZXIoKSB7IHJldHVybiAmbV9sYXllcjsgfQorICAgIFdlYktpdDo6V2ViTGF5ZXIqIGxheWVyKCkg
eyByZXR1cm4gbV9sYXllci0+bGF5ZXIoKTsgfQogCiBwcml2YXRlOgogICAgIERyYXdpbmdCdWZm
ZXIqIG1fZHJhd2luZ0J1ZmZlcjsKLSAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVy
IG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1f
bGF5ZXI7CiB9OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXll
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZmIwOTAwYmJjMWE3NTdjMWRhM2I4MWNj
Y2M3MDBiZDk0NDJkYjJhYy4uYzkyY2Y0N2M2Y2ViMDcxOWY2ODYzZGEwNzY3MDg1ODgxMDkyYWM5
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
R3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC04MywxNCArODMs
MTYgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpjcmVhdGUoR3Jh
cGhpY3NMYXllckNsaWVudCogY2xpZW50KQogCiBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgOiBHcmFw
aGljc0xheWVyKGNsaWVudCkKKyAgICAsIG1fY29udGVudHNMYXllcigwKQogICAgICwgbV9jb250
ZW50c0xheWVyUHVycG9zZShOb0NvbnRlbnRzTGF5ZXIpCiAgICAgLCBtX2NvbnRlbnRzTGF5ZXJI
YXNCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCiAgICAgLCBtX2luU2V0Q2hpbGRyZW4oZmFsc2UpCiAg
ICAgLCBtX3BhZ2VTY2FsZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgbV9vcGFxdWVSZWN0VHJhY2tp
bmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSA9IGFkb3B0UHRyKG5ldyBPcGFxdWVSZWN0VHJhY2tpbmdD
b250ZW50TGF5ZXJEZWxlZ2F0ZSh0aGlzKSk7Ci0gICAgbV9sYXllciA9IFdlYkNvbnRlbnRMYXll
cjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkp
OwotICAgIG1fbGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVu
dHNWaXNpYmxlKTsKKyAgICBtX2NvbnRlbnRMYXllciA9IGFkb3B0UHRyKFdlYkNvbnRlbnRMYXll
cjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGUuZ2V0KCkp
KTsKKyAgICBtX2xheWVyID0gbV9jb250ZW50TGF5ZXItPmxheWVyKCk7CisgICAgbV9sYXllci0+
c2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKICAg
ICBpZiAoY2xpZW50KQogICAgICAgICBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsK
ICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKQEAgLTk4LDM0ICsxMDAsOSBAQCBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50
KiBjbGllbnQpCiAKIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSgpCiB7Ci0gICAgLy8gRG8gY2xlYW51cCB3aGlsZSB3ZSBjYW4gc3RpbGwgc2FmZWx5IGNhbGwg
bWV0aG9kcyBvbiB0aGUgZGVyaXZlZCBjbGFzcy4KICAgICB3aWxsQmVEZXN0cm95ZWQoKTsKIH0K
IAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OndpbGxCZURlc3Ryb3llZCgpCi17Ci0gICAg
aWYgKCFtX2xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsK
LSAgICAgICAgbV9sYXllci5jbGVhclJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgbV9sYXllci5z
ZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXll
ci5pc051bGwoKSkgewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuY2xlYXJSZW5kZXJTdXJmYWNl
KCk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAg
ICB9Ci0KLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90
cmFuc2Zvcm1MYXllci5jbGVhclJlbmRlclN1cmZhY2UoKTsKLSAgICAgICAgbV90cmFuc2Zvcm1M
YXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAobV9saW5rSGln
aGxpZ2h0KQotICAgICAgICBtX2xpbmtIaWdobGlnaHQuY2xlYXIoKTsKLQotICAgIEdyYXBoaWNz
TGF5ZXI6OndpbGxCZURlc3Ryb3llZCgpOwotfQotCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIGluTmFtZSkKIHsKICAgICBtX25hbWVCYXNlID0gaW5O
YW1lOwpAQCAtMTM2LDIxICsxMTMsMTYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNl
dE5hbWUoY29uc3QgU3RyaW5nJiBpbk5hbWUpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVOYW1lcygpCiB7Ci0gICAgaWYgKCFtX2xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAg
IFN0cmluZyBkZWJ1Z05hbWUgPSAiTGF5ZXIgZm9yICIgKyBtX25hbWVCYXNlOwotICAgICAgICBt
X2xheWVyLnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOwotICAgIH0KLSAgICBpZiAoIW1fdHJhbnNm
b3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxheWVyIGZvciAi
ICsgbV9uYW1lQmFzZTsKKyAgICBtX2xheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKKwor
ICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAi
VHJhbnNmb3JtTGF5ZXIgZm9yICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyLnNldERlYnVnTmFtZShkZWJ1Z05hbWUpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5z
ZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKICAgICB9Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIu
aXNOdWxsKCkpIHsKKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIFN0cmluZyBk
ZWJ1Z05hbWUgPSAiQ29udGVudHNMYXllciBmb3IgIiArIG1fbmFtZUJhc2U7Ci0gICAgICAgIG1f
Y29udGVudHNMYXllci5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKLSAgICB9Ci0gICAgaWYgKG1f
bGlua0hpZ2hsaWdodCkgewotICAgICAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxpbmtIaWdobGln
aHQgZm9yICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRM
YXllcigpLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVy
LT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKICAgICB9CiB9CiAKQEAgLTIwMyw3ICsxNzUsNyBA
QCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIq
IG9sZENoaWxkLCBHcmFwaGljc0xheWVyKgogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJl
bW92ZUZyb21QYXJlbnQoKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQo
KTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgcGxhdGZvcm1M
YXllcigpLT5yZW1vdmVGcm9tUGFyZW50KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIzMyw4ICsyMDUs
OCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUm
IHNpemUpCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0U2l6ZShjbGFtcGVkU2l6ZSk7CiAgICAgdXBk
YXRlTGF5ZXJTaXplKCk7CiAKLSAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkICYmICFtX2xheWVy
LmlzTnVsbCgpKQotICAgICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9wYWdl
U2NhbGVDaGFuZ2VkKQorICAgICAgICBtX2xheWVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9wYWdl
U2NhbGVDaGFuZ2VkID0gZmFsc2U7CiB9CiAKQEAgLTMwMSwxMyArMjczLDEzIEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKIHsK
ICAgICBHcmFwaGljc0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1fY29udGVu
dHNMYXllci5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAg
bV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigw
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZShi
b29sIG9wYXF1ZSkKIHsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFx
dWUpOwotICAgIG1fbGF5ZXIuc2V0T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworICAgIG1fbGF5
ZXItPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKIH0KIAogc3RhdGljIGJvb2wgY29weVdl
YkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMsIFdlYkZpbHRlck9wZXJhdGlvbnMmIHdlYkZpbHRlcnMpCkBAIC0z
OTEsMTEgKzM2MywxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgIGlmICghY29weVdlYkNvcmVGaWx0
ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBw
bGF0Zm9ybSBsYXllciwgYXMgdGhleSBhcmUKICAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sg
dG8gc29mdHdhcmUgbW9kZS4KLSAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKFdlYkZpbHRlck9w
ZXJhdGlvbnMoKSk7CisgICAgICAgIG1fbGF5ZXItPnNldEZpbHRlcnMoV2ViRmlsdGVyT3BlcmF0
aW9ucygpKTsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJPcGVyYXRp
b25zKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIG1fbGF5ZXIuc2V0Rmls
dGVycyh3ZWJGaWx0ZXJzKTsKKyAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOwog
ICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRlcnMpOwogfQogCkBAIC00
MDQsNyArMzc2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRG
aWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMKICAgICBXZWJGaWx0ZXJPcGVy
YXRpb25zIHdlYkZpbHRlcnM7CiAgICAgaWYgKCFjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNU
b1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX2xheWVyLnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZpbHRlcnMpOworICAgIG1f
bGF5ZXItPnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZpbHRlcnMpOwogfQogCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllcikK
QEAgLTQxNCwyMyArMzg2LDIxIEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRNYXNr
TGF5ZXIoR3JhcGhpY3NMYXllciogbWFza0xheWVyKQogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0
TWFza0xheWVyKG1hc2tMYXllcik7CiAKLSAgICBXZWJMYXllciBtYXNrV2ViTGF5ZXI7Ci0gICAg
aWYgKG1fbWFza0xheWVyKQotICAgICAgICBtYXNrV2ViTGF5ZXIgPSAqbV9tYXNrTGF5ZXItPnBs
YXRmb3JtTGF5ZXIoKTsKLSAgICBtX2xheWVyLnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOwor
ICAgIFdlYkxheWVyKiBtYXNrV2ViTGF5ZXIgPSBtX21hc2tMYXllciA/IG1fbWFza0xheWVyLT5w
bGF0Zm9ybUxheWVyKCkgOiAwOworICAgIG1fbGF5ZXItPnNldE1hc2tMYXllcihtYXNrV2ViTGF5
ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2ZhY2VWaXNpYmls
aXR5KGJvb2wgdmlzaWJsZSkKIHsKICAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2li
aWxpdHkodmlzaWJsZSk7Ci0gICAgbV9sYXllci5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlz
aWJpbGl0eSk7CisgICAgbV9jb250ZW50TGF5ZXItPnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VW
aXNpYmlsaXR5KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHko
ZmxvYXQgb3BhY2l0eSkKIHsKICAgICBmbG9hdCBjbGFtcGVkT3BhY2l0eSA9IG1heChtaW4ob3Bh
Y2l0eSwgMS4wZiksIDAuMGYpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldE9wYWNpdHkoY2xhbXBl
ZE9wYWNpdHkpOwotICAgIHByaW1hcnlMYXllcigpLnNldE9wYWNpdHkob3BhY2l0eSk7CisgICAg
cGxhdGZvcm1MYXllcigpLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIp
CkBAIC00MzgsMjkgKzQwOCwyNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0UmVw
bGljYXRlZEJ5TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgR3JhcGhpY3NMYXllckNo
cm9taXVtKiBsYXllckNocm9taXVtID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVt
Kj4obGF5ZXIpOwogICAgIEdyYXBoaWNzTGF5ZXI6OnNldFJlcGxpY2F0ZWRCeUxheWVyKGxheWVy
KTsKIAotICAgIFdlYkxheWVyIHdlYlJlcGxpY2FMYXllcjsKLSAgICBpZiAobGF5ZXJDaHJvbWl1
bSkKLSAgICAgICAgd2ViUmVwbGljYUxheWVyID0gbGF5ZXJDaHJvbWl1bS0+cHJpbWFyeUxheWVy
KCk7Ci0gICAgcHJpbWFyeUxheWVyKCkuc2V0UmVwbGljYUxheWVyKHdlYlJlcGxpY2FMYXllcik7
CisgICAgV2ViTGF5ZXIqIHdlYlJlcGxpY2FMYXllciA9IGxheWVyQ2hyb21pdW0gPyBsYXllckNo
cm9taXVtLT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0UmVw
bGljYUxheWVyKHdlYlJlcGxpY2FMYXllcik7CiB9CiAKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KCkKIHsKLSAgICBpZiAoIW1fY29udGVudHNM
YXllci5pc051bGwoKSkKLSAgICAgICAgbV9jb250ZW50c0xheWVyLmludmFsaWRhdGUoKTsKKyAg
ICBpZiAobV9jb250ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPmludmFsaWRh
dGUoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheSgp
CiB7CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKQotICAgICAgICBtX2xheWVyLmludmFsaWRhdGUo
KTsKKyAgICAgICAgbV9sYXllci0+aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5SW5SZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkK
IHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkpCi0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZVJl
Y3QocmVjdCk7CisgICAgICAgIG1fbGF5ZXItPmludmFsaWRhdGVSZWN0KHJlY3QpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCkBAIC00NzYsNDYgKzQ0NCw1NiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKIHsKICAgICBib29sIGNoaWxkcmVuQ2hh
bmdlZCA9IGZhbHNlOwogICAgIGlmIChpbWFnZSkgewotICAgICAgICBpZiAobV9jb250ZW50c0xh
eWVyLmlzTnVsbCgpIHx8IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZv
ckltYWdlKSB7Ci0gICAgICAgICAgICBXZWJLaXQ6OldlYkltYWdlTGF5ZXIgaW1hZ2VMYXllciA9
IFdlYktpdDo6V2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCk7Ci0gICAgICAgICAgICBzZXR1cENvbnRl
bnRzTGF5ZXIoaW1hZ2VMYXllcik7CisgICAgICAgIGlmICghbV9jb250ZW50c0xheWVyIHx8IG1f
Y29udGVudHNMYXllclB1cnBvc2UgIT0gQ29udGVudHNMYXllckZvckltYWdlKSB7CisgICAgICAg
ICAgICBtX2ltYWdlTGF5ZXIgPSBhZG9wdFB0cihXZWJJbWFnZUxheWVyOjpjcmVhdGUoKSk7Cisg
ICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIobV9pbWFnZUxheWVyLT5sYXllcigpKTsKICAg
ICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9ySW1hZ2U7
CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAg
IFdlYktpdDo6V2ViSW1hZ2VMYXllciBpbWFnZUxheWVyID0gbV9jb250ZW50c0xheWVyLnRvPFdl
YktpdDo6V2ViSW1hZ2VMYXllcj4oKTsKICAgICAgICAgTmF0aXZlSW1hZ2VTa2lhKiBuYXRpdmVJ
bWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgICAgICBpbWFn
ZUxheWVyLnNldEJpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCkpOwotICAgICAgICBpbWFnZUxh
eWVyLnNldE9wYXF1ZShpbWFnZS0+aXNCaXRtYXBJbWFnZSgpICYmICFpbWFnZS0+Y3VycmVudEZy
YW1lSGFzQWxwaGEoKSk7CisgICAgICAgIG1faW1hZ2VMYXllci0+c2V0Qml0bWFwKG5hdGl2ZUlt
YWdlLT5iaXRtYXAoKSk7CisgICAgICAgIG1faW1hZ2VMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVl
KGltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgp
KTsKICAgICAgICAgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
aWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG1faW1hZ2VMYXll
cikgewogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKIAotICAgICAgICAgICAg
Ly8gVGhlIG9sZCBjb250ZW50cyBsYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZUNoaWxk
TGlzdC4KLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci5yZXNldCgpOworICAgICAgICAgICAg
bV9pbWFnZUxheWVyLmNsZWFyKCk7CiAgICAgICAgIH0KKyAgICAgICAgLy8gVGhlIG9sZCBjb250
ZW50cyBsYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZUNoaWxkTGlzdC4KKyAgICAgICAg
bV9jb250ZW50c0xheWVyID0gMDsKICAgICB9CiAKICAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkKQog
ICAgICAgICB1cGRhdGVDaGlsZExpc3QoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKK3Zv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvQ2FudmFzKFBsYXRmb3JtTGF5
ZXIqIGxheWVyKQoreworICAgIHNldENvbnRlbnRzVG8oQ29udGVudHNMYXllckZvckNhbnZhcywg
bGF5ZXIpOworfQorCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01l
ZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQoreworICAgIHNldENvbnRlbnRzVG8oQ29udGVudHNM
YXllckZvclZpZGVvLCBsYXllcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpz
ZXRDb250ZW50c1RvKENvbnRlbnRzTGF5ZXJQdXJwb3NlIHB1cnBvc2UsIFdlYktpdDo6V2ViTGF5
ZXIqIGxheWVyKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7Ci0gICAgaWYg
KHBsYXRmb3JtTGF5ZXIpIHsKLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllciAhPSAqcGxhdGZv
cm1MYXllcikgewotICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKCpwbGF0Zm9ybUxheWVy
KTsKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVyRm9y
Q2FudmFzOworICAgIGlmIChsYXllcikgeworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyIHx8
IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gcHVycG9zZSkgeworICAgICAgICAgICAgc2V0dXBD
b250ZW50c0xheWVyKGxheWVyKTsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2Ug
PSBwdXJwb3NlOwogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAg
fQogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBp
ZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9jb250ZW50c0xh
eWVyKSB7CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCiAgICAgICAgICAg
ICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hp
bGRMaXN0LgotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAgICAgICAg
ICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MjUsNyArNTAz
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxh
dGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25zdCBJbnRT
aXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3RyaW5nJiBh
bmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5z
ZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldEFuaW1h
dGlvbkRlbGVnYXRlKHRoaXMpOwogCiAgICAgaW50IGFuaW1hdGlvbklkID0gbWFwQW5pbWF0aW9u
TmFtZVRvSWQoYW5pbWF0aW9uTmFtZSk7CiAgICAgaW50IGdyb3VwSWQgPSBBbmltYXRpb25JZFZl
bmRvcjo6Z2V0TmV4dEdyb3VwSWQoKTsKQEAgLTUzNCw4ICs1MTIsOCBAQCBib29sIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1
ZXMsIGNvbnN0CiAKICAgICBpZiAodG9BZGQpIHsKICAgICAgICAgLy8gUmVtb3ZlIGFueSBleGlz
dGluZyBhbmltYXRpb25zIHdpdGggdGhlIHNhbWUgYW5pbWF0aW9uIGlkIGFuZCB0YXJnZXQgcHJv
cGVydHkuCi0gICAgICAgIHByaW1hcnlMYXllcigpLnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb25J
ZCwgdG9BZGQtPnRhcmdldFByb3BlcnR5KCkpOwotICAgICAgICByZXR1cm4gcHJpbWFyeUxheWVy
KCkuYWRkQW5pbWF0aW9uKHRvQWRkLmdldCgpKTsKKyAgICAgICAgcGxhdGZvcm1MYXllcigpLT5y
ZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQsIHRvQWRkLT50YXJnZXRQcm9wZXJ0eSgpKTsKKyAg
ICAgICAgcmV0dXJuIHBsYXRmb3JtTGF5ZXIoKS0+YWRkQW5pbWF0aW9uKHRvQWRkLmdldCgpKTsK
ICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC01NDMsMTIgKzUyMSwxMiBAQCBib29sIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZXMsIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVzZUFuaW1h
dGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewot
ICAgIHByaW1hcnlMYXllcigpLnBhdXNlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFu
aW1hdGlvbk5hbWUpLCB0aW1lT2Zmc2V0KTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnBhdXNlQW5p
bWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zmc2V0KTsK
IH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUFuaW1hdGlvbihjb25zdCBT
dHJpbmcmIGFuaW1hdGlvbk5hbWUpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkucmVtb3ZlQW5pbWF0
aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKKyAgICBwbGF0Zm9ybUxh
eWVyKCktPnJlbW92ZUFuaW1hdGlvbihtYXBBbmltYXRpb25OYW1lVG9JZChhbmltYXRpb25OYW1l
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9ucyhk
b3VibGUgd2FsbENsb2NrVGltZSkKQEAgLTU1Niw4OCArNTM0LDU0IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrVGltZSkKICAg
ICAvLyB8d2FsbENsb2NrVGltZXwgaXMgaW4gdGhlIHdyb25nIHRpbWUgYmFzZS4gTmVlZCB0byBj
b252ZXJ0IGhlcmUuCiAgICAgLy8gRklYTUU6IGZpbmQgYSBtb3JlIHJlbGlhYmxlIHdheSB0byBk
byB0aGlzLgogICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0gd2FsbENsb2NrVGltZSArIG1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gY3VycmVudFRpbWUoKTsKLSAgICBwcmltYXJ5TGF5
ZXIoKS5zdXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKKyAgICBwbGF0Zm9ybUxheWVy
KCktPnN1c3BlbmRBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6cmVzdW1lQW5pbWF0aW9ucygpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCku
cmVzdW1lQW5pbWF0aW9ucyhtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgcGxh
dGZvcm1MYXllcigpLT5yZXN1bWVBbmltYXRpb25zKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQo
Y29uc3QgUGF0aCYgcGF0aCkKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjphZGRMaW5rSGln
aGxpZ2h0KGNvbnN0IFBhdGgmKQogewotICAgIG1fbGlua0hpZ2hsaWdodCA9IExpbmtIaWdobGln
aHQ6OmNyZWF0ZSh0aGlzLCBwYXRoLCBBbmltYXRpb25JZFZlbmRvcjo6TGlua0hpZ2hsaWdodEFu
aW1hdGlvbklkLCBBbmltYXRpb25JZFZlbmRvcjo6Z2V0TmV4dEdyb3VwSWQoKSk7Ci0gICAgdXBk
YXRlQ2hpbGRMaXN0KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpkaWRGaW5p
c2hMaW5rSGlnaGxpZ2h0KCkKIHsKLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAgICBt
X2xpbmtIaWdobGlnaHQtPmNvbnRlbnRMYXllcigpLT5yZW1vdmVGcm9tUGFyZW50KCk7Ci0KLSAg
ICBtX2xpbmtIaWdobGlnaHQuY2xlYXIoKTsKLX0KLQotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzVG9NZWRpYShQbGF0Zm9ybUxheWVyKiBsYXllcikKLXsKLSAgICBib29s
IGNoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOwotICAgIGlmIChsYXllcikgewotICAgICAgICBpZiAo
bV9jb250ZW50c0xheWVyLmlzTnVsbCgpIHx8IG1fY29udGVudHNMYXllclB1cnBvc2UgIT0gQ29u
dGVudHNMYXllckZvclZpZGVvKSB7Ci0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoKmxh
eWVyKTsKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1cnBvc2UgPSBDb250ZW50c0xheWVy
Rm9yVmlkZW87Ci0gICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlm
ICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBjaGlsZHJlbkNoYW5n
ZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwg
YmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAgICAgICAgICAgbV9jb250ZW50c0xh
eWVyLnJlc2V0KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoY2hpbGRyZW5DaGFuZ2Vk
KQotICAgICAgICB1cGRhdGVDaGlsZExpc3QoKTsKLX0KLQotV2ViS2l0OjpXZWJMYXllciBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnByaW1hcnlMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
dHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkgPyBtX2xheWVyIDogbV90cmFuc2Zvcm1MYXllcjsKIH0K
IAogUGxhdGZvcm1MYXllciogR3JhcGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9ybUxheWVyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxQbGF0Zm9ybUxheWVyKj4obV90cmFuc2Zv
cm1MYXllci5pc051bGwoKSA/ICZtX2xheWVyIDogJm1fdHJhbnNmb3JtTGF5ZXIpOworICAgIHJl
dHVybiBtX3RyYW5zZm9ybUxheWVyID8gbV90cmFuc2Zvcm1MYXllci5nZXQoKSA6IG1fbGF5ZXI7
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXREZWJ1Z0JhY2tncm91bmRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiB7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQoKSkKLSAgICAg
ICAgbV9sYXllci5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IucmdiKCkpOworICAgICAgICBtX2xh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IucmdiKCkpOwogICAgIGVsc2UKLSAgICAgICAg
bV9sYXllci5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAg
ICAgIG1fbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsK
IH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldERlYnVnQm9yZGVyKGNvbnN0IENv
bG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgpCiB7CiAgICAgaWYgKGNvbG9yLmlzVmFsaWQo
KSkgewotICAgICAgICBtX2xheWVyLnNldERlYnVnQm9yZGVyQ29sb3IoY29sb3IucmdiKCkpOwot
ICAgICAgICBtX2xheWVyLnNldERlYnVnQm9yZGVyV2lkdGgoYm9yZGVyV2lkdGgpOworICAgICAg
ICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9yKGNvbG9yLnJnYigpKTsKKyAgICAgICAgbV9s
YXllci0+c2V0RGVidWdCb3JkZXJXaWR0aChib3JkZXJXaWR0aCk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgbV9sYXllci5zZXREZWJ1Z0JvcmRlckNvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkp
OwotICAgICAgICBtX2xheWVyLnNldERlYnVnQm9yZGVyV2lkdGgoMCk7CisgICAgICAgIG1fbGF5
ZXItPnNldERlYnVnQm9yZGVyQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgICAg
IG1fbGF5ZXItPnNldERlYnVnQm9yZGVyV2lkdGgoMCk7CiAgICAgfQogfQogCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hpbGRMaXN0KCkKIHsKLSAgICBWZWN0b3I8V2ViTGF5
ZXI+IG5ld0NoaWxkcmVuOworICAgIFZlY3RvcjxXZWJMYXllcio+IG5ld0NoaWxkcmVuOwogCi0g
ICAgaWYgKCFtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7CisgICAgaWYgKG1fdHJhbnNmb3Jt
TGF5ZXIpIHsKICAgICAgICAgLy8gQWRkIHRoZSBwcmltYXJ5IGxheWVyIGZpcnN0LiBFdmVuIGlm
IHdlIGhhdmUgbmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbiwgdGhlIHByaW1hcnkgbGF5ZXIgYWx3
YXlzIGNvbWVzIGJlaGluZC4KICAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKG1fbGF5ZXIpOwot
ICAgIH0gZWxzZSBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgIH0gZWxzZSBp
ZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRz
IGxheWVyIGluIHRoZSBjb3JyZWN0IG9yZGVyIHdpdGggbmVnYXRpdmUgei1vcmRlciBjaGlsZHJl
bi4KICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVzZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1
ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5ZXJzIGFyZSBvbmx5IHVzZWQKICAgICAg
ICAgLy8gZm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KQEAg
LTY0OSw3OSArNTkzLDc2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDaGls
ZExpc3QoKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47ICsraSkgewog
ICAgICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIGN1ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3Jh
cGhpY3NMYXllckNocm9taXVtKj4oY2hpbGRMYXllcnNbaV0pOwogCi0gICAgICAgIG5ld0NoaWxk
cmVuLmFwcGVuZChjdXJDaGlsZC0+cHJpbWFyeUxheWVyKCkpOworICAgICAgICBuZXdDaGlsZHJl
bi5hcHBlbmQoY3VyQ2hpbGQtPnBsYXRmb3JtTGF5ZXIoKSk7CiAgICAgfQogCi0gICAgaWYgKG1f
bGlua0hpZ2hsaWdodCkKLSAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKG1fbGlua0hpZ2hsaWdo
dC0+Y29udGVudExheWVyKCkpOwotCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuZXdDaGls
ZHJlbi5zaXplKCk7ICsraSkKLSAgICAgICAgbmV3Q2hpbGRyZW5baV0ucmVtb3ZlRnJvbVBhcmVu
dCgpOworICAgICAgICBuZXdDaGlsZHJlbltpXS0+cmVtb3ZlRnJvbVBhcmVudCgpOwogCi0gICAg
V2ViVmVjdG9yPFdlYkxheWVyPiBuZXdXZWJDaGlsZHJlbjsKKyAgICBXZWJWZWN0b3I8V2ViTGF5
ZXIqPiBuZXdXZWJDaGlsZHJlbjsKICAgICBuZXdXZWJDaGlsZHJlbi5hc3NpZ24obmV3Q2hpbGRy
ZW4uZGF0YSgpLCBuZXdDaGlsZHJlbi5zaXplKCkpOwogCi0gICAgaWYgKCFtX3RyYW5zZm9ybUxh
eWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0Q2hpbGRyZW4obmV3
V2ViQ2hpbGRyZW4pOworICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CisgICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXItPnNldENoaWxkcmVuKG5ld1dlYkNoaWxkcmVuKTsKIAotICAgICAgICBpZiAo
IW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9jb250ZW50c0xheWVy
KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGEgdHJhbnNmb3JtIGxheWVyLCB0aGVuIHRo
ZSBjb250ZW50cyBsYXllciBpcyBwYXJlbnRlZCBpbiB0aGUKICAgICAgICAgICAgIC8vIHByaW1h
cnkgbGF5ZXIgKHdoaWNoIGlzIGl0c2VsZiBhIGNoaWxkIG9mIHRoZSB0cmFuc2Zvcm0gbGF5ZXIp
LgotICAgICAgICAgICAgbV9sYXllci5yZW1vdmVBbGxDaGlsZHJlbigpOwotICAgICAgICAgICAg
bV9sYXllci5hZGRDaGlsZChtX2NvbnRlbnRzTGF5ZXIpOworICAgICAgICAgICAgbV9sYXllci0+
cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgIG1fbGF5ZXItPmFkZENoaWxkKG1fY29u
dGVudHNMYXllcik7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgbV9sYXllci5zZXRD
aGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CisgICAgICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKG5l
d1dlYkNoaWxkcmVuKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVyUG9zaXRpb24oKQogewotICAgIHByaW1hcnlMYXllcigpLnNldFBvc2l0aW9uKG1fcG9zaXRp
b24pOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0UG9zaXRpb24obV9wb3NpdGlvbik7CiB9CiAK
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclNpemUoKQogewogICAgIElu
dFNpemUgbGF5ZXJTaXplKG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCkpOwotICAgIGlm
ICghbV90cmFuc2Zvcm1MYXllci5pc051bGwoKSkgewotICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LnNldEJvdW5kcyhsYXllclNpemUpOwotICAgICAgICBtX2xheWVyLnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQoKSk7CisgICAgaWYgKG1fdHJhbnNmb3JtTGF5ZXIpIHsKKyAgICAgICAgbV90cmFuc2Zv
cm1MYXllci0+c2V0Qm91bmRzKGxheWVyU2l6ZSk7CisgICAgICAgIG1fbGF5ZXItPnNldFBvc2l0
aW9uKEZsb2F0UG9pbnQoKSk7CiAgICAgfQogCi0gICAgbV9sYXllci5zZXRCb3VuZHMobGF5ZXJT
aXplKTsKKyAgICBtX2xheWVyLT5zZXRCb3VuZHMobGF5ZXJTaXplKTsKIAotICAgIC8vIE5vdGUg
dGhhdCB3ZSBkb24ndCByZXNpemUgbV9jb250ZW50c0xheWVyLiBJdCdzIHVwIHRoZSBjYWxsZXIg
dG8gZG8gdGhhdC4KKyAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVudHNM
YXllci0+IEl0J3MgdXAgdGhlIGNhbGxlciB0byBkbyB0aGF0LgogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQW5jaG9yUG9pbnQoKQogewotICAgIHByaW1hcnlMYXllcigp
LnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQobV9hbmNob3JQb2ludC54KCksIG1fYW5jaG9yUG9p
bnQueSgpKSk7Ci0gICAgcHJpbWFyeUxheWVyKCkuc2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9yUG9p
bnQueigpKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQo
bV9hbmNob3JQb2ludC54KCksIG1fYW5jaG9yUG9pbnQueSgpKSk7CisgICAgcGxhdGZvcm1MYXll
cigpLT5zZXRBbmNob3JQb2ludFoobV9hbmNob3JQb2ludC56KCkpOwogfQogCiB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlVHJhbnNmb3JtKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIo
KS5zZXRUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm0pKTsKKyAg
ICBwbGF0Zm9ybUxheWVyKCktPnNldFRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCht
X3RyYW5zZm9ybSkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hp
bGRyZW5UcmFuc2Zvcm0oKQogewotICAgIHByaW1hcnlMYXllcigpLnNldFN1YmxheWVyVHJhbnNm
b3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG1fY2hpbGRyZW5UcmFuc2Zvcm0pKTsKKyAgICBw
bGF0Zm9ybUxheWVyKCktPnNldFN1YmxheWVyVHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4KG1fY2hpbGRyZW5UcmFuc2Zvcm0pKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnVwZGF0ZU1hc2tzVG9Cb3VuZHMoKQogewotICAgIG1fbGF5ZXIuc2V0TWFza3NUb0JvdW5k
cyhtX21hc2tzVG9Cb3VuZHMpOworICAgIG1fbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobV9tYXNr
c1RvQm91bmRzKTsKICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogewotICAgIGlmICht
X3ByZXNlcnZlczNEICYmIG1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAobV9w
cmVzZXJ2ZXMzRCAmJiAhbV90cmFuc2Zvcm1MYXllcikgewogICAgICAgICAvLyBDcmVhdGUgdGhl
IHRyYW5zZm9ybSBsYXllci4KLSAgICAgICAgbV90cmFuc2Zvcm1MYXllciA9IFdlYkxheWVyOjpj
cmVhdGUoKTsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsK
LSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKLSAg
ICAgICAgbV9sYXllci50cmFuc2ZlckFuaW1hdGlvbnNUbygmbV90cmFuc2Zvcm1MYXllcik7Cisg
ICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOwor
ICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKKyAgICAgICAg
bV90cmFuc2Zvcm1MYXllci0+c2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7CisgICAgICAgIG1f
bGF5ZXItPnRyYW5zZmVyQW5pbWF0aW9uc1RvKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCkpOwogCiAg
ICAgICAgIC8vIENvcHkgdGhlIHBvc2l0aW9uIGZyb20gdGhpcyBsYXllci4KICAgICAgICAgdXBk
YXRlTGF5ZXJQb3NpdGlvbigpOwpAQCAtNzMwLDM0ICs2NzEsMzQgQEAgdm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QoKQogICAgICAgICB1cGRhdGVUcmFu
c2Zvcm0oKTsKICAgICAgICAgdXBkYXRlQ2hpbGRyZW5UcmFuc2Zvcm0oKTsKIAotICAgICAgICBt
X2xheWVyLnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CisgICAgICAgIG1fbGF5ZXIt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAKLSAgICAgICAgbV9sYXllci5zZXRB
bmNob3JQb2ludChGbG9hdFBvaW50KDAuNWYsIDAuNWYpKTsKLSAgICAgICAgbV9sYXllci5zZXRU
cmFuc2Zvcm0oU2tNYXRyaXg0NCgpKTsKKyAgICAgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQo
RmxvYXRQb2ludCgwLjVmLCAwLjVmKSk7CisgICAgICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybShT
a01hdHJpeDQ0KCkpOwogCiAgICAgICAgIC8vIFNldCB0aGUgb2xkIGxheWVyIHRvIG9wYWNpdHkg
b2YgMS4gRnVydGhlciBkb3duIHdlIHdpbGwgc2V0IHRoZSBvcGFjaXR5IG9uIHRoZSB0cmFuc2Zv
cm0gbGF5ZXIuCi0gICAgICAgIG1fbGF5ZXIuc2V0T3BhY2l0eSgxKTsKKyAgICAgICAgbV9sYXll
ci0+c2V0T3BhY2l0eSgxKTsKIAotICAgICAgICBtX2xheWVyLnNldENvbnRlbnRzU2NhbGUoY29u
dGVudHNTY2FsZSgpKTsKKyAgICAgICAgbV9jb250ZW50TGF5ZXItPnNldENvbnRlbnRzU2NhbGUo
Y29udGVudHNTY2FsZSgpKTsKIAogICAgICAgICAvLyBNb3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBj
aGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyLgogICAgICAgICBpZiAocGFyZW50KCkpCi0gICAg
ICAgICAgICBwYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllciwg
bV90cmFuc2Zvcm1MYXllcik7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuYWRkQ2hpbGQobV9s
YXllcik7CisgICAgICAgICAgICBwYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT5yZXBsYWNlQ2hp
bGQobV9sYXllciwgbV90cmFuc2Zvcm1MYXllci5nZXQoKSk7CisgICAgICAgIG1fdHJhbnNmb3Jt
TGF5ZXItPmFkZENoaWxkKG1fbGF5ZXIpOwogCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwot
ICAgIH0gZWxzZSBpZiAoIW1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxs
KCkpIHsKKyAgICB9IGVsc2UgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIp
IHsKICAgICAgICAgLy8gUmVsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdp
dGggdGhpcyBsYXllci4KLSAgICAgICAgbV9sYXllci5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAg
ICAgIG1fbGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgaWYgKHBhcmVudCgpKQot
ICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJh
bnNmb3JtTGF5ZXIsIG1fbGF5ZXIpOworICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5
ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXIpOwogCi0g
ICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fbGF5ZXIpOworICAgICAgICBtX2xh
eWVyLT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXll
ci0+dHJhbnNmZXJBbmltYXRpb25zVG8obV9sYXllcik7CiAKICAgICAgICAgLy8gUmVsZWFzZSB0
aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldEFuaW1hdGlv
bkRlbGVnYXRlKDApOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnJlc2V0KCk7CisgICAgICAg
IG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOworICAgICAgICBtX3Ry
YW5zZm9ybUxheWVyLmNsZWFyKCk7CiAKICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwog
ICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKQEAgLTc2OCw4ICs3MDksOCBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRCgpCiAgICAgICAgIHVwZGF0
ZUNoaWxkTGlzdCgpOwogICAgIH0KIAotICAgIG1fbGF5ZXIuc2V0UHJlc2VydmVzM0QobV9wcmVz
ZXJ2ZXMzRCk7Ci0gICAgcHJpbWFyeUxheWVyKCkuc2V0T3BhY2l0eShtX29wYWNpdHkpOworICAg
IG1fbGF5ZXItPnNldFByZXNlcnZlczNEKG1fcHJlc2VydmVzM0QpOworICAgIHBsYXRmb3JtTGF5
ZXIoKS0+c2V0T3BhY2l0eShtX29wYWNpdHkpOwogICAgIHVwZGF0ZU5hbWVzKCk7CiB9CiAKQEAg
LTc4MCwyNyArNzIxLDI3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXll
cklzRHJhd2FibGUoKQogICAgIC8vIGZsYWdzIGFyZSBjb21iaW5lZCBoZXJlLiBtX2NvbnRlbnRz
TGF5ZXIgc2hvdWxkbid0IHJlY2VpdmUgdGhlIGRyYXdzQ29udGVudCBmbGFnCiAgICAgLy8gc28g
aXQgaXMgb25seSBnaXZlbiBjb250ZW50c1Zpc2libGUuCiAKLSAgICBtX2xheWVyLnNldERyYXdz
Q29udGVudChtX2RyYXdzQ29udGVudCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CisgICAgbV9sYXll
ci0+c2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsK
IAotICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQotICAgICAgICBtX2NvbnRlbnRz
TGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBpZiAobV9jb250
ZW50c0xheWVyKQorICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldERyYXdzQ29udGVudChtX2Nv
bnRlbnRzVmlzaWJsZSk7CiAKICAgICBpZiAobV9kcmF3c0NvbnRlbnQpCi0gICAgICAgIG1fbGF5
ZXIuaW52YWxpZGF0ZSgpOworICAgICAgICBtX2xheWVyLT5pbnZhbGlkYXRlKCk7CiAKICAgICB1
cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnVwZGF0ZUxheWVyQmFja2dyb3VuZENvbG9yKCkKIHsKLSAgICBpZiAobV9jb250ZW50c0xheWVy
LmlzTnVsbCgpKQorICAgIGlmICghbV9jb250ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBXZSBuZXZlciBjcmVhdGUgdGhlIGNvbnRlbnRzIGxheWVyIGp1c3QgZm9yIGJhY2tn
cm91bmQgY29sb3IgeWV0LgogICAgIGlmIChtX2JhY2tncm91bmRDb2xvclNldCkKLSAgICAgICAg
bV9jb250ZW50c0xheWVyLnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91bmRDb2xvci5yZ2Io
KSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dy
b3VuZENvbG9yLnJnYigpKTsKICAgICBlbHNlCi0gICAgICAgIG1fY29udGVudHNMYXllci5zZXRC
YWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgICAgIG1fY29udGVu
dHNMYXllci0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOwogfQog
CiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNWaWRlbygpCkBAIC04
MTAsNTAgKzc1MSw0OSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVu
dHNWaWRlbygpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c1Jl
Y3QoKQogewotICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKCFtX2Nv
bnRlbnRzTGF5ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29udGVudHNMYXllci5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50KG1fY29udGVudHNSZWN0LngoKSwgbV9jb250ZW50c1JlY3QueSgp
KSk7Ci0gICAgbV9jb250ZW50c0xheWVyLnNldEJvdW5kcyhJbnRTaXplKG1fY29udGVudHNSZWN0
LndpZHRoKCksIG1fY29udGVudHNSZWN0LmhlaWdodCgpKSk7CisgICAgbV9jb250ZW50c0xheWVy
LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KG1fY29udGVudHNSZWN0LngoKSwgbV9jb250ZW50c1Jl
Y3QueSgpKSk7CisgICAgbV9jb250ZW50c0xheWVyLT5zZXRCb3VuZHMoSW50U2l6ZShtX2NvbnRl
bnRzUmVjdC53aWR0aCgpLCBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSkpOwogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNTY2FsZSgpCiB7CiAgICAgLy8gSWYg
cGFnZSBzY2FsZSBpcyBhbHJlYWR5IGFwcGxpZWQgdGhlbiB0aGVyZSdzIG5vIG5lZWQgdG8gYXBw
bHkgaXQgYWdhaW4uCi0gICAgaWYgKGFwcGxpZXNQYWdlU2NhbGUoKSB8fCBtX2xheWVyLmlzTnVs
bCgpKQorICAgIGlmIChhcHBsaWVzUGFnZVNjYWxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fbGF5ZXIuc2V0Q29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKCkpOworICAgIG1fY29udGVu
dExheWVyLT5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CiB9CiAKLXZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIgY29udGVudHNM
YXllcikKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoV2Vi
TGF5ZXIqIGNvbnRlbnRzTGF5ZXIpCiB7CiAgICAgaWYgKGNvbnRlbnRzTGF5ZXIgPT0gbV9jb250
ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fY29udGVudHNMYXllci5p
c051bGwoKSkgewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5KGZhbHNlKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnJlbW92ZUZyb21QYXJl
bnQoKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAgaWYgKG1fY29udGVu
dHNMYXllcikgeworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNl
VmlzaWJpbGl0eShmYWxzZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+cmVtb3ZlRnJvbVBh
cmVudCgpOwogICAgIH0KIAogICAgIG1fY29udGVudHNMYXllciA9IGNvbnRlbnRzTGF5ZXI7CiAK
LSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewotICAgICAgICBtX2NvbnRlbnRz
TGF5ZXIuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7Ci0gICAgICAgIG1fY29udGVu
dHNMYXllci5zZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSk7CisgICAgaWYgKG1f
Y29udGVudHNMYXllcikgeworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQoMCwgMCkpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eSh0cnVlKTsKIAogICAgICAgICAvLyBJdCBpcyBuZWNlc3Nhcnkg
dG8gY2FsbCBzZXREcmF3c0NvbnRlbnQgYXMgc29vbiBhcyB3ZSByZWNlaXZlIHRoZSBuZXcgY29u
dGVudHNMYXllciwgZm9yCiAgICAgICAgIC8vIHRoZSBjb3JyZWN0bmVzcyBvZiBlYXJseSBleGl0
IGNvbmRpdGlvbnMgaW4gc2V0RHJhd3NDb250ZW50KCkgYW5kIHNldENvbnRlbnRzVmlzaWJsZSgp
LgotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fY29udGVudHNWaXNp
YmxlKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREcmF3c0NvbnRlbnQobV9jb250ZW50
c1Zpc2libGUpOwogCiAgICAgICAgIC8vIEluc2VydCB0aGUgY29udGVudCBsYXllciBmaXJzdC4g
VmlkZW8gZWxlbWVudHMgcmVxdWlyZSB0aGlzLCBiZWNhdXNlIHRoZXkgaGF2ZQogICAgICAgICAv
LyBzaGFkb3cgY29udGVudCB0aGF0IG11c3QgZGlzcGxheSBpbiBmcm9udCBvZiB0aGUgdmlkZW8u
Ci0gICAgICAgIG1fbGF5ZXIuaW5zZXJ0Q2hpbGQobV9jb250ZW50c0xheWVyLCAwKTsKKyAgICAg
ICAgbV9sYXllci0+aW5zZXJ0Q2hpbGQobV9jb250ZW50c0xheWVyLCAwKTsKIAogICAgICAgICBp
ZiAoc2hvd0RlYnVnQm9yZGVycygpKSB7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0
RGVidWdCb3JkZXJDb2xvcihDb2xvcigwLCAwLCAxMjgsIDE4MCkucmdiKCkpOwotICAgICAgICAg
ICAgbV9jb250ZW50c0xheWVyLnNldERlYnVnQm9yZGVyV2lkdGgoMSk7CisgICAgICAgICAgICBt
X2NvbnRlbnRzTGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IoMCwgMCwgMTI4LCAxODAp
LnJnYigpKTsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RGVidWdCb3JkZXJXaWR0
aCgxKTsKICAgICAgICAgfQogICAgIH0KICAgICB1cGRhdGVEZWJ1Z0luZGljYXRvcnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBo
aWNzTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKaW5kZXggYWE2NGVhZDZkNjY1ZTI1OGQ5MGQw
MjYwZmFhOTExNTBiOTZkYWQ2Yi4uYTIyYmExZjRiNDQ5MDYxMjFiODU2MjcxNjJlZWJmM2Q3NGVl
NjkxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmgKQEAgLTM5LDYgKzM5LDcg
QEAKIAogI2luY2x1ZGUgPHB1YmxpYy9XZWJBbmltYXRpb25EZWxlZ2F0ZS5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXll
ci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAKQEAgLTEwMSw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldENv
bnRlbnRzVG9JbWFnZShJbWFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvTWVk
aWEoUGxhdGZvcm1MYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvQ2FudmFz
KFBsYXRmb3JtTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNv
bnN0IHsgcmV0dXJuICFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQog
CiAgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYs
IGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0IFN0cmluZyYs
IGRvdWJsZSB0aW1lT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oY29u
c3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CkBAIC0xMjUsMTUg
KzEyNiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQoZG91YmxlIHN0YXJ0VGltZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFu
aW1hdGlvbkZpbmlzaGVkKGRvdWJsZSBmaW5pc2hUaW1lKSBPVkVSUklERTsKIAorICAgIFdlYktp
dDo6V2ViQ29udGVudExheWVyKiBjb250ZW50TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRl
bnRMYXllci5nZXQoKTsgfQorCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCi0gICAgV2ViS2l0
OjpXZWJMYXllciBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50c0xheWVy
OyB9CisgICAgV2ViS2l0OjpXZWJMYXllciogY29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJu
IG1fY29udGVudHNMYXllcjsgfQogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7Ci0KLSAgICBXZWJL
aXQ6OldlYkxheWVyIHByaW1hcnlMYXllcigpIGNvbnN0OwotCiAgICAgdm9pZCB1cGRhdGVOYW1l
cygpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAgdm9pZCB1cGRhdGVMYXllclBv
c2l0aW9uKCk7CkBAIC0xNTEsMzIgKzE1MCwzMyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
Q29udGVudHNSZWN0KCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c1NjYWxlKCk7CiAKLSAgICB2
b2lkIHNldHVwQ29udGVudHNMYXllcihXZWJLaXQ6OldlYkxheWVyKTsKKyAgICBlbnVtIENvbnRl
bnRzTGF5ZXJQdXJwb3NlIHsKKyAgICAgICAgTm9Db250ZW50c0xheWVyID0gMCwKKyAgICAgICAg
Q29udGVudHNMYXllckZvckltYWdlLAorICAgICAgICBDb250ZW50c0xheWVyRm9yVmlkZW8sCisg
ICAgICAgIENvbnRlbnRzTGF5ZXJGb3JDYW52YXMsCisgICAgfTsKKworICAgIHZvaWQgc2V0Q29u
dGVudHNUbyhDb250ZW50c0xheWVyUHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciopOworICAgIHZv
aWQgc2V0dXBDb250ZW50c0xheWVyKFdlYktpdDo6V2ViTGF5ZXIqKTsKIAogICAgIGludCBtYXBB
bmltYXRpb25OYW1lVG9JZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOwogCiAgICAgU3Ry
aW5nIG1fbmFtZUJhc2U7CiAKLSAgICBXZWJLaXQ6OldlYkNvbnRlbnRMYXllciBtX2xheWVyOwot
ICAgIFdlYktpdDo6V2ViTGF5ZXIgbV90cmFuc2Zvcm1MYXllcjsKLSAgICBXZWJLaXQ6OldlYkxh
eWVyIG1fY29udGVudHNMYXllcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJDb250ZW50TGF5ZXI+
IG1fY29udGVudExheWVyOworICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1fbGF5ZXI7CisgICAgT3du
UHRyPFdlYktpdDo6V2ViTGF5ZXI+IG1fdHJhbnNmb3JtTGF5ZXI7CisgICAgT3duUHRyPFdlYktp
dDo6V2ViSW1hZ2VMYXllcj4gbV9pbWFnZUxheWVyOworICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1f
Y29udGVudHNMYXllcjsKIAogICAgIE93blB0cjxPcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5
ZXJEZWxlZ2F0ZT4gbV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZTsKIAot
ICAgIGVudW0gQ29udGVudHNMYXllclB1cnBvc2UgewotICAgICAgICBOb0NvbnRlbnRzTGF5ZXIg
PSAwLAotICAgICAgICBDb250ZW50c0xheWVyRm9ySW1hZ2UsCi0gICAgICAgIENvbnRlbnRzTGF5
ZXJGb3JWaWRlbywKLSAgICAgICAgQ29udGVudHNMYXllckZvckNhbnZhcywKLSAgICB9OwotCiAg
ICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250ZW50c0xheWVyUHVycG9zZTsKICAgICBib29s
IG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRDb2xvciA6IDE7CiAgICAgYm9vbCBtX2luU2V0
Q2hpbGRyZW47CiAgICAgYm9vbCBtX3BhZ2VTY2FsZUNoYW5nZWQ7CiAKLSAgICBSZWZQdHI8TGlu
a0hpZ2hsaWdodD4gbV9saW5rSGlnaGxpZ2h0OwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmlu
ZywgaW50PiBBbmltYXRpb25JZE1hcDsKICAgICBBbmltYXRpb25JZE1hcCBtX2FuaW1hdGlvbklk
TWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggOWIwZTUzNGQ5OWIwYzNhOTc3ZTc5
YmJjZTk5MmNiOWMyMzE1YTg0YS4uZWI5MGMwNDFjYjEzYzMzYjhiYmJhZDZhNGRiZDA1MzgyZjMx
YTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTIzNCwxMCArMjM0LDExIEBAIHZvaWQg
TGF5ZXJDaHJvbWl1bTo6c2V0Qm91bmRzKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiB9CiAKLWNvbnN0IExheWVyQ2hyb21pdW0qIExheWVyQ2hyb21pdW06
OnJvb3RMYXllcigpIGNvbnN0CitMYXllckNocm9taXVtKiBMYXllckNocm9taXVtOjpyb290TGF5
ZXIoKQogewotICAgIGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyID0gdGhpczsKLSAgICBmb3Ig
KExheWVyQ2hyb21pdW0qIHBhcmVudCA9IGxheWVyLT5wYXJlbnQoKTsgcGFyZW50OyBsYXllciA9
IHBhcmVudCwgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKSkgeyB9CisgICAgTGF5ZXJDaHJvbWl1
bSogbGF5ZXIgPSB0aGlzOworICAgIHdoaWxlIChsYXllci0+cGFyZW50KCkpCisgICAgICAgIGxh
eWVyID0gbGF5ZXItPnBhcmVudCgpOwogICAgIHJldHVybiBsYXllcjsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5oCmluZGV4IDU0YWI4M2EwMTQ0ODBlZTFlMDYzZjZhODU4NTM3NWZlYzk1MDcyMjEuLmNj
YzM2YzM3MjY3ZGZmZDk1ODQ4ZWM0YmUzZDBhZTExYjU0OGRkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVt
LmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgogICAgIC8vIFRoZSByb290IGxheWVyIGlzIGEg
c3BlY2lhbCBjYXNlIC0tIGl0IG9wZXJhdGVzIGluIHBoeXNpY2FsIHBpeGVscy4KICAgICB2aXJ0
dWFsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKLSAgICBjb25zdCBMYXllckNo
cm9taXVtKiByb290TGF5ZXIoKSBjb25zdDsKKyAgICBMYXllckNocm9taXVtKiByb290TGF5ZXIo
KTsKICAgICBMYXllckNocm9taXVtKiBwYXJlbnQoKSBjb25zdDsKICAgICB2b2lkIGFkZENoaWxk
KFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4pOwogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUGFzc1Jl
ZlB0cjxMYXllckNocm9taXVtPiwgc2l6ZV90IGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cAppbmRleCBiZWE2ZjllY2Y5ODJmNzViMDhkODdiMjVhODQ0NTZjMGZhMDVhYmE0Li44MWY4
Zjc4MjZiYjY3M2M2NGY1ZjM5MzZhZDQ4NmVjZTkzODVjN2E2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9X
ZWJLaXQuZ3lwCkBAIC00ODYsNyArNDg2LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNv
bW1vbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxl
ckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRs
ZXJJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViQ29udGVudExheWVyLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAnLApAQCAtNTE1LDcgKzUxNCw4
IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJFbnRpdGllcy5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRp
ZXMuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAn
LAorICAgICAgICAgICAgICAgICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViRmlsZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwJywKQEAgLTU2
NCw5ICs1NjQsMTEgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1w
bC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1w
bC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJ
bXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXIuY3BwJywKKyAg
ICAgICAgICAgICAgICAnc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAnLAorICAgICAgICAg
ICAgICAgICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViSW1hZ2VEZWNvZGVyLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxh
eWVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAnLAor
ICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VMYXllckltcGwuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJbWFnZVNraWEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0
RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW5wdXRFdmVudC5jcHAnLApA
QCAtNTc3LDcgKzU3OSw2IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbnRlbnRTZXJ2aWNl
SW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViS2l0LmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dl
YkxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYXllckltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwJywKQEAgLTYxOCw4ICs2MTksOCBAQAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViU2NvcGVkTWljcm90YXNrU3VwcHJlc3Npb24uY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3Jv
bGxiYXJMYXllci5jcHAnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYWJsZUxheWVy
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3BwJywK
KyAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlNjcm9sbGJhckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJU
aGVtZUNsaWVudEltcGwuY3BwJywKQEAgLTYzOCw4ICs2MzksOCBAQAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViU29ja2V0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJbXBs
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJbXBsLmgnLAotICAgICAgICAg
ICAgICAgICdzcmMvV2ViU29saWRDb2xvckxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
b2xpZENvbG9yTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoR3Jh
bW1hci5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlLmNwcCcs
CkBAIC02NTUsNyArNjU2LDggQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJH
ZXN0dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0RmllbGREZWNvcmF0b3JD
bGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3Bw
JywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZGVvTGF5ZXIuY3BwJywKKyAgICAgICAgICAg
ICAgICAnc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJWaWRlb0xheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdCZW5jaG1h
cmtTdXBwb3J0SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0JlbmNobWFy
a1N1cHBvcnRJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29u
dGVudEhvc3QuY3BwCmluZGV4IDY1ZGFjNjJjYWUyNTNkNTE2NTg3NWNlNGUzMzZiZTg1Zjk3OGMx
YmEuLjRkZjQyMDRiMzQ3YmM4ZGNlODdmMTNhNmZiMGM2MjM0NWU3MGNjMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRl
ICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3Jh
cGhpY3NMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgog
I2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXll
ci5oPgpAQCAtNDgsMTEgKzQ5LDExIEBAIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29t
cG9zaXRlZENvbnRlbnRIb3N0KFdlYlZpZXdJbXBsKiB3ZWJWaWV3KQogICAgIG1fZ3JhcGhpY3NM
YXllci0+c2V0TmFtZSgibm9uLWNvbXBvc2l0ZWQgY29udGVudCIpOwogI2VuZGlmCiAgICAgbV9n
cmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgV2ViQ29udGVudExheWVy
IGxheWVyID0gbV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCktPnRvPFdlYkNvbnRlbnRM
YXllcj4oKTsKLSAgICBsYXllci5zZXRVc2VMQ0RUZXh0KHRydWUpOwotICAgIGxheWVyLnNldE9w
YXF1ZSh0cnVlKTsKKyAgICBXZWJDb250ZW50TGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtKj4obV9ncmFwaGljc0xheWVyLmdldCgpKS0+Y29u
dGVudExheWVyKCk7CisgICAgbGF5ZXItPnNldFVzZUxDRFRleHQodHJ1ZSk7CisgICAgbGF5ZXIt
PmxheWVyKCktPnNldE9wYXF1ZSh0cnVlKTsKICNpZiAhT1MoQU5EUk9JRCkKLSAgICBsYXllci5z
ZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKHRydWUpOworICAgIGxheWVyLT5zZXRE
cmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKHRydWUpOwogI2VuZGlmCiB9CiAKQEAgLTgw
LDcgKzgxLDcgQEAgdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbExheWVy
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKCpsYXllci0+cGxhdGZvcm1MYXllcigpID09IHNjcm9sbExheWVyKCkpCisgICAg
aWYgKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgPT0gc2Nyb2xsTGF5ZXIoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbGF5ZXItPmFkZENoaWxkQXRJbmRleChtX2dyYXBoaWNzTGF5ZXIuZ2V0KCks
IDApOwpAQCAtOTUsMTIgKzk2LDEyIEBAIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Ojpz
ZXRWaWV3cG9ydChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgYm9v
bCB2aXNpYmxlUmVjdENoYW5nZWQgPSBtX3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CiAK
ICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0U2l6ZTsKLSAgICBXZWJTY3JvbGxhYmxlTGF5
ZXIgbGF5ZXIgPSBzY3JvbGxMYXllcigpOwotICAgIGxheWVyLnNldFNjcm9sbFBvc2l0aW9uKHNj
cm9sbFBvc2l0aW9uICsgc2Nyb2xsT3JpZ2luKTsKLSAgICBsYXllci5zZXRQb3NpdGlvbihXZWJG
bG9hdFBvaW50KC1zY3JvbGxQb3NpdGlvbikpOworICAgIFdlYkxheWVyKiBsYXllciA9IHNjcm9s
bExheWVyKCk7CisgICAgbGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsg
c2Nyb2xsT3JpZ2luKTsKKyAgICBsYXllci0+c2V0UG9zaXRpb24oV2ViRmxvYXRQb2ludCgtc2Ny
b2xsUG9zaXRpb24pKTsKICAgICAvLyBEdWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIHBpbmNoIHpv
b20sIHRoZSBub25jb21wb3NpdGVkIGxheWVyIGlzIGFsd2F5cwogICAgIC8vIGFzc3VtZWQgdG8g
YmUgc2Nyb2xsYWJsZS4KLSAgICBsYXllci5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIGxheWVy
LT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VT
Y2FsZTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCgpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0U2l6ZShjb250ZW50c1NpemUpOwpAQCAtMTI3
LDExICsxMjgsMTEgQEAgYm9vbCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmhhdmVTY3JvbGxM
YXllcigpCiAgICAgcmV0dXJuIG1fZ3JhcGhpY3NMYXllci0+cGFyZW50KCk7CiB9CiAKLVdlYlNj
cm9sbGFibGVMYXllciBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKCkKK1dl
YkxheWVyKiBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKCkKIHsKICAgICBp
ZiAoIW1fZ3JhcGhpY3NMYXllci0+cGFyZW50KCkpCi0gICAgICAgIHJldHVybiBXZWJTY3JvbGxh
YmxlTGF5ZXIoKTsKLSAgICByZXR1cm4gbV9ncmFwaGljc0xheWVyLT5wYXJlbnQoKS0+cGxhdGZv
cm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7CisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXItPnBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCk7CiB9
CiAKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAppbmRleCBlNjBlOWVmNDg2YjE0MjMxMjQ3
MTNjNjhkZDZhYWMwZWVhNGE3ZGIzLi4wOGI1ZjZhNDFmNzcwNjFlN2ViMjgxNTQyZjBmZThlNjM1
ZmNjNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3Np
dGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21w
b3NpdGVkQ29udGVudEhvc3QuaApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMv
V2ViU2Nyb2xsYWJsZUxheWVyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
ZGV2aWNlU2NhbGVGYWN0b3I7IH0KIAogICAgIGJvb2wgaGF2ZVNjcm9sbExheWVyKCk7Ci0gICAg
V2ViU2Nyb2xsYWJsZUxheWVyIHNjcm9sbExheWVyKCk7CisgICAgV2ViTGF5ZXIqIHNjcm9sbExh
eWVyKCk7CiAKICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xh
eWVyOwogICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWZhNzQ2NWIxN2MxMzE2NzY5ODhmYTY1YThkNmJhMDRmYjQ3YzY2Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExh
eWVyLmg+Ci0KLSNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldl
YkNvbnRlbnRMYXllckltcGwuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1XZWJDb250ZW50TGF5ZXIgV2ViQ29udGVudExheWVyOjpjcmVhdGUo
V2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotewotICAgIHJldHVybiBXZWJD
b250ZW50TGF5ZXIoV2ViQ29udGVudExheWVySW1wbDo6Y3JlYXRlKGNvbnRlbnRDbGllbnQpKTsK
LX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8
Q29udGVudExheWVyQ2hyb21pdW0+KCktPmNsZWFyRGVsZWdhdGUoKTsKLX0KLQotdm9pZCBXZWJD
b250ZW50TGF5ZXI6OnNldERvdWJsZVNpZGVkKGJvb2wgZG91YmxlU2lkZWQpCi17Ci0gICAgbV9w
cml2YXRlLT5zZXREb3VibGVTaWRlZChkb3VibGVTaWRlZCk7Ci19Ci0KLXZvaWQgV2ViQ29udGVu
dExheWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IHNjYWxlKQotewotICAgIG1fcHJpdmF0ZS0+
c2V0Q29udGVudHNTY2FsZShzY2FsZSk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRV
c2VMQ0RUZXh0KGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0VXNlTENEVGV4dChl
bmFibGUpOwotfQotCi12b2lkIFdlYkNvbnRlbnRMYXllcjo6c2V0RHJhd0NoZWNrZXJib2FyZEZv
ck1pc3NpbmdUaWxlcyhib29sIGVuYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldERyYXdDaGVj
a2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoZW5hYmxlKTsKLX0KLQotV2ViQ29udGVudExheWVyOjpX
ZWJDb250ZW50TGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4mIG5v
ZGUpCi0gICAgOiBXZWJTY3JvbGxhYmxlTGF5ZXIobm9kZSkKLXsKLX0KLQotV2ViQ29udGVudExh
eWVyJiBXZWJDb250ZW50TGF5ZXI6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPENvbnRlbnRM
YXllckNocm9taXVtPiYgbm9kZSkKLXsKLSAgICBtX3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQotV2ViQ29udGVudExheWVyOjpvcGVyYXRvciBQYXNzUmVmUHRyPENvbnRl
bnRMYXllckNocm9taXVtPigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRl
bnRMYXllckNocm9taXVtKj4obV9wcml2YXRlLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXll
ckltcGwuY3BwCmluZGV4IDY5ZGExZWEzZjBlODkyMDE2OTZkOGRkZWM3NjQ4ZTRmNDY0Yzk2NDgu
LmZhMjFlODk3NGZkM2IxYjk4MDZhNWMyZTFjYTk5ZTY5YzY5OGRjYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCkBAIC0yNiwz
NyArMjYsNjYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5
ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJTa01hdHJpeDQ0LmgiCiAjaW5jbHVkZSA8cHVibGljL1dl
YkNvbnRlbnRMYXllckNsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+
CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJS
ZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXll
ckltcGw+IFdlYkNvbnRlbnRMYXllckltcGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQq
IGNvbnRlbnRDbGllbnQpCitXZWJDb250ZW50TGF5ZXIqIFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRl
KFdlYkNvbnRlbnRMYXllckNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViQ29udGVudExheWVySW1wbChjb250ZW50Q2xpZW50KSk7CisgICAgcmV0dXJuIG5ldyBX
ZWJDb250ZW50TGF5ZXJJbXBsKGNsaWVudCk7CiB9CiAKLVdlYkNvbnRlbnRMYXllckltcGw6Oldl
YkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQot
ICAgIDogQ29udGVudExheWVyQ2hyb21pdW0odGhpcykKLSAgICAsIG1fY29udGVudENsaWVudChj
b250ZW50Q2xpZW50KQorV2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVudExheWVySW1wbChX
ZWJDb250ZW50TGF5ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fd2ViTGF5ZXJJbXBsKGFkb3B0
UHRyKG5ldyBXZWJMYXllckltcGwoQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKSkp
KQorICAgICwgbV9jbGllbnQoY2xpZW50KQogewotICAgIHNldElzRHJhd2FibGUodHJ1ZSk7Cisg
ICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdl
YkNvbnRlbnRMYXllckltcGw6On5XZWJDb250ZW50TGF5ZXJJbXBsKCkKIHsKLSAgICBjbGVhckRl
bGVnYXRlKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29udGVudExheWVyQ2hyb21pdW0qPihtX3dlYkxh
eWVySW1wbC0+bGF5ZXIoKSktPmNsZWFyRGVsZWdhdGUoKTsKIH0KIAorV2ViTGF5ZXIqIFdlYkNv
bnRlbnRMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV93ZWJMYXllckltcGwuZ2V0
KCk7Cit9CisKK3ZvaWQgV2ViQ29udGVudExheWVySW1wbDo6c2V0RG91YmxlU2lkZWQoYm9vbCBk
b3VibGVTaWRlZCkKK3sKKyAgICBtX3dlYkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0RG91YmxlU2lk
ZWQoZG91YmxlU2lkZWQpOworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldENvbnRl
bnRzU2NhbGUoZmxvYXQgc2NhbGUpCit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNl
dENvbnRlbnRzU2NhbGUoc2NhbGUpOworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNl
dFVzZUxDRFRleHQoYm9vbCBlbmFibGUpCit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCkt
PnNldFVzZUxDRFRleHQoZW5hYmxlKTsKK30KKwordm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpz
ZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wgZW5hYmxlKQoreworICAgIG1f
d2ViTGF5ZXJJbXBsLT5sYXllcigpLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
KGVuYWJsZSk7Cit9CisKKwogdm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRz
KFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIGNsaXAsIEZsb2F0UmVjdCYgb3BhcXVl
KQogewotICAgIGlmICghbV9jb250ZW50Q2xpZW50KQorICAgIGlmICghbV9jbGllbnQpCiAgICAg
ICAgIHJldHVybjsKICAgICBXZWJGbG9hdFJlY3Qgd2ViT3BhcXVlOwotICAgIG1fY29udGVudENs
aWVudC0+cGFpbnRDb250ZW50cyhjYW52YXMsIFdlYlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7Cisg
ICAgbV9jbGllbnQtPnBhaW50Q29udGVudHMoY2FudmFzLCBXZWJSZWN0KGNsaXApLCB3ZWJPcGFx
dWUpOwogICAgIG9wYXF1ZSA9IHdlYk9wYXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5oCmluZGV4IDk3NzI5ZWExZTBjMjAxYTA4
YjFmOTA5MDdhNjI4MjgxYTRlMTBiNTkuLjUxMWY4ZTBiYTA4NjBiNDZhMDgxNTY1ZjA5ODdkZmYw
ZThhY2I1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRl
bnRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50
TGF5ZXJJbXBsLmgKQEAgLTI3LDIzICsyNywzMyBAQAogI2RlZmluZSBXZWJDb250ZW50TGF5ZXJJ
bXBsX2gKIAogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2Vi
TGF5ZXJJbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29u
dGVudExheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdl
YkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVy
RGVsZWdhdGUgeworY2xhc3MgV2ViQ29udGVudExheWVySW1wbCA6IHB1YmxpYyBXZWJDb250ZW50
TGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OkNvbnRl
bnRMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250
ZW50TGF5ZXJJbXBsPiBjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50
KTsKKyAgICBleHBsaWNpdCBXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRMYXllckNsaWVu
dCopOworCisgICAgLy8gV2ViQ29udGVudExheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1
YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldERvdWJs
ZVNpZGVkKGJvb2wpICBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2Fs
ZShmbG9hdCkgIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVc2VMQ0RUZXh0KGJvb2wp
ICBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3Np
bmdUaWxlcyhib29sKSAgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJD
b250ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRMYXllckNsaWVudCogY29udGVudENsaWVudCk7CiAg
ICAgdmlydHVhbCB+V2ViQ29udGVudExheWVySW1wbCgpOwogCiAgICAgLy8gQ29udGVudExheWVy
RGVsZWdhdGUgaW1wbGVtZW50YXRpb24uCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
U2tDYW52YXMqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwLCBXZWJDb3JlOjpGbG9hdFJl
Y3QmIG9wYXF1ZSkgT1ZFUlJJREU7CiAKLSAgICBXZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY29u
dGVudENsaWVudDsKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX3dlYkxheWVySW1wbDsKKyAg
ICBXZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGJvb2wgbV9kcmF3c0NvbnRl
bnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDFm
OGRkYmY2ZThlNDE4MDFhOTRlMzY3M2FkYWFlYzg5MjJjNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmg+Ci0KLSNpbmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1bS5oIgotI2lu
Y2x1ZGUgImNjL0NDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVj
dC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViVGV4dHVyZVVwZGF0ZXJJbXBs
IDogcHVibGljIFdlYlRleHR1cmVVcGRhdGVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJU
ZXh0dXJlVXBkYXRlckltcGwoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKQotICAgICAgICA6
IG1fcXVldWUocXVldWUpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRD
b3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uVGV4dHVyZSwg
V2ViU2l6ZSBzaXplKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgVGV4dHVyZUNvcGllcjo6UGFy
YW1ldGVycyBjb3B5ID0geyBzb3VyY2VUZXh0dXJlLCBkZXN0aW5hdGlvblRleHR1cmUsIHNpemUg
fTsKLSAgICAgICAgbV9xdWV1ZS5hcHBlbmRDb3B5KGNvcHkpOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICBDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgbV9xdWV1ZTsKLX07Ci0KLWNsYXNzIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCwg
cHVibGljIFRleHR1cmVMYXllckNocm9taXVtIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGwoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNs
aWVudCkKLSAgICAgICAgOiBUZXh0dXJlTGF5ZXJDaHJvbWl1bShjbGllbnQgPyB0aGlzIDogMCkK
LSAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwg
dW5zaWduZWQgcHJlcGFyZVRleHR1cmUoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKSBPVkVS
UklERQotICAgIHsKLSAgICAgICAgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIHVwZGF0ZXJJbXBsKHF1
ZXVlKTsKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRhdGVySW1w
bCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NsaWVudC0+Y29udGV4
dCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVu
dCogbV9jbGllbnQ7Ci19OwotCi1XZWJFeHRlcm5hbFRleHR1cmVMYXllciBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcjo6Y3JlYXRlKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQp
Ci17Ci0gICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5l
dyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoY2xpZW50KSk7Ci0gICAgbGF5ZXItPnNldElz
RHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKGxheWVy
LnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNsZWFyQ2xp
ZW50KCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPmNsZWFyQ2xpZW50
KCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFRleHR1cmVJZCh1bnNp
Z25lZCBpZCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFRleHR1
cmVJZChpZCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldEZsaXBwZWQo
Ym9vbCBmbGlwcGVkKQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0
RmxpcHBlZChmbGlwcGVkKTsKLX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0
VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxh
eWVyQ2hyb21pdW0+KCktPnNldFVWUmVjdChyZWN0KTsKLX0KLQotdm9pZCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAgIHVud3JhcDxUZXh0dXJl
TGF5ZXJDaHJvbWl1bT4oKS0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OnNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRB
bHBoYSkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFByZW11bHRp
cGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyOjp3aWxsTW9kaWZ5VGV4dHVyZSgpCi17Ci0gICAgdW53cmFwPFRleHR1cmVMYXll
ckNocm9taXVtPigpLT53aWxsTW9kaWZ5VGV4dHVyZSgpOwotfQotCi12b2lkIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpzZXRSYXRlTGltaXRDb250ZXh0KGJvb2wgcmF0ZUxpbWl0KQotewotICAg
IHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0UmF0ZUxpbWl0Q29udGV4dChyYXRl
TGltaXQpOwotfQotCi1XZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXIoUGFzc1JlZlB0cjxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAgOiBXZWJM
YXllcihsYXllcikKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi40NjhjMzQ4MjRiNzE5MmI5OTEwNDgwNWZmNTAzMDUzY2EwMjUzNjBk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCIKKwor
I2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBs
LmgiCisjaW5jbHVkZSAiY2MvQ0NUZXh0dXJlVXBkYXRlUXVldWUuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
RmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJFeHRlcm5hbFRleHR1cmVM
YXllciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZShXZWJFeHRlcm5hbFRleHR1cmVM
YXllckNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBuZXcgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJJbXBsKGNsaWVudCk7Cit9CisKK1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBj
bGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7CisgICAgUmVmUHRyPFRleHR1cmVMYXll
ckNocm9taXVtPiBsYXllcjsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIGxheWVyID0gVGV4
dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIGxheWVy
ID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsKKyAgICBsYXllci0+c2V0SXNEcmF3
YWJsZSh0cnVlKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXll
ci5yZWxlYXNlKCkpKTsKK30KKworV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjp+V2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJD
aHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5jbGVhckNsaWVudCgpOworfQorCitXZWJMYXll
ciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpsYXllcigpCit7CisgICAgcmV0dXJuIG1f
bGF5ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRU
ZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZUxheWVyQ2hy
b21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0VGV4dHVyZUlkKGlkKTsKK30KKwordm9pZCBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQorewor
ICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSkt
PnNldEZsaXBwZWQoZmxpcHBlZCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsOjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiByZWN0KQoreworICAgIHN0YXRpY19j
YXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldFVWUmVjdChy
ZWN0KTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldE9wYXF1ZShi
b29sIG9wYXF1ZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1f
bGF5ZXItPmxheWVyKCkpLT5zZXRPcGFxdWUob3BhcXVlKTsKK30KKwordm9pZCBXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGw6OnNldFByZW11bHRpcGxpZWRBbHBoYShib29sIHByZW11bHRpcGxp
ZWRBbHBoYSkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5
ZXItPmxheWVyKCkpLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEocHJlbXVsdGlwbGllZEFscGhhKTsK
K30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OndpbGxNb2RpZnlUZXh0dXJl
KCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxh
eWVyKCkpLT53aWxsTW9kaWZ5VGV4dHVyZSgpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4dChib29sIHJhdGVMaW1pdCkKK3sKKyAgICBz
dGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRS
YXRlTGltaXRDb250ZXh0KHJhdGVMaW1pdCk7Cit9CisKK2NsYXNzIFdlYlRleHR1cmVVcGRhdGVy
SW1wbCA6IHB1YmxpYyBXZWJUZXh0dXJlVXBkYXRlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQg
V2ViVGV4dHVyZVVwZGF0ZXJJbXBsKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKKyAgICAg
ICAgOiBtX3F1ZXVlKHF1ZXVlKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNpZ25lZCBkZXN0aW5hdGlvblRleHR1
cmUsIFdlYlNpemUgc2l6ZSkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIFRleHR1cmVDb3BpZXI6
OlBhcmFtZXRlcnMgY29weSA9IHsgc291cmNlVGV4dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlLCBz
aXplIH07CisgICAgICAgIG1fcXVldWUuYXBwZW5kQ29weShjb3B5KTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUmIG1fcXVldWU7Cit9OworCit1bnNpZ25lZCBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnByZXBhcmVUZXh0dXJlKENDVGV4dHVyZVVwZGF0
ZVF1ZXVlJiBxdWV1ZSkKK3sKKyAgICBBU1NFUlQobV9jbGllbnQpOworICAgIFdlYlRleHR1cmVV
cGRhdGVySW1wbCB1cGRhdGVySW1wbChxdWV1ZSk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5wcmVw
YXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Cit9CisKK1dlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNvbnRleHQoKQoreworICAgIEFTU0VSVChtX2NsaWVu
dCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5jb250ZXh0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzQ4ODk1YmYxY2Q1M2I1NDQ5M2Iy
MzU3ZDA4MTk2MmJmNTgzNGU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKyNkZWZpbmUgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9t
aXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJl
TGF5ZXJDaHJvbWl1bUNsaWVudCB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Kik7CisgICAgdmly
dHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBXZWJFeHRlcm5h
bFRleHR1cmVMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXll
cigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRGbGlwcGVkKGJvb2wpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsTW9kaWZ5VGV4dHVyZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRl
TGltaXRDb250ZXh0KGJvb2wpIE9WRVJSSURFOworCisgICAgLy8gVGV4dHVyZUxheWVyQ2hyb21p
dW1DbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4
dHVyZShXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVRdWV1ZSYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSBPVkVSUklERTsKKworcHJpdmF0ZToK
KyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogbV9jbGllbnQ7CisgICAgT3duUHRy
PFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklPU3VyZmFjZUxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzdkYjBj
ODc3NzdmZmI0NWZjODNiYzk5MGQ1ZWRmOTI1NGZiODUxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
T1N1cmZhY2VMYXllci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5o
PgotCi0jaW5jbHVkZSAiSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJTaXplLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotV2ViSU9TdXJmYWNlTGF5ZXIgV2ViSU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSgpCi17
Ci0gICAgUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyID0gSU9TdXJmYWNlTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0g
ICAgcmV0dXJuIFdlYklPU3VyZmFjZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQg
V2ViSU9TdXJmYWNlTGF5ZXI6OnNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJm
YWNlSWQsIFdlYlNpemUgc2l6ZSkKLXsKLSAgICB1bndyYXA8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1
bT4oKS0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyhpb1N1cmZhY2VJZCwgc2l6ZSk7Ci19Ci0KLVdl
YklPU3VyZmFjZUxheWVyOjpXZWJJT1N1cmZhY2VMYXllcihQYXNzUmVmUHRyPElPU3VyZmFjZUxh
eWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogV2ViTGF5ZXIobGF5ZXIpCi17Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklPU3VyZmFjZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmFiNzBjNjFkOGI0MTc0NDIyZDdm
YzUzNTQzMjlmODkxZTkwOGI0ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJJT1N1cmZhY2VMYXllckltcGwu
aCIKKworI2luY2x1ZGUgIklPU3VyZmFjZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJM
YXllckltcGwuaCIKKwordXNpbmcgV2ViQ29yZTo6SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYklPU3VyZmFjZUxheWVyKiBXZWJJT1N1cmZhY2VMYXll
cjo6Y3JlYXRlKCkKK3sKKyAgICBSZWZQdHI8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIg
PSBJT1N1cmZhY2VMYXllckNocm9taXVtOjpjcmVhdGUoKTsKKyAgICBsYXllci0+c2V0SXNEcmF3
YWJsZSh0cnVlKTsKKyAgICByZXR1cm4gbmV3IFdlYklPU3VyZmFjZUxheWVySW1wbChsYXllci5y
ZWxlYXNlKCkpOworfQorCitXZWJJT1N1cmZhY2VMYXllckltcGw6OldlYklPU3VyZmFjZUxheWVy
SW1wbChQYXNzUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9s
YXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dlYklPU3Vy
ZmFjZUxheWVySW1wbDo6fldlYklPU3VyZmFjZUxheWVySW1wbCgpCit7Cit9CisKK3ZvaWQgV2Vi
SU9TdXJmYWNlTGF5ZXJJbXBsOjpzZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3Vy
ZmFjZUlkLCBXZWJTaXplIHNpemUpCit7CisgICAgc3RhdGljX2Nhc3Q8SU9TdXJmYWNlTGF5ZXJD
aHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3Vy
ZmFjZUlkLCBzaXplKTsKK30KKworV2ViTGF5ZXIqIFdlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5
ZXIoKQoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFj
ZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5
ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RiYjAyNzU5YTVjYmQ3NGQzNTY0ODk5OGFlYzYyMTBhMmY0
NzI5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklP
U3VyZmFjZUxheWVySW1wbC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklP
U3VyZmFjZUxheWVySW1wbF9oCisjZGVmaW5lIFdlYklPU3VyZmFjZUxheWVySW1wbF9oCisKKyNp
bmNsdWRlIDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElPU3VyZmFjZUxheWVyQ2hyb21pdW07
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJJT1N1cmZhY2VMYXllckltcGwg
OiBwdWJsaWMgV2ViSU9TdXJmYWNlTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYklP
U3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OklPU3VyZmFjZUxheWVyQ2hyb21p
dW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJJT1N1cmZhY2VMYXllckltcGwoKTsKKworICAgIC8vIFdl
YklPU3VyZmFjZUxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxh
eWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXMo
dW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpIE9WRVJSSURFOworCitwcml2YXRlOgorICAg
IE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJ
T1N1cmZhY2VMYXllckltcGxfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJbWFnZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklt
YWdlTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzYxNTE1MzBkMTA3
NTdkMmNkNDRhNzgwMzBhOTY5ZjU2ZTI0MDZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXllci5oPgotCi0jaW5jbHVkZSAi
SW1hZ2VMYXllckNocm9taXVtLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJbWFnZUxh
eWVyIFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIFdlYkltYWdlTGF5ZXIo
V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUoKSk7Ci19Ci0KLVdlYkltYWdlTGF5
ZXI6OldlYkltYWdlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+
IGxheWVyKQotICAgIDogV2ViTGF5ZXIobGF5ZXIpCi17Ci19Ci0KLXZvaWQgV2ViSW1hZ2VMYXll
cjo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1hcCkKLXsKLSAgICB1bndyYXA8V2ViQ29yZTo6SW1h
Z2VMYXllckNocm9taXVtPigpLT5zZXRCaXRtYXAoYml0bWFwKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFn
ZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVy
SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzYWY4MDQ1YTI2ZjY4ZTgyNmQwMGNhZDRkOTI3NjVlOTFl
OWRjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklt
YWdlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkltYWdlTGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJJbWFnZUxh
eWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwordXNpbmcgV2ViQ29y
ZTo6SW1hZ2VMYXllckNocm9taXVtOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViSW1hZ2VM
YXllciogV2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gbmV3IFdlYkltYWdl
TGF5ZXJJbXBsKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOworfQorCitX
ZWJJbWFnZUxheWVySW1wbDo6V2ViSW1hZ2VMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
bWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2Vi
TGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dlYkltYWdlTGF5ZXJJbXBsOjp+V2ViSW1hZ2VM
YXllckltcGwoKQoreworfQorCitXZWJMYXllciogV2ViSW1hZ2VMYXllckltcGw6OmxheWVyKCkK
K3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwordm9pZCBXZWJJbWFnZUxheWVySW1w
bDo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1hcCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbWFnZUxh
eWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0Qml0bWFwKGJpdG1hcCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSW1hZ2VMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkltYWdlTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0YjhiM2ViMGZmOTIyOTJiOWQ5MGVlZDFi
ZDU0MjdiYjg0NGYyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViSW1hZ2VMYXllckltcGxfaAorI2RlZmluZSBXZWJJbWFnZUxheWVySW1wbF9oCisKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW1hZ2VMYXllckNocm9taXVtOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVySW1wbDsKKworY2xhc3MgV2ViSW1hZ2VMYXll
ckltcGwgOiBwdWJsaWMgV2ViSW1hZ2VMYXllciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2Vi
SW1hZ2VMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+KTsK
KyAgICB2aXJ0dWFsIH5XZWJJbWFnZUxheWVySW1wbCgpOworCisgICAgLy8gV2ViSW1hZ2VMYXll
ciBpbXBsZW1lbnRhdGlvbi4KKyAgICBXZWJMYXllciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Qml0bWFwKFNrQml0bWFwKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAg
ICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX2xheWVyOworfTsKKworfQorCisjZW5kaWYgLy8gV2Vi
SW1hZ2VMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzg5N2U2ZjgxMmIxNzFmOTBmMjI2OGViYzU3
ZDUwNjEwMzM5N2JlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDM3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
PHB1YmxpYy9XZWJMYXllci5oPgotCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1
ZGUgIlNrTWF0cml4NDQuaCIKLSNpbmNsdWRlICJXZWJBbmltYXRpb25JbXBsLmgiCi0jaW5jbHVk
ZSAiV2ViTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMu
aD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgotI2luY2x1ZGUgPHB1YmxpYy9X
ZWJGbG9hdFJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgotI2luY2x1ZGUgPHB1
YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLXVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0KLW5hbWVzcGFjZSB7
Ci0KLVdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0
cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIGRvdWJsZSBkYXRhWzE2XTsK
LSAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7Ci0gICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFb
N10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0s
IGRhdGFbMTBdLCBkYXRhWzExXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOwotfQotCi1Ta01hdHJpeDQ0
IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBTa01hdHJpeDQ0IHNrTWF0cml4OwotICAgIHNrTWF0
cml4LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKLSAgICBza01h
dHJpeC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7Ci0gICAgc2tN
YXRyaXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOwotICAgIHNr
TWF0cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKLSAgICBz
a01hdHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7Ci0gICAg
c2tNYXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOwotICAg
IHNrTWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsKLSAg
ICBza01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7Ci0g
ICAgc2tNYXRyaXguc2V0KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOwot
ICAgIHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsK
LSAgICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7
Ci0gICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkp
OwotICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkp
KTsKLSAgICBza01hdHJpeC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00Migp
KSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMo
KSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0
KCkpKTsKLSAgICByZXR1cm4gc2tNYXRyaXg7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFj
ZQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OmNyZWF0ZSgpCi17
Ci0gICAgcmV0dXJuIFdlYkxheWVyKFdlYkxheWVySW1wbDo6Y3JlYXRlKCkpOwotfQotCi12b2lk
IFdlYkxheWVyOjpyZXNldCgpCi17Ci0gICAgbV9wcml2YXRlLnJlc2V0KCk7Ci19Ci0KLXZvaWQg
V2ViTGF5ZXI6OmFzc2lnbihjb25zdCBXZWJMYXllciYgb3RoZXIpCi17Ci0gICAgbV9wcml2YXRl
ID0gb3RoZXIubV9wcml2YXRlOwotfQotCi1ib29sIFdlYkxheWVyOjplcXVhbHMoY29uc3QgV2Vi
TGF5ZXImIG4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gbi5tX3By
aXZhdGUuZ2V0KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjppbnZhbGlkYXRlUmVjdChjb25zdCBX
ZWJGbG9hdFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldE5lZWRzRGlzcGxh
eVJlY3QoZGlydHlSZWN0KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6aW52YWxpZGF0ZSgpCi17Ci0g
ICAgbV9wcml2YXRlLT5zZXROZWVkc0Rpc3BsYXkoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6YWRk
Q2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkKQotewotICAgIG1fcHJpdmF0ZS0+YWRkQ2hpbGQo
Y2hpbGQpOwotfQotCi12b2lkIFdlYkxheWVyOjppbnNlcnRDaGlsZChjb25zdCBXZWJMYXllciYg
Y2hpbGQsIHNpemVfdCBpbmRleCkKLXsKLSAgICBtX3ByaXZhdGUtPmluc2VydENoaWxkKGNoaWxk
LCBpbmRleCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnJlcGxhY2VDaGlsZChjb25zdCBXZWJMYXll
ciYgcmVmZXJlbmNlLCBjb25zdCBXZWJMYXllciYgbmV3TGF5ZXIpCi17Ci0gICAgV2ViTGF5ZXIg
cmVmID0gcmVmZXJlbmNlOwotICAgIG1fcHJpdmF0ZS0+cmVwbGFjZUNoaWxkKHJlZi51bndyYXA8
TGF5ZXJDaHJvbWl1bT4oKSwgbmV3TGF5ZXIpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRDaGls
ZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXI+JiB3ZWJDaGlsZHJlbikKLXsKLSAgICBWZWN0
b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gY2hpbGRyZW4od2ViQ2hpbGRyZW4uc2l6ZSgpKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoaWxkcmVuLnNpemUoKTsgKytpKQotICAg
ICAgICBjaGlsZHJlbltpXSA9IHdlYkNoaWxkcmVuW2ldLnVud3JhcDxMYXllckNocm9taXVtPigp
OwotICAgIG1fcHJpdmF0ZS0+c2V0Q2hpbGRyZW4oY2hpbGRyZW4pOwotfQotCi12b2lkIFdlYkxh
eWVyOjpyZW1vdmVGcm9tUGFyZW50KCkKLXsKLSAgICBtX3ByaXZhdGUtPnJlbW92ZUZyb21QYXJl
bnQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQotewotICAgIG1f
cHJpdmF0ZS0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0QW5j
aG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCi17Ci0gICAgbV9wcml2
YXRlLT5zZXRBbmNob3JQb2ludChhbmNob3JQb2ludCk7Ci19Ci0KLVdlYkZsb2F0UG9pbnQgV2Vi
TGF5ZXI6OmFuY2hvclBvaW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViRmxvYXRQb2ludCht
X3ByaXZhdGUtPmFuY2hvclBvaW50KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmNob3JQ
b2ludFooZmxvYXQgYW5jaG9yUG9pbnRaKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QW5jaG9yUG9p
bnRaKGFuY2hvclBvaW50Wik7Ci19Ci0KLWZsb2F0IFdlYkxheWVyOjphbmNob3JQb2ludFooKSBj
b25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmFuY2hvclBvaW50WigpOwotfQotCi12b2lk
IFdlYkxheWVyOjpzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYgc2l6ZSkKLXsKLSAgICBtX3ByaXZh
dGUtPnNldEJvdW5kcyhzaXplKTsKLX0KLQotV2ViU2l6ZSBXZWJMYXllcjo6Ym91bmRzKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUtPmJvdW5kcygpKTsKLX0KLQotdm9p
ZCBXZWJMYXllcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCi17Ci0gICAg
bV9wcml2YXRlLT5zZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9Cb3VuZHMpOwotfQotCi1ib29sIFdl
YkxheWVyOjptYXNrc1RvQm91bmRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5t
YXNrc1RvQm91bmRzKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldE1hc2tMYXllcihjb25zdCBX
ZWJMYXllciYgbWFza0xheWVyKQotewotICAgIFdlYkxheWVyIHJlZiA9IG1hc2tMYXllcjsKLSAg
ICBtX3ByaXZhdGUtPnNldE1hc2tMYXllcihyZWYudW53cmFwPExheWVyQ2hyb21pdW0+KCkpOwot
fQotCi12b2lkIFdlYkxheWVyOjpzZXRSZXBsaWNhTGF5ZXIoY29uc3QgV2ViTGF5ZXImIHJlcGxp
Y2FMYXllcikKLXsKLSAgICBXZWJMYXllciByZWYgPSByZXBsaWNhTGF5ZXI7Ci0gICAgbV9wcml2
YXRlLT5zZXRSZXBsaWNhTGF5ZXIocmVmLnVud3JhcDxMYXllckNocm9taXVtPigpKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQotewotICAgIG1fcHJpdmF0
ZS0+c2V0T3BhY2l0eShvcGFjaXR5KTsKLX0KLQotZmxvYXQgV2ViTGF5ZXI6Om9wYWNpdHkoKSBj
b25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPm9wYWNpdHkoKTsKLX0KLQotdm9pZCBXZWJM
YXllcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhcXVl
KG9wYXF1ZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Om9wYXF1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+b3BhcXVlKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFBvc2l0aW9u
KGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c2V0UG9z
aXRpb24ocG9zaXRpb24pOwotfQotCi1XZWJGbG9hdFBvaW50IFdlYkxheWVyOjpwb3NpdGlvbigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkZsb2F0UG9pbnQobV9wcml2YXRlLT5wb3NpdGlvbigp
KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tNYXRy
aXg0NCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0odHJh
bnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRyaXgpKTsKLX0KLQotdm9pZCBXZWJM
YXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFN1YmxheWVyVHJhbnNmb3JtKG1hdHJpeCk7
Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX3ByaXZhdGUt
PnN1YmxheWVyVHJhbnNmb3JtKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRUcmFuc2Zvcm0o
Y29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VHJhbnNmb3Jt
KHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQobWF0cml4KSk7Ci19Ci0KLXZvaWQg
V2ViTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0
cml4NDQgV2ViTGF5ZXI6OnRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNrTWF0cml4
NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgobV9wcml2YXRlLT50cmFuc2Zvcm0oKSk7Ci19Ci0K
LXZvaWQgV2ViTGF5ZXI6OnNldERyYXdzQ29udGVudChib29sIGRyYXdzQ29udGVudCkKLXsKLSAg
ICBtX3ByaXZhdGUtPnNldElzRHJhd2FibGUoZHJhd3NDb250ZW50KTsKLX0KLQotYm9vbCBXZWJM
YXllcjo6ZHJhd3NDb250ZW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5kcmF3
c0NvbnRlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVz
ZXJ2ZTNEKQotewotICAgIG1fcHJpdmF0ZS0+c2V0UHJlc2VydmVzM0QocHJlc2VydmUzRCk7Ci19
Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHVz
ZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eSh1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOwotfQotCi12
b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCi17Ci0gICAg
bV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpOwotfQotCi12b2lkIFdlYkxheWVy
OjpzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCi17Ci0gICAg
bV9wcml2YXRlLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRC
YWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQotewot
ICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVycyk7Ci19Ci0KLXZvaWQg
V2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewot
ICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdCb3JkZXJDb2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgV2Vi
TGF5ZXI6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpCi17Ci0gICAgbV9wcml2YXRl
LT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0RGVi
dWdOYW1lKFdlYlN0cmluZyBuYW1lKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdOYW1lKG5h
bWUpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRp
b25EZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRMYXllckFuaW1hdGlv
bkRlbGVnYXRlKGRlbGVnYXRlKTsKLX0KLQotYm9vbCBXZWJMYXllcjo6YWRkQW5pbWF0aW9uKFdl
YkFuaW1hdGlvbiogYW5pbWF0aW9uKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmFkZEFuaW1h
dGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25JbXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0ND
QW5pbWF0aW9uKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVBbmltYXRpb24oaW50IGFu
aW1hdGlvbklkKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklk
KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwg
V2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKLXsKLSAgICBtX3By
aXZhdGUtPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0
aW9uSWQsIHN0YXRpY19jYXN0PENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eT4odGFy
Z2V0UHJvcGVydHkpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cGF1c2VBbmltYXRpb24oaW50IGFu
aW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAgICBtX3ByaXZhdGUtPnBhdXNlQW5p
bWF0aW9uKGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c3Vz
cGVuZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCi17Ci0gICAgbV9wcml2YXRlLT5z
dXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVz
dW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKLXsKLSAgICBtX3ByaXZhdGUtPnJl
c3VtZUFuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Omhhc0Fj
dGl2ZUFuaW1hdGlvbigpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aGFzQWN0aXZlQW5pbWF0
aW9uKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnRyYW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVy
KiBvdGhlcikKLXsKLSAgICBBU1NFUlQob3RoZXIpOwotICAgIGlmIChvdGhlcikKLSAgICAgICAg
b3RoZXItPm1fcHJpdmF0ZS0+c2V0TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKG1fcHJpdmF0ZS0+
cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6
c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNlKQotewotICAgIG1f
cHJpdmF0ZS0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGZvcmNlUmVuZGVyU3VyZmFjZSk7Ci19Ci0K
LXZvaWQgV2ViTGF5ZXI6OmNsZWFyUmVuZGVyU3VyZmFjZSgpCi17Ci0gICAgbV9wcml2YXRlLT5j
bGVhclJlbmRlclN1cmZhY2UoKTsKLX0KLQotV2ViTGF5ZXI6OldlYkxheWVyKGNvbnN0IFBhc3NS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBtX3ByaXZhdGUobm9kZSkKLXsKLX0K
LQotV2ViTGF5ZXImIFdlYkxheWVyOjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxMYXllckNo
cm9taXVtPiYgbm9kZSkKLXsKLSAgICBtX3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhp
czsKLX0KLQotV2ViTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4oKSBj
b25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5jcHAKaW5k
ZXggMTZlMTIwNmNhMzM1YzNlOTgxNGRlYmVjYjRlZDhiYjJiMDJlYjc3Ny4uNTRhNzFkODA5MDgy
MTViNGQzNGZkYjYzMjUwODc4OWZmMDMwNmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllckltcGwuY3BwCkBAIC0yNiwyNSArMjYsMzcxIEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOworI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTa01hdHJpeDQ0Lmgi
CisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uSW1wbC5oIgorI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5p
bWF0aW9uLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KKyNpbmNs
dWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KKwordXNpbmcgV2ViQ29yZTo6
Q0NBY3RpdmVBbmltYXRpb247Cit1c2luZyBXZWJDb3JlOjpMYXllckNocm9taXVtOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJMYXllckltcGw+IFdlYkxheWVySW1wbDo6
Y3JlYXRlKCkKK25hbWVzcGFjZSB7CisKK1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQorewor
ICAgIGRvdWJsZSBkYXRhWzE2XTsKKyAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7CisgICAg
cmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0s
IGRhdGFbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRh
dGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsx
NV0pOworfQorCitTa01hdHJpeDQ0IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgo
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBTa01hdHJpeDQ0
IHNrTWF0cml4OworICAgIHNrTWF0cml4LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRy
aXgubTExKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0
cml4Lm0xMigpKSk7CisgICAgc2tNYXRyaXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1h
dHJpeC5tMTMoKSkpOworICAgIHNrTWF0cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNjYWxhciht
YXRyaXgubTE0KCkpKTsKKyAgICBza01hdHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01TY2FsYXIo
bWF0cml4Lm0yMSgpKSk7CisgICAgc2tNYXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFy
KG1hdHJpeC5tMjIoKSkpOworICAgIHNrTWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxh
cihtYXRyaXgubTIzKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVUb01TY2Fs
YXIobWF0cml4Lm0yNCgpKSk7CisgICAgc2tNYXRyaXguc2V0KDAsIDIsIFNrRG91YmxlVG9NU2Nh
bGFyKG1hdHJpeC5tMzEoKSkpOworICAgIHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNj
YWxhcihtYXRyaXgubTMyKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3VibGVUb01T
Y2FsYXIobWF0cml4Lm0zMygpKSk7CisgICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91YmxlVG9N
U2NhbGFyKG1hdHJpeC5tMzQoKSkpOworICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0RvdWJsZVRv
TVNjYWxhcihtYXRyaXgubTQxKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMSwgMywgU2tEb3VibGVU
b01TY2FsYXIobWF0cml4Lm00MigpKSk7CisgICAgc2tNYXRyaXguc2V0KDIsIDMsIFNrRG91Ymxl
VG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOworICAgIHNrTWF0cml4LnNldCgzLCAzLCBTa0RvdWJs
ZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKKyAgICByZXR1cm4gc2tNYXRyaXg7Cit9CisKK30g
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisKK1dlYkxheWVyKiBXZWJMYXllcjo6Y3JlYXRlKCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkxheWVySW1wbCgpKTsKKyAgICByZXR1cm4g
bmV3IFdlYkxheWVySW1wbChMYXllckNocm9taXVtOjpjcmVhdGUoKSk7CiB9CiAKLVdlYkxheWVy
SW1wbDo6V2ViTGF5ZXJJbXBsKCkKLSAgICA6IExheWVyQ2hyb21pdW0oKQorV2ViTGF5ZXJJbXBs
OjpXZWJMYXllckltcGwoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1f
bGF5ZXIobGF5ZXIpCiB7Ci0gICAgLy8gTWFrZSBzdXJlIHRoYXQgdGhpcyBsYXllciBkb2VzIG5v
dCBkcmF3IGNvbnRlbnQuIFRoaXMgd2F5IHdlIGRvbid0IGhhdmUgdG8gb3ZlcnJpZGUKLSAgICAv
LyB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvZiBkcmF3c0NvbnRlbnQoKS4KLSAgICBB
U1NFUlQoIWRyYXdzQ29udGVudCgpKTsKIH0KIAogV2ViTGF5ZXJJbXBsOjp+V2ViTGF5ZXJJbXBs
KCkKIHsKKyAgICBtX2xheWVyLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKKyAgICBtX2xheWVyLT5z
ZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKDApOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW52
YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiByZWN0KQoreworICAgIG1fbGF5ZXItPnNl
dE5lZWRzRGlzcGxheVJlY3QocmVjdCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjppbnZhbGlk
YXRlKCkKK3sKKyAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKK30KKwordm9pZCBXZWJM
YXllckltcGw6OmFkZENoaWxkKFdlYkxheWVyKiBjaGlsZCkKK3sKKyAgICBtX2xheWVyLT5hZGRD
aGlsZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihjaGlsZCktPmxheWVyKCkpOworfQorCit2
b2lkIFdlYkxheWVySW1wbDo6aW5zZXJ0Q2hpbGQoV2ViTGF5ZXIqIGNoaWxkLCBzaXplX3QgaW5k
ZXgpCit7CisgICAgbV9sYXllci0+aW5zZXJ0Q2hpbGQoc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBs
Kj4oY2hpbGQpLT5sYXllcigpLCBpbmRleCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpyZXBs
YWNlQ2hpbGQoV2ViTGF5ZXIqIHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKQoreworICAg
IG1fbGF5ZXItPnJlcGxhY2VDaGlsZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihyZWZlcmVu
Y2UpLT5sYXllcigpLCBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihuZXdMYXllciktPmxheWVy
KCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9y
PFdlYkxheWVyKj4mIHdlYkNoaWxkcmVuKQoreworICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gPiBjaGlsZHJlbih3ZWJDaGlsZHJlbi5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgd2ViQ2hpbGRyZW4uc2l6ZSgpOyArK2kpCisgICAgICAgIGNoaWxkcmVuW2ldID0g
c3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4od2ViQ2hpbGRyZW5baV0pLT5sYXllcigpOworICAg
IG1fbGF5ZXItPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6
OnJlbW92ZUZyb21QYXJlbnQoKQoreworICAgIG1fbGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsK
K30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFsbENoaWxkcmVuKCkKK3sKKyAgICBtX2xh
eWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QW5j
aG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCit7CisgICAgbV9sYXll
ci0+c2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQpOworfQorCitXZWJGbG9hdFBvaW50IFdlYkxh
eWVySW1wbDo6YW5jaG9yUG9pbnQoKSBjb25zdAoreworICAgIHJldHVybiBXZWJGbG9hdFBvaW50
KG1fbGF5ZXItPmFuY2hvclBvaW50KCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QW5j
aG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikKK3sKKyAgICBtX2xheWVyLT5zZXRBbmNob3JQ
b2ludFooYW5jaG9yUG9pbnRaKTsKK30KKworZmxvYXQgV2ViTGF5ZXJJbXBsOjphbmNob3JQb2lu
dFooKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5hbmNob3JQb2ludFooKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldEJvdW5kcyhjb25zdCBXZWJTaXplJiBzaXplKQoreworICAg
IG1fbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKK30KKworV2ViU2l6ZSBXZWJMYXllckltcGw6OmJv
dW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNpemUobV9sYXllci0+Ym91bmRzKCkpOwor
fQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3Vu
ZHMpCit7CisgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5kcyhtYXNrc1RvQm91bmRzKTsKK30K
KworYm9vbCBXZWJMYXllckltcGw6Om1hc2tzVG9Cb3VuZHMoKSBjb25zdAoreworICAgIHJldHVy
biBtX2xheWVyLT5tYXNrc1RvQm91bmRzKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRN
YXNrTGF5ZXIoV2ViTGF5ZXIqIG1hc2tMYXllcikKK3sKKyAgICBtX2xheWVyLT5zZXRNYXNrTGF5
ZXIobWFza0xheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obWFza0xheWVyKS0+bGF5
ZXIoKSA6IDApOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0UmVwbGljYUxheWVyKFdlYkxh
eWVyKiByZXBsaWNhTGF5ZXIpCit7CisgICAgbV9sYXllci0+c2V0UmVwbGljYUxheWVyKHJlcGxp
Y2FMYXllciA/IHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KHJlcGxpY2FMYXllciktPmxheWVy
KCkgOiAwKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0
eSkKK3sKKyAgICBtX2xheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOworfQorCitmbG9hdCBXZWJM
YXllckltcGw6Om9wYWNpdHkoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5vcGFjaXR5
KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCit7Cisg
ICAgbV9sYXllci0+c2V0T3BhcXVlKG9wYXF1ZSk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJJbXBsOjpv
cGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5vcGFxdWUoKTsKK30KKwordm9p
ZCBXZWJMYXllckltcGw6OnNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9u
KQoreworICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKK30KKworV2ViRmxvYXRQ
b2ludCBXZWJMYXllckltcGw6OnBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViRmxv
YXRQb2ludChtX2xheWVyLT5wb3NpdGlvbigpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNl
dFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBtX2xh
eWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybSh0cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Ta01hdHJp
eDQ0KG1hdHJpeCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zv
cm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVy
LT5zZXRTdWJsYXllclRyYW5zZm9ybShtYXRyaXgpOworfQorCitTa01hdHJpeDQ0IFdlYkxheWVy
SW1wbDo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAoreworICAgIHJldHVybiBza01hdHJpeDQ0
RnJvbVRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbGF5ZXItPnN1YmxheWVyVHJhbnNmb3JtKCkpOwor
fQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1h
dHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhG
cm9tU2tNYXRyaXg0NChtYXRyaXgpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFRyYW5z
Zm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQoreworICAgIG1fbGF5
ZXItPnNldFRyYW5zZm9ybShtYXRyaXgpOworfQorCitTa01hdHJpeDQ0IFdlYkxheWVySW1wbDo6
dHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1h
dGlvbk1hdHJpeChtX2xheWVyLT50cmFuc2Zvcm0oKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBs
OjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQpCit7CisgICAgbV9sYXllci0+c2V0
SXNEcmF3YWJsZShkcmF3c0NvbnRlbnQpOworfQorCitib29sIFdlYkxheWVySW1wbDo6ZHJhd3ND
b250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci0+ZHJhd3NDb250ZW50KCk7Cit9
CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlM0QpCit7
CisgICAgbV9sYXllci0+c2V0UHJlc2VydmVzM0QocHJlc2VydmUzRCk7Cit9CisKK3ZvaWQgV2Vi
TGF5ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoYm9vbCB1c2VQYXJlbnRC
YWNrZmFjZVZpc2liaWxpdHkpCit7CisgICAgbV9sYXllci0+c2V0VXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5KHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCit7CisgICAgbV9sYXll
ci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNl
dEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX2xh
eWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0QmFj
a2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAg
ICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJzKTsKK30KKwordm9pZCBXZWJM
YXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQorewor
ICAgIG1fbGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IoY29sb3IpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCB3aWR0aCkKK3sKKyAgICBtX2xheWVy
LT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNl
dERlYnVnTmFtZShXZWJTdHJpbmcgbmFtZSkKK3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z05hbWUo
bmFtZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJB
bmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUpCit7CisgICAgbV9sYXllci0+c2V0TGF5ZXJBbmlt
YXRpb25EZWxlZ2F0ZShkZWxlZ2F0ZSk7Cit9CisKK2Jvb2wgV2ViTGF5ZXJJbXBsOjphZGRBbmlt
YXRpb24oV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmFk
ZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25JbXBsKj4oYW5pbWF0aW9uKS0+Y2xv
bmVUb0NDQW5pbWF0aW9uKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0
aW9uKGludCBhbmltYXRpb25JZCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbmltYXRpb24oYW5p
bWF0aW9uSWQpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBh
bmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkK
K3sKKyAgICBtX2xheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+cmVtb3ZlQW5pbWF0
aW9uKGFuaW1hdGlvbklkLCBzdGF0aWNfY2FzdDxDQ0FjdGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJv
cGVydHk+KHRhcmdldFByb3BlcnR5KSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpwYXVzZUFu
aW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KQoreworICAgIG1fbGF5
ZXItPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0KTsKK30KKwordm9pZCBX
ZWJMYXllckltcGw6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKQorewor
ICAgIG1fbGF5ZXItPnN1c3BlbmRBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKK3sK
KyAgICBtX2xheWVyLT5yZXN1bWVBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOworfQorCitib29s
IFdlYkxheWVySW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKCkKK3sKKyAgICByZXR1cm4gbV9sYXll
ci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjp0cmFuc2Zl
ckFuaW1hdGlvbnNUbyhXZWJMYXllciogb3RoZXIpCit7CisgICAgQVNTRVJUKG90aGVyKTsKKyAg
ICBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihvdGhlciktPm1fbGF5ZXItPnNldExheWVyQW5p
bWF0aW9uQ29udHJvbGxlcihtX2xheWVyLT5yZWxlYXNlTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
KCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wg
Zm9yY2VSZW5kZXJTdXJmYWNlKQoreworICAgIG1fbGF5ZXItPnNldEZvcmNlUmVuZGVyU3VyZmFj
ZShmb3JjZVJlbmRlclN1cmZhY2UpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U2Nyb2xs
UG9zaXRpb24oV2ViUG9pbnQgcG9zaXRpb24pCit7CisgICAgbV9sYXllci0+c2V0U2Nyb2xsUG9z
aXRpb24ocG9zaXRpb24pOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U2Nyb2xsYWJsZShi
b29sIHNjcm9sbGFibGUpCit7CisgICAgbV9sYXllci0+c2V0U2Nyb2xsYWJsZShzY3JvbGxhYmxl
KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9v
bCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQoreworICAgIG1fbGF5ZXItPnNldEhhdmVXaGVlbEV2
ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJ
bXBsOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCBzaG91bGRTY3JvbGxPbk1haW5U
aHJlYWQpCit7CisgICAgbV9sYXllci0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3Vs
ZFNjcm9sbE9uTWFpblRocmVhZCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXROb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4mIHJlY3RzKQoreworICAg
IFdlYkNvcmU6OlJlZ2lvbiByZWdpb247CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0
cy5zaXplKCk7ICsraSkgeworICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3QgPSByZWN0c1tp
XTsKKyAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOworICAgIH0KKyAgICBtX2xheWVyLT5zZXRO
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihyZWdpb24pOworCit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBs
OjpzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCBlbmFibGUpCit7Cisg
ICAgbV9sYXllci0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7
Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBl
bmFibGUpCit7CisgICAgbV9sYXllci0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7
Cit9CisKK0xheWVyQ2hyb21pdW0qIFdlYkxheWVySW1wbDo6bGF5ZXIoKSBjb25zdAoreworICAg
IHJldHVybiBtX2xheWVyLmdldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKaW5kZXggN2U0ZTc1MDYyNDhmNGNh
NWVlNjdlNzUxYzM4ZThlYmY0YzE5YzE5Yi4uNGI0NGZiY2Q0NDY5ZmExOTY4ZTU3NGM2YzkzNDk3
ZmI5Yzc0ZTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgK
QEAgLTI2LDE4ICsyNiw4MyBAQAogI2lmbmRlZiBXZWJMYXllckltcGxfaAogI2RlZmluZSBXZWJM
YXllckltcGxfaAogCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBMYXllckNocm9taXVtOwor
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdl
YkNvcmU6OkxheWVyQ2hyb21pdW0geworY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkxh
eWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJMYXllckltcGw+IGNyZWF0
ZSgpOworICAgIGV4cGxpY2l0IFdlYkxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVy
Q2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJMYXllckltcGwoKTsKKworICAgIC8vIFdlYkxh
eWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25z
dCBXZWJGbG9hdFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGlsZChXZWJMYXllciopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChXZWJMYXllciosIHNpemVfdCBpbmRleCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VDaGlsZChXZWJMYXllciogcmVmZXJl
bmNlLCBXZWJMYXllciogbmV3TGF5ZXIpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
aGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXIqPiYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUFsbENoaWxkcmVuKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBv
aW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkZsb2F0
UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5jaG9yUG9pbnRaKGZsb2F0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGZsb2F0IGFuY2hvclBv
aW50WigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3Qg
V2ViU2l6ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgZmxvYXQgb3Bh
Y2l0eSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG9wYXF1ZSgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50JikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNrTWF0cml4NDQg
c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBTa01hdHJpeDQ0IHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmVzZXJ2ZXMzRChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VXNlUGFyZW50
QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
YWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRG
aWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNv
bG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxv
YXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z05hbWUoV2ViU3RyaW5nKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0aW9uRGVsZWdhdGUoV2ViQW5pbWF0
aW9uRGVsZWdhdGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdl
YkFuaW1hdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24o
aW50IGFuaW1hdGlvbklkKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0
aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91
YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0
aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
c3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
dHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldFNjcm9sbGFibGUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEhhdmVX
aGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNo
b3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxh
eWVycyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5l
ckxheWVyKGJvb2wpIE9WRVJSSURFOworCisgICAgV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSogbGF5
ZXIoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkxheWVySW1wbCgpOwotICAgIHZpcnR1
YWwgfldlYkxheWVySW1wbCgpOworICAgIFJlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiBt
X2xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4IGVkZDQzZGYyMGQyNWNiODQw
ZmFkMzc1MzRkNmIzMDdkZjM2OTA4NjYuLmJkOGQ2Y2Q4MzNhMmU4YTQ3ZGM1NzY4OWQxZmI2ZWZl
ZTQ1ZmY1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVy
VHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyVHJl
ZVZpZXcuaD4KIAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXll
ckltcGwuaCIKICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgImNj
L0NDRm9udEF0bGFzLmgiCiAjaW5jbHVkZSAiY2MvQ0NHcmFwaGljc0NvbnRleHQuaCIKQEAgLTgz
LDcgKzg0LDcgQEAgdm9pZCBXZWJMYXllclRyZWVWaWV3OjpzZXRTdXJmYWNlUmVhZHkoKQogdm9p
ZCBXZWJMYXllclRyZWVWaWV3OjpzZXRSb290TGF5ZXIoV2ViTGF5ZXIgKnJvb3QpCiB7CiAgICAg
aWYgKHJvb3QpCi0gICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5
ZXIoKnJvb3QpOworICAgICAgICBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKS0+c2V0Um9vdExh
eWVyKHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KHJvb3QpLT5sYXllcigpKTsKICAgICBlbHNl
CiAgICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoUGFzc1Jl
ZlB0cjxMYXllckNocm9taXVtPigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAppbmRleCBhN2JmNjRkMzY4MDU3NjVkYjI2
OGU3Y2UwNmM4NDI4MWFiMjhjNGNjLi44YTNmYzg5NjQ0NTUwYjUzMWFjNzkwNDNlYTM3MDFhNjIx
MzZjYjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuaCIKIAogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJM
YXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJj
Yy9DQ1RocmVhZFByb3h5LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
Lmg+CkBAIC0xNDIsNyArMTQzLDcgQEAgUGFzc093blB0cjxXZWJMYXllclRyZWVWaWV3SW1wbD4g
V2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2wKICAgICBPd25Q
dHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcgV2ViTGF5ZXJUcmVl
Vmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwogICAgIGlmICghaW1wbC0+bGF5ZXJUcmVlSG9z
dCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXllclRyZWVIb3N0KCkt
PnNldFJvb3RMYXllcihyb290KTsKKyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RM
YXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwqPigmcm9vdCktPmxheWVyKCkpOwog
ICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXggNGE5MGE5
ODhkNDFjNmNlNGU1NmJhNTlhNGQ3NmJkNjVhZmE5MTNkZC4uY2I3NTYyMzNlMWE3ZTQ4OGIxNzE1
M2YzMmEyM2YwNzlkZDcwYWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0xMDksOSArMTA5LDkgQEAg
dm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkKICAgICBB
U1NFUlQobV9tZWRpYVBsYXllcik7CiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0ZUNoYW5n
ZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKGhhc1ZpZGVv
KCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fdmlkZW9MYXllci5pc051
bGwoKSkgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBXZWJWaWRlb0xheWVyOjpjcmVhdGUodGhp
cyk7Ci0gICAgICAgIG1fdmlkZW9MYXllci5zZXRPcGFxdWUobV9vcGFxdWUpOworICAgIGlmICho
YXNWaWRlbygpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAmJiAhbV92aWRlb0xh
eWVyKSB7CisgICAgICAgIG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKFdlYlZpZGVvTGF5ZXI6OmNy
ZWF0ZSh0aGlzKSk7CisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG1f
b3BhcXVlKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTEzOCw4ICsxMzgsOCBAQCB2b2lkIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVwYWludCgpCiB7CiAgICAgQVNTRVJUKG1fbWVkaWFQbGF5
ZXIpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIW1fdmlkZW9M
YXllci5pc051bGwoKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCi0gICAgICAg
IG1fdmlkZW9MYXllci5pbnZhbGlkYXRlKCk7CisgICAgaWYgKG1fdmlkZW9MYXllciAmJiBzdXBw
b3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIo
KS0+aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAgICAgbV9tZWRpYVBsYXllci0+cmVwYWludCgpOwog
fQpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRP
cGFxdWUoYm9vbCBvcGFxdWUpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQog
ICAgIG1fb3BhcXVlID0gb3BhcXVlOwotICAgIGlmICghbV92aWRlb0xheWVyLmlzTnVsbCgpKQot
ICAgICAgICBtX3ZpZGVvTGF5ZXIuc2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAgICBpZiAobV92aWRl
b0xheWVyKQorICAgICAgICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShtX29wYXF1
ZSk7CiAjZW5kaWYKIH0KIApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJD
bGllbnRJbXBsOjpjYW5jZWxMb2FkKCkKIFdlYkxheWVyKiBXZWJNZWRpYVBsYXllckNsaWVudElt
cGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIEFTU0VSVChtX3N1cHBvcnRzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZyk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViVmlkZW9MYXllcio+
KCZtX3ZpZGVvTGF5ZXIpOworICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIgPyBtX3ZpZGVvTGF5ZXIt
PmxheWVyKCkgOiAwOwogfQogI2VuZGlmCiAKQEAgLTc0NSw3ICs3NDUsNyBAQCBib29sIFdlYk1l
ZGlhUGxheWVyQ2xpZW50SW1wbDo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0
CiAKIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjphY2NlbGVyYXRlZFJlbmRlcmluZ0lu
VXNlKCkKIHsKLSAgICByZXR1cm4gIW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBtX3ZpZGVvTGF5
ZXIuYWN0aXZlKCk7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllciAmJiBtX3ZpZGVvTGF5ZXItPmFj
dGl2ZSgpOwogfQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0VmlkZW9GcmFt
ZVByb3ZpZGVyQ2xpZW50KFdlYlZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50KiBjbGllbnQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oCmluZGV4IDM3MzAxNWViNzU2YWYwZjQ1MTFkYWU5ODFlNmJmMmUxYjU0ZGQ0ODguLjMy
OWZkOWVjMGY0ODhhOWVhYWZlYTZlOTVjOGZiYjI0OTA0MTVjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCkBAIC0y
MDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcjo6UHJlbG9h
ZCBtX3ByZWxvYWQ7CiAgICAgUmVmUHRyPFdlYkhlbHBlclBsdWdpbkltcGw+IG1faGVscGVyUGx1
Z2luOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBXZWJWaWRlb0xheWVy
IG1fdmlkZW9MYXllcjsKKyAgICBPd25QdHI8V2ViVmlkZW9MYXllcj4gbV92aWRlb0xheWVyOwog
ICAgIGJvb2wgbV9zdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAgICAgYm9vbCBtX29w
YXF1ZTsKICAgICBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCogbV92aWRlb0ZyYW1lUHJv
dmlkZXJDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQ
bHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDcxMzYxNzgwYjQ1YWI0YjlmMDg3MGFmYzRlMDU3
ZTRjMTI5ZTQ3MjAuLmYxMDc1NDkwNDJkZWM5MjBjYTI0YzM4ZTIwNWMyYmM4ZDRkNTk1ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lcklt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5l
ckltcGwuY3BwCkBAIC0zNjYsMTEgKzM2NiwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lcklt
cGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQogICAgIGlmIChtX3Rl
eHR1cmVJZCA9PSB0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX2lv
U3VyZmFjZUxheWVyLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIW1faW9TdXJmYWNlTGF5ZXIpOwog
Ci0gICAgaWYgKG1fdGV4dHVyZUxheWVyLmlzTnVsbCgpKQotICAgICAgICBtX3RleHR1cmVMYXll
ciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3RleHR1cmVMYXll
ci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKyAgICBpZiAoIW1fdGV4dHVyZUxheWVyKQorICAg
ICAgICBtX3RleHR1cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpj
cmVhdGUoKSk7CisgICAgbV90ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwog
CiAgICAgLy8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBi
ZXR3ZWVuIGhhcmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlz
IGRvbmUgYnkgdHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtMzkwLDExICszOTAsMTEgQEAg
dm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdp
ZHRoLAogICAgIGlmIChpb1N1cmZhY2VJZCA9PSBtX2lvU3VyZmFjZUlkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBBU1NFUlQobV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpOworICAgIEFTU0VSVCgh
bV90ZXh0dXJlTGF5ZXIpOwogCi0gICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0g
ICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCk7Ci0g
ICAgbV9pb1N1cmZhY2VMYXllci5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBX
ZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIpCisgICAg
ICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRl
KCkpOworICAgIG1faW9TdXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMoaW9TdXJm
YWNlSWQsIFdlYlNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSWYgYW55b25lIG9mIHRo
ZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAgICAgLy8g
YW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmluZyBhIHN0
eWxlIHJlY2FsYwpAQCAtNDA5LDExICs0MDksMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJ
bXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRoLAogdm9pZCBXZWJQbHVnaW5Db250
YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSgpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotICAgIGlmICghbV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAg
IG1fdGV4dHVyZUxheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV90ZXh0dXJlTGF5ZXIpCisg
ICAgICAgIG1fdGV4dHVyZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAKLSAgICBpZiAo
IW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuaW52
YWxpZGF0ZSgpOworICAgIGlmIChtX2lvU3VyZmFjZUxheWVyKQorICAgICAgICBtX2lvU3VyZmFj
ZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIH0KIApAQCAtNDgwLDExICs0
ODAsMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp6b29tTGV2ZWxDaGFuZ2VkKGRv
dWJsZSB6b29tTGV2ZWwpCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldE9wYXF1ZShi
b29sIG9wYXF1ZSkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYg
KCFtX3RleHR1cmVMYXllci5pc051bGwoKSkKLSAgICAgICAgbV90ZXh0dXJlTGF5ZXIuc2V0T3Bh
cXVlKG9wYXF1ZSk7CisgICAgaWYgKG1fdGV4dHVyZUxheWVyKQorICAgICAgICBtX3RleHR1cmVM
YXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG9wYXF1ZSk7CiAKLSAgICBpZiAoIW1faW9TdXJmYWNl
TGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuc2V0T3BhcXVlKG9wYXF1
ZSk7CisgICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIpCisgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIt
PmxheWVyKCktPnNldE9wYXF1ZShvcGFxdWUpOwogI2VuZGlmCiB9CiAKQEAgLTU3Niw5ICs1NzYs
OSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbGxEZXN0cm95UGx1Z2luTG9hZE9i
c2VydmVyKFdlYlBsdWdpbkxvYWRPYnNlcnZlcgogV2ViTGF5ZXIqIFdlYlBsdWdpbkNvbnRhaW5l
ckltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIGlmIChtX3RleHR1cmVJZCkKLSAg
ICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqPigmbV90ZXh0
dXJlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV90ZXh0dXJlTGF5ZXItPmxheWVyKCk7CiAgICAg
aWYgKG1faW9TdXJmYWNlSWQpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFdlYklPU3VyZmFj
ZUxheWVyKj4oJm1faW9TdXJmYWNlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV9pb1N1cmZhY2VM
YXllci0+bGF5ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4IDA3NGEw
Y2NkY2QwM2JiNTI1NmUzNjU4MDcyYTgxZTlhNWY4M2M4ODYuLjk5OGJlNmU0MTlmODk1ZmE4MjE3
OTQwMzkzNDRiYzE2ZjMxMWY5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTE4NiwxMCArMTg2LDEwIEBAIHByaXZh
dGU6CiAgICAgLy8gQSBjb21wb3NpdGVkIHBsdWdpbiB3aWxsIGVpdGhlciBoYXZlIG5vIGNvbXBv
c2l0ZWQgbGF5ZXIsIGEgdGV4dHVyZSBsYXllciwgb3IgYW4gSU9TdXJmYWNlIGxheWVyLgogICAg
IC8vIEl0IHdpbGwgbmV2ZXIgaGF2ZSBib3RoIGEgdGV4dHVyZSBhbmQgSU9TdXJmYWNlIG91dHB1
dC4KICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXll
ciBtX3RleHR1cmVMYXllcjsKKyAgICBPd25QdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1f
dGV4dHVyZUxheWVyOwogCiAgICAgdW5zaWduZWQgbV9pb1N1cmZhY2VJZDsKLSAgICBXZWJJT1N1
cmZhY2VMYXllciBtX2lvU3VyZmFjZUxheWVyOworICAgIE93blB0cjxXZWJJT1N1cmZhY2VMYXll
cj4gbV9pb1N1cmZhY2VMYXllcjsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFzc29jaWF0ZWQgc2Ny
b2xsYmFyIGdyb3VwIG9iamVjdCwgY3JlYXRlZCBsYXppbHkuIFVzZWQgZm9yIFBlcHBlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGFibGVMYXllci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGU4MWQ4MTM3NTljM2Y3OTA5N2EyOWMxNDY5
YjI1NzBmOWJhODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oPgotCi0jaW5jbHVkZSAiTGF5ZXJD
aHJvbWl1bS5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
dm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50IHBvc2l0
aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOwotfQot
Ci12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUp
Ci17Ci0gICAgbV9wcml2YXRlLT5zZXRTY3JvbGxhYmxlKHNjcm9sbGFibGUpOwotfQotCi12b2lk
IFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29sIGhhdmVX
aGVlbEV2ZW50SGFuZGxlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRIYXZlV2hlZWxFdmVudEhh
bmRsZXJzKGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVM
YXllcjo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNo
b3VsZFNjcm9sbE9uTWFpblRocmVhZCk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpz
ZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4mIHJlY3Rz
KQotewotICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdpb247Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qg
PSByZWN0c1tpXTsKLSAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOwotICAgIH0KLSAgICBtX3By
aXZhdGUtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHJlZ2lvbik7Ci0KLX0KLQotdm9pZCBX
ZWJTY3JvbGxhYmxlTGF5ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhi
b29sIGVuYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3Np
dGlvbkxheWVycyhlbmFibGUpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0Rml4
ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rml4
ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVy
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxlTGF5ZXJJ
bXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hMjBlODFkODEzNzU5YzNmNzkwOTdhMjljMTQ2OWIyNTcwZjli
YTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Ny
b2xsYWJsZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CisKKyNpbmNs
dWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb24oV2Vi
UG9pbnQgcG9zaXRpb24pCit7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxQb3NpdGlvbihwb3Np
dGlvbik7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxhYmxlKGJvb2wg
c2Nyb2xsYWJsZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFNjcm9sbGFibGUoc2Nyb2xsYWJsZSk7
Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJz
KGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKK3sKKyAgICBtX3ByaXZhdGUtPnNldEhhdmVX
aGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Cit9CisKK3ZvaWQgV2Vi
U2Nyb2xsYWJsZUxheWVyOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCBzaG91bGRT
Y3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAgbV9wcml2YXRlLT5zZXRTaG91bGRTY3JvbGxPbk1h
aW5UaHJlYWQoc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKTsKK30KKwordm9pZCBXZWJTY3JvbGxh
YmxlTGF5ZXI6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJS
ZWN0PiYgcmVjdHMpCit7CisgICAgV2ViQ29yZTo6UmVnaW9uIHJlZ2lvbjsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFdlYkNvcmU6Oklu
dFJlY3QgcmVjdCA9IHJlY3RzW2ldOworICAgICAgICByZWdpb24udW5pdGUocmVjdCk7CisgICAg
fQorICAgIG1fcHJpdmF0ZS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24ocmVnaW9uKTsKKwor
fQorCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0
aW9uTGF5ZXJzKGJvb2wgZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNDb250YWluZXJG
b3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxh
eWVyOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAgbV9wcml2
YXRlLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3Jv
bGxiYXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJM
YXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZDFiMjBmYjQwZjdjNjRk
N2UxNzYzYWE2ODY2YjE0ZTE1ZjliYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5
ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4KLQotI2luY2x1
ZGUgIlNjcm9sbGJhckxheWVyQ2hyb21pdW0uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlNjcm9sbGJhckxheWVyOjpzZXRTY3Jv
bGxMYXllcihjb25zdCBXZWJMYXllciBsYXllcikKLXsKLSAgICBpbnQgaWQgPSBsYXllci5pc051
bGwoKSA/IDAgOiBsYXllci5jb25zdFVud3JhcDxMYXllckNocm9taXVtPigpLT5pZCgpOwotICAg
IHVud3JhcDxTY3JvbGxiYXJMYXllckNocm9taXVtPigpLT5zZXRTY3JvbGxMYXllcklkKGlkKTsK
LX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXIgV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShXZWJDb3Jl
OjpTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIs
IFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkpCi17Ci0gICAg
cmV0dXJuIFdlYlNjcm9sbGJhckxheWVyKFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShX
ZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwgMCkpOwot
fQotCi1XZWJTY3JvbGxiYXJMYXllcjo6V2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+JiBsYXllcikKLSAgICA6IFdl
YkxheWVyKGxheWVyKQotewotfQotCi1XZWJTY3JvbGxiYXJMYXllciYgV2ViU2Nyb2xsYmFyTGF5
ZXI6Om9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bT4mIGxheWVyKQotewotICAgIG1fcHJpdmF0ZSA9IGxheWVyOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8U2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiB1bndyYXA8U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bT4oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYzZlOTg5NWRkYmQ1OTE5NTdlMWFkMGU0ODVjMWIwMTBmYmZmODIyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5
ZXJJbXBsLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYlNjcm9sbGJhckxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1c2luZyBXZWJD
b3JlOjpTY3JvbGxiYXI7Cit1c2luZyBXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2Nyb2xsYmFyTGF5ZXIqIFdlYlNjcm9sbGJhckxh
eWVyOjpjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGJhclRo
ZW1lUGFpbnRlciBwYWludGVyLCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+
IGdlb21ldHJ5KQoreworICAgIHJldHVybiBuZXcgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKFNjcm9s
bGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3JvbGxiYXIp
LCBwYWludGVyLCBnZW9tZXRyeSwgMCkpOworfQorCisKK1dlYlNjcm9sbGJhckxheWVySW1wbDo6
V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJD
aHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwo
bGF5ZXIpKSkKK3sKK30KKworV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjp+V2ViU2Nyb2xsYmFyTGF5
ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlNjcm9sbGJhckxheWVySW1wbDo6bGF5ZXIo
KQoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOworfQorCit2b2lkIFdlYlNjcm9sbGJhckxh
eWVySW1wbDo6c2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVyKQoreworICAgIGludCBpZCA9
IGxheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obGF5ZXIpLT5sYXllcigpLT5pZCgp
IDogMDsKKyAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJMYXllckNocm9taXVtKj4obV9sYXllci0+
bGF5ZXIoKSktPnNldFNjcm9sbExheWVySWQoaWQpOworfQorCisKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxi
YXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxh
eWVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMGY3OWM1NThlNDEwMjJhZWNkNjI5OWVjNmZkNDE4M2Yx
MjI5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
Y3JvbGxiYXJMYXllckltcGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJT
Y3JvbGxiYXJMYXllckltcGxfaAorI2RlZmluZSBXZWJTY3JvbGxiYXJMYXllckltcGxfaAorCisj
aW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgV2ViTGF5ZXJJbXBsOworCitjbGFzcyBXZWJTY3JvbGxiYXJMYXllckltcGwgOiBwdWJs
aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNjcm9sbGJh
ckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+KTsK
KyAgICB2aXJ0dWFsIH5XZWJTY3JvbGxiYXJMYXllckltcGwoKTsKKworICAgIC8vIFdlYlNjcm9s
bGJhckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxheWVyKikgT1ZF
UlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307
CisKK30KKworI2VuZGlmIC8vIFdlYlNjcm9sbGJhckxheWVySW1wbF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggODM5MTRiMjYzMjk0YjUzZjU0NjYxMWFkY2E4OTgzODQ2MTY3MGFl
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxw
dWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+Ci0KLSNpbmNsdWRlICJXZWJTb2xpZENvbG9yTGF5
ZXJJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotV2ViU29saWRDb2xvckxheWVyIFdlYlNvbGlkQ29sb3JMYXllcjo6Y3JlYXRl
KCkKLXsKLSAgICByZXR1cm4gV2ViU29saWRDb2xvckxheWVyKFdlYlNvbGlkQ29sb3JMYXllcklt
cGw6OmNyZWF0ZSgpKTsKLX0KLQotV2ViU29saWRDb2xvckxheWVyOjpXZWJTb2xpZENvbG9yTGF5
ZXIoY29uc3QgUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiYgbm9kZSkKLSAgICA6
IFdlYkxheWVyKG5vZGUpCi17Ci19Ci0KLXZvaWQgV2ViU29saWRDb2xvckxheWVyOjpzZXRCYWNr
Z3JvdW5kQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+c2V0
QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwu
Y3BwCmluZGV4IDMzYjFhMzBlMzhjMzBhOTU3ZGRlM2E4NjFhNDg3ZGExN2M4MWQyOTkuLjk0NDA0
MjYyY2E4MWMzYTY3ZmI0ZTIxMmYzYmZlZDg2MTk5NjBlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCkBAIC0yNiwy
NCArMjYsMzcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2xpZENvbG9y
TGF5ZXJJbXBsLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgIlNvbGlk
Q29sb3JMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisKK3VzaW5n
IFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAotUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiBXZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsOjpjcmVhdGUoKQorV2ViU29saWRDb2xvckxheWVyKiBXZWJTb2xpZENvbG9yTGF5ZXI6OmNy
ZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBs
KCkpOworICAgIHJldHVybiBuZXcgV2ViU29saWRDb2xvckxheWVySW1wbChTb2xpZENvbG9yTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwogfQogCi1XZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpXZWJT
b2xpZENvbG9yTGF5ZXJJbXBsKCkKLSAgICA6IFNvbGlkQ29sb3JMYXllckNocm9taXVtKCkKK1dl
YlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwoUGFzc1JlZlB0cjxT
b2xpZENvbG9yTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5l
dyBXZWJMYXllckltcGwobGF5ZXIpKSkKIHsKLSAgICBzZXRJc0RyYXdhYmxlKHRydWUpOworICAg
IG1fbGF5ZXItPmxheWVyKCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYlNvbGlkQ29s
b3JMYXllckltcGw6On5XZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkKIHsKIH0KIAorV2ViTGF5ZXIq
IFdlYlNvbGlkQ29sb3JMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5n
ZXQoKTsKK30KKwordm9pZCBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29s
b3IoV2ViQ29sb3IgY29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNv
bG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBkMjY3M2I0MmI2
OGY4Y2QxZTcxMWI5MWUxMjcwZDY3NmQ1ZDc2OWVhLi43NzQyYmE0OTJkNGM1MTRkYzM3ODI3YzBi
ZDZlMDUzMGRkZDQwMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU29saWRDb2xvckxheWVySW1wbC5oCkBAIC0yNiwxOCArMjYsMjggQEAKICNpZm5kZWYgV2Vi
U29saWRDb2xvckxheWVySW1wbF9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllckltcGxfaAog
Ci0jaW5jbHVkZSAiU29saWRDb2xvckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDxwdWJsaWMv
V2ViU29saWRDb2xvckxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNvbGlkQ29s
b3JMYXllckNocm9taXVtOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVy
SW1wbDsKIAotY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpT
b2xpZENvbG9yTGF5ZXJDaHJvbWl1bSB7CitjbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsIDog
cHVibGljIFdlYlNvbGlkQ29sb3JMYXllciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8V2ViU29saWRDb2xvckxheWVySW1wbD4gY3JlYXRlKCk7Ci0KLXByb3RlY3RlZDoKLSAgICBX
ZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CisgICAgZXhwbGljaXQgV2ViU29saWRDb2xvckxheWVy
SW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtPik7CiAgICAg
dmlydHVhbCB+V2ViU29saWRDb2xvckxheWVySW1wbCgpOworCisgICAgLy8gV2ViU29saWRDb2xv
ckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcikgT1ZF
UlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWRlb0xheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYzNDIxNTVk
YWNlZWFhYTdkODY2NjUzN2Y3MDAzYWExOTMzMDQyZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRl
b0xheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSA8
cHVibGljL1dlYlZpZGVvTGF5ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYlZpZGVv
TGF5ZXIgV2ViVmlkZW9MYXllcjo6Y3JlYXRlKFdlYlZpZGVvRnJhbWVQcm92aWRlciogcHJvdmlk
ZXIpCi17Ci0gICAgcmV0dXJuIFdlYlZpZGVvTGF5ZXIoV2ViQ29yZTo6VmlkZW9MYXllckNocm9t
aXVtOjpjcmVhdGUocHJvdmlkZXIpKTsKLX0KLQotV2ViVmlkZW9MYXllcjo6V2ViVmlkZW9MYXll
cihQYXNzUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAgOiBX
ZWJMYXllcihsYXllcikKLXsKLX0KLQotYm9vbCBXZWJWaWRlb0xheWVyOjphY3RpdmUoKSBjb25z
dAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKTsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRl
b0xheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJmZWQ2NzQyZjJkYzdmOTA5ZmFlMjU1MzcyMjZl
MWFkMGUwOWJkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlZpZGVvTGF5ZXJJbXBsLmgiCisKKyNpbmNsdWRlICJW
aWRlb0xheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1dlYlZpZGVvTGF5ZXIqIFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZShXZWJW
aWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAgIHJldHVybiBuZXcgV2ViVmlkZW9M
YXllckltcGwoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJvdmlkZXIpKTsK
K30KKworV2ViVmlkZW9MYXllckltcGw6OldlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6VmlkZW9MYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIoYWRvcHRQdHIo
bmV3IFdlYkxheWVySW1wbChsYXllcikpKQoreworfQorCitXZWJWaWRlb0xheWVySW1wbDo6fldl
YlZpZGVvTGF5ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlZpZGVvTGF5ZXJJbXBsOjps
YXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgV2ViVmlkZW9M
YXllckltcGw6OmFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmxheWVyKCkt
PmxheWVyVHJlZUhvc3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yODdl
NGI1ZTIwZGM5NmFiNzJiNjQwYjExYTI5YjY5ODdmZmNmZmFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApAQCAtMCwwICsx
LDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWRlb0xheWVySW1wbF9oCisjZGVmaW5lIFdlYlZp
ZGVvTGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0xheWVyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bTsKK30KKworbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYlZpZGVvTGF5ZXJJ
bXBsIDogcHVibGljIFdlYlZpZGVvTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlZp
ZGVvTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtPik7Cisg
ICAgdmlydHVhbCB+V2ViVmlkZW9MYXllckltcGwoKTsKKworICAgIC8vIFdlYlZpZGVvTGF5ZXIg
aW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZhdGU6Cisg
ICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdl
YlZpZGVvTGF5ZXJJbXBsX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCmluZGV4IDBiZDNlYTExNmU0YzA1MmRlYWEwNWU2NjMwNzY0ZTMyZjljYTQxNjguLjYw
Yzc1YzI5ZjJmYmQ0M2Q5MjZkYjgzYTY1MTkzZGMyYmEyNjM3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTQxMCw2ICs0MTAsNyBAQCBXZWJWaWV3
SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9pc0NhbmNl
bGluZ0Z1bGxTY3JlZW4oZmFsc2UpCiAgICAgLCBtX2JlbmNobWFya1N1cHBvcnQodGhpcykKICNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgLCBtX3Jvb3RMYXllcigwKQogICAg
ICwgbV9yb290R3JhcGhpY3NMYXllcigwKQogICAgICwgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdBY3RpdmUoZmFsc2UpCiAgICAgLCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZChmYWxzZSkK
QEAgLTM1MTQsNiArMzUxNSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmFsbG93c0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmcoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3Jh
cGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgbV9yb290R3JhcGhpY3NMYXllciA9IGxheWVyOwor
ICAgIG1fcm9vdExheWVyID0gbGF5ZXIgPyBsYXllci0+cGxhdGZvcm1MYXllcigpIDogMDsKIAog
ICAgIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShsYXllcik7CiAgICAgaWYgKG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KSB7CkBAIC0zNTI3LDExICszNTI5LDggQEAgdm9pZCBX
ZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAg
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTY3JvbGxMYXllcihzY3JvbGxM
YXllcik7CiAgICAgfQogCi0gICAgaWYgKGxheWVyKQotICAgICAgICBtX3Jvb3RMYXllciA9ICps
YXllci0+cGxhdGZvcm1MYXllcigpOwotCiAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcuaXNOdWxs
KCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIobGF5ZXIgPyAmbV9yb290
TGF5ZXIgOiAwKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldFJvb3RMYXllcihtX3Jvb3RM
YXllcik7CiAKICAgICBJbnRSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0aCwgbV9z
aXplLmhlaWdodCk7CiAgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZSkK
QEAgLTM2NDQsNyArMzY0Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29u
dGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5zaG93RGVi
dWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0T3Bh
cXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5pbml0aWFs
aXplKHRoaXMsIG1fcm9vdExheWVyLCBsYXllclRyZWVWaWV3U2V0dGluZ3MpOworICAgICAgICBt
X2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6ZSh0aGlzLCAqbV9yb290TGF5ZXIsIGxheWVyVHJlZVZp
ZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgpKSB7CiAg
ICAgICAgICAgICBpZiAobV93ZWJTZXR0aW5ncy0+YXBwbHlEZWZhdWx0RGV2aWNlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkgIT0gMSkgewog
ICAgICAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMzk3ODM2ODBmYTE5ODk4
ODZjNDYwYjEzZDQwZGQxNDA0MWEyYTQyYi4uMTIzZjM4YzRjMzViZGU5NzEwOThkZGMyNjBkODgx
NDM1YTI5MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmll
d0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBA
IC04MTQsNyArODE0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1fcm9vdExh
eWVyU2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVudEhvc3Q+IG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogICAgIFdlYkxheWVyVHJlZVZpZXcgbV9sYXllclRy
ZWVWaWV3OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIFdlYkxheWVyKiBtX3Jvb3RM
YXllcjsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFwaGljc0xheWVyOwog
ICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAgICAgYm9vbCBtX2Nv
bXBvc2l0b3JDcmVhdGlvbkZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGE1Y2E1NTEyNGMyOTA0
NzJjMjc0N2QwOTM5ZmIwMGRhMjA1OWY3N2QuLjQ5NDhmOTdjYzU4OGEwYjViYjIwMGQxNDM5YmM0
ZjkxNzliNDlmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSW1h
Z2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTIyLDEzICsxMjIsMTMgQEAgVEVTVChJ
bWFnZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCiAgICAgUmVmUHRyPEltYWdlPiBu
b25PcGFxdWVJbWFnZSA9IFRlc3RJbWFnZTo6Y3JlYXRlKEludFNpemUoMTAwLCAxMDApLCBmYWxz
ZSk7CiAgICAgQVNTRVJUX1RSVUUobm9uT3BhcXVlSW1hZ2UuZ2V0KCkpOwogCi0gICAgQVNTRVJU
X1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLmlzTnVsbCgpKTsKKyAgICBBU1NF
UlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpKTsKIAogICAgIGdyYXBoaWNz
TGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShvcGFxdWVJbWFnZS5nZXQoKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLm9wYXF1ZSgpKTsKKyAgICBBU1NF
UlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCktPm9wYXF1ZSgpKTsKIAogICAg
IGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShub25PcGFxdWVJbWFnZS5nZXQoKSk7
Ci0gICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKS5vcGFxdWUo
KSk7CisgICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKS0+b3Bh
cXVlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IDY2NzIwMDQxMDM4NTk2MzliZWE2MjNjY2RlZjUx
YjkyMzIzMGI2ZDAuLjliOGU1OGNhMTAwZTc3ZDkwMzY1YmQ0NjI4YjFkZTM4MTA5Mzc0MzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAKQEAgLTI2
LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KIAogI2luY2x1ZGUgIkNv
bXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJXZWJMYXllcklt
cGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5oPgogI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJDb250ZW50TGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyQ2xp
ZW50Lmg+CkBAIC03Niw5ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8vIEluaXRp
YWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICAgICAgV2ViS2l0OjpXZWJDb21w
b3NpdG9yOjppbml0aWFsaXplKDApOwotICAgICAgICBtX3Jvb3RMYXllciA9IFdlYkxheWVyOjpj
cmVhdGUoKTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRl
KCkpOwogICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSku
VGltZXMoQW55TnVtYmVyKCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6
ZSgmbV9jbGllbnQsIG1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdmlldy5pbml0aWFsaXplKCZtX2NsaWVudCwgKm1fcm9v
dExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIE1vY2s6OlZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAgICAgfQogCkBAIC04NywxNCAr
ODgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBXZSBtYXkgZ2V0IGFueSBudW1iZXIgb2Ygc2No
ZWR1bGVDb21wb3NpdGUgY2FsbHMgZHVyaW5nIHNodXRkb3duLgogICAgICAgICBFWFBFQ1RfQ0FM
TChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwogICAg
ICAgICBtX3ZpZXcuc2V0Um9vdExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5yZXNldCgp
OworICAgICAgICBtX3Jvb3RMYXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVzZXQoKTsK
ICAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogcHJv
dGVjdGVkOgogICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1fY2xpZW50OwotICAgIFdl
YkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7CiAg
ICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCkBAIC0xMDQsNzMgKzEwNSw3MyBAQCBU
RVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiB7CiAgICAgLy8gQmFzZSBsYXllci4KICAgICBF
WFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVy
KCkpOwotICAgIFdlYkxheWVyIGxheWVyID0gV2ViTGF5ZXI6OmNyZWF0ZSgpOwotICAgIG1fcm9v
dExheWVyLmFkZENoaWxkKGxheWVyKTsKKyAgICBPd25QdHI8V2ViTGF5ZXI+IGxheWVyID0gYWRv
cHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobGF5
ZXIuZ2V0KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVu
dCk7CiAKICAgICBXZWJGbG9hdFBvaW50IHBvaW50KDMsIDQpOwogICAgIEVYUEVDVF9DQUxMKG1f
Y2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXll
ci5zZXRBbmNob3JQb2ludChwb2ludCk7CisgICAgbGF5ZXItPnNldEFuY2hvclBvaW50KHBvaW50
KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAg
IEVYUEVDVF9FUShwb2ludCwgbGF5ZXIuYW5jaG9yUG9pbnQoKSk7CisgICAgRVhQRUNUX0VRKHBv
aW50LCBsYXllci0+YW5jaG9yUG9pbnQoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwg
c2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7CiAgICAgZmxvYXQgYW5jaG9y
WiA9IDU7Ci0gICAgbGF5ZXIuc2V0QW5jaG9yUG9pbnRaKGFuY2hvclopOworICAgIGxheWVyLT5z
ZXRBbmNob3JQb2ludFooYW5jaG9yWik7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3Rh
dGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEoYW5jaG9yWiwgbGF5ZXIuYW5jaG9yUG9p
bnRaKCkpOworICAgIEVYUEVDVF9FUShhbmNob3JaLCBsYXllci0+YW5jaG9yUG9pbnRaKCkpOwog
CiAgICAgV2ViU2l6ZSBzaXplKDcsIDgpOwogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hl
ZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXllci5zZXRCb3VuZHMo
c2l6ZSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKICAgICBNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9FUShzaXplLCBsYXllci5i
b3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKHNpemUsIGxheWVyLT5ib3VuZHMoKSk7CiAKICAgICBF
WFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgx
KSk7Ci0gICAgbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBsYXllci0+c2V0TWFz
a3NUb0JvdW5kcyh0cnVlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygm
bV9jbGllbnQpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyLm1hc2tzVG9Cb3VuZHMoKSk7CisgICAg
RVhQRUNUX1RSVUUobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTCht
X2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgIFdl
YkxheWVyIG90aGVyTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAgbV9yb290TGF5ZXIu
YWRkQ2hpbGQob3RoZXJMYXllcik7CisgICAgT3duUHRyPFdlYkxheWVyPiBvdGhlckxheWVyID0g
YWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQo
b3RoZXJMYXllci5nZXQoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29t
cG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE1hc2tMYXllcihvdGhl
ckxheWVyKTsKKyAgICBsYXllci0+c2V0TWFza0xheWVyKG90aGVyTGF5ZXIuZ2V0KCkpOwogICAg
IE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKICAgICBFWFBF
Q1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7
CiAgICAgZmxvYXQgb3BhY2l0eSA9IDAuMTIzZjsKLSAgICBsYXllci5zZXRPcGFjaXR5KG9wYWNp
dHkpOworICAgIGxheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogICAgIE1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VRKG9wYWNpdHksIGxh
eWVyLm9wYWNpdHkoKSk7CisgICAgRVhQRUNUX0VRKG9wYWNpdHksIGxheWVyLT5vcGFjaXR5KCkp
OwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVz
KEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXllci0+c2V0
T3BhcXVlKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2Ns
aWVudCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIub3BhcXVlKCkpOworICAgIEVYUEVDVF9UUlVF
KGxheWVyLT5vcGFxdWUoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVD
b21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0UG9zaXRpb24ocG9p
bnQpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CiAgICAgTW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEocG9pbnQsIGxheWVy
LnBvc2l0aW9uKCkpOworICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXItPnBvc2l0aW9uKCkpOwog
CiAgICAgLy8gVGV4dHVyZSBsYXllci4KICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1
bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKTsK
LSAgICBtX3Jvb3RMYXllci5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXIpOworICAgIE93blB0cjxXZWJF
eHRlcm5hbFRleHR1cmVMYXllcj4gdGV4dHVyZUxheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQodGV4dHVy
ZUxheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygm
bV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRl
KCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIHRleHR1cmVMYXllci5zZXRUZXh0dXJlSWQoMyk7
CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMyk7CiAgICAgTW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50
LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICB0ZXh0dXJlTGF5
ZXIuc2V0RmxpcHBlZCh0cnVlKTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldEZsaXBwZWQodHJ1ZSk7
CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAg
IEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0
KDEpKTsKICAgICBXZWJGbG9hdFJlY3QgdXZSZWN0KDAuMWYsIDAuMWYsIDAuOWYsIDAuOWYpOwot
ICAgIHRleHR1cmVMYXllci5zZXRVVlJlY3QodXZSZWN0KTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNl
dFVWUmVjdCh1dlJlY3QpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X2NsaWVudCk7CiAKIApAQCAtMTc4LDE0ICsxNzksMTQgQEAgVEVTVF9GKFdlYkxheWVyVGVzdCwg
Q2xpZW50KQogICAgIE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQgY29udGVudENsaWVudDsKICAg
ICBFWFBFQ1RfQ0FMTChjb250ZW50Q2xpZW50LCBwYWludENvbnRlbnRzKF8sIF8sIF8pKS5UaW1l
cyhBbnlOdW1iZXIoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9z
aXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJDb250ZW50TGF5ZXIgY29udGVudExh
eWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNvbnRlbnRDbGllbnQpOwotICAgIG1fcm9v
dExheWVyLmFkZENoaWxkKGNvbnRlbnRMYXllcik7CisgICAgT3duUHRyPFdlYkNvbnRlbnRMYXll
cj4gY29udGVudExheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNvbnRl
bnRDbGllbnQpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQoY29udGVudExheWVyLT5sYXll
cigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwog
CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0
TGVhc3QoMSkpOwotICAgIGNvbnRlbnRMYXllci5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOworICAg
IGNvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAgICBNb2Nr
OjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9GQUxT
RShjb250ZW50TGF5ZXIuZHJhd3NDb250ZW50KCkpOworICAgIEVYUEVDVF9GQUxTRShjb250ZW50
TGF5ZXItPmxheWVyKCktPmRyYXdzQ29udGVudCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAppbmRleCBi
ZWMyYzYwMzVhY2FlZjA3MzQwYTFiOGMzNjRlMWE5OTA4MmYzY2Q1Li4xYzE2MDJjMjM0MTY5OWQ5
ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAtNjAsOCArNjAsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIGluaXRpYWxp
emVDb21wb3NpdG9yKCk7Ci0gICAgICAgIG1fcm9vdExheWVyID0gV2ViTGF5ZXI6OmNyZWF0ZSgp
OwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgbV9yb290
TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKKyAgICAgICAgbV9yb290TGF5
ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBFWFBFQ1RfVFJVRSht
X3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3
OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIG1fdmlldy5zZXRTdXJmYWNlUmVhZHkoKTsKICAgICB9
CiAKQEAgLTcwLDEzICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIE1vY2s6OlZlcmlmeUFuZENs
ZWFyRXhwZWN0YXRpb25zKGNsaWVudCgpKTsKIAogICAgICAgICBtX3ZpZXcuc2V0Um9vdExheWVy
KDApOwotICAgICAgICBtX3Jvb3RMYXllci5yZXNldCgpOworICAgICAgICBtX3Jvb3RMYXllci5j
bGVhcigpOwogICAgICAgICBtX3ZpZXcucmVzZXQoKTsKICAgICAgICAgV2ViS2l0OjpXZWJDb21w
b3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkxheWVyIG1f
cm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7CiAgICAgV2ViTGF5
ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159236</attachid>
            <date>2012-08-17 17:17:57 -0700</date>
            <delta_ts>2012-08-17 17:27:30 -0700</delta_ts>
            <desc>rebased and addresses feedback</desc>
            <filename>bug-94174-20120817171721.patch</filename>
            <type>text/plain</type>
            <size>200899</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1OTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkY2RiNWVkZDAyZDlj
NmU4NDRiYmNiMzBhMjQ2NjQ2MTUzZTQ1ODg1Li4xZWVmZGE5OTlmNGJiMzU0YTU2Y2UzYTkzOWRj
NjM2YzI5YTEzMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wOC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFs
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZXMgV2ViTGF5ZXIgZnJvbSBhIHZhbHVlIHR5cGUgdG8gYSBwdXJlIHZpcnR1
YWwgaW50ZXJmYWNlIGFuZCBjaGFuZ2VzIFdlYipMYXllcnMgZnJvbSBzdWJ0eXBlcyB0bworICAg
ICAgICBzdGFuZGFsb25lIHR5cGVzIHRoYXQgaGF2ZSBhIFdlYkxheWVyLiBUaGlzIGJldHRlciBp
c29sYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgaW50ZXJmYWNlIGFuZCwgc2luY2UK
KyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gcmUtd3JhcCBhbiBleGlzdGluZyBsYXllciwg
bWFrZXMgY2xlYW51cCBleHBsaWNpdCBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgY2FsbGVyIHRv
IGludm9rZQorICAgICAgICBzcGVjaWFsIGNsZWFudXAgbWV0aG9kcyBiZWZvcmUgc2h1dGRvd24u
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmg6CisgICAgICAg
IChXZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oOgorICAgICAgICAoV2Vi
SU9TdXJmYWNlTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVy
Lmg6CisgICAgICAgIChXZWJJbWFnZUxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjp+V2ViTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaDoKKyAgICAgICAgKFdlYlNjcm9sbGFibGVMYXllcik6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg6CisgICAgICAg
IChXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNvbGlk
Q29sb3JMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllcjo6fldlYlNvbGlkQ29s
b3JMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYlZpZGVvTGF5ZXIpOgorCiAyMDEyLTA4LTE3ICBaYWNoIEt1em5pYSAgPHpvcmtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBTa2lhIE1hZ25pZmllciBm
aWx0ZXIgdG8gQ2hyb21pdW0gbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwZjZiY2JjZTExNDE1NTBi
OGRjNjU5NGI3OWQxZDU2NGY2NzI2OS4uYzYzOTkzNDM2MjU1OWMzMmY4MmM5YzYyNWFhMGNjZjhl
MzQ1MTNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wOC0xNiAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ2hh
bmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFsIGludGVy
ZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQx
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHVwZGF0ZXMgV2ViQ29yZSBjb2RlIGZvciB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIGNoYW5nZXMu
IENsYXNzZXMgdGhhdCBoYXZlIG93bmVyc2hpcCBvZiBzcGVjaWZpYyBsYXllcgorICAgICAgICB0
eXBlcyAoc3VjaCBhcyBEcmF3aW5nQnVmZmVyQ2hyb21pdW0sIENhbnZhczJETGF5ZXJCcmlkZ2Ug
YW5kIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0pIGhvbGQgb3duZXJzaGlwCisgICAgICAg
IG9mIGEgc3BlY2lmaWMgdHlwZSBhbmQgYSBwb2ludGVyIHRvIHRoZSBXZWJMYXllciB0byBHcmFw
aGljc0xheWVyQ2hyb21pdW0gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIGxheWVyCisgICAg
ICAgIHRyZWUuIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBob2xkcyBhIFdlYkNvbnRlbnRMYXllciBh
bmQgKG9wdGlvbmFsbHkpIGEgV2ViSW1hZ2VMYXllciBhbmQgV2ViTGF5ZXIgKGZvcgorICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyKSBhbmQgYXNzZW1ibGVzIHRoZSBmaW5hbCBsYXllciB0cmVlLgor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZh
dGU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChTY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cml2YXRlOjpzZXRTY3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGU6OnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNldFZlcnRpY2FsU2Nyb2xsYmFy
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpz
Y3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2Ny
b2xsYmFyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dFNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJC
cmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0OjpB
Y2NlbGVyYXRlZERldmljZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRE
ZXZpY2VDb250ZXh0OjpjbGVhckxheWVyKToKKyAgICAgICAgKEFjY2VsZXJhdGVkRGV2aWNlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZERldmljZUNvbnRleHQ6OnByZXBh
cmVGb3JEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZh
czJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6
fkNhbnZhczJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJy
aWRnZTo6c2tDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6
bGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6Y29udGV4dEFj
cXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQnJpZGdlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbnZhczJETGF5ZXJC
cmlkZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZm
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6
RHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclBy
aXZhdGU6On5EcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5n
QnVmZmVyUHJpdmF0ZTo6bGF5ZXIpOgorICAgICAgICAoRHJhd2luZ0J1ZmZlclByaXZhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
On5HcmFwaGljc0xheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjp1cGRhdGVOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVl
ZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01l
ZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3Zl
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c3Vz
cGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6YWRkTGlua0hpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OmRpZEZpbmlzaExpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNo
b3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlTWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllckJhY2tncm91bmRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpoYXNDb250ZW50c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y29udGVudExheWVyKToKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNv
bnRlbnRzTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cm9vdExheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6
CisKIDIwMTItMDgtMTcgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbY2hyb21pdW1dIEFkZCBtaXNzaW5nIGhlYWRlciBmaWxlcyB0byAuZ3lwaSBhbmQg
bWlzc2luZyBpbmNsdWRlIHRvIENDVGlsZWRMYXllckltcGwuY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCmluZGV4IGY4ZGVlMTFiMjY1N2I5ZjIxMDExYTkzOTA4ZWQxMDMxYmRkNTgxZWEuLjg1
OTU2ODAzMzExOWZmNDJmMDUzYzE5OGE3ZTBmYTkxZTg4NmM4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE1IEBACisyMDEyLTA4LTE2ICBKYW1lcyBSb2JpbnNvbiAg
PGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDaGFuZ2UgV2ViTGF5
ZXIgZnJvbSBhIGNvbmNyZXRlIHR5cGUgdG8gYSBwdXJlIHZpcnR1YWwgaW50ZXJmYWNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdXBkYXRlcyB0
aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYipMYXllciBmYW1pbHkgdG8gdGhlIG5ldyBkZXNp
Z24gYW5kIHVwZGF0ZXMgY2FsbGVycyBpbiBXZWJWaWV3SW1wbCAvCisgICAgICAgIE5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogc3Jj
L05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBv
c2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAgICAgICAgKFdl
YktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRTY3JvbGxMYXllcik6CisgICAgICAg
IChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQpOgorICAgICAg
ICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKToKKyAgICAg
ICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgICogc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjp+V2ViQ29u
dGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6Omxh
eWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXll
ckltcGw6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1w
bDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBs
OjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExheWVySW1w
bDo6c2V0VXNlTENEVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6
OnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBzcmMvV2ViQ29u
dGVudExheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29udGVudExheWVySW1wbCk6CisgICAgICAg
ICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjbGVhckNsaWVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0VGV4dHVyZUlkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRGbGlwcGVkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldE9wYXF1ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UHJlbXVsdGlw
bGllZEFscGhhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
Ojp3aWxsTW9kaWZ5VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4dCk6CisgICAgICAgIChXZWJUZXh0dXJlVXBk
YXRlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlckltcGw6OldlYlRl
eHR1cmVVcGRhdGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OmNvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5hbFRleHR1
cmVMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkNvbnRlbnRMYXllci5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBs
LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFj
ZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYklPU3Vy
ZmFjZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VMYXllcklt
cGw6OldlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklPU3VyZmFj
ZUxheWVySW1wbDo6fldlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklPU3VyZmFjZUxheWVySW1wbDo6c2V0SU9TdXJmYWNlUHJvcGVydGllcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJJ
T1N1cmZhY2VMYXllckltcGwuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJJbWFnZUxheWVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAqIHNyYy9X
ZWJJbWFnZUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW1hZ2VMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2VMYXllckltcGw6OldlYkltYWdlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW1h
Z2VMYXllckltcGw6On5XZWJJbWFnZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklt
YWdlTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlTGF5ZXJJbXBs
OjpzZXRCaXRtYXApOgorICAgICAgICAqIHNyYy9XZWJJbWFnZUxheWVySW1wbC5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllci5jcHAuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbWFnZUxheWVy
SW1wbCk6CisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
cmMvV2ViTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKToKKyAgICAgICAg
KFdlYktpdDo6V2ViTGF5ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpp
bnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVwbGFjZUNoaWxk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRDaGlsZHJlbik6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQWxsQ2hpbGRyZW4pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnNldEFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjphbmNob3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5j
aG9yUG9pbnRaKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjphbmNob3JQb2ludFop
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEJvdW5kcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVySW1wbDo6Ym91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpt
YXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRNYXNrTGF5
ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFJlcGxpY2FMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6c2V0T3BhcXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpvcGFxdWUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJJbXBsOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
SW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpz
ZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnRyYW5zZm9ybSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RHJhd3NDb250ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllckltcGw6OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAoV2ViS2l0
OjpXZWJMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6
c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNl
dERlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldERl
YnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldERlYnVn
TmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5pbWF0aW9uRGVsZWdh
dGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmFkZEFuaW1hdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
ckltcGw6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
Omhhc0FjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6dHJh
bnNmZXJBbmltYXRpb25zVG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEZv
cmNlUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6Y2xlYXJS
ZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRTY3JvbGxQ
b3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U2Nyb2xsYWJsZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXROb25GYXN0U2Nyb2xs
YWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0SXNDb250YWlu
ZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBs
OjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OmxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYkxheWVyVHJl
ZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpzZXRSb290TGF5
ZXIpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNyYy9XZWJN
ZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpyZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OmFjY2VsZXJhdGVkUmVuZGVyaW5nSW5Vc2UpOgorICAgICAgICAq
IHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nVGV4dHVy
ZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0QmFja2lu
Z0lPU3VyZmFjZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6
Y29tbWl0QmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJ
bXBsOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5oOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisgICAgICAgICogc3JjL1dl
YlNjcm9sbGFibGVMYXllckltcGwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb24pOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbGFibGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNob3VsZFNjcm9sbE9u
TWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0Tm9u
RmFzdFNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5
ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKToKKyAgICAg
ICAgKiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVyLmNwcC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OldlYlNjcm9sbGJhckxheWVySW1wbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1wbDo6fldlYlNjcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1wbDo6bGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OnNldFNjcm9sbExheWVy
KToKKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNjcm9sbGJhckxh
eWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpzZXRCYWNr
Z3JvdW5kQ29sb3IpOgorICAgICAgICAqIHNyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTb2xpZENv
bG9yTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlkZW9MYXllckltcGwuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVyLmNwcC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjpXZWJWaWRlb0xheWVySW1wbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjp+V2ViVmlkZW9MYXllckltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6YWN0aXZlKToKKyAgICAgICAgKiBzcmMvV2ViVmlk
ZW9MYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZGVvTGF5ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViVmlkZW9MYXllckltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUpOgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAgICAgICAg
KiB0ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRF
U1QpOgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMv
V2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwOgorCiAyMDEyLTA4LTE3ICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI1OTIyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJDb250ZW50TGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29udGVudExheWVyLmgKaW5kZXggNzMzNmJmYWJjZDc0NjE4MjE4YjlkZWRlYmEwMWJjMjczMjMy
NmM2Ny4uNDUzODFlZTkzZmYwNjE4MGM1YzFhYjVkOGEwMzA1NjlmM2NkNTM1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCkBAIC0y
OSw1MyArMjksMzYgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJTY3Jv
bGxhYmxlTGF5ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGVudExheWVy
Q2hyb21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVy
Q2xpZW50OwotY2xhc3MgV2ViQ29udGVudExheWVySW1wbDsKIAotY2xhc3MgV2ViQ29udGVudExh
eWVyIDogcHVibGljIFdlYlNjcm9sbGFibGVMYXllciB7CitjbGFzcyBXZWJDb250ZW50TGF5ZXIg
ewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkNvbnRlbnRMYXllciBjcmVh
dGUoV2ViQ29udGVudExheWVyQ2xpZW50Kik7CisgICAgLy8gVGhlIGNsaWVudCBtdXN0IG91dGxp
dmUgdGhlIFdlYkNvbnRlbnRMYXllci4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250
ZW50TGF5ZXIqIGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqKTsKIAotICAgIFdlYkNvbnRl
bnRMYXllcigpIHsgfQotICAgIFdlYkNvbnRlbnRMYXllcihjb25zdCBXZWJDb250ZW50TGF5ZXIm
IGxheWVyKSA6IFdlYlNjcm9sbGFibGVMYXllcihsYXllcikgeyB9CiAgICAgdmlydHVhbCB+V2Vi
Q29udGVudExheWVyKCkgeyB9Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3Qg
V2ViQ29udGVudExheWVyJiBsYXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24o
bGF5ZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgLy8gQ2FsbGVkIHdo
ZW4gdGhlIFdlYkNvbnRlbnRMYXllckNsaWVudCBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGQgbm90
IGJlIHVzZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CisgICAgLy8g
VGhlIFdlYkNvbnRlbnRMYXllciBoYXMgb3duZXJzaGlwIG9mIHRoaXMgd3JhcHBlci4KKyAgICB2
aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKIAogICAgIC8vIFNldCB0byB0cnVlIGlmIHRo
ZSBiYWNrc2lkZSBvZiB0aGlzIGxheWVyJ3MgY29udGVudHMgc2hvdWxkIGJlIHZpc2libGUgd2hl
biBjb21wb3NpdGVkLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREb3VibGVTaWRlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RG91Ymxl
U2lkZWQoYm9vbCkgPSAwOwogCiAgICAgLy8gU2V0IHRvIGFwcGx5IGEgc2NhbGUgZmFjdG9yIHVz
ZWQgd2hlbiBwYWludGluZyBhbmQgZHJhd2luZyB0aGlzIGxheWVyJ3MgY29udGVudC4gRGVmYXVs
dHMgdG8gMS4wLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgPSAwOwogCiAgICAg
Ly8gU2V0IHRvIHJlbmRlciB0ZXh0IGluIHRoaXMgbGF5ZXIgd2l0aCBMQ0QgYW50aWFsaWFzaW5n
LiBPbmx5IHNldCBpZiB5b3Uga25vdyB0aGF0IHRoaXMgbGF5ZXIgd2lsbCBiZQogICAgIC8vIGRy
YXduIGluIGEgd2F5IHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgLSBpLmUuIG9wYXF1ZSBiYWNrZ3Jv
dW5kLCBub3Qgcm90YXRlZCBvciBzY2FsZWQsIGV0Yy4KICAgICAvLyBEZWZhdWx0cyB0byBmYWxz
ZTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VXNlTENEVGV4dChib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VXNlTENEVGV4dChib29sKSA9IDA7CiAKICAgICAvLyBTZXQgdG8gZHJhdyBh
IHN5c3RlbS1kZWZpbmVkIGNoZWNrZXJib2FyZCBpZiB0aGUgY29tcG9zaXRvciB3b3VsZCBvdGhl
cndpc2UgZHJhdyBhIHRpbGUgaW4gdGhpcyBsYXllcgogICAgIC8vIGFuZCB0aGUgYWN0dWFsIGNv
bnRlbnRzIGFyZSB1bmF2YWlsYWJsZS4gSWYgZmFsc2UsIHRoZSBjb21wb3NpdG9yIHdpbGwgZHJh
dyB0aGUgbGF5ZXIncyBiYWNrZ3JvdW5kIGNvbG9yCiAgICAgLy8gZm9yIHRoZXNlIHRpbGVzLgog
ICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREcmF3
Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wpOwotCi0jaWYgV0VCS0lUX0lNUExFTUVO
VEFUSU9OCi0gICAgV2ViQ29udGVudExheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpDb250ZW50TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBXZWJDb250ZW50TGF5ZXImIG9wZXJhdG9y
PShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21pdW0+Jik7
Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtPigpIGNvbnN0OwotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldERyYXdDaGVja2VyYm9h
cmRGb3JNaXNzaW5nVGlsZXMoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVyLmgKaW5kZXggYjE5YzA1ZjNlM2IwOThkOGViMDNlZTU2MTI3OTY0NmI5
MDgxZjQ1NC4uOTJkMmM0ZmVlODc2YTkxYmRiZjYwYmUzODUxMzczY2NlZjcxYjE3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXIuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJXZWJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJXZWJMYXllci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBU
ZXh0dXJlTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwpAQCAtNDQsNDkgKzQwLDQzIEBAIGNsYXNzIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwogLy8gV2hlbiBpbiBzaW5nbGUtdGhyZWFkIG1v
ZGUsIHRoaXMgbWVhbnMgZHVyaW5nIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpLgogLy8g
V2hlbiB1c2luZyB0aGUgdGhyZWFkZWQgY29tcG9zaXRvciwgdGhpcyBjYW4gbWVhbiBhdCBhbiBh
cmJpdHJhcnkgdGltZSB1bnRpbAogLy8gdGhlIFdlYkxheWVyVHJlZVZpZXcgaXMgZGVzdHJveWVk
LgotY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xh
c3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgewogcHVibGljOgogICAgIC8vIFRoZSBvd25lciBv
ZiB0aGlzIGxheWVyIG1heSBvcHRpb25hbGx5IHByb3ZpZGUgYSBjbGllbnQuIFRoaXMgY2xpZW50
IHdpbGwKICAgICAvLyBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbXBvc2l0b3Igd2lzaGVzIHRv
IHByb2R1Y2UgYSBuZXcgZnJhbWUgYW5kIGNhbgogICAgIC8vIHByb3ZpZGUgYSBuZXcgZnJvbnQg
YnVmZmVyIHRleHR1cmUgSUQuIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBjbGllbnQgd2FudHMgdG8K
ICAgICAvLyBpbXBsZW1lbnQgYSBkb3VibGUtYnVmZmVyaW5nIHNjaGVtZSB0aGF0IGlzIHN5bmNo
cm9uaXplZCB3aXRoIHRoZSBjb21wb3NpdG9yLCBmb3IgaW5zdGFuY2UuCi0gICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgY3JlYXRlKFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyQ2xpZW50KiA9IDApOwotCi0gICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIGNsaWVu
dCBmb3IgdGhpcyBsYXllciBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGRuJ3QgYmUgdXNlZC4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKKyAgICAvLyBUaGUgY2xpZW50IG11
c3Qgb3V0bGl2ZSB0aGUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuCisgICAgV0VCS0lUX0VYUE9S
VCBzdGF0aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqIGNyZWF0ZShXZWJFeHRlcm5hbFRleHR1
cmVMYXllckNsaWVudCogPSAwKTsKIAotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9
CiAgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KIAorICAgIHZpcnR1
YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworCiAgICAgLy8gU2V0cyB0aGUgdGV4dHVyZSBpZCB0
aGF0IHJlcHJlc2VudHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQogICAgIC8v
IGNvbXBvc2l0b3IgY29udGV4dC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VGV4dHVyZUlk
KHVuc2lnbmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVkKSA9IDA7
CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBmbGlw
cGVkIGluIHRoZSBZIGRpcmVjdGlvbiB3aGVuCiAgICAgLy8gcmVuZGVyZWQuCi0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIHNldEZsaXBwZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEZsaXBw
ZWQoYm9vbCkgPSAwOwogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBvZiB0aGUg
dGV4dHVyZSB0aGF0IGlzIG1hcHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpID0gMDsKIAogICAgIC8v
IFNldHMgd2hldGhlciBldmVyeSBwaXhlbCBpbiB0aGlzIGxheWVyIGlzIG9wYXF1ZS4gRGVmYXVs
dHMgdG8gZmFsc2UuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpID0gMDsKIAogICAgIC8vIFNldHMgd2hldGhl
ciB0aGlzIGxheWVyJ3MgdGV4dHVyZSBoYXMgcHJlbXVsdGlwbGllZCBhbHBoYSBvciBub3QuIERl
ZmF1bHRzIHRvIHRydWUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZW11bHRpcGxpZWRB
bHBoYShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wp
ID0gMDsKIAogICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IHByb3ZpZGVk
IHRleHR1cmUgSUQgaXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgZXh0ZXJuYWxseS4KLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgd2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2ls
bE1vZGlmeVRleHR1cmUoKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBjb250ZXh0
IHNob3VsZCBiZSByYXRlIGxpbWl0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuIFJhdGUgbGltaXRpbmcg
d29ya3MgYnkgYmxvY2tpbmcKICAgICAvLyBpbnZhbGlkYXRlKCkgYW5kIGludmFsaWRhdGVSZWN0
KCkgY2FsbHMgaWYgdGhlIGNvbXBvc2l0b3IgaXMgdG9vIG1hbnkgZnJhbWVzIGJlaGluZC4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKTsKLQotcHJpdmF0
ZToKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtPik7Ci0j
ZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKSA9IDA7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaAppbmRleCAzN2E0YzY3OTJjMWM3NmVlY2Mw
YzYwYzBmM2ZjOWQwZWEzZDMzOWJiLi5iY2YxNDExMmFhNGI5NDkwZDAzNjlkYmE0YTdjZjVhMDg3
NjZmMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYklP
U3VyZmFjZUxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJ
T1N1cmZhY2VMYXllci5oCkBAIC0zMCwyNyArMzAsMTkgQEAKICNpbmNsdWRlICJXZWJMYXllci5o
IgogI2luY2x1ZGUgIldlYlNpemUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSU9T
dXJmYWNlTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIFRoaXMg
Y2xhc3MgcmVwcmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBhbiBleHRlcm5hbGx5IG1hbmFn
ZWQgSU9TdXJmYWNlLgotY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIg
eworY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIFdlYklPU3VyZmFjZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIFdlYklPU3VyZmFjZUxheWVyKiBjcmVhdGUoKTsKIAotICAgIFdlYklPU3VyZmFjZUxheWVy
KCkgeyB9CiAgICAgdmlydHVhbCB+V2ViSU9TdXJmYWNlTGF5ZXIoKSB7IH0KIAotICAgIC8vIFNl
dHMgdGhlIElPIHN1cmZhY2UgaWQgdGhhdCByZXByZXNlbnRzIHRoaXMgbGF5ZXIncyBjb250ZW50
cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25l
ZCBpb1N1cmZhY2VJZCwgV2ViU2l6ZSk7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9
IDA7CiAKLXByaXZhdGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQg
V2ViSU9TdXJmYWNlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJT1N1cmZhY2VMYXllckNocm9t
aXVtPik7Ci0jZW5kaWYKKyAgICAvLyBTZXRzIHRoZSBJTyBzdXJmYWNlIGlkIHRoYXQgcmVwcmVz
ZW50cyB0aGlzIGxheWVyJ3MgY29udGVudHMuCisgICAgdmlydHVhbCB2b2lkIHNldElPU3VyZmFj
ZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpID0gMDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJJbWFnZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkltYWdlTGF5ZXIuaAppbmRleCBhOTE2ODM1ZjIwNWJjMDZmNTg0ZDQyMzMyYTQxZTRjNjBl
OTkwMGI0Li5jNzczN2YzMWEzNzk2ZmQwNGRjZGM0YmRlZjI2YjVhYjU2MGMwMTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaApAQCAtMzAs
MjQgKzMwLDE2IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIu
aCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2VMYXllckNocm9taXVtOwotfQot
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViSW1hZ2VMYXllciA6IHB1YmxpYyBXZWJM
YXllciB7CitjbGFzcyBXZWJJbWFnZUxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyBXZWJJbWFnZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYkltYWdlTGF5ZXIqIGNyZWF0ZSgpOwogCi0gICAgV2ViSW1hZ2VMYXllcigpIHsgfQogICAg
IHZpcnR1YWwgfldlYkltYWdlTGF5ZXIoKSB7IH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRCaXRtYXAoU2tCaXRtYXApOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhw
bGljaXQgV2ViSW1hZ2VMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bT4pOwotI2VuZGlmCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldEJpdG1hcChTa0JpdG1hcCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5kZXgg
NjQzMWY4NDhjNmE5OGY5YzZlYjI1YzFkY2FkYzJhMTM2MjNkNjUxZi4uYWZlNTliMTlkNGExNzk5
ZmM4MTJlMDlkYjk3ZTU0YzA2YjM5ODhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXIuaApAQCAtMjksODggKzI5LDgzIEBACiAjaW5jbHVkZSAiV2ViQW5pbWF0
aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNp
bmNsdWRlICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNpbmNsdWRl
ICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9y
LmgiCiAKIGNsYXNzIFNrTWF0cml4NDQ7Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIExheWVy
Q2hyb21pdW07IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRpb25EZWxl
Z2F0ZTsKIGNsYXNzIFdlYkZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKK2NsYXNzIFdlYlNjcm9sbGFibGVMYXllcjsKIHN0cnVjdCBXZWJGbG9hdFBvaW50
Owogc3RydWN0IFdlYkZsb2F0UmVjdDsKIHN0cnVjdCBXZWJTaXplOwogCitjbGFzcyBXZWJMYXll
ckltcGw7CisKIGNsYXNzIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0
YXRpYyBXZWJMYXllciBjcmVhdGUoKTsKLQotICAgIFdlYkxheWVyKCkgeyB9Ci0gICAgV2ViTGF5
ZXIoY29uc3QgV2ViTGF5ZXImIGxheWVyKSB7IGFzc2lnbihsYXllcik7IH0KLSAgICB2aXJ0dWFs
IH5XZWJMYXllcigpIHsgcmVzZXQoKTsgfQotICAgIFdlYkxheWVyJiBvcGVyYXRvcj0oY29uc3Qg
V2ViTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKGxheWVyKTsKLSAgICAgICAg
cmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJpdmF0ZS5pc051bGwoKTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRf
RVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7CisjZGVmaW5lIFdFQkxB
WUVSX0lTX1BVUkVfVklSVFVBTAorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxheWVyKiBj
cmVhdGUoKTsKKworICAgIHZpcnR1YWwgfldlYkxheWVyKCkgeyB9CiAKICAgICAvLyBTZXRzIGEg
cmVnaW9uIG9mIHRoZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMg
Y29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2Vi
RmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZs
b2F0UmVjdCYpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlk
LCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgaW52YWxpZGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90IGluZGV4
KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiBy
ZWZlcmVuY2UsIGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcj4mKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBy
ZW1vdmVBbGxDaGlsZHJlbigpOworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgdGFrZSBv
d25lcnNoaXAgb2YgdGhlIFdlYkxheWVyKiBwYXJhbWV0ZXIuCisgICAgdmlydHVhbCB2b2lkIGFk
ZENoaWxkKFdlYkxheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChXZWJM
YXllciosIHNpemVfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlQ2hpbGQo
V2ViTGF5ZXIqIHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcio+JikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVBbGxDaGlsZHJlbigpID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNo
b3JQb2ludChjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9h
dFBvaW50IGFuY2hvclBvaW50KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBv
aW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50
IGFuY2hvclBvaW50KCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFu
Y2hvclBvaW50WihmbG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBhbmNob3JQb2ludFoo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSA9IDA7Cisg
ICAgdmlydHVhbCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCA9IDA7CiAKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUmKTsKLSAgICBXRUJLSVRfRVhQT1JU
IFdlYlNpemUgYm91bmRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kcyhjb25z
dCBXZWJTaXplJikgPSAwOworICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCA9IDA7
CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKLSAgICBX
RUJLSVRfRVhQT1JUIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9p
ZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0Jv
dW5kcygpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNYXNrTGF5ZXIo
Y29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwbGljYUxheWVy
KGNvbnN0IFdlYkxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihXZWJMYXll
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikgPSAw
OwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotICAgIFdFQktJ
VF9FWFBPUlQgZmxvYXQgb3BhY2l0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFj
aXR5KGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3QgPSAwOwog
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIGJvb2wgb3BhcXVlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29s
KSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wYXF1ZSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VC
S0lUX0VYUE9SVCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2
b2lkIHNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBX
ZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tN
YXRyaXg0NCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0
IHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIFdFQktJ
VF9FWFBPUlQgU2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0
dWFsIFNrTWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0cyB3aGV0
aGVyIHRoZSBsYXllciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9S
VCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0Nv
bnRlbnQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCA9
IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisgICAg
dmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpID0gMDsKIAogICAgIC8vIE1hcmsgdGhh
dCB0aGlzIGxheWVyIHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIHRyYW5zZm9ybSBhbmQgZG91Ymxl
LXNpZGVkCiAgICAgLy8gcHJvcGVydGllcyBpbiBkZXRlcm1pbmluZyB0aGlzIGxheWVyJ3MgYmFj
a2ZhY2UgdmlzaWJpbGl0eSBpbnN0ZWFkIG9mCkBAIC0xMTksMTA1ICsxMTQsNjggQEAgcHVibGlj
OgogICAgIC8vIE5vdGU6IFRoaXMgQVBJIGlzIHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIHZp
c2liaWxpdHkgdGhlIGhhbmRsaW5nIG9mCiAgICAgLy8gV2ViS2l0IGxheWVycyB0aGF0IGhhdmUg
YSBjb250ZW50cyBsYXllciAoY2FudmFzLCBwbHVnaW4sIFdlYkdMLCB2aWRlbywKICAgICAvLyBl
dGMpLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxp
dHkoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eShib29sKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KFdlYkNvbG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9y
KSA9IDA7CiAKICAgICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2luZyBpbiBh
IG5ld2x5IGluc3RhbnRpYXRlZAogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0Lgot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlv
bnMmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRp
b25zJikgPSAwOwogCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBwaXhlbHMgdGhhdCBzaG93IHRo
cm91Z2ggdGhlIGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAgICAvLyBOb3RlOiBUaGVzZSBm
aWx0ZXJzIGFyZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3biBkaXJlY3Rs
eQogICAgIC8vIHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRoIGFuIG9wYXF1ZSBiYWNrZ3Jv
dW5kLiBUaGlzIG1lYW5zIGlmIGFuCiAgICAgLy8gYW5jZXN0b3Igb2YgdGhlIGJhY2tncm91bmQt
ZmlsdGVyZWQgbGF5ZXIgc2V0cyBjZXJ0YWluIHByb3BlcnRpZXMKICAgICAvLyAob3BhY2l0eSwg
dHJhbnNmb3JtcyksIGl0IG1heSBjb25mbGljdCBhbmQgaGlkZSB0aGUgYmFja2dyb3VuZCBmaWx0
ZXJzLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBX
ZWJGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRGaWx0
ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYpOwotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0RGVidWdOYW1lKFdlYlN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVn
Qm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERl
YnVnQm9yZGVyV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdOYW1l
KFdlYlN0cmluZykgPSAwOwogCiAgICAgLy8gQW4gYW5pbWF0aW9uIGRlbGVnYXRlIGlzIG5vdGlm
aWVkIHdoZW4gYW5pbWF0aW9ucyBhcmUgc3RhcnRlZCBhbmQKICAgICAvLyBzdG9wcGVkLiBUaGUg
V2ViTGF5ZXIgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGRlbGVnYXRlLCBhbmQgaXQg
aXMKICAgICAvLyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNsaWVudCB0byByZXNldCB0aGUg
bGF5ZXIncyBkZWxlZ2F0ZSBiZWZvcmUKICAgICAvLyBkZWxldGluZyB0aGUgZGVsZWdhdGUuCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRl
bGVnYXRlKik7CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1h
dGlvbkRlbGVnYXRlKikgPSAwOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgYW5pbWF0
aW9uIGNhbm5vdCBiZSBhZGRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWRkQW5pbWF0aW9u
KFdlYkFuaW1hdGlvbiopOworICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oV2ViQW5pbWF0
aW9uKikgPSAwOwogCiAgICAgLy8gUmVtb3ZlcyBhbGwgYW5pbWF0aW9ucyB3aXRoIHRoZSBnaXZl
biBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRp
b25JZCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQp
ID0gMDsKIAogICAgIC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQg
dGFyZ2V0aW5nIHRoZSBnaXZlbiBwcm9wZXJ0eS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVt
b3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0
eSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIFdl
YkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpID0gMDsKIAogICAgIC8vIFBhdXNlcyBhbGwgYW5p
bWF0aW9ucyB3aXRoIHRoZSBnaXZlbiBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcGF1c2VB
bmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgdmlydHVh
bCB2b2lkIHBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQp
ID0gMDsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHN1c3BlbmQgYW5kIHJlc3Vt
ZSBhbGwgYW5pbWF0aW9ucy4gVGhlIGdpdmVuIHRpbWUKICAgICAvLyBpcyBhc3N1bWVkIHRvIHVz
ZSB0aGUgc2FtZSB0aW1lIGJhc2UgYXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNU
aW1lKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9u
b3RvbmljVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBt
b25vdG9uaWNUaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91
YmxlIG1vbm90b25pY1RpbWUpID0gMDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxh
eWVyIGhhcyBhbnkgYWN0aXZlIGFuaW1hdGlvbnMgLSB1c2VmdWwgZm9yIHRlc3RzLgotICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzQWN0aXZlQW5pbWF0aW9uKCkgPSAwOwogCiAgICAgLy8gVHJhbnNmZXJzIGFsbCBhbmltYXRp
b25zIHJ1bm5pbmcgb24gdGhlIGN1cnJlbnQgbGF5ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHRyYW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHRyYW5z
ZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKikgPSAwOworCisgICAgLy8gU2Nyb2xsaW5nCisgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZl
V2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxk
U2Nyb2xsT25NYWluVGhyZWFkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFz
dFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwog
CiAgICAgLy8gRm9yY2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZhY2UuIFRoZXJl
IGlzIG5vIGJlbmVmaXQgaW4gZG9pbmcKICAgICAvLyBzbywgYnV0IHRoaXMgaXMgdG8gZmFjaWxp
dGF0ZSBiZW5jaG1hcmtzIGFuZCB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rm9y
Y2VSZW5kZXJTdXJmYWNlKGJvb2wpOwotCi0gICAgLy8gRHJvcHMgdGhpcyBsYXllcidzIHJlbmRl
ciBzdXJmYWNlLCBpZiBpdCBoYXMgb25lLiBVc2VkIHRvIGJyZWFrIGN5Y2xlcyBpbiBzb21lCi0g
ICAgLy8gY2FzZXMgLSBpZiB5b3UgYXJlbid0IHN1cmUsIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwg
dGhpcy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0KLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKLSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAg
ICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCB0b0NvbnN0KCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhp
cyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCi0gICAgV2ViTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hy
b21pdW0+Jik7Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBUKiB1bndyYXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQq
PihtX3ByaXZhdGUuZ2V0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNv
bnN0IFQqIGNvbnN0VW53cmFwKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxjb25zdCBUKj4obV9wcml2YXRlLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJvdGVj
dGVkOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gbV9wcml2YXRl
OworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVJlbmRlclN1cmZhY2UoYm9vbCkgPSAwOwogfTsK
IAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5
ZXImIGIpCi17Ci0gICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKLXsKLSAgICByZXR1
cm4gIShhID09IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdl
YkxheWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
U2Nyb2xsYWJsZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNj
cm9sbGFibGVMYXllci5oCmluZGV4IGVhMDJmOGM3Mzk2MWFmZDNmMzk1YzdlMmFjOWI2MzgwZmQ4
ZDc2YWQuLmFhMzQ1YWFhNTE4YmI0ZDI4OTQ1NGU0NDRkODhjYTIwNWYwMTZlNDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmgK
KysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIu
aApAQCAtMzQsMjkgKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJT
Y3JvbGxhYmxlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViU2Nyb2xsYWJsZUxh
eWVyIDogdmlydHVhbCBwdWJsaWMgV2ViTGF5ZXIgewogcHVibGljOgotICAgIFdlYlNjcm9sbGFi
bGVMYXllcigpIHsgfQotICAgIFdlYlNjcm9sbGFibGVMYXllcihjb25zdCBXZWJTY3JvbGxhYmxl
TGF5ZXImIGxheWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0KLSAgICB2aXJ0dWFsIH5XZWJTY3Jv
bGxhYmxlTGF5ZXIoKSB7IH0KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXImIG9wZXJhdG9yPShjb25z
dCBXZWJTY3JvbGxhYmxlTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgV2ViTGF5ZXI6OmFz
c2lnbihsYXllcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRTY3JvbGxhYmxlKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRI
YXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRT
aG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYpOwotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMo
Ym9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpeGVkVG9Db250YWluZXJMYXllcihi
b29sKTsKLQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU2Nyb2xsYWJsZUxh
eWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiYgbGF5ZXIp
IDogV2ViTGF5ZXIobGF5ZXIpIHsgfQotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9s
bFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUo
Ym9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29u
c3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJc0NvbnRh
aW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNj
cm9sbGJhckxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9s
bGJhckxheWVyLmgKaW5kZXggMWJmZTdkNmFiYjNhNTlmM2YzZWEzMzA0NDhjYzY0MDdkMzExYTFh
OS4uNDUxYTBiOWMxMzRiNmM0NDQ5NTBlMWEyYjYyM2YzYmUxZjAyMTEwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaApAQCAt
MzIsMjkgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcm9sbGJhcjsK
LWNsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1jbGFzcyBXZWJTY3JvbGxiYXJMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFzcyBXZWJT
Y3JvbGxiYXJMYXllciB7CiBwdWJsaWM6Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXIoKSB7IH0KLSAg
ICBXZWJTY3JvbGxiYXJMYXllcihjb25zdCBXZWJTY3JvbGxiYXJMYXllciYgbGF5ZXIpIDogV2Vi
TGF5ZXIobGF5ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYlNjcm9sbGJhckxheWVyKCkgeyB9Ci0g
ICAgV2ViU2Nyb2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJTY3JvbGxiYXJMYXllciYg
bGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKLSAgICAgICAg
cmV0dXJuICp0aGlzOwotICAgIH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRTY3JvbGxM
YXllcihjb25zdCBXZWJMYXllcik7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqKSA9IDA7CiAKICNp
ZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3Jl
YXRlKFdlYkNvcmU6OlNjcm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093
blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7Ci0gICAgZXhwbGljaXQgV2ViU2Nyb2xs
YmFyTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hy
b21pdW0+Jik7Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRv
ciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25z
dDsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciogY3JlYXRlKFdl
YkNvcmU6OlNjcm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmggYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oCmluZGV4IGFk
OTEyM2Q5NjJhZmVhZWE4YTU2MzEyOTQ1ZGUxZmM1Zjg5NmM5ZmMuLjAyZTQ2ZjA0N2ZhZjI1M2Fj
MTFlMTk3YzQ1MTA4MTdiYTFmNDgyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaApAQCAtMjYsMjEgKzI2LDIwIEBACiAj
aWZuZGVmIFdlYlNvbGlkQ29sb3JMYXllcl9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllcl9o
CiAKKyNpbmNsdWRlICJXZWJDb2xvci5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1
ZGUgIldlYkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbDsKK2NsYXNzIFdlYkxheWVyOwog
Ci1jbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2Vi
U29saWRDb2xvckxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJT
b2xpZENvbG9yTGF5ZXIgY3JlYXRlKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJhY2tn
cm91bmRDb2xvcihjb25zdCBXZWJDb2xvciYpOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
YlNvbGlkQ29sb3JMYXllciogY3JlYXRlKCk7CiAKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04K
LSAgICBXZWJTb2xpZENvbG9yTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYlNvbGlkQ29s
b3JMYXllckltcGw+Jik7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIH5XZWJTb2xpZENvbG9yTGF5ZXIo
KSB7IH0KKworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWRlb0xheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVv
TGF5ZXIuaAppbmRleCA1NGRhMzQ1NGJhMDNlZmZiNWUzNGIwZDMzMmI5MmMwMTEyNDc1YWE0Li4x
YWNmZmY1NGEwNzI3YjQ5OGRkOTQxZmNjNDZhMjc3MjZhYTdkNzBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaApAQCAtMjksMjcgKzI5LDIw
IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKIAotbmFt
ZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVmlkZW9MYXllckNocm9taXVtOwotfQotCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVmlkZW9GcmFtZVByb3ZpZGVyOwogCi1jbGFzcyBXZWJW
aWRlb0xheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYlZpZGVvTGF5ZXIgewogcHVi
bGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5ZXIgY3JlYXRlKFdlYlZp
ZGVvRnJhbWVQcm92aWRlciopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5
ZXIqIGNyZWF0ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAotICAgIFdlYlZpZGVvTGF5ZXIo
KSB7IH0KICAgICB2aXJ0dWFsIH5XZWJWaWRlb0xheWVyKCkgeyB9CiAKLSAgICAvLyBSZXR1cm5z
IHRydWUgaWYgdGhpcyBsYXllciBpcyBhY3RpdmVseSByZW5kZXJpbmcgKGUuZy4gY3VycmVudGx5
IGF0dGFjaGVkIHRvIGEgV2ViTGF5ZXJUcmVlVmlldykuCi0gICAgV0VCS0lUX0VYUE9SVCBib29s
IGFjdGl2ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOwogCi0j
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViVmlkZW9MYXllcihQYXNz
UmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4pOwotI2VuZGlmCisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIHRoaXMgbGF5ZXIgaXMgYWN0aXZlbHkgcmVuZGVyaW5nIChlLmcuIGN1cnJl
bnRseSBhdHRhY2hlZCB0byBhIFdlYkxheWVyVHJlZVZpZXcpLgorICAgIHZpcnR1YWwgYm9vbCBh
Y3RpdmUoKSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21p
dW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMWRiNzU5NDA0N2M4OGNh
YjBkZGFmZTAwMzdhM2JlNmNhYzM4Njg4Ni4uZTI1NmJkZTFhNWE0YWU4N2E2NjA4MTk4YzczZGZh
ZjhlMTk4MTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hy
b21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5j
cHAKQEAgLTI5LDEyICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJG
cmFtZVZpZXcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5j
bHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiV2ViU2Nyb2xs
YmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxhYmxl
TGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8cHVi
bGljL1dlYlNjcm9sbGJhckxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnkuaD4KQEAgLTQyLDcgKzQyLDYgQEAKIAogdXNpbmcgV2ViS2l0OjpXZWJMYXll
cjsKIHVzaW5nIFdlYktpdDo6V2ViUmVjdDsKLXVzaW5nIFdlYktpdDo6V2ViU2Nyb2xsYWJsZUxh
eWVyOwogdXNpbmcgV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllcjsKIHVzaW5nIFdlYktpdDo6V2Vi
VmVjdG9yOwogCkBAIC01MSwzNiArNTAsMzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlIHsKIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9s
bGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nQ29vcmRpbmF0
b3JQcml2YXRlKCkgeyB9CisgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKCkKKyAgICAg
ICAgOiBtX3Njcm9sbExheWVyKDApCisgICAgeworICAgIH0KKwogICAgIH5TY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGUoKSB7IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViU2Nyb2xs
YWJsZUxheWVyIGxheWVyKQorICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVy
KQogICAgIHsKICAgICAgICAgbV9zY3JvbGxMYXllciA9IGxheWVyOwogCi0gICAgICAgIGlmICgh
bV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgICAgICBtX2hvcml6
b250YWxTY3JvbGxiYXJMYXllci5zZXRTY3JvbGxMYXllcihsYXllcik7Ci0gICAgICAgIGlmICgh
bV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyLmlzTnVsbCgpKQotICAgICAgICAgICAgbV92ZXJ0aWNh
bFNjcm9sbGJhckxheWVyLnNldFNjcm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYgKG1faG9y
aXpvbnRhbFNjcm9sbGJhckxheWVyKQorICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFy
TGF5ZXItPnNldFNjcm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYgKG1fdmVydGljYWxTY3Jv
bGxiYXJMYXllcikKKyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJMYXllci0+c2V0U2Ny
b2xsTGF5ZXIobGF5ZXIpOwogICAgIH0KIAotICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyKFdlYlNjcm9sbGJhckxheWVyIGxheWVyKQorICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyKFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGxheWVyKQogICAgIHsK
ICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKICAgICB9CiAKLSAg
ICB2b2lkIHNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoV2ViU2Nyb2xsYmFyTGF5ZXIgbGF5ZXIp
CisgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKFBhc3NPd25QdHI8V2ViU2Nyb2xs
YmFyTGF5ZXI+IGxheWVyKQogICAgIHsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVy
ID0gbGF5ZXI7CiAgICAgfQogCi0gICAgYm9vbCBoYXNTY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0
dXJuICFtX3Njcm9sbExheWVyLmlzTnVsbCgpOyB9Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNj
cm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsgfQorICAgIFdlYkxheWVy
KiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXI7IH0KIAogcHJpdmF0
ZToKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgbV9zY3JvbGxMYXllcjsKLSAgICBXZWJTY3JvbGxi
YXJMYXllciBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllcjsKLSAgICBXZWJTY3JvbGxiYXJMYXll
ciBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXI7CisgICAgV2ViTGF5ZXIqIG1fc2Nyb2xsTGF5ZXI7
CisgICAgT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBtX2hvcml6b250YWxTY3JvbGxiYXJMYXll
cjsKKyAgICBPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IG1fdmVydGljYWxTY3JvbGxiYXJMYXll
cjsKIH07CiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpjcmVhdGUoUGFnZSogcGFnZSkKQEAgLTExMiwxNSArMTE0LDIwIEBAIHN0YXRpYyBH
cmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZyYW1lVmll
dykKICNlbmRpZgogfQogCi1zdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFy
TGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibGVMYXllciBzY3JvbGxMYXll
ciwgR3JhcGhpY3NMYXllciogc2Nyb2xsYmFyR3JhcGhpY3NMYXllciwgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcpCitzdGF0aWMgV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIo
R3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyLT5wbGF0Zm9ybUxheWVy
KCk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVhdGVTY3Jv
bGxiYXJMYXllcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViTGF5ZXIqIHNjcm9sbExheWVyLCBH
cmFwaGljc0xheWVyKiBzY3JvbGxiYXJHcmFwaGljc0xheWVyLCBGcmFtZVZpZXcqIGZyYW1lVmll
dykKIHsKICAgICBBU1NFUlQoc2Nyb2xsYmFyKTsKICAgICBBU1NFUlQoc2Nyb2xsYmFyR3JhcGhp
Y3NMYXllcik7CiAKLSAgICBpZiAoc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAoIXNj
cm9sbExheWVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzb21ldGltZXMgd2UgZ2V0IGNhbGxlZCBi
ZWZvcmUgc2V0U2Nyb2xsTGF5ZXIsIHdvcmthcm91bmQgYnkgZmluZGluZyB0aGUgc2Nyb2xsIGxh
eW91dCBvdXJzZWx2ZXMuCi0gICAgICAgIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJGb3JGcmFt
ZVZpZXcoZnJhbWVWaWV3KS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+
KCk7Ci0gICAgICAgIEFTU0VSVCghc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpOworICAgICAgICBzY3Jv
bGxMYXllciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JG
cmFtZVZpZXcoZnJhbWVWaWV3KSk7CisgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7CiAgICAg
fQogCiAgICAgLy8gUm9vdCBsYXllciBub24tb3ZlcmxheSBzY3JvbGxiYXJzIHNob3VsZCBiZSBt
YXJrZWQgb3BhcXVlIHRvIGRpc2FibGUKQEAgLTEzOCw3ICsxNDUsNyBAQCBzdGF0aWMgV2ViU2Ny
b2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdl
YlNjcm9sbGFibAogICAgIGlmICghcGxhdGZvcm1TdXBwb3J0ZWQgfHwgc2Nyb2xsYmFyLT5pc0N1
c3RvbVNjcm9sbGJhcigpKSB7CiAgICAgICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENv
bnRlbnRzVG9NZWRpYSgwKTsKICAgICAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0RHJh
d3NDb250ZW50KHRydWUpOwotICAgICAgICByZXR1cm4gV2ViU2Nyb2xsYmFyTGF5ZXIoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgLy8gQWxsIENocm9taXVtIHNjcm9s
bGJhciB0aGVtZXMgZGVyaXZlIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuCkBAIC0xNDYs
MTQgKzE1MywxNCBAQCBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5
ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibAogICAgIFdlYktpdDo6V2ViU2Ny
b2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIodGhlbWVDb21wb3NpdGUsIHNjcm9sbGJhcik7CiAg
ICAgT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkoV2Vi
S2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhlbWVDb21wb3Np
dGUpKTsKIAotICAgIFdlYlNjcm9sbGJhckxheWVyIHNjcm9sbGJhckxheWVyID0gV2ViU2Nyb2xs
YmFyTGF5ZXI6OmNyZWF0ZShzY3JvbGxiYXIsIHBhaW50ZXIsIGdlb21ldHJ5LnJlbGVhc2UoKSk7
Ci0gICAgc2Nyb2xsYmFyTGF5ZXIuc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIpOworICAgIE93
blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gc2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdFB0cihXZWJTY3Jv
bGxiYXJMYXllcjo6Y3JlYXRlKHNjcm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnkucmVsZWFzZSgp
KSk7CisgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKIAot
ICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYSgmc2Nyb2xsYmFy
TGF5ZXIpOworICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYShz
Y3JvbGxiYXJMYXllci0+bGF5ZXIoKSk7CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0
RHJhd3NDb250ZW50KGZhbHNlKTsKLSAgICBzY3JvbGxiYXJMYXllci5zZXRPcGFxdWUoc2Nyb2xs
YmFyR3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFxdWUoKSk7CisgICAgc2Nyb2xsYmFyTGF5ZXIt
PmxheWVyKCktPnNldE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250ZW50c09wYXF1
ZSgpKTsKIAotICAgIHJldHVybiBzY3JvbGxiYXJMYXllcjsKKyAgICByZXR1cm4gc2Nyb2xsYmFy
TGF5ZXIucmVsZWFzZSgpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZp
ZXdIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFtZVZpZXcs
IEdyYXBoaWNzTGF5ZXIqIGhvcml6b250YWxTY3JvbGxiYXJMYXllcikKQEAgLTE2MSw2ICsxNjgs
NyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIb3Jpem9udGFsU2Nyb2xs
YmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KgogICAgIGlmICghaG9yaXpvbnRhbFNjcm9sbGJh
ckxheWVyIHx8ICFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZpZXcpKQog
ICAgICAgICByZXR1cm47CiAKKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1l
VmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKICAgICBtX3ByaXZhdGUtPnNldEhv
cml6b250YWxTY3JvbGxiYXJMYXllcihjcmVhdGVTY3JvbGxiYXJMYXllcihmcmFtZVZpZXctPmhv
cml6b250YWxTY3JvbGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCBob3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXIsIGZyYW1lVmlldykpOwogfQogCkBAIC0xNjksMjUgKzE3NywyNSBAQCB2
b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0aWNhbFNjcm9sbGJhckxheWVy
RGlkQ2hhbmdlKEZyYW1lVmlldyogZgogICAgIGlmICghdmVydGljYWxTY3JvbGxiYXJMYXllciB8
fCAhY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZpZXcobV9w
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpKSk7CiAgICAgbV9wcml2YXRlLT5zZXRWZXJ0aWNhbFNj
cm9sbGJhckxheWVyKGNyZWF0ZVNjcm9sbGJhckxheWVyKGZyYW1lVmlldy0+dmVydGljYWxTY3Jv
bGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCB2ZXJ0aWNhbFNjcm9sbGJhckxheWVy
LCBmcmFtZVZpZXcpKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2Nyb2xs
TGF5ZXIoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgV2ViU2Nyb2xsYWJsZUxh
eWVyIGxheWVyOwotICAgIGlmIChzY3JvbGxMYXllcikKLSAgICAgICAgbGF5ZXIgPSBzY3JvbGxM
YXllci0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7Ci0gICAgbV9w
cml2YXRlLT5zZXRTY3JvbGxMYXllcihsYXllcik7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxM
YXllcihzY3JvbGxMYXllciA/IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xs
TGF5ZXIpIDogMCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5vbkZhc3RT
Y3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQogewotICAgIGlmIChtX3ByaXZh
dGUtPmhhc1Njcm9sbExheWVyKCkpIHsKKyAgICAvLyBXZSB3b24ndCBuZWNlc3NhcmlseSBnZXQg
YSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBncmFiIHRoZSByb290
IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1lVmlldyht
X3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAobV9wcml2YXRlLT5zY3JvbGxM
YXllcigpKSB7CiAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlZ2lvbi5yZWN0cygp
OwogICAgICAgICBXZWJWZWN0b3I8V2ViUmVjdD4gd2ViUmVjdHMocmVjdHMuc2l6ZSgpKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAgICAgICAg
ICAgIHdlYlJlY3RzW2ldID0gcmVjdHNbaV07Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5
ZXIoKS5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbih3ZWJSZWN0cyk7CisgICAgICAgIG1fcHJp
dmF0ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24od2ViUmVjdHMp
OwogICAgIH0KIH0KIApAQCAtMTk4LDE0ICsyMDYsMTggQEAgdm9pZCBTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2V0U2Nyb2xsUGFyYW1ldGVycyhjb25zdCBTY3JvbGxQYXJhbWV0ZXJzJikKIAogdm9p
ZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1bnNpZ25l
ZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KQogewotICAgIGlmIChtX3ByaXZhdGUtPmhhc1Njcm9s
bExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKKyAgICAvLyBXZSB3b24n
dCBuZWNlc3NhcmlseSBnZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25l
LCBzbyBncmFiIHRoZSByb290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxM
YXllckZvckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAo
bV9wcml2YXRlLT5zY3JvbGxMYXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVy
KCktPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDAp
OwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxM
YXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkKQogewotICAgIGlmIChtX3ByaXZh
dGUtPmhhc1Njcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5z
ZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoc2hvdWxkKTsKKyAgICAvLyBXZSB3b24ndCBuZWNl
c3NhcmlseSBnZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBn
cmFiIHRoZSByb290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAobV9wcml2
YXRlLT5zY3JvbGxMYXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCktPnNl
dFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGQpOwogfQogCiBib29sIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdApAQCAtMjE1LDE0
ICsyMjcsMTQgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNGaXhlZFBvc2l0
aW9uTGF5ZXJzKCkgY29uc3QKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJ
c0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllciogbGF5ZXIsIGJv
b2wgZW5hYmxlKQogewotICAgIGlmIChXZWJMYXllciogcGxhdGZvcm1MYXllciA9IGxheWVyLT5w
bGF0Zm9ybUxheWVyKCkpCi0gICAgICAgIHBsYXRmb3JtTGF5ZXItPnRvPFdlYlNjcm9sbGFibGVM
YXllcj4oKS5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoZW5hYmxlKTsKKyAg
ICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBo
aWNzTGF5ZXIobGF5ZXIpKQorICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldElzQ29udGFpbmVy
Rm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5ZXIqIGxh
eWVyLCBib29sIGVuYWJsZSkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIHBsYXRmb3JtTGF5ZXIgPSBs
YXllci0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICBwbGF0Zm9ybUxheWVyLT50bzxXZWJTY3Jv
bGxhYmxlTGF5ZXI+KCkuc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7CisgICAgaWYg
KFdlYkxheWVyKiBzY3JvbGxhYmxlTGF5ZXIgPSBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGljc0xh
eWVyKGxheWVyKSkKKyAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvQ29udGFpbmVy
TGF5ZXIoZW5hYmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcApp
bmRleCBkYjUxN2NhZDI2MzNiOGJmNGU3MTU0YjU3NDgyMjU3MmM0NjU5MGFhLi4xMDY1NDMxMmNm
MmVmYmFjN2U1YzIwYmYwZGMwNjUxYzg0ZjM0MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
QnJpZGdlLmNwcApAQCAtNjksMjIgKzY5LDIxIEBAIENhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZh
czJETGF5ZXJCcmlkZ2UoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCwKICAg
ICAgICAgICAgIGdyQ29udGV4dC0+cmVzZXRDb250ZXh0KCk7CiAgICAgfQogCi0gICAgbV9sYXll
ciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgbV9sYXllci5z
ZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKLSAgICBtX2xheWVyLnNldFJhdGVMaW1pdENvbnRleHQo
IVdlYktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNlRG91Ymxl
QnVmZmVyaW5nKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgbV9sYXllci0+c2V0VGV4dHVyZUlkKHRleHR1cmVJZCk7
CisgICAgbV9sYXllci0+c2V0UmF0ZUxpbWl0Q29udGV4dCghV2ViS2l0OjpXZWJDb21wb3NpdG9y
Ojp0aHJlYWRpbmdFbmFibGVkKCkgfHwgbV91c2VEb3VibGVCdWZmZXJpbmcpOwogfQogCiBDYW52
YXMyRExheWVyQnJpZGdlOjp+Q2FudmFzMkRMYXllckJyaWRnZSgpCiB7CiAgICAgaWYgKFNrRGVm
ZXJyZWRDYW52YXMqIGRlZmVycmVkID0gZGVmZXJyZWRDYW52YXMoKSkKICAgICAgICAgZGVmZXJy
ZWQtPnNldE5vdGlmaWNhdGlvbkNsaWVudCgwKTsKLSAgICBtX2xheWVyLnNldFRleHR1cmVJZCgw
KTsKKyAgICBtX2xheWVyLT5zZXRUZXh0dXJlSWQoMCk7CiAgICAgaWYgKG1fdXNlRG91YmxlQnVm
ZmVyaW5nKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAg
ICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2Zyb250
QnVmZmVyVGV4dHVyZSkpOwogICAgICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiAgICAgfQotICAg
IG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKIH0KIAogU2tEZWZlcnJlZENhbnZhcyogQ2FudmFzMkRM
YXllckJyaWRnZTo6ZGVmZXJyZWRDYW52YXMoKQpAQCAtOTgsNyArOTcsNyBAQCB2b2lkIENhbnZh
czJETGF5ZXJCcmlkZ2U6OnByZXBhcmVGb3JEcmF3KCkKIHsKICAgICBBU1NFUlQoZGVmZXJyZWRD
YW52YXMoKSk7CiAgICAgaWYgKCFtX3VzZURvdWJsZUJ1ZmZlcmluZykKLSAgICAgICAgbV9sYXll
ci53aWxsTW9kaWZ5VGV4dHVyZSgpOworICAgICAgICBtX2xheWVyLT53aWxsTW9kaWZ5VGV4dHVy
ZSgpOwogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKQEAgLTE0OCwx
MyArMTQ3LDEzIEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBDYW52YXMyRExheWVyQnJpZGdlOjpj
b250ZXh0KCkKIAogV2ViS2l0OjpXZWJMYXllciogQ2FudmFzMkRMYXllckJyaWRnZTo6bGF5ZXIo
KQogewotICAgIHJldHVybiAmbV9sYXllcjsKKyAgICByZXR1cm4gbV9sYXllci0+bGF5ZXIoKTsK
IH0KIAogdm9pZCBDYW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0QWNxdWlyZWQoKQogewogICAg
IGlmIChtX2RlZmVycmFsTW9kZSA9PSBOb25EZWZlcnJlZCAmJiAhbV91c2VEb3VibGVCdWZmZXJp
bmcpCi0gICAgICAgIG1fbGF5ZXIud2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICAgICAgbV9sYXll
ci0+d2lsbE1vZGlmeVRleHR1cmUoKTsKIH0KIAogdW5zaWduZWQgQ2FudmFzMkRMYXllckJyaWRn
ZTo6YmFja0J1ZmZlclRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oCmluZGV4
IDQwOWQyMDdjNTVlNDk1MThjMzkyNDRkMTQ4N2MwYTBhZjc0MTgyMWUuLjI3YjFlYTY1OWM0MWM3
YzY4YzMyNzQ1Y2ExZDEwNmFlNTA1NWE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdl
LmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2JhY2tCdWZmZXJU
ZXh0dXJlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIFNrQ2FudmFzKiBtX2NhbnZhczsKLSAg
ICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3duUHRyPFdl
YktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRyPEdyYXBo
aWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNo
cm9taXVtLmNwcAppbmRleCAxZDE2N2E1NTZlNmExZGZjZDExYWM2Zjg0OTE4ZjJkMWQ4ODk0ZDlh
Li42MTAyYTNlNmY3ODY5NzYwZTFmMzc4MDJkMDZmZTY1ZjRlYmQzNTI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTE1NiwxNiArMTU2LDE1IEBAIGNsYXNzIERy
YXdpbmdCdWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2YXRlKERy
YXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVmZmVyKGRy
YXdpbmdCdWZmZXIpCi0gICAgICAgICwgbV9sYXllcihXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpjcmVhdGUodGhpcykpCisgICAgICAgICwgbV9sYXllcihhZG9wdFB0cihXZWJLaXQ6
OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsKICAgICAgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2luZ0J1ZmZl
ci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKLSAgICAgICAg
bV9sYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOwotICAgICAgICBtX2xheWVyLnNl
dFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7CisgICAg
ICAgIG1fbGF5ZXItPnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7CisgICAgICAgIG1fbGF5
ZXItPnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7
CiAgICAgfQogCiAgICAgdmlydHVhbCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQogICAgIHsKLSAg
ICAgICAgbV9sYXllci5jbGVhckNsaWVudCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdW5zaWdu
ZWQgcHJlcGFyZVRleHR1cmUoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlciYgdXBkYXRlcikgT1ZF
UlJJREUKQEAgLTE4NywxMSArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEdyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1fZHJhd2lu
Z0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CiAgICAgfQogCi0gICAgV2ViS2l0OjpXZWJM
YXllciogbGF5ZXIoKSB7IHJldHVybiAmbV9sYXllcjsgfQorICAgIFdlYktpdDo6V2ViTGF5ZXIq
IGxheWVyKCkgeyByZXR1cm4gbV9sYXllci0+bGF5ZXIoKTsgfQogCiBwcml2YXRlOgogICAgIERy
YXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKLSAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4
dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI+IG1fbGF5ZXI7CiB9OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3Jh
cGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZmIwOTAwYmJjMWE3NTdj
MWRhM2I4MWNjY2M3MDBiZDk0NDJkYjJhYy4uNGM3YTU1NmNiMGU5ZGFiOTkyMTY4ZjIyMmNlNmI2
MWRkYzZhMGFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCkBAIC04
MywxNCArODMsMTUgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xheWVyOjpj
cmVhdGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogCiBHcmFwaGljc0xheWVyQ2hyb21p
dW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAg
ICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKKyAgICAsIG1fY29udGVudHNMYXllcigwKQogICAg
ICwgbV9jb250ZW50c0xheWVyUHVycG9zZShOb0NvbnRlbnRzTGF5ZXIpCiAgICAgLCBtX2NvbnRl
bnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCiAgICAgLCBtX2luU2V0Q2hpbGRyZW4o
ZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgbV9vcGFxdWVS
ZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSA9IGFkb3B0UHRyKG5ldyBPcGFxdWVSZWN0
VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSh0aGlzKSk7Ci0gICAgbV9sYXllciA9IFdlYkNv
bnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdh
dGUuZ2V0KCkpOwotICAgIG1fbGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYm
IG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExh
eWVyOjpjcmVhdGUobV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQo
KSkpOworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudChtX2RyYXdzQ29udGVu
dCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CiAgICAgaWYgKGNsaWVudCkKICAgICAgICAgZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7
CkBAIC05OCwzNCArOTksOSBAQCBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAKIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpCiB7Ci0gICAgLy8gRG8gY2xlYW51cCB3aGls
ZSB3ZSBjYW4gc3RpbGwgc2FmZWx5IGNhbGwgbWV0aG9kcyBvbiB0aGUgZGVyaXZlZCBjbGFzcy4K
ICAgICB3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OndpbGxCZURlc3Ryb3llZCgpCi17Ci0gICAgaWYgKCFtX2xheWVyLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKLSAgICAgICAgbV9sYXllci5jbGVhclJlbmRlclN1
cmZhY2UoKTsKLSAgICAgICAgbV9sYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9
Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewotICAgICAgICBtX2NvbnRl
bnRzTGF5ZXIuY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5z
ZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5
ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5jbGVhclJlbmRlclN1cmZh
Y2UoKTsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsK
LSAgICB9Ci0KLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAgICBtX2xpbmtIaWdobGln
aHQuY2xlYXIoKTsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OndpbGxCZURlc3Ryb3llZCgpOwotfQot
CiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFtZShjb25zdCBTdHJpbmcmIGluTmFt
ZSkKIHsKICAgICBtX25hbWVCYXNlID0gaW5OYW1lOwpAQCAtMTM2LDIxICsxMTIsMTYgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5hbWUoY29uc3QgU3RyaW5nJiBpbk5hbWUpCiAK
IHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVOYW1lcygpCiB7Ci0gICAgaWYgKCFt
X2xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiTGF5ZXIgZm9y
ICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX2xheWVyLnNldERlYnVnTmFtZShkZWJ1Z05hbWUp
OwotICAgIH0KLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBTdHJp
bmcgZGVidWdOYW1lID0gIkxheWVyIGZvciAiICsgbV9uYW1lQmFzZTsKKyAgICBtX2xheWVyLT5s
YXllcigpLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKKworICAgIGlmIChtX3RyYW5zZm9ybUxh
eWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiVHJhbnNmb3JtTGF5ZXIgZm9yICIg
KyBtX25hbWVCYXNlOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldERlYnVnTmFtZShkZWJ1
Z05hbWUpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1l
KTsKICAgICB9Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAo
bV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiQ29udGVudHNM
YXllciBmb3IgIiArIG1fbmFtZUJhc2U7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5zZXREZWJ1
Z05hbWUoZGVidWdOYW1lKTsKLSAgICB9Ci0gICAgaWYgKG1fbGlua0hpZ2hsaWdodCkgewotICAg
ICAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxpbmtIaWdobGlnaHQgZm9yICIgKyBtX25hbWVCYXNl
OwotICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRMYXllcigpLT5zZXREZWJ1Z05hbWUo
ZGVidWdOYW1lKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z05hbWUoZGVidWdO
YW1lKTsKICAgICB9CiB9CiAKQEAgLTIwMyw3ICsxNzQsNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xh
eWVyKgogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQoKQogewog
ICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBwcmltYXJ5TGF5ZXIo
KS5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgcGxhdGZvcm1MYXllcigpLT5yZW1vdmVGcm9tUGFy
ZW50KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRQb3NpdGlvbihjb25z
dCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIzMyw4ICsyMDQsOCBAQCB2b2lkIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0U2l6ZShjbGFtcGVkU2l6ZSk7CiAgICAgdXBkYXRlTGF5ZXJTaXplKCk7CiAKLSAg
ICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkICYmICFtX2xheWVyLmlzTnVsbCgpKQotICAgICAgICBt
X2xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkKQorICAgICAg
ICBtX2xheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9wYWdlU2NhbGVDaGFuZ2Vk
ID0gZmFsc2U7CiB9CiAKQEAgLTMwMSwxMyArMjcyLDEzIEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKIHsKICAgICBHcmFwaGlj
c0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1fY29udGVudHNMYXllci5zZXRC
YWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgbV9jb250ZW50c0xh
eWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZShib29sIG9wYXF1ZSkK
IHsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFxdWUpOwotICAgIG1f
bGF5ZXIuc2V0T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworICAgIG1fbGF5ZXItPmxheWVyKCkt
PnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKIH0KIAogc3RhdGljIGJvb2wgY29weVdlYkNv
cmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMsIFdlYkZpbHRlck9wZXJhdGlvbnMmIHdlYkZpbHRlcnMpCkBAIC0zOTEs
MTEgKzM2MiwxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVycyhjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgIGlmICghY29weVdlYkNvcmVGaWx0ZXJP
cGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMpKSB7CiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBwbGF0
Zm9ybSBsYXllciwgYXMgdGhleSBhcmUKICAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJhY2sgdG8g
c29mdHdhcmUgbW9kZS4KLSAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKFdlYkZpbHRlck9wZXJh
dGlvbnMoKSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMoV2ViRmlsdGVy
T3BlcmF0aW9ucygpKTsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhGaWx0ZXJP
cGVyYXRpb25zKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIG1fbGF5ZXIu
c2V0RmlsdGVycyh3ZWJGaWx0ZXJzKTsKKyAgICBtX2xheWVyLT5sYXllcigpLT5zZXRGaWx0ZXJz
KHdlYkZpbHRlcnMpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJzKGZpbHRl
cnMpOwogfQogCkBAIC00MDQsNyArMzc1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMKICAg
ICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7CiAgICAgaWYgKCFjb3B5V2ViQ29yZUZp
bHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmlsdGVycykp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX2xheWVyLnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZp
bHRlcnMpOworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEJhY2tncm91bmRGaWx0ZXJzKHdlYkZp
bHRlcnMpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKEdy
YXBoaWNzTGF5ZXIqIG1hc2tMYXllcikKQEAgLTQxNCwyMyArMzg1LDIxIEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbWFza0xheWVyKQog
CiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKG1hc2tMYXllcik7CiAKLSAgICBXZWJM
YXllciBtYXNrV2ViTGF5ZXI7Ci0gICAgaWYgKG1fbWFza0xheWVyKQotICAgICAgICBtYXNrV2Vi
TGF5ZXIgPSAqbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICBtX2xheWVyLnNldE1h
c2tMYXllcihtYXNrV2ViTGF5ZXIpOworICAgIFdlYkxheWVyKiBtYXNrV2ViTGF5ZXIgPSBtX21h
c2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIG1fbGF5ZXIt
PmxheWVyKCktPnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdmlzaWJsZSkKIHsKICAg
ICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlzaWJsZSk7Ci0gICAgbV9s
YXllci5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAgbV9sYXllci0+
c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2liaWxpdHkpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogewogICAgIGZsb2F0IGNs
YW1wZWRPcGFjaXR5ID0gbWF4KG1pbihvcGFjaXR5LCAxLjBmKSwgMC4wZik7CiAgICAgR3JhcGhp
Y3NMYXllcjo6c2V0T3BhY2l0eShjbGFtcGVkT3BhY2l0eSk7Ci0gICAgcHJpbWFyeUxheWVyKCku
c2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldE9wYWNpdHkob3Bh
Y2l0eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlM
YXllcihHcmFwaGljc0xheWVyKiBsYXllcikKQEAgLTQzOCwyOSArNDA3LDI3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBs
YXllcikKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW0gPSBzdGF0aWNf
Y2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0qPihsYXllcik7CiAgICAgR3JhcGhpY3NMYXllcjo6
c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIpOwogCi0gICAgV2ViTGF5ZXIgd2ViUmVwbGljYUxh
eWVyOwotICAgIGlmIChsYXllckNocm9taXVtKQotICAgICAgICB3ZWJSZXBsaWNhTGF5ZXIgPSBs
YXllckNocm9taXVtLT5wcmltYXJ5TGF5ZXIoKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRSZXBs
aWNhTGF5ZXIod2ViUmVwbGljYUxheWVyKTsKKyAgICBXZWJMYXllciogd2ViUmVwbGljYUxheWVy
ID0gbGF5ZXJDaHJvbWl1bSA/IGxheWVyQ2hyb21pdW0tPnBsYXRmb3JtTGF5ZXIoKSA6IDA7Cisg
ICAgcGxhdGZvcm1MYXllcigpLT5zZXRSZXBsaWNhTGF5ZXIod2ViUmVwbGljYUxheWVyKTsKIH0K
IAogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXko
KQogewotICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQotICAgICAgICBtX2NvbnRl
bnRzTGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAg
IG1fY29udGVudHNMYXllci0+aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50KCkpCi0g
ICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5p
bnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rp
c3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmIChkcmF3c0NvbnRl
bnQoKSkKLSAgICAgICAgbV9sYXllci5pbnZhbGlkYXRlUmVjdChyZWN0KTsKKyAgICAgICAgbV9s
YXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZVJlY3QocmVjdCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTQ3
Niw0NiArNDQzLDU2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1Rv
SW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7
CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkg
fHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsKLSAg
ICAgICAgICAgIFdlYktpdDo6V2ViSW1hZ2VMYXllciBpbWFnZUxheWVyID0gV2ViS2l0OjpXZWJJ
bWFnZUxheWVyOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcihpbWFn
ZUxheWVyKTsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250ZW50c0xheWVy
UHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsKKyAgICAgICAgICAgIG1faW1hZ2VM
YXllciA9IGFkb3B0UHRyKFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIHNl
dHVwQ29udGVudHNMYXllcihtX2ltYWdlTGF5ZXItPmxheWVyKCkpOwogICAgICAgICAgICAgbV9j
b250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAgICAg
IGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgV2ViS2l0OjpXZWJJ
bWFnZUxheWVyIGltYWdlTGF5ZXIgPSBtX2NvbnRlbnRzTGF5ZXIudG88V2ViS2l0OjpXZWJJbWFn
ZUxheWVyPigpOwogICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0Qml0
bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0T3BhcXVl
KGltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgp
KTsKKyAgICAgICAgbV9pbWFnZUxheWVyLT5zZXRCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgp
KTsKKyAgICAgICAgbV9pbWFnZUxheWVyLT5sYXllcigpLT5zZXRPcGFxdWUoaW1hZ2UtPmlzQml0
bWFwSW1hZ2UoKSAmJiAhaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOwogICAgICAgICB1
cGRhdGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1fY29udGVu
dHNMYXllci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9pbWFnZUxheWVyKSB7CiAgICAgICAg
ICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCi0gICAgICAgICAgICAvLyBUaGUgb2xkIGNv
bnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAgICAgICAgICBtX2ltYWdlTGF5ZXIu
Y2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdp
bGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgorICAgICAgICBtX2NvbnRlbnRzTGF5
ZXIgPSAwOwogICAgIH0KIAogICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCiAgICAgICAgIHVwZGF0
ZUNoaWxkTGlzdCgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQordm9pZCBHcmFwaGljc0xh
eWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogbGF5ZXIpCit7
CisgICAgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyRm9yQ2FudmFzLCBsYXllcik7Cit9CisK
K3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1M
YXllciogbGF5ZXIpCit7CisgICAgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyRm9yVmlkZW8s
IGxheWVyKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8o
Q29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciogbGF5ZXIpCiB7
CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAocGxhdGZvcm1MYXll
cikgewotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyICE9ICpwbGF0Zm9ybUxheWVyKSB7Ci0g
ICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoKnBsYXRmb3JtTGF5ZXIpOwotICAgICAgICAg
ICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JDYW52YXM7CisgICAg
aWYgKGxheWVyKSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250ZW50c0xh
eWVyUHVycG9zZSAhPSBwdXJwb3NlKSB7CisgICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIo
bGF5ZXIpOworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBvc2U7CiAg
ICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHVw
ZGF0ZUNvbnRlbnRzUmVjdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9jb250ZW50
c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKICAgICAg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAgICAgIC8vIFRoZSBvbGQg
Y29udGVudHMgbGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVDaGlsZExpc3QuCi0gICAg
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsKKyAgICAgICAgICAgIG1fY29udGVudHNM
YXllciA9IDA7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUyNSw3ICs1MDIsNyBAQCB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBw
bGF0Zm9ybUxheWVyKQogCiBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9u
KGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUs
IGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGRvdWJsZSB0aW1lT2Zmc2V0KQogewotICAgIHByaW1hcnlMYXllcigpLnNldEFuaW1hdGlvbkRl
bGVnYXRlKHRoaXMpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0QW5pbWF0aW9uRGVsZWdhdGUo
dGhpcyk7CiAKICAgICBpbnQgYW5pbWF0aW9uSWQgPSBtYXBBbmltYXRpb25OYW1lVG9JZChhbmlt
YXRpb25OYW1lKTsKICAgICBpbnQgZ3JvdXBJZCA9IEFuaW1hdGlvbklkVmVuZG9yOjpnZXROZXh0
R3JvdXBJZCgpOwpAQCAtNTM0LDggKzUxMSw4IEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVt
OjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QKIAog
ICAgIGlmICh0b0FkZCkgewogICAgICAgICAvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGFuaW1hdGlv
bnMgd2l0aCB0aGUgc2FtZSBhbmltYXRpb24gaWQgYW5kIHRhcmdldCBwcm9wZXJ0eS4KLSAgICAg
ICAgcHJpbWFyeUxheWVyKCkucmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0b0FkZC0+dGFy
Z2V0UHJvcGVydHkoKSk7Ci0gICAgICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKS5hZGRBbmltYXRp
b24odG9BZGQuZ2V0KCkpOworICAgICAgICBwbGF0Zm9ybUxheWVyKCktPnJlbW92ZUFuaW1hdGlv
bihhbmltYXRpb25JZCwgdG9BZGQtPnRhcmdldFByb3BlcnR5KCkpOworICAgICAgICByZXR1cm4g
cGxhdGZvcm1MYXllcigpLT5hZGRBbmltYXRpb24odG9BZGQuZ2V0KCkpOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTU0MywxMiArNTIwLDEyIEBAIGJvb2wgR3JhcGhpY3NMYXllckNo
cm9taXVtOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29u
c3QKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0
cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7Ci0gICAgcHJpbWFyeUxh
eWVyKCkucGF1c2VBbmltYXRpb24obWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSks
IHRpbWVPZmZzZXQpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+cGF1c2VBbmltYXRpb24obWFwQW5p
bWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSksIHRpbWVPZmZzZXQpOwogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0
aW9uTmFtZSkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZW1vdmVBbmltYXRpb24obWFwQW5pbWF0
aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+cmVtb3Zl
QW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xv
Y2tUaW1lKQpAQCAtNTU2LDg4ICs1MzMsNTQgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogICAgIC8vIHx3YWxsQ2xv
Y2tUaW1lfCBpcyBpbiB0aGUgd3JvbmcgdGltZSBiYXNlLiBOZWVkIHRvIGNvbnZlcnQgaGVyZS4K
ICAgICAvLyBGSVhNRTogZmluZCBhIG1vcmUgcmVsaWFibGUgd2F5IHRvIGRvIHRoaXMuCiAgICAg
ZG91YmxlIG1vbm90b25pY1RpbWUgPSB3YWxsQ2xvY2tUaW1lICsgbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCkgLSBjdXJyZW50VGltZSgpOwotICAgIHByaW1hcnlMYXllcigpLnN1c3BlbmRB
bmltYXRpb25zKG1vbm90b25pY1RpbWUpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c3VzcGVuZEFu
aW1hdGlvbnMobW9ub3RvbmljVGltZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
OjpyZXN1bWVBbmltYXRpb25zKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZXN1bWVBbmltYXRp
b25zKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAgICBwbGF0Zm9ybUxheWVyKCkt
PnJlc3VtZUFuaW1hdGlvbnMobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkTGlua0hpZ2hsaWdodChjb25zdCBQYXRoJiBw
YXRoKQordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQoY29uc3Qg
UGF0aCYpCiB7Ci0gICAgbV9saW5rSGlnaGxpZ2h0ID0gTGlua0hpZ2hsaWdodDo6Y3JlYXRlKHRo
aXMsIHBhdGgsIEFuaW1hdGlvbklkVmVuZG9yOjpMaW5rSGlnaGxpZ2h0QW5pbWF0aW9uSWQsIEFu
aW1hdGlvbklkVmVuZG9yOjpnZXROZXh0R3JvdXBJZCgpKTsKLSAgICB1cGRhdGVDaGlsZExpc3Qo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmRpZEZpbmlzaExpbmtIaWdobGln
aHQoKQogewotICAgIGlmIChtX2xpbmtIaWdobGlnaHQpCi0gICAgICAgIG1fbGlua0hpZ2hsaWdo
dC0+Y29udGVudExheWVyKCktPnJlbW92ZUZyb21QYXJlbnQoKTsKLQotICAgIG1fbGlua0hpZ2hs
aWdodC5jbGVhcigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQotewotICAgIGJvb2wgY2hpbGRyZW5DaGFu
Z2VkID0gZmFsc2U7Ci0gICAgaWYgKGxheWVyKSB7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5
ZXIuaXNOdWxsKCkgfHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9y
VmlkZW8pIHsKLSAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcigqbGF5ZXIpOwotICAgICAg
ICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JWaWRlbzsKLSAg
ICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgdXBk
YXRlQ29udGVudHNSZWN0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7Ci0K
LSAgICAgICAgICAgIC8vIFRoZSBvbGQgY29udGVudHMgbGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZp
YSB1cGRhdGVDaGlsZExpc3QuCi0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCi0gICAgICAgIHVw
ZGF0ZUNoaWxkTGlzdCgpOwotfQotCi1XZWJLaXQ6OldlYkxheWVyIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6cHJpbWFyeUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90cmFuc2Zvcm1MYXll
ci5pc051bGwoKSA/IG1fbGF5ZXIgOiBtX3RyYW5zZm9ybUxheWVyOwogfQogCiBQbGF0Zm9ybUxh
eWVyKiBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewotICAg
IHJldHVybiBjb25zdF9jYXN0PFBsYXRmb3JtTGF5ZXIqPihtX3RyYW5zZm9ybUxheWVyLmlzTnVs
bCgpID8gJm1fbGF5ZXIgOiAmbV90cmFuc2Zvcm1MYXllcik7CisgICAgcmV0dXJuIG1fdHJhbnNm
b3JtTGF5ZXIgPyBtX3RyYW5zZm9ybUxheWVyLmdldCgpIDogbV9sYXllci0+bGF5ZXIoKTsKIH0K
IAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldERlYnVnQmFja2dyb3VuZENvbG9yKGNv
bnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQotICAgICAgICBt
X2xheWVyLnNldEJhY2tncm91bmRDb2xvcihjb2xvci5yZ2IoKSk7CisgICAgICAgIG1fbGF5ZXIt
PmxheWVyKCktPnNldEJhY2tncm91bmRDb2xvcihjb2xvci5yZ2IoKSk7CiAgICAgZWxzZQotICAg
ICAgICBtX2xheWVyLnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsK
KyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0
PFJHQkEzMj4oMCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdC
b3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCkKIHsKICAgICBpZiAo
Y29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3JkZXJDb2xvcihj
b2xvci5yZ2IoKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3JkZXJXaWR0aChib3JkZXJX
aWR0aCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERlYnVnQm9yZGVyQ29sb3IoY29s
b3IucmdiKCkpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXREZWJ1Z0JvcmRlcldpZHRo
KGJvcmRlcldpZHRoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2xheWVyLnNldERlYnVnQm9y
ZGVyQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVi
dWdCb3JkZXJXaWR0aCgwKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RGVidWdCb3Jk
ZXJDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIo
KS0+c2V0RGVidWdCb3JkZXJXaWR0aCgwKTsKICAgICB9CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjp1cGRhdGVDaGlsZExpc3QoKQogewotICAgIFZlY3RvcjxXZWJMYXllcj4gbmV3
Q2hpbGRyZW47CisgICAgVmVjdG9yPFdlYkxheWVyKj4gbmV3Q2hpbGRyZW47CiAKLSAgICBpZiAo
IW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikg
ewogICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIgZmlyc3QuIEV2ZW4gaWYgd2UgaGF2
ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdheXMgY29t
ZXMgYmVoaW5kLgotICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQobV9sYXllcik7Ci0gICAgfSBl
bHNlIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIG5ld0NoaWxkcmVu
LmFwcGVuZChtX2xheWVyLT5sYXllcigpKTsKKyAgICB9IGVsc2UgaWYgKG1fY29udGVudHNMYXll
cikgewogICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0aGUgY29y
cmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4uCiAgICAgICAgIC8vIFRo
aXMgZG9lcyBub3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2UgY3VycmVu
dGx5IGNvbnRlbnRzIGxheWVycyBhcmUgb25seSB1c2VkCiAgICAgICAgIC8vIGZvciByZXBsYWNl
ZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRyZW4uCkBAIC02NDksNzkgKzU5Miw3NiBA
QCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hpbGRMaXN0KCkKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKICAgICAgICAgR3JhcGhpY3NM
YXllckNocm9taXVtKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSo+KGNoaWxkTGF5ZXJzW2ldKTsKIAotICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQoY3VyQ2hp
bGQtPnByaW1hcnlMYXllcigpKTsKKyAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKGN1ckNoaWxk
LT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIH0KIAotICAgIGlmIChtX2xpbmtIaWdobGlnaHQpCi0g
ICAgICAgIG5ld0NoaWxkcmVuLmFwcGVuZChtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRMYXllcigp
KTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kp
Ci0gICAgICAgIG5ld0NoaWxkcmVuW2ldLnJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICAgICAgbmV3
Q2hpbGRyZW5baV0tPnJlbW92ZUZyb21QYXJlbnQoKTsKIAotICAgIFdlYlZlY3RvcjxXZWJMYXll
cj4gbmV3V2ViQ2hpbGRyZW47CisgICAgV2ViVmVjdG9yPFdlYkxheWVyKj4gbmV3V2ViQ2hpbGRy
ZW47CiAgICAgbmV3V2ViQ2hpbGRyZW4uYXNzaWduKG5ld0NoaWxkcmVuLmRhdGEoKSwgbmV3Q2hp
bGRyZW4uc2l6ZSgpKTsKIAotICAgIGlmICghbV90cmFuc2Zvcm1MYXllci5pc051bGwoKSkgewot
ICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldENoaWxkcmVuKG5ld1dlYkNoaWxkcmVuKTsKKyAg
ICBpZiAobV90cmFuc2Zvcm1MYXllcikgeworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRD
aGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CiAKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIu
aXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAgICAgICAg
Ly8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0aGUgY29udGVudHMgbGF5ZXIg
aXMgcGFyZW50ZWQgaW4gdGhlCiAgICAgICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBp
cyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4KLSAgICAgICAgICAgIG1f
bGF5ZXIucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIG1fbGF5ZXIuYWRkQ2hpbGQo
bV9jb250ZW50c0xheWVyKTsKKyAgICAgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnJlbW92ZUFs
bENoaWxkcmVuKCk7CisgICAgICAgICAgICBtX2xheWVyLT5sYXllcigpLT5hZGRDaGlsZChtX2Nv
bnRlbnRzTGF5ZXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIG1fbGF5ZXIuc2V0
Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4pOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRD
aGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVMYXllclBvc2l0aW9uKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRQb3NpdGlv
bihtX3Bvc2l0aW9uKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldFBvc2l0aW9uKG1fcG9zaXRp
b24pOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJTaXplKCkK
IHsKICAgICBJbnRTaXplIGxheWVyU2l6ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgp
KTsKLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90cmFu
c2Zvcm1MYXllci5zZXRCb3VuZHMobGF5ZXJTaXplKTsKLSAgICAgICAgbV9sYXllci5zZXRQb3Np
dGlvbihGbG9hdFBvaW50KCkpOworICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CisgICAgICAg
IG1fdHJhbnNmb3JtTGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOworICAgICAgICBtX2xheWVy
LT5sYXllcigpLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOwogICAgIH0KIAotICAgIG1fbGF5
ZXIuc2V0Qm91bmRzKGxheWVyU2l6ZSk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0Qm91bmRz
KGxheWVyU2l6ZSk7CiAKLSAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVu
dHNMYXllci4gSXQncyB1cCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisgICAgLy8gTm90ZSB0aGF0
IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRlbnRzTGF5ZXItPiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8g
ZG8gdGhhdC4KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUFuY2hvclBv
aW50KCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KG1f
YW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBvaW50LnkoKSkpOwotICAgIHByaW1hcnlMYXllcigp
LnNldEFuY2hvclBvaW50WihtX2FuY2hvclBvaW50LnooKSk7CisgICAgcGxhdGZvcm1MYXllcigp
LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBv
aW50LnkoKSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9y
UG9pbnQueigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZVRyYW5z
Zm9ybSgpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkuc2V0VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4KG1fdHJhbnNmb3JtKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRUcmFuc2Zv
cm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm0pKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCkKIHsKLSAgICBwcmlt
YXJ5TGF5ZXIoKS5zZXRTdWJsYXllclRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCht
X2NoaWxkcmVuVHJhbnNmb3JtKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRTdWJsYXllclRy
YW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2NoaWxkcmVuVHJhbnNmb3JtKSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKIHsK
LSAgICBtX2xheWVyLnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKKyAgICBtX2xh
eWVyLT5sYXllcigpLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAgICAgdXBk
YXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVMYXllclByZXNlcnZlczNEKCkKIHsKLSAgICBpZiAobV9wcmVzZXJ2ZXMzRCAmJiBtX3Ry
YW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7CisgICAgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1fdHJh
bnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCi0g
ICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1f
dHJhbnNmb3JtTGF5ZXIuc2V0UHJlc2VydmVzM0QodHJ1ZSk7Ci0gICAgICAgIG1fdHJhbnNmb3Jt
TGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fbGF5ZXIudHJhbnNm
ZXJBbmltYXRpb25zVG8oJm1fdHJhbnNmb3JtTGF5ZXIpOworICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgbV90cmFuc2Zvcm1M
YXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNl
dEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT50cmFu
c2ZlckFuaW1hdGlvbnNUbyhtX3RyYW5zZm9ybUxheWVyLmdldCgpKTsKIAogICAgICAgICAvLyBD
b3B5IHRoZSBwb3NpdGlvbiBmcm9tIHRoaXMgbGF5ZXIuCiAgICAgICAgIHVwZGF0ZUxheWVyUG9z
aXRpb24oKTsKQEAgLTczMCwzNCArNjcwLDM0IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7CiAg
ICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7CiAKLSAgICAgICAgbV9sYXllci5zZXRQ
b3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5z
ZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogCi0gICAgICAgIG1fbGF5ZXIuc2V0QW5j
aG9yUG9pbnQoRmxvYXRQb2ludCgwLjVmLCAwLjVmKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0VHJh
bnNmb3JtKFNrTWF0cml4NDQoKSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQoMC41ZiwgMC41ZikpOworICAgICAgICBtX2xheWVyLT5sYXllcigp
LT5zZXRUcmFuc2Zvcm0oU2tNYXRyaXg0NCgpKTsKIAogICAgICAgICAvLyBTZXQgdGhlIG9sZCBs
YXllciB0byBvcGFjaXR5IG9mIDEuIEZ1cnRoZXIgZG93biB3ZSB3aWxsIHNldCB0aGUgb3BhY2l0
eSBvbiB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX2xheWVyLnNldE9wYWNpdHkoMSk7
CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldE9wYWNpdHkoMSk7CiAKLSAgICAgICAgbV9s
YXllci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CisgICAgICAgIG1fbGF5ZXIt
PnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKIAogICAgICAgICAvLyBNb3ZlIHRo
aXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyLgogICAgICAgICBp
ZiAocGFyZW50KCkpCi0gICAgICAgICAgICBwYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT5yZXBs
YWNlQ2hpbGQobV9sYXllciwgbV90cmFuc2Zvcm1MYXllcik7Ci0gICAgICAgIG1fdHJhbnNmb3Jt
TGF5ZXIuYWRkQ2hpbGQobV9sYXllcik7CisgICAgICAgICAgICBwYXJlbnQoKS0+cGxhdGZvcm1M
YXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllci0+bGF5ZXIoKSwgbV90cmFuc2Zvcm1MYXllci5n
ZXQoKSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPmFkZENoaWxkKG1fbGF5ZXItPmxheWVy
KCkpOwogCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwotICAgIH0gZWxzZSBpZiAoIW1fcHJl
c2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICB9IGVsc2UgaWYg
KG1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8gUmVsYWNl
IHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBsYXllci4KLSAgICAg
ICAgbV9sYXllci5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCkt
PnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgaWYgKHBhcmVudCgpKQotICAgICAgICAgICAg
cGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIs
IG1fbGF5ZXIpOworICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFj
ZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXItPmxheWVyKCkpOwogCi0gICAg
ICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fbGF5ZXIpOworICAgICAgICBtX2xheWVy
LT5sYXllcigpLT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zv
cm1MYXllci0+dHJhbnNmZXJBbmltYXRpb25zVG8obV9sYXllci0+bGF5ZXIoKSk7CiAKICAgICAg
ICAgLy8gUmVsZWFzZSB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnJl
c2V0KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKDAp
OworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLmNsZWFyKCk7CiAKICAgICAgICAgdXBkYXRlTGF5
ZXJQb3NpdGlvbigpOwogICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKQEAgLTc2OCwzOSArNzA4
LDM5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNE
KCkKICAgICAgICAgdXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAgfQogCi0gICAgbV9sYXllci5zZXRQ
cmVzZXJ2ZXMzRChtX3ByZXNlcnZlczNEKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRPcGFjaXR5
KG1fb3BhY2l0eSk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0UHJlc2VydmVzM0QobV9wcmVz
ZXJ2ZXMzRCk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CiAg
ICAgdXBkYXRlTmFtZXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZUxheWVySXNEcmF3YWJsZSgpCiB7CiAgICAgLy8gRm9yIHRoZSByZXN0IG9mIHRoZSBhY2NlbGVy
YXRlZCBjb21wb3NpdG9yIGNvZGUsIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBtYWtlIGEKLSAgICAv
LyBkaXN0aW5jdGlvbiBiZXR3ZWVuIGRyYXdzQ29udGVudCBhbmQgY29udGVudHNWaXNpYmxlLiBT
bywgZm9yIG1fbGF5ZXIsIHRoZXNlIHR3bworICAgIC8vIGRpc3RpbmN0aW9uIGJldHdlZW4gZHJh
d3NDb250ZW50IGFuZCBjb250ZW50c1Zpc2libGUuIFNvLCBmb3IgbV9sYXllci0+bGF5ZXIoKSwg
dGhlc2UgdHdvCiAgICAgLy8gZmxhZ3MgYXJlIGNvbWJpbmVkIGhlcmUuIG1fY29udGVudHNMYXll
ciBzaG91bGRuJ3QgcmVjZWl2ZSB0aGUgZHJhd3NDb250ZW50IGZsYWcKICAgICAvLyBzbyBpdCBp
cyBvbmx5IGdpdmVuIGNvbnRlbnRzVmlzaWJsZS4KIAotICAgIG1fbGF5ZXIuc2V0RHJhd3NDb250
ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBtX2xheWVyLT5s
YXllcigpLT5zZXREcmF3c0NvbnRlbnQobV9kcmF3c0NvbnRlbnQgJiYgbV9jb250ZW50c1Zpc2li
bGUpOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1fY29u
dGVudHNMYXllci5zZXREcmF3c0NvbnRlbnQobV9jb250ZW50c1Zpc2libGUpOworICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RHJhd3NDb250ZW50
KG1fY29udGVudHNWaXNpYmxlKTsKIAogICAgIGlmIChtX2RyYXdzQ29udGVudCkKLSAgICAgICAg
bV9sYXllci5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmludmFsaWRh
dGUoKTsKIAogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKQogewotICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIFdlIG5ldmVyIGNyZWF0ZSB0aGUgY29udGVudHMgbGF5ZXIg
anVzdCBmb3IgYmFja2dyb3VuZCBjb2xvciB5ZXQuCiAgICAgaWYgKG1fYmFja2dyb3VuZENvbG9y
U2V0KQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QmFja2dyb3VuZENvbG9yKG1fYmFja2dy
b3VuZENvbG9yLnJnYigpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5k
Q29sb3IobV9iYWNrZ3JvdW5kQ29sb3IucmdiKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb250
ZW50c0xheWVyLnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKKyAg
ICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdC
QTMyPigwKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50
c1ZpZGVvKCkKQEAgLTgxMCw1MCArNzUwLDQ5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
Ojp1cGRhdGVDb250ZW50c1ZpZGVvKCkKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzUmVjdCgpCiB7Ci0gICAgaWYgKG1fY29udGVudHNMYXllci5pc051bGwoKSkK
KyAgICBpZiAoIW1fY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250
ZW50c0xheWVyLnNldFBvc2l0aW9uKEZsb2F0UG9pbnQobV9jb250ZW50c1JlY3QueCgpLCBtX2Nv
bnRlbnRzUmVjdC55KCkpKTsKLSAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0Qm91bmRzKEludFNpemUo
bV9jb250ZW50c1JlY3Qud2lkdGgoKSwgbV9jb250ZW50c1JlY3QuaGVpZ2h0KCkpKTsKKyAgICBt
X2NvbnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQobV9jb250ZW50c1JlY3QueCgp
LCBtX2NvbnRlbnRzUmVjdC55KCkpKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJvdW5kcyhJ
bnRTaXplKG1fY29udGVudHNSZWN0LndpZHRoKCksIG1fY29udGVudHNSZWN0LmhlaWdodCgpKSk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c1NjYWxlKCkK
IHsKICAgICAvLyBJZiBwYWdlIHNjYWxlIGlzIGFscmVhZHkgYXBwbGllZCB0aGVuIHRoZXJlJ3Mg
bm8gbmVlZCB0byBhcHBseSBpdCBhZ2Fpbi4KLSAgICBpZiAoYXBwbGllc1BhZ2VTY2FsZSgpIHx8
IG1fbGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKGFwcGxpZXNQYWdlU2NhbGUoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9sYXllci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7
CisgICAgbV9sYXllci0+c2V0Q29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKCkpOwogfQogCi12
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50c0xheWVyKFdlYkxheWVyIGNv
bnRlbnRzTGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50c0xh
eWVyKFdlYkxheWVyKiBjb250ZW50c0xheWVyKQogewogICAgIGlmIChjb250ZW50c0xheWVyID09
IG1fY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldFVzZVBhcmVudEJh
Y2tmYWNlVmlzaWJpbGl0eShmYWxzZSk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5yZW1vdmVG
cm9tUGFyZW50KCk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5yZXNldCgpOworICAgIGlmICht
X2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRVc2VQYXJlbnRC
YWNrZmFjZVZpc2liaWxpdHkoZmFsc2UpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnJlbW92
ZUZyb21QYXJlbnQoKTsKICAgICB9CiAKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjb250ZW50c0xh
eWVyOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9j
b250ZW50c0xheWVyLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHRydWUpOworICAg
IGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRV
c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSk7CiAKICAgICAgICAgLy8gSXQgaXMgbmVj
ZXNzYXJ5IHRvIGNhbGwgc2V0RHJhd3NDb250ZW50IGFzIHNvb24gYXMgd2UgcmVjZWl2ZSB0aGUg
bmV3IGNvbnRlbnRzTGF5ZXIsIGZvcgogICAgICAgICAvLyB0aGUgY29ycmVjdG5lc3Mgb2YgZWFy
bHkgZXhpdCBjb25kaXRpb25zIGluIHNldERyYXdzQ29udGVudCgpIGFuZCBzZXRDb250ZW50c1Zp
c2libGUoKS4KLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldERyYXdzQ29udGVudChtX2NvbnRl
bnRzVmlzaWJsZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RHJhd3NDb250ZW50KG1f
Y29udGVudHNWaXNpYmxlKTsKIAogICAgICAgICAvLyBJbnNlcnQgdGhlIGNvbnRlbnQgbGF5ZXIg
Zmlyc3QuIFZpZGVvIGVsZW1lbnRzIHJlcXVpcmUgdGhpcywgYmVjYXVzZSB0aGV5IGhhdmUKICAg
ICAgICAgLy8gc2hhZG93IGNvbnRlbnQgdGhhdCBtdXN0IGRpc3BsYXkgaW4gZnJvbnQgb2YgdGhl
IHZpZGVvLgotICAgICAgICBtX2xheWVyLmluc2VydENoaWxkKG1fY29udGVudHNMYXllciwgMCk7
CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmluc2VydENoaWxkKG1fY29udGVudHNMYXllciwg
MCk7CiAKICAgICAgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgewotICAgICAgICAgICAgbV9j
b250ZW50c0xheWVyLnNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IoMCwgMCwgMTI4LCAxODApLnJn
YigpKTsKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci5zZXREZWJ1Z0JvcmRlcldpZHRoKDEp
OworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9y
KDAsIDAsIDEyOCwgMTgwKS5yZ2IoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNl
dERlYnVnQm9yZGVyV2lkdGgoMSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdXBkYXRlRGVidWdJ
bmRpY2F0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGFhNjRl
YWQ2ZDY2NWUyNThkOTBkMDI2MGZhYTkxMTUwYjk2ZGFkNmIuLjU1N2FiNGRkODJjZmFjNDU2ZjRj
NGY4ZGMwZWUyNmE5MDViMTMwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5o
CkBAIC0zOSw2ICszOSw3IEBACiAKICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0aW9uRGVsZWdh
dGUuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYkltYWdlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0xMDEsNyArMTAyLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc0Nv
bnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiAhbV9jb250ZW50c0xheWVyLmlzTnVsbCgpOyB9
CisgICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2Nv
bnRlbnRzTGF5ZXI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29uc3QgS2V5
ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24q
LCBjb25zdCBTdHJpbmcmLCBkb3VibGUgdGltZU9mZnNldCk7CiAgICAgdmlydHVhbCB2b2lkIHBh
dXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZz
ZXQpOwpAQCAtMTI1LDE1ICsxMjYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBub3Rp
ZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChkb3VibGUgZmluaXNoVGltZSkgT1ZFUlJJ
REU7CiAKKyAgICBXZWJLaXQ6OldlYkNvbnRlbnRMYXllciogY29udGVudExheWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQorCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVzdHMuCi0g
ICAgV2ViS2l0OjpXZWJMYXllciBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4gbV9jb250
ZW50c0xheWVyOyB9CisgICAgV2ViS2l0OjpXZWJMYXllciogY29udGVudHNMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIGZsb2F0IGNvbnRlbnRzU2NhbGUoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7Ci0K
LSAgICBXZWJLaXQ6OldlYkxheWVyIHByaW1hcnlMYXllcigpIGNvbnN0OwotCiAgICAgdm9pZCB1
cGRhdGVOYW1lcygpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAgdm9pZCB1cGRh
dGVMYXllclBvc2l0aW9uKCk7CkBAIC0xNTEsMzIgKzE1MCwzMiBAQCBwcml2YXRlOgogICAgIHZv
aWQgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c1NjYWxlKCk7
CiAKLSAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihXZWJLaXQ6OldlYkxheWVyKTsKKyAgICBl
bnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKKyAgICAgICAgTm9Db250ZW50c0xheWVyID0gMCwK
KyAgICAgICAgQ29udGVudHNMYXllckZvckltYWdlLAorICAgICAgICBDb250ZW50c0xheWVyRm9y
VmlkZW8sCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JDYW52YXMsCisgICAgfTsKKworICAgIHZv
aWQgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyUHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciop
OworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFdlYktpdDo6V2ViTGF5ZXIqKTsKIAogICAg
IGludCBtYXBBbmltYXRpb25OYW1lVG9JZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpOwog
CiAgICAgU3RyaW5nIG1fbmFtZUJhc2U7CiAKLSAgICBXZWJLaXQ6OldlYkNvbnRlbnRMYXllciBt
X2xheWVyOwotICAgIFdlYktpdDo6V2ViTGF5ZXIgbV90cmFuc2Zvcm1MYXllcjsKLSAgICBXZWJL
aXQ6OldlYkxheWVyIG1fY29udGVudHNMYXllcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJDb250
ZW50TGF5ZXI+IG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViTGF5ZXI+IG1fdHJhbnNm
b3JtTGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViSW1hZ2VMYXllcj4gbV9pbWFnZUxheWVy
OworICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1fY29udGVudHNMYXllcjsKIAogICAgIE93blB0cjxP
cGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZT4gbV9vcGFxdWVSZWN0VHJhY2tp
bmdDb250ZW50TGF5ZXJEZWxlZ2F0ZTsKIAotICAgIGVudW0gQ29udGVudHNMYXllclB1cnBvc2Ug
ewotICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBDb250ZW50c0xheWVyRm9y
SW1hZ2UsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JWaWRlbywKLSAgICAgICAgQ29udGVudHNM
YXllckZvckNhbnZhcywKLSAgICB9OwotCiAgICAgQ29udGVudHNMYXllclB1cnBvc2UgbV9jb250
ZW50c0xheWVyUHVycG9zZTsKICAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tncm91bmRD
b2xvciA6IDE7CiAgICAgYm9vbCBtX2luU2V0Q2hpbGRyZW47CiAgICAgYm9vbCBtX3BhZ2VTY2Fs
ZUNoYW5nZWQ7CiAKLSAgICBSZWZQdHI8TGlua0hpZ2hsaWdodD4gbV9saW5rSGlnaGxpZ2h0Owot
CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBBbmltYXRpb25JZE1hcDsKICAgICBB
bmltYXRpb25JZE1hcCBtX2FuaW1hdGlvbklkTWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggMzBjODFiNjVjOGU1ODgyMTAwYmE5MWJlOThhYzdmMTE5MmNkZjJmNC4uNGU3ZmE3NGY1
NTZlOTllODgwNDU5ZDU3NTM2Njg0ZGQ4MWEyODFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
QEAgLTIzNCwxMCArMjM0LDExIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0Qm91bmRzKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLWNvbnN0IExh
eWVyQ2hyb21pdW0qIExheWVyQ2hyb21pdW06OnJvb3RMYXllcigpIGNvbnN0CitMYXllckNocm9t
aXVtKiBMYXllckNocm9taXVtOjpyb290TGF5ZXIoKQogewotICAgIGNvbnN0IExheWVyQ2hyb21p
dW0qIGxheWVyID0gdGhpczsKLSAgICBmb3IgKExheWVyQ2hyb21pdW0qIHBhcmVudCA9IGxheWVy
LT5wYXJlbnQoKTsgcGFyZW50OyBsYXllciA9IHBhcmVudCwgcGFyZW50ID0gcGFyZW50LT5wYXJl
bnQoKSkgeyB9CisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSB0aGlzOworICAgIHdoaWxlIChs
YXllci0+cGFyZW50KCkpCisgICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVudCgpOwogICAgIHJl
dHVybiBsYXllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGVjMTRhNTFhN2I0OTg4M2Uw
ZTVmZjdjNjYyZDBlMzVjOTdkMzVkNTAuLjJlNTQxZWU3YmVjYzNlMzdiNzliOTQ0NjRhZTY1NTY2
NGExZThjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVibGljOgog
ICAgIC8vIFRoZSByb290IGxheWVyIGlzIGEgc3BlY2lhbCBjYXNlIC0tIGl0IG9wZXJhdGVzIGlu
IHBoeXNpY2FsIHBpeGVscy4KICAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdHJhbnNm
b3JtOyB9CiAKLSAgICBjb25zdCBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSBjb25zdDsKKyAg
ICBMYXllckNocm9taXVtKiByb290TGF5ZXIoKTsKICAgICBMYXllckNocm9taXVtKiBwYXJlbnQo
KSBjb25zdDsKICAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4pOwog
ICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiwgc2l6ZV90IGlu
ZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBlMzUyYmFkMzkxYWVmZThkN2Y0
MTlkZjEzMjE3MzhhYTkzOWRhZjYwLi44ZTU3Nzg0ZDNmNzgwMDVmY2Q1ZDg5ZTgzMWIzZmY5NGQw
OWM2OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00ODYsNyArNDg2LDYgQEAK
ICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbW1vbi5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgnLAotICAgICAgICAgICAgICAgICdz
cmMvV2ViQ29udGVudExheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50
TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50TGF5ZXJJbXBs
LmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRD
YWNoZS5jcHAnLApAQCAtNTE1LDcgKzUxNCw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbnRpdGllcy5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMuaCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9X
ZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hv
b3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrc0ltcGwuY3BwJywKQEAgLTU2NCw5ICs1NjQsMTEgQEAKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMv
V2ViSU9TdXJmYWNlTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklPU3VyZmFj
ZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXJJ
bXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcCcsCi0gICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJJbWFnZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VM
YXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZVNraWEuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViSW5wdXRFdmVudC5jcHAnLApAQCAtNTc3LDcgKzU3OSw2IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViS2l0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3Bw
JywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1w
bC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwJywKQEAgLTYx
OCw4ICs2MTksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2NvcGVkTWljcm90YXNrU3Vw
cHJlc3Npb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJl
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcCcsCi0g
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAnLAotICAgICAgICAgICAg
ICAgICdzcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJTY3JvbGxiYXJMYXllckltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9s
bGJhckxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwu
Y3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwuY3BwJywKQEAgLTYzOCw4
ICs2MzksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU29ja2V0LmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJTb2NrZXRJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViU29saWRDb2xvckxheWVy
LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcCcs
CisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViU3BlZWNoR3JhbW1hci5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNw
ZWVjaFJlY29nbml0aW9uSGFuZGxlLmNwcCcsCkBAIC02NTUsNyArNjU2LDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuY3BwJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYlZp
ZGVvTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNw
cCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWRlb0xheWVySW1wbC5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmgnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDY1ZGFjNjJjYWUy
NTNkNTE2NTg3NWNlNGUzMzZiZTg1Zjk3OGMxYmEuLjRkZjQyMDRiMzQ3YmM4ZGNlODdmMTNhNmZi
MGM2MjM0NWU3MGNjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJHcmFw
aGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5j
bHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgpAQCAtNDgsMTEgKzQ5LDExIEBAIE5vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFdlYlZpZXdJbXBs
KiB3ZWJWaWV3KQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgibm9uLWNvbXBvc2l0ZWQg
Y29udGVudCIpOwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQo
dHJ1ZSk7Ci0gICAgV2ViQ29udGVudExheWVyIGxheWVyID0gbV9ncmFwaGljc0xheWVyLT5wbGF0
Zm9ybUxheWVyKCktPnRvPFdlYkNvbnRlbnRMYXllcj4oKTsKLSAgICBsYXllci5zZXRVc2VMQ0RU
ZXh0KHRydWUpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBXZWJDb250ZW50TGF5
ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtKj4o
bV9ncmFwaGljc0xheWVyLmdldCgpKS0+Y29udGVudExheWVyKCk7CisgICAgbGF5ZXItPnNldFVz
ZUxDRFRleHQodHJ1ZSk7CisgICAgbGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZSh0cnVlKTsKICNp
ZiAhT1MoQU5EUk9JRCkKLSAgICBsYXllci5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1Rp
bGVzKHRydWUpOworICAgIGxheWVyLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVz
KHRydWUpOwogI2VuZGlmCiB9CiAKQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBOb25Db21wb3NpdGVk
Q29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIGxheWVy
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCpsYXllci0+cGxhdGZvcm1MYXll
cigpID09IHNjcm9sbExheWVyKCkpCisgICAgaWYgKGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgPT0g
c2Nyb2xsTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGF5ZXItPmFkZENoaWxkQXRJ
bmRleChtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIDApOwpAQCAtOTUsMTIgKzk2LDEyIEBAIHZvaWQg
Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydChjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiB2aWV3cG9ydFNpemUsCiAgICAgYm9vbCB2aXNpYmxlUmVjdENoYW5nZWQgPSBtX3ZpZXdw
b3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZpZXdwb3J0
U2l6ZTsKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgbGF5ZXIgPSBzY3JvbGxMYXllcigpOwotICAg
IGxheWVyLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsT3JpZ2luKTsK
LSAgICBsYXllci5zZXRQb3NpdGlvbihXZWJGbG9hdFBvaW50KC1zY3JvbGxQb3NpdGlvbikpOwor
ICAgIFdlYkxheWVyKiBsYXllciA9IHNjcm9sbExheWVyKCk7CisgICAgbGF5ZXItPnNldFNjcm9s
bFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsT3JpZ2luKTsKKyAgICBsYXllci0+c2V0
UG9zaXRpb24oV2ViRmxvYXRQb2ludCgtc2Nyb2xsUG9zaXRpb24pKTsKICAgICAvLyBEdWUgdG8g
dGhlIHBvc3NpYmlsaXR5IG9mIHBpbmNoIHpvb20sIHRoZSBub25jb21wb3NpdGVkIGxheWVyIGlz
IGFsd2F5cwogICAgIC8vIGFzc3VtZWQgdG8gYmUgc2Nyb2xsYWJsZS4KLSAgICBsYXllci5zZXRT
Y3JvbGxhYmxlKHRydWUpOworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlKHRydWUpOwogICAgIG1f
ZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZTsKICAgICBtX2dyYXBoaWNzTGF5ZXItPmRl
dmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0
U2l6ZShjb250ZW50c1NpemUpOwpAQCAtMTI3LDExICsxMjgsMTEgQEAgYm9vbCBOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6OmhhdmVTY3JvbGxMYXllcigpCiAgICAgcmV0dXJuIG1fZ3JhcGhpY3NM
YXllci0+cGFyZW50KCk7CiB9CiAKLVdlYlNjcm9sbGFibGVMYXllciBOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q6OnNjcm9sbExheWVyKCkKK1dlYkxheWVyKiBOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q6OnNjcm9sbExheWVyKCkKIHsKICAgICBpZiAoIW1fZ3JhcGhpY3NMYXllci0+cGFyZW50KCkp
Ci0gICAgICAgIHJldHVybiBXZWJTY3JvbGxhYmxlTGF5ZXIoKTsKLSAgICByZXR1cm4gbV9ncmFw
aGljc0xheWVyLT5wYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5
ZXI+KCk7CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXItPnBh
cmVudCgpLT5wbGF0Zm9ybUxheWVyKCk7CiB9CiAKIHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRI
b3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3Qu
aAppbmRleCBlNjBlOWVmNDg2YjE0MjMxMjQ3MTNjNjhkZDZhYWMwZWVhNGE3ZGIzLi4wOGI1ZjZh
NDFmNzcwNjFlN2ViMjgxNTQyZjBmZThlNjM1ZmNjNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAtMjksNyAr
MjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlICJJbnRT
aXplLmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5j
bHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC04MCw3
ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZhY3Rvcigp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0KIAogICAgIGJv
b2wgaGF2ZVNjcm9sbExheWVyKCk7Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNjcm9sbExheWVy
KCk7CisgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCk7CiAKICAgICBPd25QdHI8V2ViQ29yZTo6
R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xheWVyOwogICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZp
ZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNzQ2NWIxN2MxMzE2NzY5ODhmYTY1YThk
NmJhMDRmYjQ3YzY2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+Ci0KLSNpbmNsdWRlICJDb250ZW50TGF5
ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllckltcGwuaCIKLQotdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJDb250ZW50TGF5
ZXIgV2ViQ29udGVudExheWVyOjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50
Q2xpZW50KQotewotICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVudExheWVySW1w
bDo6Y3JlYXRlKGNvbnRlbnRDbGllbnQpKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OmNs
ZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8Q29udGVudExheWVyQ2hyb21pdW0+KCktPmNsZWFy
RGVsZWdhdGUoKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldERvdWJsZVNpZGVkKGJv
b2wgZG91YmxlU2lkZWQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREb3VibGVTaWRlZChkb3VibGVT
aWRlZCk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0
IHNjYWxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7Ci19Ci0K
LXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRVc2VMQ0RUZXh0KGJvb2wgZW5hYmxlKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0VXNlTENEVGV4dChlbmFibGUpOwotfQotCi12b2lkIFdlYkNvbnRlbnRM
YXllcjo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sIGVuYWJsZSkKLXsK
LSAgICBtX3ByaXZhdGUtPnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoZW5hYmxl
KTsKLX0KLQotV2ViQ29udGVudExheWVyOjpXZWJDb250ZW50TGF5ZXIoY29uc3QgUGFzc1JlZlB0
cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBXZWJTY3JvbGxhYmxlTGF5ZXIo
bm9kZSkKLXsKLX0KLQotV2ViQ29udGVudExheWVyJiBXZWJDb250ZW50TGF5ZXI6Om9wZXJhdG9y
PShjb25zdCBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiYgbm9kZSkKLXsKLSAgICBt
X3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViQ29udGVudExheWVy
OjpvcGVyYXRvciBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRlbnRMYXllckNocm9taXVtKj4obV9wcml2YXRlLmdl
dCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCmluZGV4IDY5ZGExZWEzZjBlODky
MDE2OTZkOGRkZWM3NjQ4ZTRmNDY0Yzk2NDguLmZhMjFlODk3NGZkM2IxYjk4MDZhNWMyZTFjYTk5
ZTY5YzY5OGRjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bnRlbnRMYXllckltcGwuY3BwCkBAIC0yNiwzNyArMjYsNjYgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJTa01hdHJp
eDQ0LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVj
dC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNp
emUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
Ci1QYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IFdlYkNvbnRlbnRMYXllckltcGw6OmNy
ZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCitXZWJDb250ZW50TGF5
ZXIqIFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCogY2xpZW50
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVudExheWVySW1wbChjb250ZW50
Q2xpZW50KSk7CisgICAgcmV0dXJuIG5ldyBXZWJDb250ZW50TGF5ZXJJbXBsKGNsaWVudCk7CiB9
CiAKLVdlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVudExh
eWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotICAgIDogQ29udGVudExheWVyQ2hyb21pdW0odGhp
cykKLSAgICAsIG1fY29udGVudENsaWVudChjb250ZW50Q2xpZW50KQorV2ViQ29udGVudExheWVy
SW1wbDo6V2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNsaWVudCkK
KyAgICA6IG1fd2ViTGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwoQ29udGVudExh
eWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKSkpKQorICAgICwgbV9jbGllbnQoY2xpZW50KQogewot
ICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNl
dElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYkNvbnRlbnRMYXllckltcGw6On5XZWJDb250ZW50
TGF5ZXJJbXBsKCkKIHsKLSAgICBjbGVhckRlbGVnYXRlKCk7CisgICAgc3RhdGljX2Nhc3Q8Q29u
dGVudExheWVyQ2hyb21pdW0qPihtX3dlYkxheWVySW1wbC0+bGF5ZXIoKSktPmNsZWFyRGVsZWdh
dGUoKTsKIH0KIAorV2ViTGF5ZXIqIFdlYkNvbnRlbnRMYXllckltcGw6OmxheWVyKCkKK3sKKyAg
ICByZXR1cm4gbV93ZWJMYXllckltcGwuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViQ29udGVudExheWVy
SW1wbDo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKK3sKKyAgICBtX3dlYkxheWVy
SW1wbC0+bGF5ZXIoKS0+c2V0RG91YmxlU2lkZWQoZG91YmxlU2lkZWQpOworfQorCit2b2lkIFdl
YkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCit7CisgICAg
bV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOworfQorCit2
b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldFVzZUxDRFRleHQoYm9vbCBlbmFibGUpCit7Cisg
ICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldFVzZUxDRFRleHQoZW5hYmxlKTsKK30KKwor
dm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1Rp
bGVzKGJvb2wgZW5hYmxlKQoreworICAgIG1fd2ViTGF5ZXJJbXBsLT5sYXllcigpLT5zZXREcmF3
Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGVuYWJsZSk7Cit9CisKKwogdm9pZCBXZWJDb250
ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJl
Y3QmIGNsaXAsIEZsb2F0UmVjdCYgb3BhcXVlKQogewotICAgIGlmICghbV9jb250ZW50Q2xpZW50
KQorICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJGbG9hdFJlY3Qg
d2ViT3BhcXVlOwotICAgIG1fY29udGVudENsaWVudC0+cGFpbnRDb250ZW50cyhjYW52YXMsIFdl
YlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7CisgICAgbV9jbGllbnQtPnBhaW50Q29udGVudHMoY2Fu
dmFzLCBXZWJSZWN0KGNsaXApLCB3ZWJPcGFxdWUpOwogICAgIG9wYXF1ZSA9IHdlYk9wYXF1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1w
bC5oCmluZGV4IDk3NzI5ZWExZTBjMjAxYTA4YjFmOTA5MDdhNjI4MjgxYTRlMTBiNTkuLjUxMWY4
ZTBiYTA4NjBiNDZhMDgxNTY1ZjA5ODdkZmYwZThhY2I1ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKQEAgLTI3LDIzICsyNywzMyBA
QAogI2RlZmluZSBXZWJDb250ZW50TGF5ZXJJbXBsX2gKIAogI2luY2x1ZGUgIkNvbnRlbnRMYXll
ckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSA8cHVibGlj
L1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OwogCi1jbGFzcyBXZWJD
b250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtLCBw
dWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVyRGVsZWdhdGUgeworY2xhc3MgV2ViQ29udGVudExh
eWVySW1wbCA6IHB1YmxpYyBXZWJDb250ZW50TGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckRlbGVnYXRlIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBjcmVhdGUoV2ViQ29udGVu
dExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKKyAgICBleHBsaWNpdCBXZWJDb250ZW50TGF5
ZXJJbXBsKFdlYkNvbnRlbnRMYXllckNsaWVudCopOworCisgICAgLy8gV2ViQ29udGVudExheWVy
IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpICBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRVc2VMQ0RUZXh0KGJvb2wpICBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sKSAgT1ZFUlJJREU7CiAKIHBy
b3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRMYXll
ckNsaWVudCogY29udGVudENsaWVudCk7CiAgICAgdmlydHVhbCB+V2ViQ29udGVudExheWVySW1w
bCgpOwogCiAgICAgLy8gQ29udGVudExheWVyRGVsZWdhdGUgaW1wbGVtZW50YXRpb24uCiAgICAg
dmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoU2tDYW52YXMqLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjbGlwLCBXZWJDb3JlOjpGbG9hdFJlY3QmIG9wYXF1ZSkgT1ZFUlJJREU7CiAKLSAgICBX
ZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY29udGVudENsaWVudDsKKyAgICBPd25QdHI8V2ViTGF5
ZXJJbXBsPiBtX3dlYkxheWVySW1wbDsKKyAgICBXZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY2xp
ZW50OwogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YWZmNTcyMTk0YzA4YTliYTgzZmE5MzUzYmM0YzVmMWEz
MTZiZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+Ci0KLSNpbmNsdWRlICJD
Q1RleHR1cmVVcGRhdGVRdWV1ZS5oIgotI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgi
Ci0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+Ci0jaW5j
bHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xh
c3MgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIDogcHVibGljIFdlYlRleHR1cmVVcGRhdGVyIHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJUZXh0dXJlVXBkYXRlckltcGwoQ0NUZXh0dXJlVXBkYXRl
UXVldWUmIHF1ZXVlKQotICAgICAgICA6IG1fcXVldWUocXVldWUpCi0gICAgewotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUsIHVuc2ln
bmVkIGRlc3RpbmF0aW9uVGV4dHVyZSwgV2ViU2l6ZSBzaXplKSBPVkVSUklERQotICAgIHsKLSAg
ICAgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5ID0geyBzb3VyY2VUZXh0dXJlLCBk
ZXN0aW5hdGlvblRleHR1cmUsIHNpemUgfTsKLSAgICAgICAgbV9xdWV1ZS5hcHBlbmRDb3B5KGNv
cHkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgbV9xdWV1
ZTsKLX07Ci0KLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBUZXh0
dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCwgcHVibGljIFRleHR1cmVMYXllckNocm9taXVtIHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKLSAgICAgICAgOiBUZXh0dXJlTGF5ZXJDaHJv
bWl1bShjbGllbnQgPyB0aGlzIDogMCkKLSAgICAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAg
ewotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoQ0NUZXh0dXJl
VXBkYXRlUXVldWUmIHF1ZXVlKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgV2ViVGV4dHVyZVVw
ZGF0ZXJJbXBsIHVwZGF0ZXJJbXBsKHF1ZXVlKTsKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5w
cmVwYXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBXZWJLaXQ6
OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtX2NsaWVudC0+Y29udGV4dCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJF
eHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi1XZWJFeHRlcm5hbFRl
eHR1cmVMYXllciBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9t
aXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoY2xp
ZW50KSk7Ci0gICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVy
Q2hyb21pdW0+KCktPmNsZWFyQ2xpZW50KCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI6OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxh
eWVyQ2hyb21pdW0+KCktPnNldFRleHR1cmVJZChpZCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQotewotICAgIHVud3JhcDxUZXh0
dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0RmxpcHBlZChmbGlwcGVkKTsKLX0KLQotdm9pZCBXZWJF
eHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYgcmVjdCkK
LXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFVWUmVjdChyZWN0KTsK
LX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVl
KQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0T3BhcXVlKG9wYXF1
ZSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFByZW11bHRpcGxpZWRB
bHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVy
Q2hyb21pdW0+KCktPnNldFByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpOwot
fQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjp3aWxsTW9kaWZ5VGV4dHVyZSgpCi17
Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT53aWxsTW9kaWZ5VGV4dHVyZSgp
OwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRSYXRlTGltaXRDb250ZXh0
KGJvb2wgcmF0ZUxpbWl0KQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+
c2V0UmF0ZUxpbWl0Q29udGV4dChyYXRlTGltaXQpOwotfQotCi1XZWJFeHRlcm5hbFRleHR1cmVM
YXllcjo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxUZXh0dXJlTGF5ZXJDaHJv
bWl1bT4gbGF5ZXIpCi0gICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjIxNjZmNDQ0MTU2OGRi
NGEyZjU5Njc0NWQ1MTNlZTJhZThjMjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsx
LDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkNDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgi
CisjaW5jbHVkZSAiVGV4dHVyZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllcklt
cGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaD4K
KyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlNp
emUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitXZWJFeHRlcm5hbFRleHR1cmVMYXllciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0
ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBu
ZXcgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKGNsaWVudCk7Cit9CisKK1dlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQpCit7Cisg
ICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXllcjsKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKTsKKyAg
ICBlbHNlCisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSgwKTsK
KyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIo
bmV3IFdlYkxheWVySW1wbChsYXllci5yZWxlYXNlKCkpKTsKK30KKworV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsOjp+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkKK3sKKyAgICBzdGF0
aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5jbGVhckNs
aWVudCgpOworfQorCitXZWJMYXllciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpsYXll
cigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXJJbXBsOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAgc3RhdGlj
X2Nhc3Q8VGV4dHVyZUxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0VGV4dHVy
ZUlkKGlkKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldEZsaXBw
ZWQoYm9vbCBmbGlwcGVkKQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVt
Kj4obV9sYXllci0+bGF5ZXIoKSktPnNldEZsaXBwZWQoZmxpcHBlZCk7Cit9CisKK3ZvaWQgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiBy
ZWN0KQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+
bGF5ZXIoKSktPnNldFVWUmVjdChyZWN0KTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0
dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRPcGFxdWUob3BhcXVlKTsK
K30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldFByZW11bHRpcGxpZWRB
bHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJl
TGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRQcmVtdWx0aXBsaWVkQWxwaGEo
cHJlbXVsdGlwbGllZEFscGhhKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGw6OndpbGxNb2RpZnlUZXh0dXJlKCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJD
aHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT53aWxsTW9kaWZ5VGV4dHVyZSgpOworfQorCit2
b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4dChib29s
IHJhdGVMaW1pdCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1f
bGF5ZXItPmxheWVyKCkpLT5zZXRSYXRlTGltaXRDb250ZXh0KHJhdGVMaW1pdCk7Cit9CisKK2Ns
YXNzIFdlYlRleHR1cmVVcGRhdGVySW1wbCA6IHB1YmxpYyBXZWJUZXh0dXJlVXBkYXRlciB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsKENDVGV4dHVyZVVwZGF0
ZVF1ZXVlJiBxdWV1ZSkKKyAgICAgICAgOiBtX3F1ZXVlKHF1ZXVlKQorICAgIHsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJlLCB1bnNp
Z25lZCBkZXN0aW5hdGlvblRleHR1cmUsIFdlYlNpemUgc2l6ZSkgT1ZFUlJJREUKKyAgICB7Cisg
ICAgICAgIFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgY29weSA9IHsgc291cmNlVGV4dHVyZSwg
ZGVzdGluYXRpb25UZXh0dXJlLCBzaXplIH07CisgICAgICAgIG1fcXVldWUuYXBwZW5kQ29weShj
b3B5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUmIG1fcXVl
dWU7Cit9OworCit1bnNpZ25lZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnByZXBhcmVU
ZXh0dXJlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKK3sKKyAgICBBU1NFUlQobV9jbGll
bnQpOworICAgIFdlYlRleHR1cmVVcGRhdGVySW1wbCB1cGRhdGVySW1wbChxdWV1ZSk7CisgICAg
cmV0dXJuIG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Cit9CisKK1dlYkdy
YXBoaWNzQ29udGV4dDNEKiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNvbnRleHQoKQor
eworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5jb250ZXh0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
MzQ4ODk1YmYxY2Q1M2I1NDQ5M2IyMzU3ZDA4MTk2MmJmNTgzNGU1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
LmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsX2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKworI2luY2x1
ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJMYXllcklt
cGw7CisKK2NsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBXZWJFeHRl
cm5hbFRleHR1cmVMYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCB7CitwdWJsaWM6CisgICAg
ZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCk7
CisKKyAgICAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2
aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRU
ZXh0dXJlSWQodW5zaWduZWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRGbGlwcGVk
KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVVlJlY3QoY29uc3QgV2ViRmxv
YXRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTW9kaWZ5VGV4dHVyZSgpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRSYXRlTGltaXRDb250ZXh0KGJvb2wpIE9WRVJSSURFOworCisgICAg
Ly8gVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVh
bCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVRdWV1ZSYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSBP
VkVSUklERTsKKworcHJpdmF0ZToKKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCog
bV9jbGllbnQ7CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKwor
I2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbF9oCisKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzdkYjBjODc3NzdmZmI0NWZjODNiYzk5MGQ1ZWRmOTI1NGZiODUxMi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
LSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJJT1N1cmZhY2VMYXllci5oPgotCi0jaW5jbHVkZSAiSU9TdXJmYWNlTGF5ZXJDaHJvbWl1
bS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSU9TdXJmYWNlTGF5ZXIgV2ViSU9TdXJm
YWNlTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+
IGxheWVyID0gSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgbGF5ZXItPnNl
dElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIFdlYklPU3VyZmFjZUxheWVyKGxheWVyLnJl
bGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2ViSU9TdXJmYWNlTGF5ZXI6OnNldElPU3VyZmFjZVByb3Bl
cnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUgc2l6ZSkKLXsKLSAgICB1bndyYXA8
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyhpb1N1cmZh
Y2VJZCwgc2l6ZSk7Ci19Ci0KLVdlYklPU3VyZmFjZUxheWVyOjpXZWJJT1N1cmZhY2VMYXllcihQ
YXNzUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogV2ViTGF5ZXIo
bGF5ZXIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmFiNzBjNjFkOGI0MTc0NDIyZDdmYzUzNTQzMjlmODkxZTkwOGI0ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAK
QEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJJT1N1cmZhY2VMYXllckltcGwuaCIKKworI2luY2x1ZGUgIklPU3VyZmFjZUxheWVyQ2hyb21p
dW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwordXNpbmcgV2ViQ29yZTo6SU9TdXJm
YWNlTGF5ZXJDaHJvbWl1bTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYklPU3VyZmFjZUxh
eWVyKiBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkKK3sKKyAgICBSZWZQdHI8SU9TdXJmYWNl
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBJT1N1cmZhY2VMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
KyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICByZXR1cm4gbmV3IFdlYklPU3Vy
ZmFjZUxheWVySW1wbChsYXllci5yZWxlYXNlKCkpOworfQorCitXZWJJT1N1cmZhY2VMYXllcklt
cGw6OldlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21p
dW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVy
KSkpCit7Cit9CisKK1dlYklPU3VyZmFjZUxheWVySW1wbDo6fldlYklPU3VyZmFjZUxheWVySW1w
bCgpCit7Cit9CisKK3ZvaWQgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpzZXRJT1N1cmZhY2VQcm9w
ZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplIHNpemUpCit7CisgICAgc3RhdGlj
X2Nhc3Q8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRJT1N1
cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBzaXplKTsKK30KKworV2ViTGF5ZXIqIFdlYklP
U3VyZmFjZUxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RiYjAyNzU5YTVjYmQ3
NGQzNTY0ODk5OGFlYzYyMTBhMmY0NzI5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFdlYklPU3VyZmFjZUxheWVySW1wbF9oCisjZGVmaW5lIFdlYklPU3Vy
ZmFjZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaD4K
KyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIElP
U3VyZmFjZUxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJJT1N1cmZhY2VMYXllckltcGwgOiBwdWJsaWMgV2ViSU9TdXJmYWNlTGF5ZXIgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IFdlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6
OklPU3VyZmFjZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJJT1N1cmZhY2VMYXll
ckltcGwoKTsKKworICAgIC8vIFdlYklPU3VyZmFjZUxheWVyIGltcGxlbWVudGF0aW9uLgorICAg
IHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpIE9WRVJS
SURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7Cit9Owor
Cit9CisKKyNlbmRpZiAvLyBXZWJJT1N1cmZhY2VMYXllckltcGxfaAorCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmNzYxNTE1MzBkMTA3NTdkMmNkNDRhNzgwMzBhOTY5ZjU2ZTI0MDZmLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VM
YXllci5oPgotCi0jaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1XZWJJbWFnZUxheWVyIFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAg
cmV0dXJuIFdlYkltYWdlTGF5ZXIoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUo
KSk7Ci19Ci0KLVdlYkltYWdlTGF5ZXI6OldlYkltYWdlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3Jl
OjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogV2ViTGF5ZXIobGF5ZXIpCi17Ci19
Ci0KLXZvaWQgV2ViSW1hZ2VMYXllcjo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1hcCkKLXsKLSAg
ICB1bndyYXA8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtPigpLT5zZXRCaXRtYXAoYml0bWFw
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzYWY4MDQ1YTI2ZjY4
ZTgyNmQwMGNhZDRkOTI3NjVlOTFlOWRjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDYwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkltYWdlTGF5ZXJJbXBsLmgi
CisKKyNpbmNsdWRlICJJbWFnZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllcklt
cGwuaCIKKwordXNpbmcgV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworV2ViSW1hZ2VMYXllciogV2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gbmV3IFdlYkltYWdlTGF5ZXJJbXBsKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKCkpOworfQorCitXZWJJbWFnZUxheWVySW1wbDo6V2ViSW1hZ2VMYXllckltcGwo
UGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9s
YXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dlYkltYWdl
TGF5ZXJJbXBsOjp+V2ViSW1hZ2VMYXllckltcGwoKQoreworfQorCitXZWJMYXllciogV2ViSW1h
Z2VMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwor
dm9pZCBXZWJJbWFnZUxheWVySW1wbDo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1hcCkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxJbWFnZUxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0
Qml0bWFwKGJpdG1hcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0Yjhi
M2ViMGZmOTIyOTJiOWQ5MGVlZDFiZDU0MjdiYjg0NGYyOQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw1
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViSW1hZ2VMYXllckltcGxfaAorI2RlZmluZSBXZWJJbWFn
ZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXllci5oPgorI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW1hZ2VMYXll
ckNocm9taXVtOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVySW1wbDsK
KworY2xhc3MgV2ViSW1hZ2VMYXllckltcGwgOiBwdWJsaWMgV2ViSW1hZ2VMYXllciB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgV2ViSW1hZ2VMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJ
bWFnZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJJbWFnZUxheWVySW1wbCgpOwor
CisgICAgLy8gV2ViSW1hZ2VMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICBXZWJMYXllciogbGF5
ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Qml0bWFwKFNrQml0bWFwKSBPVkVS
UklERTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX2xheWVyOworfTsK
KworfQorCisjZW5kaWYgLy8gV2ViSW1hZ2VMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzg5N2U2
ZjgxMmIxNzFmOTBmMjI2OGViYzU3ZDUwNjEwMzM5N2JlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgotCi0jaW5jbHVkZSAiTGF5
ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKLSNpbmNsdWRlICJXZWJBbmlt
YXRpb25JbXBsLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQb2ludC5o
PgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
U2l6ZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotCi11
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg7Ci0KLW5hbWVzcGFjZSB7Ci0KLVdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewot
ICAgIGRvdWJsZSBkYXRhWzE2XTsKLSAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7Ci0gICAg
cmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0s
IGRhdGFbM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRh
dGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsx
NV0pOwotfQotCi1Ta01hdHJpeDQ0IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgo
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBTa01hdHJpeDQ0
IHNrTWF0cml4OwotICAgIHNrTWF0cml4LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRy
aXgubTExKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0
cml4Lm0xMigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1h
dHJpeC5tMTMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNjYWxhciht
YXRyaXgubTE0KCkpKTsKLSAgICBza01hdHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01TY2FsYXIo
bWF0cml4Lm0yMSgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFy
KG1hdHJpeC5tMjIoKSkpOwotICAgIHNrTWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxh
cihtYXRyaXgubTIzKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVUb01TY2Fs
YXIobWF0cml4Lm0yNCgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDAsIDIsIFNrRG91YmxlVG9NU2Nh
bGFyKG1hdHJpeC5tMzEoKSkpOwotICAgIHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNj
YWxhcihtYXRyaXgubTMyKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3VibGVUb01T
Y2FsYXIobWF0cml4Lm0zMygpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91YmxlVG9N
U2NhbGFyKG1hdHJpeC5tMzQoKSkpOwotICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0RvdWJsZVRv
TVNjYWxhcihtYXRyaXgubTQxKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMywgU2tEb3VibGVU
b01TY2FsYXIobWF0cml4Lm00MigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDMsIFNrRG91Ymxl
VG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAzLCBTa0RvdWJs
ZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKLSAgICByZXR1cm4gc2tNYXRyaXg7Ci19Ci0KLX0g
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViTGF5ZXIg
V2ViTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIFdlYkxheWVyKFdlYkxheWVySW1wbDo6
Y3JlYXRlKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZXNldCgpCi17Ci0gICAgbV9wcml2YXRl
LnJlc2V0KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmFzc2lnbihjb25zdCBXZWJMYXllciYgb3Ro
ZXIpCi17Ci0gICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwotfQotCi1ib29sIFdlYkxh
eWVyOjplcXVhbHMoY29uc3QgV2ViTGF5ZXImIG4pIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3By
aXZhdGUuZ2V0KCkgPT0gbi5tX3ByaXZhdGUuZ2V0KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpp
bnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAgICBtX3By
aXZhdGUtPnNldE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0KTsKLX0KLQotdm9pZCBXZWJMYXll
cjo6aW52YWxpZGF0ZSgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXROZWVkc0Rpc3BsYXkoKTsKLX0K
LQotdm9pZCBXZWJMYXllcjo6YWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkKQotewotICAg
IG1fcHJpdmF0ZS0+YWRkQ2hpbGQoY2hpbGQpOwotfQotCi12b2lkIFdlYkxheWVyOjppbnNlcnRD
aGlsZChjb25zdCBXZWJMYXllciYgY2hpbGQsIHNpemVfdCBpbmRleCkKLXsKLSAgICBtX3ByaXZh
dGUtPmluc2VydENoaWxkKGNoaWxkLCBpbmRleCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnJlcGxh
Y2VDaGlsZChjb25zdCBXZWJMYXllciYgcmVmZXJlbmNlLCBjb25zdCBXZWJMYXllciYgbmV3TGF5
ZXIpCi17Ci0gICAgV2ViTGF5ZXIgcmVmID0gcmVmZXJlbmNlOwotICAgIG1fcHJpdmF0ZS0+cmVw
bGFjZUNoaWxkKHJlZi51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKSwgbmV3TGF5ZXIpOwotfQotCi12
b2lkIFdlYkxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXI+JiB3ZWJD
aGlsZHJlbikKLXsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gY2hpbGRyZW4o
d2ViQ2hpbGRyZW4uc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoaWxk
cmVuLnNpemUoKTsgKytpKQotICAgICAgICBjaGlsZHJlbltpXSA9IHdlYkNoaWxkcmVuW2ldLnVu
d3JhcDxMYXllckNocm9taXVtPigpOwotICAgIG1fcHJpdmF0ZS0+c2V0Q2hpbGRyZW4oY2hpbGRy
ZW4pOwotfQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVGcm9tUGFyZW50KCkKLXsKLSAgICBtX3By
aXZhdGUtPnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3ZlQWxs
Q2hpbGRyZW4oKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRBbmNob3JQb2ludChhbmNob3JQb2ludCk7Ci19
Ci0KLVdlYkZsb2F0UG9pbnQgV2ViTGF5ZXI6OmFuY2hvclBvaW50KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gV2ViRmxvYXRQb2ludChtX3ByaXZhdGUtPmFuY2hvclBvaW50KCkpOwotfQotCi12b2lk
IFdlYkxheWVyOjpzZXRBbmNob3JQb2ludFooZmxvYXQgYW5jaG9yUG9pbnRaKQotewotICAgIG1f
cHJpdmF0ZS0+c2V0QW5jaG9yUG9pbnRaKGFuY2hvclBvaW50Wik7Ci19Ci0KLWZsb2F0IFdlYkxh
eWVyOjphbmNob3JQb2ludFooKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmFuY2hv
clBvaW50WigpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYg
c2l6ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldEJvdW5kcyhzaXplKTsKLX0KLQotV2ViU2l6ZSBX
ZWJMYXllcjo6Ym91bmRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUt
PmJvdW5kcygpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0TWFza3NUb0JvdW5kcyhib29sIG1h
c2tzVG9Cb3VuZHMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9C
b3VuZHMpOwotfQotCi1ib29sIFdlYkxheWVyOjptYXNrc1RvQm91bmRzKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9wcml2YXRlLT5tYXNrc1RvQm91bmRzKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6
OnNldE1hc2tMYXllcihjb25zdCBXZWJMYXllciYgbWFza0xheWVyKQotewotICAgIFdlYkxheWVy
IHJlZiA9IG1hc2tMYXllcjsKLSAgICBtX3ByaXZhdGUtPnNldE1hc2tMYXllcihyZWYudW53cmFw
PExheWVyQ2hyb21pdW0+KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRSZXBsaWNhTGF5ZXIo
Y29uc3QgV2ViTGF5ZXImIHJlcGxpY2FMYXllcikKLXsKLSAgICBXZWJMYXllciByZWYgPSByZXBs
aWNhTGF5ZXI7Ci0gICAgbV9wcml2YXRlLT5zZXRSZXBsaWNhTGF5ZXIocmVmLnVud3JhcDxMYXll
ckNocm9taXVtPigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhY2l0eShmbG9hdCBvcGFj
aXR5KQotewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhY2l0eShvcGFjaXR5KTsKLX0KLQotZmxvYXQg
V2ViTGF5ZXI6Om9wYWNpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPm9wYWNp
dHkoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Om9wYXF1
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+b3BhcXVlKCk7Ci19Ci0KLXZvaWQg
V2ViTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9uKQotewot
ICAgIG1fcHJpdmF0ZS0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwotfQotCi1XZWJGbG9hdFBvaW50
IFdlYkxheWVyOjpwb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkZsb2F0UG9pbnQo
bV9wcml2YXRlLT5wb3NpdGlvbigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJU
cmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0
U3VibGF5ZXJUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRy
aXgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFN1Ymxh
eWVyVHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnN1YmxheWVy
VHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1h
dGlvbk1hdHJpeChtX3ByaXZhdGUtPnN1YmxheWVyVHJhbnNmb3JtKCkpOwotfQotCi12b2lkIFdl
YkxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIG1f
cHJpdmF0ZS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQo
bWF0cml4KSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VHJhbnNmb3Jt
KG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnRyYW5zZm9ybSgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgobV9wcml2YXRl
LT50cmFuc2Zvcm0oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERyYXdzQ29udGVudChib29s
IGRyYXdzQ29udGVudCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzRHJhd2FibGUoZHJhd3NDb250
ZW50KTsKLX0KLQotYm9vbCBXZWJMYXllcjo6ZHJhd3NDb250ZW50KCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5kcmF3c0NvbnRlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0
UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQotewotICAgIG1fcHJpdmF0ZS0+c2V0UHJlc2Vy
dmVzM0QocHJlc2VydmUzRCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFVzZVBhcmVudEJhY2tm
YWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkKLXsKLSAgICBt
X3ByaXZhdGUtPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh1c2VQYXJlbnRCYWNrZmFj
ZVZpc2liaWxpdHkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2Vi
Q29sb3IgY29sb3IpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3Ip
OwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOwotfQot
Ci12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVy
YXRpb25zJiBmaWx0ZXJzKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZEZpbHRlcnMo
ZmlsdGVycyk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyQ29sb3IoY29uc3Qg
V2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdCb3JkZXJDb2xvcihj
b2xvcik7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lk
dGgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6c2V0RGVidWdOYW1lKFdlYlN0cmluZyBuYW1lKQotewotICAgIG1fcHJp
dmF0ZS0+c2V0RGVidWdOYW1lKG5hbWUpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmltYXRp
b25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAgbV9wcml2
YXRlLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKGRlbGVnYXRlKTsKLX0KLQotYm9vbCBXZWJM
YXllcjo6YWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQotewotICAgIHJldHVy
biBtX3ByaXZhdGUtPmFkZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25JbXBsKj4o
YW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpy
ZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3Zl
QW5pbWF0aW9uKGFuaW1hdGlvbklkKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3ZlQW5pbWF0
aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQ
cm9wZXJ0eSkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5y
ZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQsIHN0YXRpY19jYXN0PENDQWN0aXZlQW5pbWF0aW9u
OjpUYXJnZXRQcm9wZXJ0eT4odGFyZ2V0UHJvcGVydHkpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6
cGF1c2VBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCkKLXsKLSAg
ICBtX3ByaXZhdGUtPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0KTsKLX0K
LQotdm9pZCBXZWJMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUp
Ci17Ci0gICAgbV9wcml2YXRlLT5zdXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKLX0K
LQotdm9pZCBXZWJMYXllcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkK
LXsKLSAgICBtX3ByaXZhdGUtPnJlc3VtZUFuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7Ci19Ci0K
LWJvb2wgV2ViTGF5ZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbigpCi17Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnRyYW5zZmVy
QW5pbWF0aW9uc1RvKFdlYkxheWVyKiBvdGhlcikKLXsKLSAgICBBU1NFUlQob3RoZXIpOwotICAg
IGlmIChvdGhlcikKLSAgICAgICAgb3RoZXItPm1fcHJpdmF0ZS0+c2V0TGF5ZXJBbmltYXRpb25D
b250cm9sbGVyKG1fcHJpdmF0ZS0+cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpKTsK
LX0KLQotdm9pZCBXZWJMYXllcjo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5k
ZXJTdXJmYWNlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGZvcmNl
UmVuZGVyU3VyZmFjZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmNsZWFyUmVuZGVyU3VyZmFjZSgp
Ci17Ci0gICAgbV9wcml2YXRlLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKLX0KLQotV2ViTGF5ZXI6
OldlYkxheWVyKGNvbnN0IFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBt
X3ByaXZhdGUobm9kZSkKLXsKLX0KLQotV2ViTGF5ZXImIFdlYkxheWVyOjpvcGVyYXRvcj0oY29u
c3QgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiYgbm9kZSkKLXsKLSAgICBtX3ByaXZhdGUgPSBu
b2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVySW1wbC5jcHAKaW5kZXggMTZlMTIwNmNhMzM1YzNlOTgxNGRlYmVjYjRlZDhiYjJi
MDJlYjc3Ny4uNTRhNzFkODA5MDgyMTViNGQzNGZkYjYzMjUwODc4OWZmMDMwNmY3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCkBAIC0yNiwyNSArMjYs
MzcxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCiAK
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNp
bmNsdWRlICJTa01hdHJpeDQ0LmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uSW1wbC5oIgorI2lu
Y2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0
UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KKwordXNpbmcgV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRpb247Cit1c2luZyBXZWJDb3JlOjpM
YXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJMYXll
ckltcGw+IFdlYkxheWVySW1wbDo6Y3JlYXRlKCkKK25hbWVzcGFjZSB7CisKK1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tN
YXRyaXg0NCYgbWF0cml4KQoreworICAgIGRvdWJsZSBkYXRhWzE2XTsKKyAgICBtYXRyaXguYXND
b2xNYWpvcmQoZGF0YSk7CisgICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFb
MF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRh
WzExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFb
MTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOworfQorCitTa01hdHJpeDQ0IHNrTWF0cml4NDRGcm9t
VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCkKK3sKKyAgICBTa01hdHJpeDQ0IHNrTWF0cml4OworICAgIHNrTWF0cml4LnNldCgwLCAwLCBT
a0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMSwgMCwg
U2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7CisgICAgc2tNYXRyaXguc2V0KDIsIDAs
IFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOworICAgIHNrTWF0cml4LnNldCgzLCAw
LCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKKyAgICBza01hdHJpeC5zZXQoMCwg
MSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7CisgICAgc2tNYXRyaXguc2V0KDEs
IDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOworICAgIHNrTWF0cml4LnNldCgy
LCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsKKyAgICBza01hdHJpeC5zZXQo
MywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7CisgICAgc2tNYXRyaXguc2V0
KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOworICAgIHNrTWF0cml4LnNl
dCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsKKyAgICBza01hdHJpeC5z
ZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7CisgICAgc2tNYXRyaXgu
c2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkpOworICAgIHNrTWF0cml4
LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkpKTsKKyAgICBza01hdHJp
eC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MigpKSk7CisgICAgc2tNYXRy
aXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOworICAgIHNrTWF0
cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKKyAgICByZXR1
cm4gc2tNYXRyaXg7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisKK1dlYkxheWVy
KiBXZWJMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkxheWVy
SW1wbCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYkxheWVySW1wbChMYXllckNocm9taXVtOjpjcmVh
dGUoKSk7CiB9CiAKLVdlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKCkKLSAgICA6IExheWVyQ2hy
b21pdW0oKQorV2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwoUGFzc1JlZlB0cjxMYXllckNocm9t
aXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCiB7Ci0gICAgLy8gTWFrZSBzdXJlIHRo
YXQgdGhpcyBsYXllciBkb2VzIG5vdCBkcmF3IGNvbnRlbnQuIFRoaXMgd2F5IHdlIGRvbid0IGhh
dmUgdG8gb3ZlcnJpZGUKLSAgICAvLyB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBvZiBk
cmF3c0NvbnRlbnQoKS4KLSAgICBBU1NFUlQoIWRyYXdzQ29udGVudCgpKTsKIH0KIAogV2ViTGF5
ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKCkKIHsKKyAgICBtX2xheWVyLT5jbGVhclJlbmRlclN1cmZh
Y2UoKTsKKyAgICBtX2xheWVyLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKDApOworfQorCit2
b2lkIFdlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiByZWN0
KQoreworICAgIG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheVJlY3QocmVjdCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3Bs
YXkoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OmFkZENoaWxkKFdlYkxheWVyKiBjaGlsZCkK
K3sKKyAgICBtX2xheWVyLT5hZGRDaGlsZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihjaGls
ZCktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW5zZXJ0Q2hpbGQoV2ViTGF5
ZXIqIGNoaWxkLCBzaXplX3QgaW5kZXgpCit7CisgICAgbV9sYXllci0+aW5zZXJ0Q2hpbGQoc3Rh
dGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4oY2hpbGQpLT5sYXllcigpLCBpbmRleCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQoV2ViTGF5ZXIqIHJlZmVyZW5jZSwgV2ViTGF5
ZXIqIG5ld0xheWVyKQoreworICAgIG1fbGF5ZXItPnJlcGxhY2VDaGlsZChzdGF0aWNfY2FzdDxX
ZWJMYXllckltcGwqPihyZWZlcmVuY2UpLT5sYXllcigpLCBzdGF0aWNfY2FzdDxXZWJMYXllcklt
cGwqPihuZXdMYXllciktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Q2hp
bGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkxheWVyKj4mIHdlYkNoaWxkcmVuKQoreworICAgIFZl
Y3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBjaGlsZHJlbih3ZWJDaGlsZHJlbi5zaXplKCkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hpbGRyZW4uc2l6ZSgpOyArK2kpCisg
ICAgICAgIGNoaWxkcmVuW2ldID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4od2ViQ2hpbGRy
ZW5baV0pLT5sYXllcigpOworICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKGNoaWxkcmVuKTsKK30K
Kwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUZyb21QYXJlbnQoKQoreworICAgIG1fbGF5ZXIt
PnJlbW92ZUZyb21QYXJlbnQoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFsbENo
aWxkcmVuKCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYgYW5jaG9y
UG9pbnQpCit7CisgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQpOworfQor
CitXZWJGbG9hdFBvaW50IFdlYkxheWVySW1wbDo6YW5jaG9yUG9pbnQoKSBjb25zdAoreworICAg
IHJldHVybiBXZWJGbG9hdFBvaW50KG1fbGF5ZXItPmFuY2hvclBvaW50KCkpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikKK3sKKyAg
ICBtX2xheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yUG9pbnRaKTsKK30KKworZmxvYXQgV2Vi
TGF5ZXJJbXBsOjphbmNob3JQb2ludFooKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5h
bmNob3JQb2ludFooKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEJvdW5kcyhjb25zdCBX
ZWJTaXplJiBzaXplKQoreworICAgIG1fbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKK30KKworV2Vi
U2l6ZSBXZWJMYXllckltcGw6OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNpemUo
bV9sYXllci0+Ym91bmRzKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0TWFza3NUb0Jv
dW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgbV9sYXllci0+c2V0TWFza3NUb0JvdW5k
cyhtYXNrc1RvQm91bmRzKTsKK30KKworYm9vbCBXZWJMYXllckltcGw6Om1hc2tzVG9Cb3VuZHMo
KSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5tYXNrc1RvQm91bmRzKCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqIG1hc2tMYXllcikKK3sKKyAg
ICBtX2xheWVyLT5zZXRNYXNrTGF5ZXIobWFza0xheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJ
bXBsKj4obWFza0xheWVyKS0+bGF5ZXIoKSA6IDApOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6
c2V0UmVwbGljYUxheWVyKFdlYkxheWVyKiByZXBsaWNhTGF5ZXIpCit7CisgICAgbV9sYXllci0+
c2V0UmVwbGljYUxheWVyKHJlcGxpY2FMYXllciA/IHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+
KHJlcGxpY2FMYXllciktPmxheWVyKCkgOiAwKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNl
dE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBtX2xheWVyLT5zZXRPcGFjaXR5KG9wYWNp
dHkpOworfQorCitmbG9hdCBXZWJMYXllckltcGw6Om9wYWNpdHkoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2xheWVyLT5vcGFjaXR5KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRPcGFx
dWUoYm9vbCBvcGFxdWUpCit7CisgICAgbV9sYXllci0+c2V0T3BhcXVlKG9wYXF1ZSk7Cit9CisK
K2Jvb2wgV2ViTGF5ZXJJbXBsOjpvcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVy
LT5vcGFxdWUoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFBvc2l0aW9uKGNvbnN0IFdl
YkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0
aW9uKTsKK30KKworV2ViRmxvYXRQb2ludCBXZWJMYXllckltcGw6OnBvc2l0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX2xheWVyLT5wb3NpdGlvbigpKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQm
IG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybSh0cmFuc2Zvcm1h
dGlvbk1hdHJpeEZyb21Ta01hdHJpeDQ0KG1hdHJpeCkpOworfQorCit2b2lkIFdlYkxheWVySW1w
bDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtYXRyaXgpOworfQor
CitTa01hdHJpeDQ0IFdlYkxheWVySW1wbDo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAorewor
ICAgIHJldHVybiBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbGF5ZXItPnN1
YmxheWVyVHJhbnNmb3JtKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0VHJhbnNmb3Jt
KGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRUcmFuc2Zvcm0o
dHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRyaXgpKTsKK30KKwordm9pZCBX
ZWJMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KQoreworICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybShtYXRyaXgpOworfQorCitTa01h
dHJpeDQ0IFdlYkxheWVySW1wbDo6dHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2tN
YXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xheWVyLT50cmFuc2Zvcm0oKSk7Cit9
CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRlbnQp
Cit7CisgICAgbV9sYXllci0+c2V0SXNEcmF3YWJsZShkcmF3c0NvbnRlbnQpOworfQorCitib29s
IFdlYkxheWVySW1wbDo6ZHJhd3NDb250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXll
ci0+ZHJhd3NDb250ZW50KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRQcmVzZXJ2ZXMz
RChib29sIHByZXNlcnZlM0QpCit7CisgICAgbV9sYXllci0+c2V0UHJlc2VydmVzM0QocHJlc2Vy
dmUzRCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2li
aWxpdHkoYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpCit7CisgICAgbV9sYXllci0+
c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0
eSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3Ig
Y29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0
ZXJzKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IoY29uc3Qg
V2ViQ29sb3ImIGNvbG9yKQoreworICAgIG1fbGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3IoY29s
b3IpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aChmbG9hdCB3
aWR0aCkKK3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnTmFtZShXZWJTdHJpbmcgbmFtZSkKK3sKKyAgICBt
X2xheWVyLT5zZXREZWJ1Z05hbWUobmFtZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRB
bmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUpCit7CisgICAg
bV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShkZWxlZ2F0ZSk7Cit9CisKK2Jvb2wg
V2ViTGF5ZXJJbXBsOjphZGRBbmltYXRpb24oV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCit7Cisg
ICAgcmV0dXJuIG1fbGF5ZXItPmFkZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25J
bXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCkKK3sKKyAgICBtX2xheWVy
LT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6
cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9w
ZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKK3sKKyAgICBtX2xheWVyLT5sYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCBzdGF0aWNfY2FzdDxDQ0FjdGl2
ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHk+KHRhcmdldFByb3BlcnR5KSk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1l
T2Zmc2V0KQoreworICAgIG1fbGF5ZXItPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0aW1l
T2Zmc2V0KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJs
ZSBtb25vdG9uaWNUaW1lKQoreworICAgIG1fbGF5ZXItPnN1c3BlbmRBbmltYXRpb25zKG1vbm90
b25pY1RpbWUpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVzdW1lQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljVGltZSkKK3sKKyAgICBtX2xheWVyLT5yZXN1bWVBbmltYXRpb25zKG1vbm90
b25pY1RpbWUpOworfQorCitib29sIFdlYkxheWVySW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKCkK
K3sKKyAgICByZXR1cm4gbV9sYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJMYXllciogb3RoZXIpCit7Cisg
ICAgQVNTRVJUKG90aGVyKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihvdGhlcikt
Pm1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlcihtX2xheWVyLT5yZWxlYXNlTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Rm9y
Y2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNlKQoreworICAgIG1fbGF5ZXIt
PnNldEZvcmNlUmVuZGVyU3VyZmFjZShmb3JjZVJlbmRlclN1cmZhY2UpOworfQorCit2b2lkIFdl
YkxheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQgcG9zaXRpb24pCit7CisgICAg
bV9sYXllci0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOworfQorCit2b2lkIFdlYkxheWVy
SW1wbDo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCit7CisgICAgbV9sYXllci0+c2V0
U2Nyb2xsYWJsZShzY3JvbGxhYmxlKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEhhdmVX
aGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQoreworICAgIG1f
bGF5ZXItPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7
Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9v
bCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAgbV9sYXllci0+c2V0U2hvdWxkU2Ny
b2xsT25NYWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk7Cit9CisKK3ZvaWQgV2Vi
TGF5ZXJJbXBsOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2Vi
UmVjdD4mIHJlY3RzKQoreworICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdpb247CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKKyAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOworICAg
IH0KKyAgICBtX2xheWVyLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihyZWdpb24pOworCit9
CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXll
cnMoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXllci0+c2V0SXNDb250YWluZXJGb3JGaXhlZFBv
c2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRGaXhlZFRv
Q29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXllci0+c2V0Rml4ZWRUb0Nv
bnRhaW5lckxheWVyKGVuYWJsZSk7Cit9CisKK0xheWVyQ2hyb21pdW0qIFdlYkxheWVySW1wbDo6
bGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgK
aW5kZXggN2U0ZTc1MDYyNDhmNGNhNWVlNjdlNzUxYzM4ZThlYmY0YzE5YzE5Yi4uNGI0NGZiY2Q0
NDY5ZmExOTY4ZTU3NGM2YzkzNDk3ZmI5Yzc0ZTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAgLTI2LDE4ICsyNiw4MyBAQAogI2lmbmRlZiBXZWJMYXll
ckltcGxfaAogI2RlZmluZSBXZWJMYXllckltcGxfaAogCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1
bS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxh
eWVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBMYXllckNocm9taXVtOworfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2Vi
TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkxheWVyQ2hyb21pdW0geworY2xhc3MgV2ViTGF5
ZXJJbXBsIDogcHVibGljIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOworICAgIGV4cGxpY2l0IFdlYkxheWVySW1wbChQYXNz
UmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJMYXllcklt
cGwoKTsKKworICAgIC8vIFdlYkxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgdm9p
ZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGRDaGls
ZChXZWJMYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChXZWJM
YXllciosIHNpemVfdCBpbmRleCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcGxhY2VD
aGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3TGF5ZXIpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXIqPiYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2Vi
U2l6ZSBib3VuZHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFza3NU
b0JvdW5kcyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0JvdW5kcygp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG9wYXF1ZSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJG
bG9hdFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IHBvc2l0aW9u
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3Jt
KGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5
ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0IHRyYW5zZm9ybSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2Vi
RmlsdGVyT3BlcmF0aW9ucyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1Z0Jv
cmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWJ1Z05hbWUoV2ViU3RyaW5nKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0
aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpU
YXJnZXRQcm9wZXJ0eSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9u
KGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2Vi
VmVjdG9yPFdlYlJlY3Q+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldElzQ29udGFp
bmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIE9WRVJSSURFOworCisgICAgV2ViQ29y
ZTo6TGF5ZXJDaHJvbWl1bSogbGF5ZXIoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFdlYkxh
eWVySW1wbCgpOwotICAgIHZpcnR1YWwgfldlYkxheWVySW1wbCgpOworICAgIFJlZlB0cjxXZWJD
b3JlOjpMYXllckNocm9taXVtPiBtX2xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmlu
ZGV4IGYzOTdlNTM0YTg0MWQ0NTZiYTIzNzNkYjM1MTllYzVhZjRhZDZkNWIuLjdkZmJjZDEyOWVl
MTE3NWMyYWMwNTk2ODU4MjdkYzA1YzRkMWZhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk
ZSAiQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiQ0NSZW5kZXJpbmdTdGF0cy5oIgogI2lu
Y2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNpbmNs
dWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgpAQCAtODMsNyArODQsNyBAQCB2b2lkIFdl
YkxheWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSgpCiB2b2lkIFdlYkxheWVyVHJlZVZpZXc6
OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkKIHsKICAgICBpZiAocm9vdCkKLSAgICAgICAg
bV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcigqcm9vdCk7CisgICAgICAg
IG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoc3RhdGljX2Nhc3Q8V2Vi
TGF5ZXJJbXBsKj4ocm9vdCktPmxheWVyKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9wcml2YXRl
LT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVl
Vmlld0ltcGwuY3BwCmluZGV4IDFmMTkzM2ZjOTY2ZGEwYTkzNTA4NGUzMzJmMzRkYmY0Y2JlMWMx
NjAuLjFmZDgyMzk3NjhjMDliNjY5NTRkYzAyNTBlMjhiNmY5NWY2ZjA5NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRlICJD
Q1RocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldl
YkxheWVySW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oPgog
I2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllclRy
ZWVWaWV3Lmg+CkBAIC0xNDIsNyArMTQzLDcgQEAgUGFzc093blB0cjxXZWJMYXllclRyZWVWaWV3
SW1wbD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2wKICAg
ICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcgV2ViTGF5
ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwogICAgIGlmICghaW1wbC0+bGF5ZXJU
cmVlSG9zdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXllclRyZWVI
b3N0KCktPnNldFJvb3RMYXllcihyb290KTsKKyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCktPnNl
dFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwqPigmcm9vdCktPmxheWVy
KCkpOwogICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5kZXgg
NGE5MGE5ODhkNDFjNmNlNGU1NmJhNTlhNGQ3NmJkNjVhZmE5MTNkZC4uY2I3NTYyMzNlMWE3ZTQ4
OGIxNzE1M2YzMmEyM2YwNzlkZDcwYWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0xMDksOSArMTA5
LDkgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKCkK
ICAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7CiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlTdGF0
ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKGhh
c1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fdmlkZW9MYXll
ci5pc051bGwoKSkgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBXZWJWaWRlb0xheWVyOjpjcmVh
dGUodGhpcyk7Ci0gICAgICAgIG1fdmlkZW9MYXllci5zZXRPcGFxdWUobV9vcGFxdWUpOworICAg
IGlmIChoYXNWaWRlbygpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAmJiAhbV92
aWRlb0xheWVyKSB7CisgICAgICAgIG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKFdlYlZpZGVvTGF5
ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+c2V0T3Bh
cXVlKG1fb3BhcXVlKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTEzOCw4ICsxMzgsOCBAQCB2b2lk
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVwYWludCgpCiB7CiAgICAgQVNTRVJUKG1fbWVk
aWFQbGF5ZXIpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAoIW1f
dmlkZW9MYXllci5pc051bGwoKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCi0g
ICAgICAgIG1fdmlkZW9MYXllci5pbnZhbGlkYXRlKCk7CisgICAgaWYgKG1fdmlkZW9MYXllciAm
JiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCisgICAgICAgIG1fdmlkZW9MYXllci0+
bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAgICAgbV9tZWRpYVBsYXllci0+cmVwYWlu
dCgpOwogfQpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBs
OjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgIG1fb3BhcXVlID0gb3BhcXVlOwotICAgIGlmICghbV92aWRlb0xheWVyLmlzTnVs
bCgpKQotICAgICAgICBtX3ZpZGVvTGF5ZXIuc2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAgICBpZiAo
bV92aWRlb0xheWVyKQorICAgICAgICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZSht
X29wYXF1ZSk7CiAjZW5kaWYKIH0KIApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgV2ViTWVkaWFQ
bGF5ZXJDbGllbnRJbXBsOjpjYW5jZWxMb2FkKCkKIFdlYkxheWVyKiBXZWJNZWRpYVBsYXllckNs
aWVudEltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIEFTU0VSVChtX3N1cHBvcnRz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZyk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViVmlkZW9M
YXllcio+KCZtX3ZpZGVvTGF5ZXIpOworICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIgPyBtX3ZpZGVv
TGF5ZXItPmxheWVyKCkgOiAwOwogfQogI2VuZGlmCiAKQEAgLTc0NSw3ICs3NDUsNyBAQCBib29s
IFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygp
IGNvbnN0CiAKIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjphY2NlbGVyYXRlZFJlbmRl
cmluZ0luVXNlKCkKIHsKLSAgICByZXR1cm4gIW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBtX3Zp
ZGVvTGF5ZXIuYWN0aXZlKCk7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllciAmJiBtX3ZpZGVvTGF5
ZXItPmFjdGl2ZSgpOwogfQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0Vmlk
ZW9GcmFtZVByb3ZpZGVyQ2xpZW50KFdlYlZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50KiBjbGll
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXll
ckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbC5oCmluZGV4IDM3MzAxNWViNzU2YWYwZjQ1MTFkYWU5ODFlNmJmMmUxYjU0ZGQ0
ODguLjMyOWZkOWVjMGY0ODhhOWVhYWZlYTZlOTVjOGZiYjI0OTA0MTVjMGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5o
CkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBsYXllcjo6
UHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgUmVmUHRyPFdlYkhlbHBlclBsdWdpbkltcGw+IG1faGVs
cGVyUGx1Z2luOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBXZWJWaWRl
b0xheWVyIG1fdmlkZW9MYXllcjsKKyAgICBPd25QdHI8V2ViVmlkZW9MYXllcj4gbV92aWRlb0xh
eWVyOwogICAgIGJvb2wgbV9zdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAgICAgYm9v
bCBtX29wYXF1ZTsKICAgICBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCogbV92aWRlb0Zy
YW1lUHJvdmlkZXJDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDcxMzYxNzgwYjQ1YWI0YjlmMDg3MGFm
YzRlMDU3ZTRjMTI5ZTQ3MjAuLmYxMDc1NDkwNDJkZWM5MjBjYTI0YzM4ZTIwNWMyYmM4ZDRkNTk1
ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRh
aW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwCkBAIC0zNjYsMTEgKzM2NiwxMSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRh
aW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQogICAgIGlm
IChtX3RleHR1cmVJZCA9PSB0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChtX2lvU3VyZmFjZUxheWVyLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIW1faW9TdXJmYWNlTGF5
ZXIpOwogCi0gICAgaWYgKG1fdGV4dHVyZUxheWVyLmlzTnVsbCgpKQotICAgICAgICBtX3RleHR1
cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3RleHR1
cmVMYXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKyAgICBpZiAoIW1fdGV4dHVyZUxheWVy
KQorICAgICAgICBtX3RleHR1cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVyOjpjcmVhdGUoKSk7CisgICAgbV90ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0dXJl
SWQpOwogCiAgICAgLy8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3
aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBU
aGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtMzkwLDExICszOTAs
MTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQo
aW50IHdpZHRoLAogICAgIGlmIChpb1N1cmZhY2VJZCA9PSBtX2lvU3VyZmFjZUlkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBBU1NFUlQobV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpOworICAgIEFT
U0VSVCghbV90ZXh0dXJlTGF5ZXIpOwogCi0gICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIuaXNOdWxs
KCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRl
KCk7Ci0gICAgbV9pb1N1cmZhY2VMYXllci5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFj
ZUlkLCBXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIp
CisgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXllcjo6
Y3JlYXRlKCkpOworICAgIG1faW9TdXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRpZXMo
aW9TdXJmYWNlSWQsIFdlYlNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSWYgYW55b25l
IG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAg
ICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmlu
ZyBhIHN0eWxlIHJlY2FsYwpAQCAtNDA5LDExICs0MDksMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250
YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRoLAogdm9pZCBXZWJQbHVn
aW5Db250YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSgpCiB7CiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICghbV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpCi0g
ICAgICAgIG1fdGV4dHVyZUxheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV90ZXh0dXJlTGF5
ZXIpCisgICAgICAgIG1fdGV4dHVyZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAKLSAg
ICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5
ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2lvU3VyZmFjZUxheWVyKQorICAgICAgICBtX2lv
U3VyZmFjZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIH0KIApAQCAtNDgw
LDExICs0ODAsMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp6b29tTGV2ZWxDaGFu
Z2VkKGRvdWJsZSB6b29tTGV2ZWwpCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNldE9w
YXF1ZShib29sIG9wYXF1ZSkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0g
ICAgaWYgKCFtX3RleHR1cmVMYXllci5pc051bGwoKSkKLSAgICAgICAgbV90ZXh0dXJlTGF5ZXIu
c2V0T3BhcXVlKG9wYXF1ZSk7CisgICAgaWYgKG1fdGV4dHVyZUxheWVyKQorICAgICAgICBtX3Rl
eHR1cmVMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG9wYXF1ZSk7CiAKLSAgICBpZiAoIW1faW9T
dXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuc2V0T3BhcXVl
KG9wYXF1ZSk7CisgICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIpCisgICAgICAgIG1faW9TdXJmYWNl
TGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShvcGFxdWUpOwogI2VuZGlmCiB9CiAKQEAgLTU3Niw5
ICs1NzYsOSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbGxEZXN0cm95UGx1Z2lu
TG9hZE9ic2VydmVyKFdlYlBsdWdpbkxvYWRPYnNlcnZlcgogV2ViTGF5ZXIqIFdlYlBsdWdpbkNv
bnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIGlmIChtX3RleHR1cmVJ
ZCkKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqPigm
bV90ZXh0dXJlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV90ZXh0dXJlTGF5ZXItPmxheWVyKCk7
CiAgICAgaWYgKG1faW9TdXJmYWNlSWQpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFdlYklP
U3VyZmFjZUxheWVyKj4oJm1faW9TdXJmYWNlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV9pb1N1
cmZhY2VMYXllci0+bGF5ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmluZGV4
IDA3NGEwY2NkY2QwM2JiNTI1NmUzNjU4MDcyYTgxZTlhNWY4M2M4ODYuLjk5OGJlNmU0MTlmODk1
ZmE4MjE3OTQwMzkzNDRiYzE2ZjMxMWY5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTE4NiwxMCArMTg2LDEwIEBA
IHByaXZhdGU6CiAgICAgLy8gQSBjb21wb3NpdGVkIHBsdWdpbiB3aWxsIGVpdGhlciBoYXZlIG5v
IGNvbXBvc2l0ZWQgbGF5ZXIsIGEgdGV4dHVyZSBsYXllciwgb3IgYW4gSU9TdXJmYWNlIGxheWVy
LgogICAgIC8vIEl0IHdpbGwgbmV2ZXIgaGF2ZSBib3RoIGEgdGV4dHVyZSBhbmQgSU9TdXJmYWNl
IG91dHB1dC4KICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLSAgICBXZWJFeHRlcm5hbFRleHR1
cmVMYXllciBtX3RleHR1cmVMYXllcjsKKyAgICBPd25QdHI8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXI+IG1fdGV4dHVyZUxheWVyOwogCiAgICAgdW5zaWduZWQgbV9pb1N1cmZhY2VJZDsKLSAgICBX
ZWJJT1N1cmZhY2VMYXllciBtX2lvU3VyZmFjZUxheWVyOworICAgIE93blB0cjxXZWJJT1N1cmZh
Y2VMYXllcj4gbV9pb1N1cmZhY2VMYXllcjsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFzc29jaWF0
ZWQgc2Nyb2xsYmFyIGdyb3VwIG9iamVjdCwgY3JlYXRlZCBsYXppbHkuIFVzZWQgZm9yIFBlcHBl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGFibGVMYXllci5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGU4MWQ4MTM3NTljM2Y3OTA5N2Ey
OWMxNDY5YjI1NzBmOWJhODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oPgotCi0jaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgotCi1uYW1lc3BhY2UgV2ViS2l0
IHsKLQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50
IHBvc2l0aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24p
OwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9s
bGFibGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRTY3JvbGxhYmxlKHNjcm9sbGFibGUpOwotfQot
Ci12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29s
IGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRIYXZlV2hlZWxF
dmVudEhhbmRsZXJzKGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwotfQotCi12b2lkIFdlYlNjcm9s
bGFibGVMYXllcjo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xs
T25NYWluVGhyZWFkKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhy
ZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJsZUxh
eWVyOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVjdD4m
IHJlY3RzKQotewotICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdpb247Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJDb3JlOjpJbnRSZWN0
IHJlY3QgPSByZWN0c1tpXTsKLSAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOwotICAgIH0KLSAg
ICBtX3ByaXZhdGUtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHJlZ2lvbik7Ci0KLX0KLQot
dm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxh
eWVycyhib29sIGVuYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzQ29udGFpbmVyRm9yRml4
ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6
c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+
c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJs
ZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxhYmxl
TGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjBlODFkODEzNzU5YzNmNzkwOTdhMjljMTQ2OWIy
NTcwZjliYTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2Nyb2xsYWJsZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+CisK
KyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRp
b24oV2ViUG9pbnQgcG9zaXRpb24pCit7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxQb3NpdGlv
bihwb3NpdGlvbik7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxhYmxl
KGJvb2wgc2Nyb2xsYWJsZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFNjcm9sbGFibGUoc2Nyb2xs
YWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRIYXZlV2hlZWxFdmVudEhh
bmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKK3sKKyAgICBtX3ByaXZhdGUtPnNl
dEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Cit9CisKK3Zv
aWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCBz
aG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAgbV9wcml2YXRlLT5zZXRTaG91bGRTY3Jv
bGxPbk1haW5UaHJlYWQoc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKTsKK30KKwordm9pZCBXZWJT
Y3JvbGxhYmxlTGF5ZXI6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3Rv
cjxXZWJSZWN0PiYgcmVjdHMpCit7CisgICAgV2ViQ29yZTo6UmVnaW9uIHJlZ2lvbjsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFdlYkNv
cmU6OkludFJlY3QgcmVjdCA9IHJlY3RzW2ldOworICAgICAgICByZWdpb24udW5pdGUocmVjdCk7
CisgICAgfQorICAgIG1fcHJpdmF0ZS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24ocmVnaW9u
KTsKKworfQorCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JGaXhl
ZFBvc2l0aW9uTGF5ZXJzKGJvb2wgZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xs
YWJsZUxheWVyOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAg
bV9wcml2YXRlLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTY3JvbGxiYXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3Jv
bGxiYXJMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZDFiMjBmYjQw
ZjdjNjRkN2UxNzYzYWE2ODY2YjE0ZTE1ZjliYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xs
YmFyTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4KLQot
I2luY2x1ZGUgIlNjcm9sbGJhckxheWVyQ2hyb21pdW0uaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlNjcm9sbGJhckxheWVyOjpz
ZXRTY3JvbGxMYXllcihjb25zdCBXZWJMYXllciBsYXllcikKLXsKLSAgICBpbnQgaWQgPSBsYXll
ci5pc051bGwoKSA/IDAgOiBsYXllci5jb25zdFVud3JhcDxMYXllckNocm9taXVtPigpLT5pZCgp
OwotICAgIHVud3JhcDxTY3JvbGxiYXJMYXllckNocm9taXVtPigpLT5zZXRTY3JvbGxMYXllcklk
KGlkKTsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXIgV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShX
ZWJDb3JlOjpTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBh
aW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkpCi17
Ci0gICAgcmV0dXJuIFdlYlNjcm9sbGJhckxheWVyKFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNy
ZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwg
MCkpOwotfQotCi1XZWJTY3JvbGxiYXJMYXllcjo6V2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+JiBsYXllcikKLSAg
ICA6IFdlYkxheWVyKGxheWVyKQotewotfQotCi1XZWJTY3JvbGxiYXJMYXllciYgV2ViU2Nyb2xs
YmFyTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bT4mIGxheWVyKQotewotICAgIG1fcHJpdmF0ZSA9IGxheWVyOwotICAg
IHJldHVybiAqdGhpczsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQ
dHI8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiB1bndyYXA8
U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllcklt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBs
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lYzZlOTg5NWRkYmQ1OTE5NTdlMWFkMGU0ODVjMWIwMTBmYmZmODIy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xs
YmFyTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYlNjcm9sbGJhckxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiU2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1c2lu
ZyBXZWJDb3JlOjpTY3JvbGxiYXI7Cit1c2luZyBXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9t
aXVtOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2Nyb2xsYmFyTGF5ZXIqIFdlYlNjcm9s
bGJhckxheWVyOjpjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9s
bGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2Vv
bWV0cnk+IGdlb21ldHJ5KQoreworICAgIHJldHVybiBuZXcgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBs
KFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3Jv
bGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwgMCkpOworfQorCisKK1dlYlNjcm9sbGJhckxheWVy
SW1wbDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXll
ckltcGwobGF5ZXIpKSkKK3sKK30KKworV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjp+V2ViU2Nyb2xs
YmFyTGF5ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlNjcm9sbGJhckxheWVySW1wbDo6
bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOworfQorCit2b2lkIFdlYlNjcm9s
bGJhckxheWVySW1wbDo6c2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVyKQoreworICAgIGlu
dCBpZCA9IGxheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obGF5ZXIpLT5sYXllcigp
LT5pZCgpIDogMDsKKyAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJMYXllckNocm9taXVtKj4obV9s
YXllci0+bGF5ZXIoKSktPnNldFNjcm9sbExheWVySWQoaWQpOworfQorCisKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
Y3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9s
bGJhckxheWVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMGY3OWM1NThlNDEwMjJhZWNkNjI5OWVjNmZk
NDE4M2YxMjI5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTY3JvbGxiYXJMYXllckltcGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXZWJTY3JvbGxiYXJMYXllckltcGxfaAorI2RlZmluZSBXZWJTY3JvbGxiYXJMYXllckltcGxf
aAorCisjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+CisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgV2ViTGF5ZXJJbXBsOworCitjbGFzcyBXZWJTY3JvbGxiYXJMYXllckltcGwg
OiBwdWJsaWMgV2ViU2Nyb2xsYmFyTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdlYlNj
cm9sbGJhckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21p
dW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJTY3JvbGxiYXJMYXllckltcGwoKTsKKworICAgIC8vIFdl
YlNjcm9sbGJhckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxh
eWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxheWVy
KikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXll
cjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlNjcm9sbGJhckxheWVySW1wbF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM5MTRiMjYzMjk0YjUzZjU0NjYxMWFkY2E4OTgzODQ2
MTY3MGFlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlIDxwdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+Ci0KLSNpbmNsdWRlICJXZWJTb2xpZENv
bG9yTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotCi1uYW1l
c3BhY2UgV2ViS2l0IHsKLQotV2ViU29saWRDb2xvckxheWVyIFdlYlNvbGlkQ29sb3JMYXllcjo6
Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gV2ViU29saWRDb2xvckxheWVyKFdlYlNvbGlkQ29sb3JM
YXllckltcGw6OmNyZWF0ZSgpKTsKLX0KLQotV2ViU29saWRDb2xvckxheWVyOjpXZWJTb2xpZENv
bG9yTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiYgbm9kZSkK
LSAgICA6IFdlYkxheWVyKG5vZGUpCi17Ci19Ci0KLXZvaWQgV2ViU29saWRDb2xvckxheWVyOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0
ZS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5
ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXll
ckltcGwuY3BwCmluZGV4IDMzYjFhMzBlMzhjMzBhOTU3ZGRlM2E4NjFhNDg3ZGExN2M4MWQyOTku
Ljk0NDA0MjYyY2E4MWMzYTY3ZmI0ZTIxMmYzYmZlZDg2MTk5NjBlMzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCkBA
IC0yNiwyNCArMjYsMzcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJTb2xp
ZENvbG9yTGF5ZXJJbXBsLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUg
IlNvbGlkQ29sb3JMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisK
K3VzaW5nIFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiBXZWJTb2xpZENvbG9y
TGF5ZXJJbXBsOjpjcmVhdGUoKQorV2ViU29saWRDb2xvckxheWVyKiBXZWJTb2xpZENvbG9yTGF5
ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2xpZENvbG9yTGF5
ZXJJbXBsKCkpOworICAgIHJldHVybiBuZXcgV2ViU29saWRDb2xvckxheWVySW1wbChTb2xpZENv
bG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwogfQogCi1XZWJTb2xpZENvbG9yTGF5ZXJJbXBs
OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkKLSAgICA6IFNvbGlkQ29sb3JMYXllckNocm9taXVt
KCkKK1dlYlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwoUGFzc1Jl
ZlB0cjxTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0
UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIpKSkKIHsKLSAgICBzZXRJc0RyYXdhYmxlKHRydWUp
OworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYlNv
bGlkQ29sb3JMYXllckltcGw6On5XZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkKIHsKIH0KIAorV2Vi
TGF5ZXIqIFdlYlNvbGlkQ29sb3JMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9s
YXllci5nZXQoKTsKK30KKwordm9pZCBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpzZXRCYWNrZ3Jv
dW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENv
bG9yKGNvbG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBkMjY3
M2I0MmI2OGY4Y2QxZTcxMWI5MWUxMjcwZDY3NmQ1ZDc2OWVhLi43NzQyYmE0OTJkNGM1MTRkYzM3
ODI3YzBiZDZlMDUzMGRkZDQwMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oCkBAIC0yNiwxOCArMjYsMjggQEAKICNpZm5k
ZWYgV2ViU29saWRDb2xvckxheWVySW1wbF9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXllcklt
cGxfaAogCi0jaW5jbHVkZSAiU29saWRDb2xvckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlIDxw
dWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNv
bGlkQ29sb3JMYXllckNocm9taXVtOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdl
YkxheWVySW1wbDsKIAotY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbCA6IHB1YmxpYyBXZWJD
b3JlOjpTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bSB7CitjbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsIDogcHVibGljIFdlYlNvbGlkQ29sb3JMYXllciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViU29saWRDb2xvckxheWVySW1wbD4gY3JlYXRlKCk7Ci0KLXByb3RlY3RlZDoK
LSAgICBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CisgICAgZXhwbGljaXQgV2ViU29saWRDb2xv
ckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtPik7
CiAgICAgdmlydHVhbCB+V2ViU29saWRDb2xvckxheWVySW1wbCgpOworCisgICAgLy8gV2ViU29s
aWRDb2xvckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVy
KCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xv
cikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXll
cjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWRlb0xheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYz
NDIxNTVkYWNlZWFhYTdkODY2NjUzN2Y3MDAzYWExOTMzMDQyZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWRlb0xheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCi0jaW5j
bHVkZSA8cHVibGljL1dlYlZpZGVvTGF5ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdl
YlZpZGVvTGF5ZXIgV2ViVmlkZW9MYXllcjo6Y3JlYXRlKFdlYlZpZGVvRnJhbWVQcm92aWRlciog
cHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIFdlYlZpZGVvTGF5ZXIoV2ViQ29yZTo6VmlkZW9MYXll
ckNocm9taXVtOjpjcmVhdGUocHJvdmlkZXIpKTsKLX0KLQotV2ViVmlkZW9MYXllcjo6V2ViVmlk
ZW9MYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0g
ICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0KLQotYm9vbCBXZWJWaWRlb0xheWVyOjphY3RpdmUo
KSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKTsKLX0KLQot
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWRlb0xheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJmZWQ2NzQyZjJkYzdmOTA5ZmFlMjU1
MzcyMjZlMWFkMGUwOWJkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlZpZGVvTGF5ZXJJbXBsLmgiCisKKyNpbmNs
dWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlZpZGVvTGF5ZXIqIFdlYlZpZGVvTGF5ZXI6OmNyZWF0
ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAgIHJldHVybiBuZXcgV2Vi
VmlkZW9MYXllckltcGwoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJvdmlk
ZXIpKTsKK30KKworV2ViVmlkZW9MYXllckltcGw6OldlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQ
dHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIoYWRv
cHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllcikpKQoreworfQorCitXZWJWaWRlb0xheWVySW1w
bDo6fldlYlZpZGVvTGF5ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlZpZGVvTGF5ZXJJ
bXBsOjpsYXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wgV2Vi
VmlkZW9MYXllckltcGw6OmFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmxh
eWVyKCktPmxheWVyVHJlZUhvc3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5oIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yODdlNGI1ZTIwZGM5NmFiNzJiNjQwYjExYTI5YjY5ODdmZmNmZmFkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApAQCAt
MCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWRlb0xheWVySW1wbF9oCisjZGVmaW5l
IFdlYlZpZGVvTGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0xheWVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bTsKK30KKwor
bmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYlZpZGVv
TGF5ZXJJbXBsIDogcHVibGljIFdlYlZpZGVvTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0
IFdlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVt
Pik7CisgICAgdmlydHVhbCB+V2ViVmlkZW9MYXllckltcGwoKTsKKworICAgIC8vIFdlYlZpZGVv
TGF5ZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7CisKK3ByaXZh
dGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlm
IC8vIFdlYlZpZGVvTGF5ZXJJbXBsX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCmluZGV4IDBiZDNlYTExNmU0YzA1MmRlYWEwNWU2NjMwNzY0ZTMyZjljYTQx
NjguLjYwYzc1YzI5ZjJmYmQ0M2Q5MjZkYjgzYTY1MTkzZGMyYmEyNjM3ZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTQxMCw2ICs0MTAsNyBAQCBX
ZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwgbV9p
c0NhbmNlbGluZ0Z1bGxTY3JlZW4oZmFsc2UpCiAgICAgLCBtX2JlbmNobWFya1N1cHBvcnQodGhp
cykKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgLCBtX3Jvb3RMYXllcigw
KQogICAgICwgbV9yb290R3JhcGhpY3NMYXllcigwKQogICAgICwgbV9pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdBY3RpdmUoZmFsc2UpCiAgICAgLCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZChm
YWxzZSkKQEAgLTM1MTQsNiArMzUxNSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmFsbG93c0FjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmcoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5
ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgbV9yb290R3JhcGhpY3NMYXllciA9IGxh
eWVyOworICAgIG1fcm9vdExheWVyID0gbGF5ZXIgPyBsYXllci0+cGxhdGZvcm1MYXllcigpIDog
MDsKIAogICAgIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShsYXllcik7CiAgICAg
aWYgKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KSB7CkBAIC0zNTI3LDExICszNTI5LDggQEAg
dm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5
ZXIpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTY3JvbGxMYXllcihz
Y3JvbGxMYXllcik7CiAgICAgfQogCi0gICAgaWYgKGxheWVyKQotICAgICAgICBtX3Jvb3RMYXll
ciA9ICpsYXllci0+cGxhdGZvcm1MYXllcigpOwotCiAgICAgaWYgKCFtX2xheWVyVHJlZVZpZXcu
aXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIobGF5ZXIgPyAm
bV9yb290TGF5ZXIgOiAwKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldFJvb3RMYXllciht
X3Jvb3RMYXllcik7CiAKICAgICBJbnRSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIG1fc2l6ZS53aWR0
aCwgbV9zaXplLmhlaWdodCk7CiAgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Fj
dGl2ZSkKQEAgLTM2NDQsNyArMzY0Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygpLT5z
aG93RGVidWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+
c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5p
bml0aWFsaXplKHRoaXMsIG1fcm9vdExheWVyLCBsYXllclRyZWVWaWV3U2V0dGluZ3MpOworICAg
ICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6ZSh0aGlzLCAqbV9yb290TGF5ZXIsIGxheWVy
VHJlZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVsbCgp
KSB7CiAgICAgICAgICAgICBpZiAobV93ZWJTZXR0aW5ncy0+YXBwbHlEZWZhdWx0RGV2aWNlU2Nh
bGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkgIT0g
MSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMzk3ODM2ODBm
YTE5ODk4ODZjNDYwYjEzZDQwZGQxNDA0MWEyYTQyYi4uMTIzZjM4YzRjMzViZGU5NzEwOThkZGMy
NjBkODgxNDM1YTI5MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5oCkBAIC04MTQsNyArODE0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0IG1f
cm9vdExheWVyU2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVudEhv
c3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogICAgIFdlYkxheWVyVHJlZVZpZXcgbV9s
YXllclRyZWVWaWV3OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIFdlYkxheWVyKiBt
X3Jvb3RMYXllcjsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFwaGljc0xh
eWVyOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAgICAgYm9v
bCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGE1Y2E1NTEy
NGMyOTA0NzJjMjc0N2QwOTM5ZmIwMGRhMjA1OWY3N2QuLjQ5NDhmOTdjYzU4OGEwYjViYjIwMGQx
NDM5YmM0ZjkxNzliNDlmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTIyLDEzICsxMjIsMTMgQEAg
VEVTVChJbWFnZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCiAgICAgUmVmUHRyPElt
YWdlPiBub25PcGFxdWVJbWFnZSA9IFRlc3RJbWFnZTo6Y3JlYXRlKEludFNpemUoMTAwLCAxMDAp
LCBmYWxzZSk7CiAgICAgQVNTRVJUX1RSVUUobm9uT3BhcXVlSW1hZ2UuZ2V0KCkpOwogCi0gICAg
QVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLmlzTnVsbCgpKTsKKyAg
ICBBU1NFUlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpKTsKIAogICAgIGdy
YXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShvcGFxdWVJbWFnZS5nZXQoKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLm9wYXF1ZSgpKTsKKyAg
ICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCktPm9wYXF1ZSgpKTsK
IAogICAgIGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShub25PcGFxdWVJbWFnZS5n
ZXQoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKS5v
cGFxdWUoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIo
KS0+b3BhcXVlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IDY2NzIwMDQxMDM4NTk2MzliZWE2MjNj
Y2RlZjUxYjkyMzIzMGI2ZDAuLjliOGU1OGNhMTAwZTc3ZDkwMzY1YmQ0NjI4YjFkZTM4MTA5Mzc0
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KIAogI2luY2x1
ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJXZWJM
YXllckltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5oPgogI2luY2x1ZGUg
PHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExh
eWVyQ2xpZW50Lmg+CkBAIC03Niw5ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIC8v
IEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICAgICAgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgICAgICBtX3Jvb3RMYXllciA9IFdlYkxh
eWVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6
Y3JlYXRlKCkpOwogICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3Np
dGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5p
dGlhbGl6ZSgmbV9jbGllbnQsIG1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5n
cygpKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdmlldy5pbml0aWFsaXplKCZtX2NsaWVudCwg
Km1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIE1v
Y2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAgICAgfQogCkBAIC04
NywxNCArODgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBXZSBtYXkgZ2V0IGFueSBudW1iZXIg
b2Ygc2NoZWR1bGVDb21wb3NpdGUgY2FsbHMgZHVyaW5nIHNodXRkb3duLgogICAgICAgICBFWFBF
Q1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkp
OwogICAgICAgICBtX3ZpZXcuc2V0Um9vdExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5y
ZXNldCgpOworICAgICAgICBtX3Jvb3RMYXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVz
ZXQoKTsKICAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0K
IAogcHJvdGVjdGVkOgogICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1fY2xpZW50Owot
ICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5
ZXI7CiAgICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCkBAIC0xMDQsNzMgKzEwNSw3
MyBAQCBURVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiB7CiAgICAgLy8gQmFzZSBsYXllci4K
ICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55
TnVtYmVyKCkpOwotICAgIFdlYkxheWVyIGxheWVyID0gV2ViTGF5ZXI6OmNyZWF0ZSgpOwotICAg
IG1fcm9vdExheWVyLmFkZENoaWxkKGxheWVyKTsKKyAgICBPd25QdHI8V2ViTGF5ZXI+IGxheWVy
ID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hp
bGQobGF5ZXIuZ2V0KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZt
X2NsaWVudCk7CiAKICAgICBXZWJGbG9hdFBvaW50IHBvaW50KDMsIDQpOwogICAgIEVYUEVDVF9D
QUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAg
ICBsYXllci5zZXRBbmNob3JQb2ludChwb2ludCk7CisgICAgbGF5ZXItPnNldEFuY2hvclBvaW50
KHBvaW50KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQp
OwotICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXIuYW5jaG9yUG9pbnQoKSk7CisgICAgRVhQRUNU
X0VRKHBvaW50LCBsYXllci0+YW5jaG9yUG9pbnQoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2Ns
aWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7CiAgICAgZmxvYXQg
YW5jaG9yWiA9IDU7Ci0gICAgbGF5ZXIuc2V0QW5jaG9yUG9pbnRaKGFuY2hvclopOworICAgIGxh
eWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yWik7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJF
eHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEoYW5jaG9yWiwgbGF5ZXIuYW5j
aG9yUG9pbnRaKCkpOworICAgIEVYUEVDVF9FUShhbmNob3JaLCBsYXllci0+YW5jaG9yUG9pbnRa
KCkpOwogCiAgICAgV2ViU2l6ZSBzaXplKDcsIDgpOwogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50
LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXllci5zZXRC
b3VuZHMoc2l6ZSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKICAgICBNb2NrOjpWZXJp
ZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9FUShzaXplLCBs
YXllci5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKHNpemUsIGxheWVyLT5ib3VuZHMoKSk7CiAK
ICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRM
ZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBsYXllci0+
c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyLm1hc2tzVG9Cb3VuZHMoKSk7
CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSk7CiAKICAgICBFWFBFQ1Rf
Q0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwot
ICAgIFdlYkxheWVyIG90aGVyTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAgbV9yb290
TGF5ZXIuYWRkQ2hpbGQob3RoZXJMYXllcik7CisgICAgT3duUHRyPFdlYkxheWVyPiBvdGhlckxh
eWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRk
Q2hpbGQob3RoZXJMYXllci5nZXQoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVk
dWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE1hc2tMYXll
cihvdGhlckxheWVyKTsKKyAgICBsYXllci0+c2V0TWFza0xheWVyKG90aGVyTGF5ZXIuZ2V0KCkp
OwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKICAg
ICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFz
dCgxKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IDAuMTIzZjsKLSAgICBsYXllci5zZXRPcGFjaXR5
KG9wYWNpdHkpOworICAgIGxheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogICAgIE1vY2s6OlZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VRKG9wYWNp
dHksIGxheWVyLm9wYWNpdHkoKSk7CisgICAgRVhQRUNUX0VRKG9wYWNpdHksIGxheWVyLT5vcGFj
aXR5KCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkp
LlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBsYXll
ci0+c2V0T3BhcXVlKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIub3BhcXVlKCkpOworICAgIEVYUEVD
VF9UUlVFKGxheWVyLT5vcGFxdWUoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2No
ZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0UG9zaXRp
b24ocG9pbnQpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CiAgICAgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEocG9pbnQs
IGxheWVyLnBvc2l0aW9uKCkpOworICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXItPnBvc2l0aW9u
KCkpOwogCiAgICAgLy8gVGV4dHVyZSBsYXllci4KICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwg
c2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVh
dGUoKTsKLSAgICBtX3Jvb3RMYXllci5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXIpOworICAgIE93blB0
cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gdGV4dHVyZUxheWVyID0gYWRvcHRQdHIoV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQo
dGV4dHVyZUxheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0
aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29t
cG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIHRleHR1cmVMYXllci5zZXRUZXh0dXJl
SWQoMyk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMyk7CiAgICAgTW9jazo6VmVy
aWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9DQUxMKG1f
Y2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICB0ZXh0
dXJlTGF5ZXIuc2V0RmxpcHBlZCh0cnVlKTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldEZsaXBwZWQo
dHJ1ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsK
IAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhB
dExlYXN0KDEpKTsKICAgICBXZWJGbG9hdFJlY3QgdXZSZWN0KDAuMWYsIDAuMWYsIDAuOWYsIDAu
OWYpOwotICAgIHRleHR1cmVMYXllci5zZXRVVlJlY3QodXZSZWN0KTsKKyAgICB0ZXh0dXJlTGF5
ZXItPnNldFVWUmVjdCh1dlJlY3QpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtX2NsaWVudCk7CiAKIApAQCAtMTc4LDE0ICsxNzksMTQgQEAgVEVTVF9GKFdlYkxheWVy
VGVzdCwgQ2xpZW50KQogICAgIE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQgY29udGVudENsaWVu
dDsKICAgICBFWFBFQ1RfQ0FMTChjb250ZW50Q2xpZW50LCBwYWludENvbnRlbnRzKF8sIF8sIF8p
KS5UaW1lcyhBbnlOdW1iZXIoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxl
Q29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJDb250ZW50TGF5ZXIgY29u
dGVudExheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNvbnRlbnRDbGllbnQpOwotICAg
IG1fcm9vdExheWVyLmFkZENoaWxkKGNvbnRlbnRMYXllcik7CisgICAgT3duUHRyPFdlYkNvbnRl
bnRMYXllcj4gY29udGVudExheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVhdGUo
JmNvbnRlbnRDbGllbnQpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQoY29udGVudExheWVy
LT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGll
bnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRp
bWVzKEF0TGVhc3QoMSkpOwotICAgIGNvbnRlbnRMYXllci5zZXREcmF3c0NvbnRlbnQoZmFsc2Up
OworICAgIGNvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKICAg
ICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVD
VF9GQUxTRShjb250ZW50TGF5ZXIuZHJhd3NDb250ZW50KCkpOworICAgIEVYUEVDVF9GQUxTRShj
b250ZW50TGF5ZXItPmxheWVyKCktPmRyYXdzQ29udGVudCgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApp
bmRleCBiZWMyYzYwMzVhY2FlZjA3MzQwYTFiOGMzNjRlMWE5OTA4MmYzY2Q1Li4xYzE2MDJjMjM0
MTY5OWQ5ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAtNjAsOCArNjAs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAgIGlu
aXRpYWxpemVDb21wb3NpdG9yKCk7Ci0gICAgICAgIG1fcm9vdExheWVyID0gV2ViTGF5ZXI6OmNy
ZWF0ZSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwg
bV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKKyAgICAgICAgbV9y
b290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBFWFBFQ1Rf
VFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJMYXllclRy
ZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIG1fdmlldy5zZXRTdXJmYWNlUmVhZHkoKTsK
ICAgICB9CiAKQEAgLTcwLDEzICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIE1vY2s6OlZlcmlm
eUFuZENsZWFyRXhwZWN0YXRpb25zKGNsaWVudCgpKTsKIAogICAgICAgICBtX3ZpZXcuc2V0Um9v
dExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5yZXNldCgpOworICAgICAgICBtX3Jvb3RM
YXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVzZXQoKTsKICAgICAgICAgV2ViS2l0OjpX
ZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFdlYkxh
eWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7CiAgICAg
V2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159241</attachid>
            <date>2012-08-17 17:27:35 -0700</date>
            <delta_ts>2012-08-22 17:46:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94174-20120817172659.patch</filename>
            <type>text/plain</type>
            <size>200845</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1OTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBkY2RiNWVkZDAyZDlj
NmU4NDRiYmNiMzBhMjQ2NjQ2MTUzZTQ1ODg1Li4xZWVmZGE5OTlmNGJiMzU0YTU2Y2UzYTkzOWRj
NjM2YzI5YTEzMTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wOC0xNiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFs
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZXMgV2ViTGF5ZXIgZnJvbSBhIHZhbHVlIHR5cGUgdG8gYSBwdXJlIHZpcnR1
YWwgaW50ZXJmYWNlIGFuZCBjaGFuZ2VzIFdlYipMYXllcnMgZnJvbSBzdWJ0eXBlcyB0bworICAg
ICAgICBzdGFuZGFsb25lIHR5cGVzIHRoYXQgaGF2ZSBhIFdlYkxheWVyLiBUaGlzIGJldHRlciBp
c29sYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgaW50ZXJmYWNlIGFuZCwgc2luY2UK
KyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gcmUtd3JhcCBhbiBleGlzdGluZyBsYXllciwg
bWFrZXMgY2xlYW51cCBleHBsaWNpdCBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgY2FsbGVyIHRv
IGludm9rZQorICAgICAgICBzcGVjaWFsIGNsZWFudXAgbWV0aG9kcyBiZWZvcmUgc2h1dGRvd24u
CisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExheWVyLmg6CisgICAgICAg
IChXZWJDb250ZW50TGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllci5oOgorICAgICAgICAoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIpOgorICAg
ICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oOgorICAgICAgICAoV2Vi
SU9TdXJmYWNlTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVy
Lmg6CisgICAgICAgIChXZWJJbWFnZUxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXIuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyOjp+V2ViTGF5ZXIpOgorICAgICAgICAqIGNocm9taXVtL3B1
YmxpYy9XZWJTY3JvbGxhYmxlTGF5ZXIuaDoKKyAgICAgICAgKFdlYlNjcm9sbGFibGVMYXllcik6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg6CisgICAgICAg
IChXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNvbGlk
Q29sb3JMYXllci5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JM
YXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllcjo6fldlYlNvbGlkQ29s
b3JMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaDoKKyAg
ICAgICAgKFdlYlZpZGVvTGF5ZXIpOgorCiAyMDEyLTA4LTE3ICBaYWNoIEt1em5pYSAgPHpvcmtA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBTa2lhIE1hZ25pZmllciBm
aWx0ZXIgdG8gQ2hyb21pdW0gbGF5ZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThmMjg3OWM3MWQ4ZjBlNzdi
NGI1NmViYmQwMjJkNDM2ODc2NTc3My4uYzc0NTllYmJjMjQyN2I5NDRhMmYzNDEwZTIyMzgxZTg0
OTNlMWZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMi0wOC0xNiAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ2hh
bmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFsIGludGVy
ZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQx
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHVwZGF0ZXMgV2ViQ29yZSBjb2RlIGZvciB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIGNoYW5nZXMu
IENsYXNzZXMgdGhhdCBoYXZlIG93bmVyc2hpcCBvZiBzcGVjaWZpYyBsYXllcgorICAgICAgICB0
eXBlcyAoc3VjaCBhcyBEcmF3aW5nQnVmZmVyQ2hyb21pdW0sIENhbnZhczJETGF5ZXJCcmlkZ2Ug
YW5kIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0pIGhvbGQgb3duZXJzaGlwCisgICAgICAg
IG9mIGEgc3BlY2lmaWMgdHlwZSBhbmQgYSBwb2ludGVyIHRvIHRoZSBXZWJMYXllciB0byBHcmFw
aGljc0xheWVyQ2hyb21pdW0gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIGxheWVyCisgICAg
ICAgIHRyZWUuIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBob2xkcyBhIFdlYkNvbnRlbnRMYXllciBh
bmQgKG9wdGlvbmFsbHkpIGEgV2ViSW1hZ2VMYXllciBhbmQgV2ViTGF5ZXIgKGZvcgorICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyKSBhbmQgYXNzZW1ibGVzIHRoZSBmaW5hbCBsYXllciB0cmVlLgor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZh
dGU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChTY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cml2YXRlOjpzZXRTY3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGU6OnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNldFZlcnRpY2FsU2Nyb2xsYmFy
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpz
Y3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2Ny
b2xsYmFyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dFNjcm9sbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlv
bk9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6
c2V0TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJC
cmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWREZXZpY2VDb250ZXh0OjpB
Y2NlbGVyYXRlZERldmljZUNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZWxlcmF0ZWRE
ZXZpY2VDb250ZXh0OjpjbGVhckxheWVyKToKKyAgICAgICAgKEFjY2VsZXJhdGVkRGV2aWNlQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpBY2NlbGVyYXRlZERldmljZUNvbnRleHQ6OnByZXBh
cmVGb3JEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OkNhbnZh
czJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6
fkNhbnZhczJETGF5ZXJCcmlkZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJy
aWRnZTo6c2tDYW52YXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6
bGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzMkRMYXllckJyaWRnZTo6Y29udGV4dEFj
cXVpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExh
eWVyQnJpZGdlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENhbnZhczJETGF5ZXJC
cmlkZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZm
ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6
RHJhd2luZ0J1ZmZlclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RHJhd2luZ0J1ZmZlclBy
aXZhdGU6On5EcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5n
QnVmZmVyUHJpdmF0ZTo6bGF5ZXIpOgorICAgICAgICAoRHJhd2luZ0J1ZmZlclByaXZhdGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
On5HcmFwaGljc0xheWVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNocm9taXVtOjp1cGRhdGVOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldEZpbHRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tmYWNlVmlzaWJpbGl0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE9wYWNpdHkpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzTmVl
ZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6
c2V0TmVlZHNEaXNwbGF5SW5SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0Q29udGVudHNUb0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb01l
ZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVu
dHNUbyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3Zl
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c3Vz
cGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpyZXN1bWVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6YWRkTGlua0hpZ2hsaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OmRpZEZpbmlzaExpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNo
b3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlTWFza3NUb0JvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVyUHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllcklzRHJhd2FibGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllckJhY2tncm91bmRD
b2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNv
bnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjpoYXNDb250ZW50c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y29udGVudExheWVyKToKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNv
bnRlbnRzTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6cm9vdExheWVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6
CisKIDIwMTItMDgtMTcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjU5NDAuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IGY4ZGVlMTFiMjY1N2I5ZjIxMDExYTkzOTA4ZWQxMDMxYmRkNTgx
ZWEuLjg1OTU2ODAzMzExOWZmNDJmMDUzYzE5OGE3ZTBmYTkxZTg4NmM4OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE1IEBACisyMDEyLTA4LTE2ICBKYW1lcyBSb2Jp
bnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDaGFuZ2Ug
V2ViTGF5ZXIgZnJvbSBhIGNvbmNyZXRlIHR5cGUgdG8gYSBwdXJlIHZpcnR1YWwgaW50ZXJmYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE3NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdXBk
YXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYipMYXllciBmYW1pbHkgdG8gdGhlIG5l
dyBkZXNpZ24gYW5kIHVwZGF0ZXMgY2FsbGVycyBpbiBXZWJWaWV3SW1wbCAvCisgICAgICAgIE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdC4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAg
ICogc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KToKKyAgICAg
ICAgKFdlYktpdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRTY3JvbGxMYXllcik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0Vmlld3BvcnQpOgor
ICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKToK
KyAgICAgICAgKiBzcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0Lmg6CisgICAgICAgICogc3Jj
L1dlYkNvbnRlbnRMYXllckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5
ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OldlYkNv
bnRlbnRMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjp+
V2ViQ29udGVudExheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllcklt
cGw6OmxheWVyKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRl
bnRMYXllckltcGw6OmNsZWFyQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExh
eWVySW1wbDo6c2V0RG91YmxlU2lkZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZW50TGF5
ZXJJbXBsOjpzZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGVudExh
eWVySW1wbDo6c2V0VXNlTENEVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXll
ckltcGw6OnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKiBzcmMv
V2ViQ29udGVudExheWVySW1wbC5oOgorICAgICAgICAoV2ViQ29udGVudExheWVySW1wbCk6Cisg
ICAgICAgICogc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjbGVhckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0VGV4dHVyZUlkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRGbGlwcGVkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJlY3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldE9wYXF1
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UHJl
bXVsdGlwbGllZEFscGhhKToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsOjp3aWxsTW9kaWZ5VGV4dHVyZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4dCk6CisgICAgICAgIChXZWJUZXh0
dXJlVXBkYXRlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlckltcGw6
OldlYlRleHR1cmVVcGRhdGVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbDo6cHJlcGFyZVRleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGw6OmNvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbnRlbnRMYXllci5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSU9TdXJmYWNlTGF5
ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklP
U3VyZmFjZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YklPU3VyZmFjZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VM
YXllckltcGw6OldlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYklP
U3VyZmFjZUxheWVySW1wbDo6fldlYklPU3VyZmFjZUxheWVySW1wbCk6CisgICAgICAgIChXZWJL
aXQ6OldlYklPU3VyZmFjZUxheWVySW1wbDo6c2V0SU9TdXJmYWNlUHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAqIHNy
Yy9XZWJJT1N1cmZhY2VMYXllckltcGwuaDogQ29waWVkIGZyb20gU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJT1N1cmZhY2VMYXllckltcGwpOgorICAgICAgICAq
IHNyYy9XZWJJbWFnZUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSW1hZ2VMYXllcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW1hZ2VMYXllckltcGw6OldlYkltYWdlTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6
V2ViSW1hZ2VMYXllckltcGw6On5XZWJJbWFnZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6
OldlYkltYWdlTGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlTGF5
ZXJJbXBsOjpzZXRCaXRtYXApOgorICAgICAgICAqIHNyYy9XZWJJbWFnZUxheWVySW1wbC5oOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllci5jcHAu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJJbWFn
ZUxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllckltcGw6OmFkZENoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjppbnNlcnRDaGlsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVwbGFj
ZUNoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlRnJvbVBhcmVudCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQWxsQ2hpbGRyZW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllckltcGw6OnNldEFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjphbmNob3JQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6
c2V0QW5jaG9yUG9pbnRaKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjphbmNob3JQ
b2ludFopOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldEJvdW5kcyk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6Ym91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjpzZXRNYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjptYXNrc1RvQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRN
YXNrTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFJlcGxpY2FMYXll
cik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0T3BhY2l0eSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkxheWVySW1wbDo6b3BhY2l0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVySW1wbDo6c2V0T3BhcXVlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpvcGFx
dWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllckltcGw6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJ
bXBsOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0RHJhd3NDb250ZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpkcmF3c0NvbnRlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OnNldFByZXNlcnZlczNEKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
SW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OnNldERlYnVnQm9yZGVyQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
OnNldERlYnVnQm9yZGVyV2lkdGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNl
dERlYnVnTmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5pbWF0aW9u
RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmFkZEFuaW1hdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6c3VzcGVuZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnJlc3VtZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXll
ckltcGw6Omhhc0FjdGl2ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6dHJhbnNmZXJBbmltYXRpb25zVG8pOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
OnNldEZvcmNlUmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6
Y2xlYXJSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRT
Y3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U2Nyb2xs
YWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0SGF2ZVdoZWVsRXZlbnRI
YW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0U2hvdWxkU2Nyb2xs
T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXROb25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0SXND
b250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllckltcGw6OmxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBsLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYkxh
eWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRyZWVWaWV3OjpzZXRS
b290TGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgorICAgICAgICAqIHNy
Yy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZXBhaW50KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJN
ZWRpYVBsYXllckNsaWVudEltcGw6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmFjY2VsZXJhdGVkUmVuZGVyaW5nSW5Vc2UpOgorICAg
ICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5n
VGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVySW1wbDo6c2V0
QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFpbmVy
SW1wbDo6Y29tbWl0QmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5D
b250YWluZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250
YWluZXJJbXBsOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViUGx1Z2luQ29udGFp
bmVySW1wbC5oOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6CisgICAgICAgICog
c3JjL1dlYlNjcm9sbGFibGVMYXllckltcGwuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9zaXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbGFibGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldEhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNob3VsZFNj
cm9sbE9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6
c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxh
YmxlTGF5ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNjcm9sbGFibGVMYXllcjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKToK
KyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVyLmNwcC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OldlYlNjcm9sbGJhckxheWVy
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1wbDo6fldlYlNjcm9s
bGJhckxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVySW1wbDo6
bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OnNldFNjcm9s
bExheWVyKToKKyAgICAgICAgKiBzcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaC4K
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNjcm9s
bGJhckxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpsYXllcik6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpz
ZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAqIHNyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJT
b2xpZENvbG9yTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlkZW9MYXllckltcGwuY3Bw
OiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVyLmNw
cC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjpXZWJWaWRlb0xheWVy
SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZGVvTGF5ZXJJbXBsOjp+V2ViVmlkZW9MYXll
ckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6bGF5ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6YWN0aXZlKToKKyAgICAgICAgKiBzcmMv
V2ViVmlkZW9MYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZGVvTGF5ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViVmlkZW9MYXllckltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRSb290R3JhcGhpY3NMYXllcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3Rp
dmUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuaDoKKyAg
ICAgICAgKiB0ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL1dlYkxheWVyVGVzdC5jcHA6CisgICAgICAgICog
dGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwOgorCiAyMDEyLTA4LTE3ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTI1OTIyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29udGVudExheWVyLmgKaW5kZXggNzMzNmJmYWJjZDc0NjE4MjE4YjlkZWRlYmEwMWJj
MjczMjMyNmM2Ny4uNDUzODFlZTkzZmYwNjE4MGM1YzFhYjVkOGEwMzA1NjlmM2NkNTM1NSAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIu
aAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5o
CkBAIC0yOSw1MyArMjksMzYgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJX
ZWJTY3JvbGxhYmxlTGF5ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgQ29udGVu
dExheWVyQ2hyb21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVu
dExheWVyQ2xpZW50OwotY2xhc3MgV2ViQ29udGVudExheWVySW1wbDsKIAotY2xhc3MgV2ViQ29u
dGVudExheWVyIDogcHVibGljIFdlYlNjcm9sbGFibGVMYXllciB7CitjbGFzcyBXZWJDb250ZW50
TGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkNvbnRlbnRMYXll
ciBjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50Kik7CisgICAgLy8gVGhlIGNsaWVudCBtdXN0
IG91dGxpdmUgdGhlIFdlYkNvbnRlbnRMYXllci4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBX
ZWJDb250ZW50TGF5ZXIqIGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqKTsKIAotICAgIFdl
YkNvbnRlbnRMYXllcigpIHsgfQotICAgIFdlYkNvbnRlbnRMYXllcihjb25zdCBXZWJDb250ZW50
TGF5ZXImIGxheWVyKSA6IFdlYlNjcm9sbGFibGVMYXllcihsYXllcikgeyB9CiAgICAgdmlydHVh
bCB+V2ViQ29udGVudExheWVyKCkgeyB9Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0o
Y29uc3QgV2ViQ29udGVudExheWVyJiBsYXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjph
c3NpZ24obGF5ZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgLy8gQ2Fs
bGVkIHdoZW4gdGhlIFdlYkNvbnRlbnRMYXllckNsaWVudCBpcyBnb2luZyBhd2F5IGFuZCBzaG91
bGQgbm90IGJlIHVzZWQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7Cisg
ICAgLy8gVGhlIFdlYkNvbnRlbnRMYXllciBoYXMgb3duZXJzaGlwIG9mIHRoaXMgd3JhcHBlci4K
KyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpID0gMDsKIAogICAgIC8vIFNldCB0byB0cnVl
IGlmIHRoZSBiYWNrc2lkZSBvZiB0aGlzIGxheWVyJ3MgY29udGVudHMgc2hvdWxkIGJlIHZpc2li
bGUgd2hlbiBjb21wb3NpdGVkLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXREb3VibGVTaWRlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RG91YmxlU2lkZWQoYm9vbCkgPSAwOwogCiAgICAgLy8gU2V0IHRvIGFwcGx5IGEgc2NhbGUgZmFj
dG9yIHVzZWQgd2hlbiBwYWludGluZyBhbmQgZHJhd2luZyB0aGlzIGxheWVyJ3MgY29udGVudC4g
RGVmYXVsdHMgdG8gMS4wLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRDb250ZW50c1NjYWxl
KGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgPSAwOwog
CiAgICAgLy8gU2V0IHRvIHJlbmRlciB0ZXh0IGluIHRoaXMgbGF5ZXIgd2l0aCBMQ0QgYW50aWFs
aWFzaW5nLiBPbmx5IHNldCBpZiB5b3Uga25vdyB0aGF0IHRoaXMgbGF5ZXIgd2lsbCBiZQogICAg
IC8vIGRyYXduIGluIGEgd2F5IHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgLSBpLmUuIG9wYXF1ZSBi
YWNrZ3JvdW5kLCBub3Qgcm90YXRlZCBvciBzY2FsZWQsIGV0Yy4KICAgICAvLyBEZWZhdWx0cyB0
byBmYWxzZTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VXNlTENEVGV4dChib29sKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VXNlTENEVGV4dChib29sKSA9IDA7CiAKICAgICAvLyBTZXQgdG8g
ZHJhdyBhIHN5c3RlbS1kZWZpbmVkIGNoZWNrZXJib2FyZCBpZiB0aGUgY29tcG9zaXRvciB3b3Vs
ZCBvdGhlcndpc2UgZHJhdyBhIHRpbGUgaW4gdGhpcyBsYXllcgogICAgIC8vIGFuZCB0aGUgYWN0
dWFsIGNvbnRlbnRzIGFyZSB1bmF2YWlsYWJsZS4gSWYgZmFsc2UsIHRoZSBjb21wb3NpdG9yIHdp
bGwgZHJhdyB0aGUgbGF5ZXIncyBiYWNrZ3JvdW5kIGNvbG9yCiAgICAgLy8gZm9yIHRoZXNlIHRp
bGVzLgogICAgIC8vIERlZmF1bHRzIHRvIGZhbHNlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJvb2wpOwotCi0jaWYgV0VCS0lUX0lN
UExFTUVOVEFUSU9OCi0gICAgV2ViQ29udGVudExheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBXZWJDb250ZW50TGF5ZXImIG9w
ZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q29udGVudExheWVyQ2hyb21p
dW0+Jik7Ci0gICAgb3BlcmF0b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXll
ckNocm9taXVtPigpIGNvbnN0OwotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNldERyYXdDaGVj
a2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkV4dGVybmFsVGV4dHVyZUxheWVyLmgKaW5kZXggYjE5YzA1ZjNlM2IwOThkOGViMDNlZTU2MTI3
OTY0NmI5MDgxZjQ1NC4uOTJkMmM0ZmVlODc2YTkxYmRiZjYwYmUzODUxMzczY2NlZjcxYjE3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXIuaApAQCAtMzAsMTAgKzMwLDYgQEAKICNpbmNsdWRlICJXZWJGbG9h
dFJlY3QuaCIKICNpbmNsdWRlICJXZWJMYXllci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1j
bGFzcyBUZXh0dXJlTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwpAQCAtNDQsNDkgKzQwLDQzIEBAIGNs
YXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50OwogLy8gV2hlbiBpbiBzaW5nbGUtdGhy
ZWFkIG1vZGUsIHRoaXMgbWVhbnMgZHVyaW5nIFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgp
LgogLy8gV2hlbiB1c2luZyB0aGUgdGhyZWFkZWQgY29tcG9zaXRvciwgdGhpcyBjYW4gbWVhbiBh
dCBhbiBhcmJpdHJhcnkgdGltZSB1bnRpbAogLy8gdGhlIFdlYkxheWVyVHJlZVZpZXcgaXMgZGVz
dHJveWVkLgotY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIg
eworY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgewogcHVibGljOgogICAgIC8vIFRoZSBv
d25lciBvZiB0aGlzIGxheWVyIG1heSBvcHRpb25hbGx5IHByb3ZpZGUgYSBjbGllbnQuIFRoaXMg
Y2xpZW50IHdpbGwKICAgICAvLyBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbXBvc2l0b3Igd2lz
aGVzIHRvIHByb2R1Y2UgYSBuZXcgZnJhbWUgYW5kIGNhbgogICAgIC8vIHByb3ZpZGUgYSBuZXcg
ZnJvbnQgYnVmZmVyIHRleHR1cmUgSUQuIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBjbGllbnQgd2Fu
dHMgdG8KICAgICAvLyBpbXBsZW1lbnQgYSBkb3VibGUtYnVmZmVyaW5nIHNjaGVtZSB0aGF0IGlz
IHN5bmNocm9uaXplZCB3aXRoIHRoZSBjb21wb3NpdG9yLCBmb3IgaW5zdGFuY2UuCi0gICAgV0VC
S0lUX0VYUE9SVCBzdGF0aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgY3JlYXRlKFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyQ2xpZW50KiA9IDApOwotCi0gICAgLy8gSW5kaWNhdGVzIHRoYXQgdGhl
IGNsaWVudCBmb3IgdGhpcyBsYXllciBpcyBnb2luZyBhd2F5IGFuZCBzaG91bGRuJ3QgYmUgdXNl
ZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJDbGllbnQoKTsKKyAgICAvLyBUaGUgY2xp
ZW50IG11c3Qgb3V0bGl2ZSB0aGUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuCisgICAgV0VCS0lU
X0VYUE9SVCBzdGF0aWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIqIGNyZWF0ZShXZWJFeHRlcm5h
bFRleHR1cmVMYXllckNsaWVudCogPSAwKTsKIAotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVy
KCkgeyB9CiAgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoKSB7IH0KIAorICAg
IHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworCiAgICAgLy8gU2V0cyB0aGUgdGV4dHVy
ZSBpZCB0aGF0IHJlcHJlc2VudHMgdGhlIGxheWVyLCBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZQog
ICAgIC8vIGNvbXBvc2l0b3IgY29udGV4dC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0VGV4
dHVyZUlkKHVuc2lnbmVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZUlkKHVuc2lnbmVk
KSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgb3Igbm90IHRoZSB0ZXh0dXJlIHNob3VsZCBi
ZSBmbGlwcGVkIGluIHRoZSBZIGRpcmVjdGlvbiB3aGVuCiAgICAgLy8gcmVuZGVyZWQuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEZsaXBwZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dEZsaXBwZWQoYm9vbCkgPSAwOwogCiAgICAgLy8gU2V0cyB0aGUgcmVjdCBpbiBVViBzcGFjZSBv
ZiB0aGUgdGV4dHVyZSB0aGF0IGlzIG1hcHBlZCB0byB0aGUgbGF5ZXIKICAgICAvLyBib3VuZHMu
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYpID0gMDsKIAog
ICAgIC8vIFNldHMgd2hldGhlciBldmVyeSBwaXhlbCBpbiB0aGlzIGxheWVyIGlzIG9wYXF1ZS4g
RGVmYXVsdHMgdG8gZmFsc2UuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29s
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhcXVlKGJvb2wpID0gMDsKIAogICAgIC8vIFNldHMg
d2hldGhlciB0aGlzIGxheWVyJ3MgdGV4dHVyZSBoYXMgcHJlbXVsdGlwbGllZCBhbHBoYSBvciBu
b3QuIERlZmF1bHRzIHRvIHRydWUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFByZW11bHRp
cGxpZWRBbHBoYShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhh
KGJvb2wpID0gMDsKIAogICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBtb3N0IHJlY2VudGx5IHBy
b3ZpZGVkIHRleHR1cmUgSUQgaXMgYWJvdXQgdG8gYmUgbW9kaWZpZWQgZXh0ZXJuYWxseS4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgd2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbE1vZGlmeVRleHR1cmUoKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBj
b250ZXh0IHNob3VsZCBiZSByYXRlIGxpbWl0ZWQgYnkgdGhlIGNvbXBvc2l0b3IuIFJhdGUgbGlt
aXRpbmcgd29ya3MgYnkgYmxvY2tpbmcKICAgICAvLyBpbnZhbGlkYXRlKCkgYW5kIGludmFsaWRh
dGVSZWN0KCkgY2FsbHMgaWYgdGhlIGNvbXBvc2l0b3IgaXMgdG9vIG1hbnkgZnJhbWVzIGJlaGlu
ZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKTsKLQot
cHJpdmF0ZToKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJFeHRl
cm5hbFRleHR1cmVMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVt
Pik7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmF0ZUxpbWl0Q29udGV4dChib29sKSA9
IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0
Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaAppbmRleCAzN2E0YzY3OTJjMWM3
NmVlY2MwYzYwYzBmM2ZjOWQwZWEzZDMzOWJiLi5iY2YxNDExMmFhNGI5NDkwZDAzNjlkYmE0YTdj
ZjVhMDg3NjZmMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYklPU3VyZmFjZUxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJJT1N1cmZhY2VMYXllci5oCkBAIC0zMCwyNyArMzAsMTkgQEAKICNpbmNsdWRlICJXZWJM
YXllci5oIgogI2luY2x1ZGUgIldlYlNpemUuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xh
c3MgSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8v
IFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGxheWVyIHRoYXQgcmVuZGVycyBhbiBleHRlcm5hbGx5
IG1hbmFnZWQgSU9TdXJmYWNlLgotY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgOiBwdWJsaWMgV2Vi
TGF5ZXIgeworY2xhc3MgV2ViSU9TdXJmYWNlTGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9F
WFBPUlQgc3RhdGljIFdlYklPU3VyZmFjZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIFdlYklPU3VyZmFjZUxheWVyKiBjcmVhdGUoKTsKIAotICAgIFdlYklPU3VyZmFj
ZUxheWVyKCkgeyB9CiAgICAgdmlydHVhbCB+V2ViSU9TdXJmYWNlTGF5ZXIoKSB7IH0KIAotICAg
IC8vIFNldHMgdGhlIElPIHN1cmZhY2UgaWQgdGhhdCByZXByZXNlbnRzIHRoaXMgbGF5ZXIncyBj
b250ZW50cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1
bnNpZ25lZCBpb1N1cmZhY2VJZCwgV2ViU2l6ZSk7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5
ZXIoKSA9IDA7CiAKLXByaXZhdGU6Ci0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhw
bGljaXQgV2ViSU9TdXJmYWNlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJT1N1cmZhY2VMYXll
ckNocm9taXVtPik7Ci0jZW5kaWYKKyAgICAvLyBTZXRzIHRoZSBJTyBzdXJmYWNlIGlkIHRoYXQg
cmVwcmVzZW50cyB0aGlzIGxheWVyJ3MgY29udGVudHMuCisgICAgdmlydHVhbCB2b2lkIHNldElP
U3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUpID0gMDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0v
cHVibGljL1dlYkltYWdlTGF5ZXIuaAppbmRleCBhOTE2ODM1ZjIwNWJjMDZmNTg0ZDQyMzMyYTQx
ZTRjNjBlOTkwMGI0Li5jNzczN2YzMWEzNzk2ZmQwNGRjZGM0YmRlZjI2YjVhYjU2MGMwMTZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIu
aAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkltYWdlTGF5ZXIuaApA
QCAtMzAsMjQgKzMwLDE2IEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2Vi
TGF5ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgSW1hZ2VMYXllckNocm9taXVt
OwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViSW1hZ2VMYXllciA6IHB1Ymxp
YyBXZWJMYXllciB7CitjbGFzcyBXZWJJbWFnZUxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRf
RVhQT1JUIHN0YXRpYyBXZWJJbWFnZUxheWVyIGNyZWF0ZSgpOworICAgIFdFQktJVF9FWFBPUlQg
c3RhdGljIFdlYkltYWdlTGF5ZXIqIGNyZWF0ZSgpOwogCi0gICAgV2ViSW1hZ2VMYXllcigpIHsg
fQogICAgIHZpcnR1YWwgfldlYkltYWdlTGF5ZXIoKSB7IH0KIAotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCBzZXRCaXRtYXAoU2tCaXRtYXApOwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0g
ICAgZXhwbGljaXQgV2ViSW1hZ2VMYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJD
aHJvbWl1bT4pOwotI2VuZGlmCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEJpdG1hcChTa0JpdG1hcCkgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgK
aW5kZXggNjQzMWY4NDhjNmE5OGY5YzZlYjI1YzFkY2FkYzJhMTM2MjNkNjUxZi4uYWZlNTliMTlk
NGExNzk5ZmM4MTJlMDlkYjk3ZTU0YzA2YjM5ODhmYiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMjksODggKzI5LDgzIEBACiAjaW5jbHVkZSAiV2Vi
QW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiV2ViQ29sb3IuaCIKICNpbmNsdWRlICJXZWJDb21tb24u
aCIKKyNpbmNsdWRlICJXZWJQb2ludC5oIgogI2luY2x1ZGUgIldlYlByaXZhdGVQdHIuaCIKKyNp
bmNsdWRlICJXZWJSZWN0LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2Vi
VmVjdG9yLmgiCiAKIGNsYXNzIFNrTWF0cml4NDQ7Ci1uYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNz
IExheWVyQ2hyb21pdW07IH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJBbmltYXRp
b25EZWxlZ2F0ZTsKIGNsYXNzIFdlYkZpbHRlck9wZXJhdGlvbnM7CiBjbGFzcyBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDsKK2NsYXNzIFdlYlNjcm9sbGFibGVMYXllcjsKIHN0cnVjdCBXZWJGbG9h
dFBvaW50Owogc3RydWN0IFdlYkZsb2F0UmVjdDsKIHN0cnVjdCBXZWJTaXplOwogCitjbGFzcyBX
ZWJMYXllckltcGw7CisKIGNsYXNzIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQ
T1JUIHN0YXRpYyBXZWJMYXllciBjcmVhdGUoKTsKLQotICAgIFdlYkxheWVyKCkgeyB9Ci0gICAg
V2ViTGF5ZXIoY29uc3QgV2ViTGF5ZXImIGxheWVyKSB7IGFzc2lnbihsYXllcik7IH0KLSAgICB2
aXJ0dWFsIH5XZWJMYXllcigpIHsgcmVzZXQoKTsgfQotICAgIFdlYkxheWVyJiBvcGVyYXRvcj0o
Y29uc3QgV2ViTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgYXNzaWduKGxheWVyKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLSAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0
dXJuIG1fcHJpdmF0ZS5pc051bGwoKTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgp
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsKLSAgICBX
RUJLSVRfRVhQT1JUIGJvb2wgZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7CisjZGVmaW5l
IFdFQkxBWUVSX0lTX1BVUkVfVklSVFVBTAorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxh
eWVyKiBjcmVhdGUoKTsKKworICAgIHZpcnR1YWwgfldlYkxheWVyKCkgeyB9CiAKICAgICAvLyBT
ZXRzIGEgcmVnaW9uIG9mIHRoZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0
ZSBpdHMgY29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29u
c3QgV2ViRmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0
IFdlYkZsb2F0UmVjdCYpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBp
bnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgaW52YWxpZGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAw
OwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90
IGluZGV4KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxh
eWVyJiByZWZlcmVuY2UsIGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7Ci0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcj4mKTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIFdFQktJVF9FWFBPUlQg
dm9pZCByZW1vdmVBbGxDaGlsZHJlbigpOworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3Qg
dGFrZSBvd25lcnNoaXAgb2YgdGhlIFdlYkxheWVyKiBwYXJhbWV0ZXIuCisgICAgdmlydHVhbCB2
b2lkIGFkZENoaWxkKFdlYkxheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGls
ZChXZWJMYXllciosIHNpemVfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBsYWNl
Q2hpbGQoV2ViTGF5ZXIqIHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcio+JikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVBbGxDaGlsZHJlbigpID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRBbmNob3JQb2ludChjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBX
ZWJGbG9hdFBvaW50IGFuY2hvclBvaW50KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEFu
Y2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJGbG9h
dFBvaW50IGFuY2hvclBvaW50KCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldEFuY2hvclBvaW50WihmbG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBhbmNob3JQ
b2ludFooKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSA9
IDA7CisgICAgdmlydHVhbCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCA9IDA7CiAKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUmKTsKLSAgICBXRUJLSVRf
RVhQT1JUIFdlYlNpemUgYm91bmRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEJvdW5k
cyhjb25zdCBXZWJTaXplJikgPSAwOworICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25z
dCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsK
LSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OworICAgIHZpcnR1
YWwgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbWFz
a3NUb0JvdW5kcygpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNYXNr
TGF5ZXIoY29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwbGlj
YUxheWVyKGNvbnN0IFdlYkxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihX
ZWJMYXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVy
KikgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotICAg
IFdFQktJVF9FWFBPUlQgZmxvYXQgb3BhY2l0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBz
ZXRPcGFjaXR5KGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3Qg
PSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgb3BhcXVlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1
ZShib29sKSA9IDA7CisgICAgdmlydHVhbCBib29sIG9wYXF1ZSgpIGNvbnN0ID0gMDsKIAotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0g
ICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmly
dHVhbCB2b2lkIHNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmly
dHVhbCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKTsKLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFu
c2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29u
c3QgU2tNYXRyaXg0NCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zv
cm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCBTa01h
dHJpeDQ0IHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAg
IFdFQktJVF9FWFBPUlQgU2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAg
ICB2aXJ0dWFsIFNrTWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0
cyB3aGV0aGVyIHRoZSBsYXllciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0gICAgV0VCS0lU
X0VYUE9SVCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRE
cmF3c0NvbnRlbnQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBj
b25zdCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpID0gMDsKIAogICAgIC8vIE1h
cmsgdGhhdCB0aGlzIGxheWVyIHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIHRyYW5zZm9ybSBhbmQg
ZG91YmxlLXNpZGVkCiAgICAgLy8gcHJvcGVydGllcyBpbiBkZXRlcm1pbmluZyB0aGlzIGxheWVy
J3MgYmFja2ZhY2UgdmlzaWJpbGl0eSBpbnN0ZWFkIG9mCkBAIC0xMTksMTA1ICsxMTQsNjggQEAg
cHVibGljOgogICAgIC8vIE5vdGU6IFRoaXMgQVBJIGlzIHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3
aXRoIHZpc2liaWxpdHkgdGhlIGhhbmRsaW5nIG9mCiAgICAgLy8gV2ViS2l0IGxheWVycyB0aGF0
IGhhdmUgYSBjb250ZW50cyBsYXllciAoY2FudmFzLCBwbHVnaW4sIFdlYkdMLCB2aWRlbywKICAg
ICAvLyBldGMpLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZp
c2liaWxpdHkoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZVBhcmVudEJhY2tmYWNlVmlz
aWJpbGl0eShib29sKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3Vu
ZENvbG9yKFdlYkNvbG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdl
YkNvbG9yKSA9IDA7CiAKICAgICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2lu
ZyBpbiBhIG5ld2x5IGluc3RhbnRpYXRlZAogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgb2Jq
ZWN0LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9w
ZXJhdGlvbnMmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJP
cGVyYXRpb25zJikgPSAwOwogCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBwaXhlbHMgdGhhdCBz
aG93IHRocm91Z2ggdGhlIGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAgICAvLyBOb3RlOiBU
aGVzZSBmaWx0ZXJzIGFyZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3biBk
aXJlY3RseQogICAgIC8vIHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRoIGFuIG9wYXF1ZSBi
YWNrZ3JvdW5kLiBUaGlzIG1lYW5zIGlmIGFuCiAgICAgLy8gYW5jZXN0b3Igb2YgdGhlIGJhY2tn
cm91bmQtZmlsdGVyZWQgbGF5ZXIgc2V0cyBjZXJ0YWluIHByb3BlcnRpZXMKICAgICAvLyAob3Bh
Y2l0eSwgdHJhbnNmb3JtcyksIGl0IG1heSBjb25mbGljdCBhbmQgaGlkZSB0aGUgYmFja2dyb3Vu
ZCBmaWx0ZXJzLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhj
b25zdCBXZWJGaWx0ZXJPcGVyYXRpb25zJik7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91
bmRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CiAKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYpOwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc2V0RGVidWdOYW1lKFdlYlN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIHNl
dERlYnVnQm9yZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVi
dWdOYW1lKFdlYlN0cmluZykgPSAwOwogCiAgICAgLy8gQW4gYW5pbWF0aW9uIGRlbGVnYXRlIGlz
IG5vdGlmaWVkIHdoZW4gYW5pbWF0aW9ucyBhcmUgc3RhcnRlZCBhbmQKICAgICAvLyBzdG9wcGVk
LiBUaGUgV2ViTGF5ZXIgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGRlbGVnYXRlLCBh
bmQgaXQgaXMKICAgICAvLyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNsaWVudCB0byByZXNl
dCB0aGUgbGF5ZXIncyBkZWxlZ2F0ZSBiZWZvcmUKICAgICAvLyBkZWxldGluZyB0aGUgZGVsZWdh
dGUuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1h
dGlvbkRlbGVnYXRlKik7CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdl
YkFuaW1hdGlvbkRlbGVnYXRlKikgPSAwOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUg
YW5pbWF0aW9uIGNhbm5vdCBiZSBhZGRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWRkQW5p
bWF0aW9uKFdlYkFuaW1hdGlvbiopOworICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oV2Vi
QW5pbWF0aW9uKikgPSAwOwogCiAgICAgLy8gUmVtb3ZlcyBhbGwgYW5pbWF0aW9ucyB3aXRoIHRo
ZSBnaXZlbiBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBh
bmltYXRpb25JZCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0
aW9uSWQpID0gMDsKIAogICAgIC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2
ZW4gaWQgdGFyZ2V0aW5nIHRoZSBnaXZlbiBwcm9wZXJ0eS4KLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQ
cm9wZXJ0eSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9u
SWQsIFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpID0gMDsKIAogICAgIC8vIFBhdXNlcyBh
bGwgYW5pbWF0aW9ucyB3aXRoIHRoZSBnaXZlbiBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
cGF1c2VBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAg
dmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVP
ZmZzZXQpID0gMDsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHN1c3BlbmQgYW5k
IHJlc3VtZSBhbGwgYW5pbWF0aW9ucy4gVGhlIGdpdmVuIHRpbWUKICAgICAvLyBpcyBhc3N1bWVk
IHRvIHVzZSB0aGUgc2FtZSB0aW1lIGJhc2UgYXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25v
dG9uaWNUaW1lKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhkb3Vi
bGUgbW9ub3RvbmljVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRv
dWJsZSBtb25vdG9uaWNUaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlv
bnMoZG91YmxlIG1vbm90b25pY1RpbWUpID0gMDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGlzIGxheWVyIGhhcyBhbnkgYWN0aXZlIGFuaW1hdGlvbnMgLSB1c2VmdWwgZm9yIHRlc3RzLgot
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uKCkgPSAwOwogCiAgICAgLy8gVHJhbnNmZXJzIGFsbCBh
bmltYXRpb25zIHJ1bm5pbmcgb24gdGhlIGN1cnJlbnQgbGF5ZXIuCi0gICAgV0VCS0lUX0VYUE9S
VCB2b2lkIHRyYW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKik7CisgICAgdmlydHVhbCB2b2lk
IHRyYW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKikgPSAwOworCisgICAgLy8gU2Nyb2xsaW5n
CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkg
PSAwOwogCiAgICAgLy8gRm9yY2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZhY2Uu
IFRoZXJlIGlzIG5vIGJlbmVmaXQgaW4gZG9pbmcKICAgICAvLyBzbywgYnV0IHRoaXMgaXMgdG8g
ZmFjaWxpdGF0ZSBiZW5jaG1hcmtzIGFuZCB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wpOwotCi0gICAgLy8gRHJvcHMgdGhpcyBsYXllcidz
IHJlbmRlciBzdXJmYWNlLCBpZiBpdCBoYXMgb25lLiBVc2VkIHRvIGJyZWFrIGN5Y2xlcyBpbiBz
b21lCi0gICAgLy8gY2FzZXMgLSBpZiB5b3UgYXJlbid0IHN1cmUsIHlvdSBkb24ndCBuZWVkIHRv
IGNhbGwgdGhpcy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCk7
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKLSAgICB7Ci0gICAgICAgIFQgcmVz
OwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAgICAgIHJldHVybiBy
ZXM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCB0b0NvbnN0KCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2ln
bigqdGhpcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExF
TUVOVEFUSU9OCi0gICAgV2ViTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW0+Jik7Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBUKiB1bndyYXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFQqPihtX3ByaXZhdGUuZ2V0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IGNvbnN0IFQqIGNvbnN0VW53cmFwKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBUKj4obV9wcml2YXRlLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQot
cHJvdGVjdGVkOgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gbV9w
cml2YXRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVJlbmRlclN1cmZhY2UoYm9vbCkgPSAw
OwogfTsKIAotaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJMYXllciYgYSwgY29uc3Qg
V2ViTGF5ZXImIGIpCi17Ci0gICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKLXsKLSAg
ICByZXR1cm4gIShhID09IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIFdlYkxheWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViU2Nyb2xsYWJsZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNjcm9sbGFibGVMYXllci5oCmluZGV4IGVhMDJmOGM3Mzk2MWFmZDNmMzk1YzdlMmFjOWI2
MzgwZmQ4ZDc2YWQuLmFhMzQ1YWFhNTE4YmI0ZDI4OTQ1NGU0NDRkODhjYTIwNWYwMTZlNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxhYmxl
TGF5ZXIuaApAQCAtMzQsMjkgKzM0LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFz
cyBXZWJTY3JvbGxhYmxlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViU2Nyb2xs
YWJsZUxheWVyIDogdmlydHVhbCBwdWJsaWMgV2ViTGF5ZXIgewogcHVibGljOgotICAgIFdlYlNj
cm9sbGFibGVMYXllcigpIHsgfQotICAgIFdlYlNjcm9sbGFibGVMYXllcihjb25zdCBXZWJTY3Jv
bGxhYmxlTGF5ZXImIGxheWVyKSA6IFdlYkxheWVyKGxheWVyKSB7IH0KLSAgICB2aXJ0dWFsIH5X
ZWJTY3JvbGxhYmxlTGF5ZXIoKSB7IH0KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXImIG9wZXJhdG9y
PShjb25zdCBXZWJTY3JvbGxhYmxlTGF5ZXImIGxheWVyKQotICAgIHsKLSAgICAgICAgV2ViTGF5
ZXI6OmFzc2lnbihsYXllcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQpOwotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXRTY3JvbGxhYmxlKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wpOwotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYp
OwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25M
YXllcnMoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEZpeGVkVG9Db250YWluZXJM
YXllcihib29sKTsKLQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViU2Nyb2xs
YWJsZUxheWVyKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiYg
bGF5ZXIpIDogV2ViTGF5ZXIobGF5ZXIpIHsgfQotI2VuZGlmCisgICAgdmlydHVhbCB2b2lkIHNl
dFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9s
bGFibGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRs
ZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25NYWluVGhy
ZWFkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdp
b24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRJ
c0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNjcm9sbGJhckxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlNjcm9sbGJhckxheWVyLmgKaW5kZXggMWJmZTdkNmFiYjNhNTlmM2YzZWEzMzA0NDhjYzY0MDdk
MzExYTFhOS4uNDUxYTBiOWMxMzRiNmM0NDQ5NTBlMWEyYjYyM2YzYmUxZjAyMTEwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5o
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIu
aApAQCAtMzIsMjkgKzMyLDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFNjcm9s
bGJhcjsKLWNsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1jbGFzcyBXZWJTY3JvbGxiYXJMYXllciA6IHB1YmxpYyBXZWJMYXllciB7CitjbGFz
cyBXZWJTY3JvbGxiYXJMYXllciB7CiBwdWJsaWM6Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXIoKSB7
IH0KLSAgICBXZWJTY3JvbGxiYXJMYXllcihjb25zdCBXZWJTY3JvbGxiYXJMYXllciYgbGF5ZXIp
IDogV2ViTGF5ZXIobGF5ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYlNjcm9sbGJhckxheWVyKCkg
eyB9Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJTY3JvbGxiYXJM
YXllciYgbGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRT
Y3JvbGxMYXllcihjb25zdCBXZWJMYXllcik7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIo
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqKSA9IDA7
CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5
ZXIgY3JlYXRlKFdlYkNvcmU6OlNjcm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwg
UGFzc093blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7Ci0gICAgZXhwbGljaXQgV2Vi
U2Nyb2xsYmFyTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxh
eWVyQ2hyb21pdW0+Jik7Ci0gICAgV2ViU2Nyb2xsYmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBv
cGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4o
KSBjb25zdDsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciogY3Jl
YXRlKFdlYkNvcmU6OlNjcm9sbGJhciosIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093
blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmgg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oCmlu
ZGV4IGFkOTEyM2Q5NjJhZmVhZWE4YTU2MzEyOTQ1ZGUxZmM1Zjg5NmM5ZmMuLjAyZTQ2ZjA0N2Zh
ZjI1M2FjMTFlMTk3YzQ1MTA4MTdiYTFmNDgyNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmgKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaApAQCAtMjYsMjEgKzI2LDIw
IEBACiAjaWZuZGVmIFdlYlNvbGlkQ29sb3JMYXllcl9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JM
YXllcl9oCiAKKyNpbmNsdWRlICJXZWJDb2xvci5oIgogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgot
I2luY2x1ZGUgIldlYkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKIG5hbWVz
cGFjZSBXZWJLaXQgewotY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbDsKK2NsYXNzIFdlYkxh
eWVyOwogCi1jbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xh
c3MgV2ViU29saWRDb2xvckxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRp
YyBXZWJTb2xpZENvbG9yTGF5ZXIgY3JlYXRlKCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dEJhY2tncm91bmRDb2xvcihjb25zdCBXZWJDb2xvciYpOworICAgIFdFQktJVF9FWFBPUlQgc3Rh
dGljIFdlYlNvbGlkQ29sb3JMYXllciogY3JlYXRlKCk7CiAKLSNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KLSAgICBXZWJTb2xpZENvbG9yTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYlNv
bGlkQ29sb3JMYXllckltcGw+Jik7Ci0jZW5kaWYKKyAgICB2aXJ0dWFsIH5XZWJTb2xpZENvbG9y
TGF5ZXIoKSB7IH0KKworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpID0gMDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1
YmxpYy9XZWJWaWRlb0xheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YlZpZGVvTGF5ZXIuaAppbmRleCA1NGRhMzQ1NGJhMDNlZmZiNWUzNGIwZDMzMmI5MmMwMTEyNDc1
YWE0Li4xYWNmZmY1NGEwNzI3YjQ5OGRkOTQxZmNjNDZhMjc3MjZhYTdkNzBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaAorKysgYi9T
b3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaApAQCAtMjksMjcg
KzI5LDIwIEBACiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIK
IAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVmlkZW9MYXllckNocm9taXVtOwotfQotCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViVmlkZW9GcmFtZVByb3ZpZGVyOwogCi1jbGFz
cyBXZWJWaWRlb0xheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYlZpZGVvTGF5ZXIg
ewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZpZGVvTGF5ZXIgY3JlYXRl
KFdlYlZpZGVvRnJhbWVQcm92aWRlciopOworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlZp
ZGVvTGF5ZXIqIGNyZWF0ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqKTsKIAotICAgIFdlYlZpZGVv
TGF5ZXIoKSB7IH0KICAgICB2aXJ0dWFsIH5XZWJWaWRlb0xheWVyKCkgeyB9CiAKLSAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgdGhpcyBsYXllciBpcyBhY3RpdmVseSByZW5kZXJpbmcgKGUuZy4gY3Vy
cmVudGx5IGF0dGFjaGVkIHRvIGEgV2ViTGF5ZXJUcmVlVmlldykuCi0gICAgV0VCS0lUX0VYUE9S
VCBib29sIGFjdGl2ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAw
OwogCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViVmlkZW9MYXll
cihQYXNzUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4pOwotI2VuZGlmCisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbGF5ZXIgaXMgYWN0aXZlbHkgcmVuZGVyaW5nIChlLmcu
IGN1cnJlbnRseSBhdHRhY2hlZCB0byBhIFdlYkxheWVyVHJlZVZpZXcpLgorICAgIHZpcnR1YWwg
Ym9vbCBhY3RpdmUoKSBjb25zdCA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKaW5kZXggMWRiNzU5NDA0
N2M4OGNhYjBkZGFmZTAwMzdhM2JlNmNhYzM4Njg4Ni4uZTI1NmJkZTFhNWE0YWU4N2E2NjA4MTk4
YzczZGZhZjhlMTk4MTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bS5jcHAKQEAgLTI5LDEyICsyOSwxMiBAQAogCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCiAjaW5jbHVkZSAiV2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3Jv
bGxhYmxlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyLmg+CiAjaW5jbHVk
ZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9s
bGJhclRoZW1lR2VvbWV0cnkuaD4KQEAgLTQyLDcgKzQyLDYgQEAKIAogdXNpbmcgV2ViS2l0OjpX
ZWJMYXllcjsKIHVzaW5nIFdlYktpdDo6V2ViUmVjdDsKLXVzaW5nIFdlYktpdDo6V2ViU2Nyb2xs
YWJsZUxheWVyOwogdXNpbmcgV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllcjsKIHVzaW5nIFdlYktp
dDo6V2ViVmVjdG9yOwogCkBAIC01MSwzNiArNTAsMzkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlIHsKIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk7CiBwdWJsaWM6Ci0gICAgU2Nyb2xsaW5nQ29v
cmRpbmF0b3JQcml2YXRlKCkgeyB9CisgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKCkK
KyAgICAgICAgOiBtX3Njcm9sbExheWVyKDApCisgICAgeworICAgIH0KKwogICAgIH5TY3JvbGxp
bmdDb29yZGluYXRvclByaXZhdGUoKSB7IH0KIAotICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2Vi
U2Nyb2xsYWJsZUxheWVyIGxheWVyKQorICAgIHZvaWQgc2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIq
IGxheWVyKQogICAgIHsKICAgICAgICAgbV9zY3JvbGxMYXllciA9IGxheWVyOwogCi0gICAgICAg
IGlmICghbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgICAgICBt
X2hvcml6b250YWxTY3JvbGxiYXJMYXllci5zZXRTY3JvbGxMYXllcihsYXllcik7Ci0gICAgICAg
IGlmICghbV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyLmlzTnVsbCgpKQotICAgICAgICAgICAgbV92
ZXJ0aWNhbFNjcm9sbGJhckxheWVyLnNldFNjcm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYg
KG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKQorICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Ny
b2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKGxheWVyKTsKKyAgICAgICAgaWYgKG1fdmVydGlj
YWxTY3JvbGxiYXJMYXllcikKKyAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXJMYXllci0+
c2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOwogICAgIH0KIAotICAgIHZvaWQgc2V0SG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyKFdlYlNjcm9sbGJhckxheWVyIGxheWVyKQorICAgIHZvaWQgc2V0SG9yaXpv
bnRhbFNjcm9sbGJhckxheWVyKFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IGxheWVyKQog
ICAgIHsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKICAgICB9
CiAKLSAgICB2b2lkIHNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoV2ViU2Nyb2xsYmFyTGF5ZXIg
bGF5ZXIpCisgICAgdm9pZCBzZXRWZXJ0aWNhbFNjcm9sbGJhckxheWVyKFBhc3NPd25QdHI8V2Vi
U2Nyb2xsYmFyTGF5ZXI+IGxheWVyKQogICAgIHsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJh
ckxheWVyID0gbGF5ZXI7CiAgICAgfQogCi0gICAgYm9vbCBoYXNTY3JvbGxMYXllcigpIGNvbnN0
IHsgcmV0dXJuICFtX3Njcm9sbExheWVyLmlzTnVsbCgpOyB9Ci0gICAgV2ViU2Nyb2xsYWJsZUxh
eWVyIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllcjsgfQorICAgIFdl
YkxheWVyKiBzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXI7IH0KIAog
cHJpdmF0ZToKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgbV9zY3JvbGxMYXllcjsKLSAgICBXZWJT
Y3JvbGxiYXJMYXllciBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllcjsKLSAgICBXZWJTY3JvbGxi
YXJMYXllciBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXI7CisgICAgV2ViTGF5ZXIqIG1fc2Nyb2xs
TGF5ZXI7CisgICAgT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBtX2hvcml6b250YWxTY3JvbGxi
YXJMYXllcjsKKyAgICBPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IG1fdmVydGljYWxTY3JvbGxi
YXJMYXllcjsKIH07CiAKIFBhc3NSZWZQdHI8U2Nyb2xsaW5nQ29vcmRpbmF0b3I+IFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpjcmVhdGUoUGFnZSogcGFnZSkKQEAgLTExMiwxNSArMTE0LDIwIEBAIHN0
YXRpYyBHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllckZvckZyYW1lVmlldyhGcmFtZVZpZXcqIGZy
YW1lVmlldykKICNlbmRpZgogfQogCi1zdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Ny
b2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibGVMYXllciBzY3Jv
bGxMYXllciwgR3JhcGhpY3NMYXllciogc2Nyb2xsYmFyR3JhcGhpY3NMYXllciwgRnJhbWVWaWV3
KiBmcmFtZVZpZXcpCitzdGF0aWMgV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNz
TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCit7CisgICAgcmV0dXJuIGxheWVyLT5wbGF0Zm9y
bUxheWVyKCk7Cit9CisKK3N0YXRpYyBQYXNzT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBjcmVh
dGVTY3JvbGxiYXJMYXllcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViTGF5ZXIqIHNjcm9sbExh
eWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxiYXJHcmFwaGljc0xheWVyLCBGcmFtZVZpZXcqIGZy
YW1lVmlldykKIHsKICAgICBBU1NFUlQoc2Nyb2xsYmFyKTsKICAgICBBU1NFUlQoc2Nyb2xsYmFy
R3JhcGhpY3NMYXllcik7CiAKLSAgICBpZiAoc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBp
ZiAoIXNjcm9sbExheWVyKSB7CiAgICAgICAgIC8vIEZJWE1FOiBzb21ldGltZXMgd2UgZ2V0IGNh
bGxlZCBiZWZvcmUgc2V0U2Nyb2xsTGF5ZXIsIHdvcmthcm91bmQgYnkgZmluZGluZyB0aGUgc2Ny
b2xsIGxheW91dCBvdXJzZWx2ZXMuCi0gICAgICAgIHNjcm9sbExheWVyID0gc2Nyb2xsTGF5ZXJG
b3JGcmFtZVZpZXcoZnJhbWVWaWV3KS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxl
TGF5ZXI+KCk7Ci0gICAgICAgIEFTU0VSVCghc2Nyb2xsTGF5ZXIuaXNOdWxsKCkpOworICAgICAg
ICBzY3JvbGxMYXllciA9IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIoc2Nyb2xsTGF5
ZXJGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSk7CisgICAgICAgIEFTU0VSVChzY3JvbGxMYXllcik7
CiAgICAgfQogCiAgICAgLy8gUm9vdCBsYXllciBub24tb3ZlcmxheSBzY3JvbGxiYXJzIHNob3Vs
ZCBiZSBtYXJrZWQgb3BhcXVlIHRvIGRpc2FibGUKQEAgLTEzOCw3ICsxNDUsNyBAQCBzdGF0aWMg
V2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFdlYlNjcm9sbGFibAogICAgIGlmICghcGxhdGZvcm1TdXBwb3J0ZWQgfHwgc2Nyb2xsYmFy
LT5pc0N1c3RvbVNjcm9sbGJhcigpKSB7CiAgICAgICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXIt
PnNldENvbnRlbnRzVG9NZWRpYSgwKTsKICAgICAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+
c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgICAgICByZXR1cm4gV2ViU2Nyb2xsYmFyTGF5ZXIo
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgLy8gQWxsIENocm9taXVt
IHNjcm9sbGJhciB0aGVtZXMgZGVyaXZlIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuCkBA
IC0xNDYsMTQgKzE1MywxNCBAQCBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlU2Nyb2xs
YmFyTGF5ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGFibAogICAgIFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIodGhlbWVDb21wb3NpdGUsIHNjcm9sbGJh
cik7CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0
cnkoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhlbWVD
b21wb3NpdGUpKTsKIAotICAgIFdlYlNjcm9sbGJhckxheWVyIHNjcm9sbGJhckxheWVyID0gV2Vi
U2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShzY3JvbGxiYXIsIHBhaW50ZXIsIGdlb21ldHJ5LnJlbGVh
c2UoKSk7Ci0gICAgc2Nyb2xsYmFyTGF5ZXIuc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXIpOwor
ICAgIE93blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gc2Nyb2xsYmFyTGF5ZXIgPSBhZG9wdFB0cihX
ZWJTY3JvbGxiYXJMYXllcjo6Y3JlYXRlKHNjcm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnkucmVs
ZWFzZSgpKSk7CisgICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVy
KTsKIAotICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9NZWRpYSgmc2Ny
b2xsYmFyTGF5ZXIpOworICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9N
ZWRpYShzY3JvbGxiYXJMYXllci0+bGF5ZXIoKSk7CiAgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXll
ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLSAgICBzY3JvbGxiYXJMYXllci5zZXRPcGFxdWUo
c2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+Y29udGVudHNPcGFxdWUoKSk7CisgICAgc2Nyb2xsYmFy
TGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250ZW50
c09wYXF1ZSgpKTsKIAotICAgIHJldHVybiBzY3JvbGxiYXJMYXllcjsKKyAgICByZXR1cm4gc2Ny
b2xsYmFyTGF5ZXIucmVsZWFzZSgpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpm
cmFtZVZpZXdIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcsIEdyYXBoaWNzTGF5ZXIqIGhvcml6b250YWxTY3JvbGxiYXJMYXllcikKQEAgLTE2MSw2
ICsxNjgsNyBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdIb3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KgogICAgIGlmICghaG9yaXpvbnRhbFNj
cm9sbGJhckxheWVyIHx8ICFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZp
ZXcpKQogICAgICAgICByZXR1cm47CiAKKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKICAgICBtX3ByaXZhdGUt
PnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcihjcmVhdGVTY3JvbGxiYXJMYXllcihmcmFtZVZp
ZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCBob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIsIGZyYW1lVmlldykpOwogfQogCkBAIC0xNjksMjUgKzE3Nywy
NSBAQCB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdWZXJ0aWNhbFNjcm9sbGJh
ckxheWVyRGlkQ2hhbmdlKEZyYW1lVmlldyogZgogICAgIGlmICghdmVydGljYWxTY3JvbGxiYXJM
YXllciB8fCAhY29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgc2V0U2Nyb2xsTGF5ZXIoc2Nyb2xsTGF5ZXJGb3JGcmFtZVZp
ZXcobV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpKSk7CiAgICAgbV9wcml2YXRlLT5zZXRWZXJ0
aWNhbFNjcm9sbGJhckxheWVyKGNyZWF0ZVNjcm9sbGJhckxheWVyKGZyYW1lVmlldy0+dmVydGlj
YWxTY3JvbGxiYXIoKSwgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLCB2ZXJ0aWNhbFNjcm9sbGJh
ckxheWVyLCBmcmFtZVZpZXcpKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsTGF5ZXIoR3JhcGhpY3NMYXllciogc2Nyb2xsTGF5ZXIpCiB7Ci0gICAgV2ViU2Nyb2xs
YWJsZUxheWVyIGxheWVyOwotICAgIGlmIChzY3JvbGxMYXllcikKLSAgICAgICAgbGF5ZXIgPSBz
Y3JvbGxMYXllci0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxhYmxlTGF5ZXI+KCk7Ci0g
ICAgbV9wcml2YXRlLT5zZXRTY3JvbGxMYXllcihsYXllcik7CisgICAgbV9wcml2YXRlLT5zZXRT
Y3JvbGxMYXllcihzY3JvbGxMYXllciA/IHNjcm9sbGFibGVMYXllckZvckdyYXBoaWNzTGF5ZXIo
c2Nyb2xsTGF5ZXIpIDogMCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldE5v
bkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQogewotICAgIGlmICht
X3ByaXZhdGUtPmhhc1Njcm9sbExheWVyKCkpIHsKKyAgICAvLyBXZSB3b24ndCBuZWNlc3Nhcmls
eSBnZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25lLCBzbyBncmFiIHRo
ZSByb290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZvckZyYW1l
VmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAobV9wcml2YXRlLT5z
Y3JvbGxMYXllcigpKSB7CiAgICAgICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IHJlZ2lvbi5y
ZWN0cygpOwogICAgICAgICBXZWJWZWN0b3I8V2ViUmVjdD4gd2ViUmVjdHMocmVjdHMuc2l6ZSgp
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkKICAg
ICAgICAgICAgIHdlYlJlY3RzW2ldID0gcmVjdHNbaV07Ci0gICAgICAgIG1fcHJpdmF0ZS0+c2Ny
b2xsTGF5ZXIoKS5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbih3ZWJSZWN0cyk7CisgICAgICAg
IG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24od2Vi
UmVjdHMpOwogICAgIH0KIH0KIApAQCAtMTk4LDE0ICsyMDYsMTggQEAgdm9pZCBTY3JvbGxpbmdD
b29yZGluYXRvcjo6c2V0U2Nyb2xsUGFyYW1ldGVycyhjb25zdCBTY3JvbGxQYXJhbWV0ZXJzJikK
IAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0V2hlZWxFdmVudEhhbmRsZXJDb3VudCh1
bnNpZ25lZCB3aGVlbEV2ZW50SGFuZGxlckNvdW50KQogewotICAgIGlmIChtX3ByaXZhdGUtPmhh
c1Njcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5ZXIoKS5zZXRIYXZl
V2hlZWxFdmVudEhhbmRsZXJzKHdoZWVsRXZlbnRIYW5kbGVyQ291bnQgPiAwKTsKKyAgICAvLyBX
ZSB3b24ndCBuZWNlc3NhcmlseSBnZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRo
aXMgb25lLCBzbyBncmFiIHRoZSByb290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihz
Y3JvbGxMYXllckZvckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAg
ICBpZiAobV9wcml2YXRlLT5zY3JvbGxMYXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9s
bExheWVyKCktPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCA+IDApOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVT
Y3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkKQogewotICAgIGlmICht
X3ByaXZhdGUtPmhhc1Njcm9sbExheWVyKCkpCi0gICAgICAgIG1fcHJpdmF0ZS0+c2Nyb2xsTGF5
ZXIoKS5zZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoc2hvdWxkKTsKKyAgICAvLyBXZSB3b24n
dCBuZWNlc3NhcmlseSBnZXQgYSBzZXRTY3JvbGxMYXllcigpIGNhbGwgYmVmb3JlIHRoaXMgb25l
LCBzbyBncmFiIHRoZSByb290IG91cnNlbHZlcy4KKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxM
YXllckZvckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKKyAgICBpZiAo
bV9wcml2YXRlLT5zY3JvbGxMYXllcigpKQorICAgICAgICBtX3ByaXZhdGUtPnNjcm9sbExheWVy
KCktPnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGQpOwogfQogCiBib29sIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdApAQCAt
MjE1LDE0ICsyMjcsMTQgQEAgYm9vbCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c3VwcG9ydHNGaXhl
ZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QKIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
TGF5ZXJJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoR3JhcGhpY3NMYXllciogbGF5
ZXIsIGJvb2wgZW5hYmxlKQogewotICAgIGlmIChXZWJMYXllciogcGxhdGZvcm1MYXllciA9IGxh
eWVyLT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAgIHBsYXRmb3JtTGF5ZXItPnRvPFdlYlNjcm9s
bGFibGVMYXllcj4oKS5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoZW5hYmxl
KTsKKyAgICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IHNjcm9sbGFibGVMYXllckZv
ckdyYXBoaWNzTGF5ZXIobGF5ZXIpKQorICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldElzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwogfQogCiB2b2lkIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpzZXRMYXllcklzRml4ZWRUb0NvbnRhaW5lckxheWVyKEdyYXBoaWNzTGF5
ZXIqIGxheWVyLCBib29sIGVuYWJsZSkKIHsKLSAgICBpZiAoV2ViTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIgPSBsYXllci0+cGxhdGZvcm1MYXllcigpKQotICAgICAgICBwbGF0Zm9ybUxheWVyLT50bzxX
ZWJTY3JvbGxhYmxlTGF5ZXI+KCkuc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Cisg
ICAgaWYgKFdlYkxheWVyKiBzY3JvbGxhYmxlTGF5ZXIgPSBzY3JvbGxhYmxlTGF5ZXJGb3JHcmFw
aGljc0xheWVyKGxheWVyKSkKKyAgICAgICAgc2Nyb2xsYWJsZUxheWVyLT5zZXRGaXhlZFRvQ29u
dGFpbmVyTGF5ZXIoZW5hYmxlKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdl
LmNwcAppbmRleCBkYjUxN2NhZDI2MzNiOGJmNGU3MTU0YjU3NDgyMjU3MmM0NjU5MGFhLi4xMDY1
NDMxMmNmMmVmYmFjN2U1YzIwYmYwZGMwNjUxYzg0ZjM0MDA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMy
RExheWVyQnJpZGdlLmNwcApAQCAtNjksMjIgKzY5LDIxIEBAIENhbnZhczJETGF5ZXJCcmlkZ2U6
OkNhbnZhczJETGF5ZXJCcmlkZ2UoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCwKICAgICAgICAgICAgIGdyQ29udGV4dC0+cmVzZXRDb250ZXh0KCk7CiAgICAgfQogCi0gICAg
bV9sYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcyk7Ci0gICAgbV9s
YXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKLSAgICBtX2xheWVyLnNldFJhdGVMaW1pdENv
bnRleHQoIVdlYktpdDo6V2ViQ29tcG9zaXRvcjo6dGhyZWFkaW5nRW5hYmxlZCgpIHx8IG1fdXNl
RG91YmxlQnVmZmVyaW5nKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgbV9sYXllci0+c2V0VGV4dHVyZUlkKHRleHR1
cmVJZCk7CisgICAgbV9sYXllci0+c2V0UmF0ZUxpbWl0Q29udGV4dCghV2ViS2l0OjpXZWJDb21w
b3NpdG9yOjp0aHJlYWRpbmdFbmFibGVkKCkgfHwgbV91c2VEb3VibGVCdWZmZXJpbmcpOwogfQog
CiBDYW52YXMyRExheWVyQnJpZGdlOjp+Q2FudmFzMkRMYXllckJyaWRnZSgpCiB7CiAgICAgaWYg
KFNrRGVmZXJyZWRDYW52YXMqIGRlZmVycmVkID0gZGVmZXJyZWRDYW52YXMoKSkKICAgICAgICAg
ZGVmZXJyZWQtPnNldE5vdGlmaWNhdGlvbkNsaWVudCgwKTsKLSAgICBtX2xheWVyLnNldFRleHR1
cmVJZCgwKTsKKyAgICBtX2xheWVyLT5zZXRUZXh0dXJlSWQoMCk7CiAgICAgaWYgKG1fdXNlRG91
YmxlQnVmZmVyaW5nKSB7CiAgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7
CiAgICAgICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZSht
X2Zyb250QnVmZmVyVGV4dHVyZSkpOwogICAgICAgICBtX2NvbnRleHQtPmZsdXNoKCk7CiAgICAg
fQotICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKIH0KIAogU2tEZWZlcnJlZENhbnZhcyogQ2Fu
dmFzMkRMYXllckJyaWRnZTo6ZGVmZXJyZWRDYW52YXMoKQpAQCAtOTgsNyArOTcsNyBAQCB2b2lk
IENhbnZhczJETGF5ZXJCcmlkZ2U6OnByZXBhcmVGb3JEcmF3KCkKIHsKICAgICBBU1NFUlQoZGVm
ZXJyZWRDYW52YXMoKSk7CiAgICAgaWYgKCFtX3VzZURvdWJsZUJ1ZmZlcmluZykKLSAgICAgICAg
bV9sYXllci53aWxsTW9kaWZ5VGV4dHVyZSgpOworICAgICAgICBtX2xheWVyLT53aWxsTW9kaWZ5
VGV4dHVyZSgpOwogICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKQEAg
LTE0OCwxMyArMTQ3LDEzIEBAIFdlYkdyYXBoaWNzQ29udGV4dDNEKiBDYW52YXMyRExheWVyQnJp
ZGdlOjpjb250ZXh0KCkKIAogV2ViS2l0OjpXZWJMYXllciogQ2FudmFzMkRMYXllckJyaWRnZTo6
bGF5ZXIoKQogewotICAgIHJldHVybiAmbV9sYXllcjsKKyAgICByZXR1cm4gbV9sYXllci0+bGF5
ZXIoKTsKIH0KIAogdm9pZCBDYW52YXMyRExheWVyQnJpZGdlOjpjb250ZXh0QWNxdWlyZWQoKQog
ewogICAgIGlmIChtX2RlZmVycmFsTW9kZSA9PSBOb25EZWZlcnJlZCAmJiAhbV91c2VEb3VibGVC
dWZmZXJpbmcpCi0gICAgICAgIG1fbGF5ZXIud2lsbE1vZGlmeVRleHR1cmUoKTsKKyAgICAgICAg
bV9sYXllci0+d2lsbE1vZGlmeVRleHR1cmUoKTsKIH0KIAogdW5zaWduZWQgQ2FudmFzMkRMYXll
ckJyaWRnZTo6YmFja0J1ZmZlclRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRnZS5o
CmluZGV4IDQwOWQyMDdjNTVlNDk1MThjMzkyNDRkMTQ4N2MwYTBhZjc0MTgyMWUuLjI3YjFlYTY1
OWM0MWM3YzY4YzMyNzQ1Y2ExZDEwNmFlNTA1NWE0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJCcmlkZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
QnJpZGdlLmgKQEAgLTc2LDcgKzc2LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2JhY2tC
dWZmZXJUZXh0dXJlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIFNrQ2FudmFzKiBtX2NhbnZh
czsKLSAgICBXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3du
UHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiAgICAgUmVmUHRy
PEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVmZmVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1
ZmZlckNocm9taXVtLmNwcAppbmRleCAxZDE2N2E1NTZlNmExZGZjZDExYWM2Zjg0OTE4ZjJkMWQ4
ODk0ZDlhLi42MTAyYTNlNmY3ODY5NzYwZTFmMzc4MDJkMDZmZTY1ZjRlYmQzNTI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9EcmF3aW5nQnVm
ZmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0RyYXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKQEAgLTE1NiwxNiArMTU2LDE1IEBAIGNs
YXNzIERyYXdpbmdCdWZmZXJQcml2YXRlIDogcHVibGljIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJDbGllbnQgewogcHVibGljOgogICAgIGV4cGxpY2l0IERyYXdpbmdCdWZmZXJQcml2
YXRlKERyYXdpbmdCdWZmZXIqIGRyYXdpbmdCdWZmZXIpCiAgICAgICAgIDogbV9kcmF3aW5nQnVm
ZmVyKGRyYXdpbmdCdWZmZXIpCi0gICAgICAgICwgbV9sYXllcihXZWJLaXQ6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpCisgICAgICAgICwgbV9sYXllcihhZG9wdFB0cihX
ZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUodGhpcykpKQogICAgIHsKICAg
ICAgICAgR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cmlidXRlcyA9IG1fZHJhd2lu
Z0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKS0+Z2V0Q29udGV4dEF0dHJpYnV0ZXMoKTsKLSAg
ICAgICAgbV9sYXllci5zZXRPcGFxdWUoIWF0dHJpYnV0ZXMuYWxwaGEpOwotICAgICAgICBtX2xh
eWVyLnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRBbHBoYSk7
CisgICAgICAgIG1fbGF5ZXItPnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7CisgICAgICAg
IG1fbGF5ZXItPnNldFByZW11bHRpcGxpZWRBbHBoYShhdHRyaWJ1dGVzLnByZW11bHRpcGxpZWRB
bHBoYSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+RHJhd2luZ0J1ZmZlclByaXZhdGUoKQogICAg
IHsKLSAgICAgICAgbV9sYXllci5jbGVhckNsaWVudCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
dW5zaWduZWQgcHJlcGFyZVRleHR1cmUoV2ViS2l0OjpXZWJUZXh0dXJlVXBkYXRlciYgdXBkYXRl
cikgT1ZFUlJJREUKQEAgLTE4NywxMSArMTg2LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6ZXh0cmFjdFdlYkdyYXBoaWNzQ29udGV4dDNEKG1f
ZHJhd2luZ0J1ZmZlci0+Z3JhcGhpY3NDb250ZXh0M0QoKSk7CiAgICAgfQogCi0gICAgV2ViS2l0
OjpXZWJMYXllciogbGF5ZXIoKSB7IHJldHVybiAmbV9sYXllcjsgfQorICAgIFdlYktpdDo6V2Vi
TGF5ZXIqIGxheWVyKCkgeyByZXR1cm4gbV9sYXllci0+bGF5ZXIoKTsgfQogCiBwcml2YXRlOgog
ICAgIERyYXdpbmdCdWZmZXIqIG1fZHJhd2luZ0J1ZmZlcjsKLSAgICBXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVyIG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI+IG1fbGF5ZXI7CiB9OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZmIwOTAwYmJj
MWE3NTdjMWRhM2I4MWNjY2M3MDBiZDk0NDJkYjJhYy4uNGM3YTU1NmNiMGU5ZGFiOTkyMTY4ZjIy
MmNlNmI2MWRkYzZhMGFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3Bw
CkBAIC04MywxNCArODMsMTUgQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFwaGljc0xh
eWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogCiBHcmFwaGljc0xheWVy
Q2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGll
bnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKKyAgICAsIG1fY29udGVudHNMYXllcigw
KQogICAgICwgbV9jb250ZW50c0xheWVyUHVycG9zZShOb0NvbnRlbnRzTGF5ZXIpCiAgICAgLCBt
X2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCiAgICAgLCBtX2luU2V0Q2hp
bGRyZW4oZmFsc2UpCiAgICAgLCBtX3BhZ2VTY2FsZUNoYW5nZWQoZmFsc2UpCiB7CiAgICAgbV9v
cGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSA9IGFkb3B0UHRyKG5ldyBPcGFx
dWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZSh0aGlzKSk7Ci0gICAgbV9sYXllciA9
IFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKG1fb3BhcXVlUmVjdFRyYWNraW5nQ29udGVudExheWVy
RGVsZWdhdGUuZ2V0KCkpOwotICAgIG1fbGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250
ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBtX2xheWVyID0gYWRvcHRQdHIoV2ViQ29u
dGVudExheWVyOjpjcmVhdGUobV9vcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0
ZS5nZXQoKSkpOworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudChtX2RyYXdz
Q29udGVudCAmJiBtX2NvbnRlbnRzVmlzaWJsZSk7CiAgICAgaWYgKGNsaWVudCkKICAgICAgICAg
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAgdXBkYXRlRGVidWdJbmRpY2F0
b3JzKCk7CkBAIC05OCwzNCArOTksOSBAQCBHcmFwaGljc0xheWVyQ2hyb21pdW06OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiAKIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJDaHJvbWl1bSgpCiB7Ci0gICAgLy8gRG8gY2xlYW51
cCB3aGlsZSB3ZSBjYW4gc3RpbGwgc2FmZWx5IGNhbGwgbWV0aG9kcyBvbiB0aGUgZGVyaXZlZCBj
bGFzcy4KICAgICB3aWxsQmVEZXN0cm95ZWQoKTsKIH0KIAotdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OndpbGxCZURlc3Ryb3llZCgpCi17Ci0gICAgaWYgKCFtX2xheWVyLmlzTnVsbCgpKSB7
Ci0gICAgICAgIG1fbGF5ZXIuY2xlYXJDbGllbnQoKTsKLSAgICAgICAgbV9sYXllci5jbGVhclJl
bmRlclN1cmZhY2UoKTsKLSAgICAgICAgbV9sYXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsK
LSAgICB9Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgewotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIG1fY29udGVudHNM
YXllci5zZXRBbmltYXRpb25EZWxlZ2F0ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1fdHJhbnNm
b3JtTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5jbGVhclJlbmRl
clN1cmZhY2UoKTsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRBbmltYXRpb25EZWxlZ2F0
ZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQotICAgICAgICBtX2xpbmtI
aWdobGlnaHQuY2xlYXIoKTsKLQotICAgIEdyYXBoaWNzTGF5ZXI6OndpbGxCZURlc3Ryb3llZCgp
OwotfQotCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TmFtZShjb25zdCBTdHJpbmcm
IGluTmFtZSkKIHsKICAgICBtX25hbWVCYXNlID0gaW5OYW1lOwpAQCAtMTM2LDIxICsxMTIsMTYg
QEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5hbWUoY29uc3QgU3RyaW5nJiBpbk5h
bWUpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVOYW1lcygpCiB7Ci0gICAg
aWYgKCFtX2xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiTGF5
ZXIgZm9yICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX2xheWVyLnNldERlYnVnTmFtZShkZWJ1
Z05hbWUpOwotICAgIH0KLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAg
ICBTdHJpbmcgZGVidWdOYW1lID0gIkxheWVyIGZvciAiICsgbV9uYW1lQmFzZTsKKyAgICBtX2xh
eWVyLT5sYXllcigpLT5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKKworICAgIGlmIChtX3RyYW5z
Zm9ybUxheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiVHJhbnNmb3JtTGF5ZXIg
Zm9yICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldERlYnVnTmFt
ZShkZWJ1Z05hbWUpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXREZWJ1Z05hbWUoZGVi
dWdOYW1lKTsKICAgICB9Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKKyAg
ICBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIFN0cmluZyBkZWJ1Z05hbWUgPSAiQ29u
dGVudHNMYXllciBmb3IgIiArIG1fbmFtZUJhc2U7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5z
ZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKLSAgICB9Ci0gICAgaWYgKG1fbGlua0hpZ2hsaWdodCkg
ewotICAgICAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxpbmtIaWdobGlnaHQgZm9yICIgKyBtX25h
bWVCYXNlOwotICAgICAgICBtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRMYXllcigpLT5zZXREZWJ1
Z05hbWUoZGVidWdOYW1lKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z05hbWUo
ZGVidWdOYW1lKTsKICAgICB9CiB9CiAKQEAgLTIwMyw3ICsxNzQsNyBAQCBib29sIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNzTGF5ZXIqIG9sZENoaWxkLCBHcmFw
aGljc0xheWVyKgogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUZyb21QYXJlbnQo
KQogewogICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBwcmltYXJ5
TGF5ZXIoKS5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgcGxhdGZvcm1MYXllcigpLT5yZW1vdmVG
cm9tUGFyZW50KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIzMyw4ICsyMDQsOCBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0U2l6ZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAgICAgR3Jh
cGhpY3NMYXllcjo6c2V0U2l6ZShjbGFtcGVkU2l6ZSk7CiAgICAgdXBkYXRlTGF5ZXJTaXplKCk7
CiAKLSAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkICYmICFtX2xheWVyLmlzTnVsbCgpKQotICAg
ICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkKQor
ICAgICAgICBtX2xheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9wYWdlU2NhbGVD
aGFuZ2VkID0gZmFsc2U7CiB9CiAKQEAgLTMwMSwxMyArMjcyLDEzIEBAIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmNsZWFyQmFja2dyb3VuZENvbG9yKCkKIHsKICAgICBH
cmFwaGljc0xheWVyOjpjbGVhckJhY2tncm91bmRDb2xvcigpOwotICAgIG1fY29udGVudHNMYXll
ci5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CisgICAgbV9jb250
ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c09wYXF1ZShib29sIG9w
YXF1ZSkKIHsKICAgICBHcmFwaGljc0xheWVyOjpzZXRDb250ZW50c09wYXF1ZShvcGFxdWUpOwot
ICAgIG1fbGF5ZXIuc2V0T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOworICAgIG1fbGF5ZXItPmxh
eWVyKCktPnNldE9wYXF1ZShtX2NvbnRlbnRzT3BhcXVlKTsKIH0KIAogc3RhdGljIGJvb2wgY29w
eVdlYkNvcmVGaWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbnMmIGZpbHRlcnMsIFdlYkZpbHRlck9wZXJhdGlvbnMmIHdlYkZpbHRlcnMpCkBA
IC0zOTEsMTEgKzM2MiwxMSBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RmlsdGVy
cyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogICAgIGlmICghY29weVdlYkNvcmVG
aWx0ZXJPcGVyYXRpb25zVG9XZWJGaWx0ZXJPcGVyYXRpb25zKGZpbHRlcnMsIHdlYkZpbHRlcnMp
KSB7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgZmlsdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRo
ZSBwbGF0Zm9ybSBsYXllciwgYXMgdGhleSBhcmUKICAgICAgICAgLy8gZ29pbmcgdG8gZmFsbGJh
Y2sgdG8gc29mdHdhcmUgbW9kZS4KLSAgICAgICAgbV9sYXllci5zZXRGaWx0ZXJzKFdlYkZpbHRl
ck9wZXJhdGlvbnMoKSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEZpbHRlcnMoV2Vi
RmlsdGVyT3BlcmF0aW9ucygpKTsKICAgICAgICAgR3JhcGhpY3NMYXllcjo6c2V0RmlsdGVycyhG
aWx0ZXJPcGVyYXRpb25zKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIG1f
bGF5ZXIuc2V0RmlsdGVycyh3ZWJGaWx0ZXJzKTsKKyAgICBtX2xheWVyLT5sYXllcigpLT5zZXRG
aWx0ZXJzKHdlYkZpbHRlcnMpOwogICAgIHJldHVybiBHcmFwaGljc0xheWVyOjpzZXRGaWx0ZXJz
KGZpbHRlcnMpOwogfQogCkBAIC00MDQsNyArMzc1LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnNldEJhY2tncm91bmRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRl
cnMKICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIHdlYkZpbHRlcnM7CiAgICAgaWYgKCFjb3B5V2Vi
Q29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywgd2ViRmls
dGVycykpCiAgICAgICAgIHJldHVybjsKLSAgICBtX2xheWVyLnNldEJhY2tncm91bmRGaWx0ZXJz
KHdlYkZpbHRlcnMpOworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEJhY2tncm91bmRGaWx0ZXJz
KHdlYkZpbHRlcnMpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0TWFza0xh
eWVyKEdyYXBoaWNzTGF5ZXIqIG1hc2tMYXllcikKQEAgLTQxNCwyMyArMzg1LDIxIEBAIHZvaWQg
R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbWFza0xh
eWVyKQogCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0TWFza0xheWVyKG1hc2tMYXllcik7CiAKLSAg
ICBXZWJMYXllciBtYXNrV2ViTGF5ZXI7Ci0gICAgaWYgKG1fbWFza0xheWVyKQotICAgICAgICBt
YXNrV2ViTGF5ZXIgPSAqbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLSAgICBtX2xheWVy
LnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOworICAgIFdlYkxheWVyKiBtYXNrV2ViTGF5ZXIg
PSBtX21hc2tMYXllciA/IG1fbWFza0xheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiAwOworICAgIG1f
bGF5ZXItPmxheWVyKCktPnNldE1hc2tMYXllcihtYXNrV2ViTGF5ZXIpOwogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdmlzaWJsZSkK
IHsKICAgICBHcmFwaGljc0xheWVyOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkodmlzaWJsZSk7Ci0g
ICAgbV9sYXllci5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CisgICAgbV9s
YXllci0+c2V0RG91YmxlU2lkZWQobV9iYWNrZmFjZVZpc2liaWxpdHkpOwogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eShmbG9hdCBvcGFjaXR5KQogewogICAgIGZs
b2F0IGNsYW1wZWRPcGFjaXR5ID0gbWF4KG1pbihvcGFjaXR5LCAxLjBmKSwgMC4wZik7CiAgICAg
R3JhcGhpY3NMYXllcjo6c2V0T3BhY2l0eShjbGFtcGVkT3BhY2l0eSk7Ci0gICAgcHJpbWFyeUxh
eWVyKCkuc2V0T3BhY2l0eShvcGFjaXR5KTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldE9wYWNp
dHkob3BhY2l0eSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNh
dGVkQnlMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKQEAgLTQzOCwyOSArNDA3LDI3IEBAIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRSZXBsaWNhdGVkQnlMYXllcihHcmFwaGljc0xh
eWVyKiBsYXllcikKICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW0gPSBz
dGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ2hyb21pdW0qPihsYXllcik7CiAgICAgR3JhcGhpY3NM
YXllcjo6c2V0UmVwbGljYXRlZEJ5TGF5ZXIobGF5ZXIpOwogCi0gICAgV2ViTGF5ZXIgd2ViUmVw
bGljYUxheWVyOwotICAgIGlmIChsYXllckNocm9taXVtKQotICAgICAgICB3ZWJSZXBsaWNhTGF5
ZXIgPSBsYXllckNocm9taXVtLT5wcmltYXJ5TGF5ZXIoKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5z
ZXRSZXBsaWNhTGF5ZXIod2ViUmVwbGljYUxheWVyKTsKKyAgICBXZWJMYXllciogd2ViUmVwbGlj
YUxheWVyID0gbGF5ZXJDaHJvbWl1bSA/IGxheWVyQ2hyb21pdW0tPnBsYXRmb3JtTGF5ZXIoKSA6
IDA7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRSZXBsaWNhTGF5ZXIod2ViUmVwbGljYUxheWVy
KTsKIH0KIAogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rp
c3BsYXkoKQogewotICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisg
ICAgICAgIG1fY29udGVudHNMYXllci0+aW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBpZiAoZHJhd3NDb250ZW50
KCkpCi0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgpOworICAgICAgICBtX2xheWVyLT5sYXll
cigpLT5pbnZhbGlkYXRlKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRO
ZWVkc0Rpc3BsYXlJblJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGlmIChkcmF3
c0NvbnRlbnQoKSkKLSAgICAgICAgbV9sYXllci5pbnZhbGlkYXRlUmVjdChyZWN0KTsKKyAgICAg
ICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZVJlY3QocmVjdCk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
QEAgLTQ3Niw0NiArNDQzLDU2IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250
ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKQogewogICAgIGJvb2wgY2hpbGRyZW5DaGFuZ2VkID0g
ZmFsc2U7CiAgICAgaWYgKGltYWdlKSB7Ci0gICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIuaXNO
dWxsKCkgfHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2Up
IHsKLSAgICAgICAgICAgIFdlYktpdDo6V2ViSW1hZ2VMYXllciBpbWFnZUxheWVyID0gV2ViS2l0
OjpXZWJJbWFnZUxheWVyOjpjcmVhdGUoKTsKLSAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXll
cihpbWFnZUxheWVyKTsKKyAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250ZW50
c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xheWVyRm9ySW1hZ2UpIHsKKyAgICAgICAgICAgIG1f
aW1hZ2VMYXllciA9IGFkb3B0UHRyKFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAg
ICAgIHNldHVwQ29udGVudHNMYXllcihtX2ltYWdlTGF5ZXItPmxheWVyKCkpOwogICAgICAgICAg
ICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAg
ICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgV2ViS2l0
OjpXZWJJbWFnZUxheWVyIGltYWdlTGF5ZXIgPSBtX2NvbnRlbnRzTGF5ZXIudG88V2ViS2l0OjpX
ZWJJbWFnZUxheWVyPigpOwogICAgICAgICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0g
aW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgICAgIGltYWdlTGF5ZXIu
c2V0Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0
T3BhcXVlKGltYWdlLT5pc0JpdG1hcEltYWdlKCkgJiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNB
bHBoYSgpKTsKKyAgICAgICAgbV9pbWFnZUxheWVyLT5zZXRCaXRtYXAobmF0aXZlSW1hZ2UtPmJp
dG1hcCgpKTsKKyAgICAgICAgbV9pbWFnZUxheWVyLT5sYXllcigpLT5zZXRPcGFxdWUoaW1hZ2Ut
PmlzQml0bWFwSW1hZ2UoKSAmJiAhaW1hZ2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOwogICAg
ICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1f
Y29udGVudHNMYXllci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9pbWFnZUxheWVyKSB7CiAg
ICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCi0gICAgICAgICAgICAvLyBUaGUg
b2xkIGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0Lgot
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAgICAgICAgICBtX2ltYWdl
TGF5ZXIuY2xlYXIoKTsKICAgICAgICAgfQorICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxh
eWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgorICAgICAgICBtX2NvbnRl
bnRzTGF5ZXIgPSAwOwogICAgIH0KIAogICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCiAgICAgICAg
IHVwZGF0ZUNoaWxkTGlzdCgpOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQordm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogbGF5
ZXIpCit7CisgICAgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyRm9yQ2FudmFzLCBsYXllcik7
Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvTWVkaWEoUGxh
dGZvcm1MYXllciogbGF5ZXIpCit7CisgICAgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyRm9y
VmlkZW8sIGxheWVyKTsKK30KKwordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRl
bnRzVG8oQ29udGVudHNMYXllclB1cnBvc2UgcHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciogbGF5
ZXIpCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAocGxhdGZv
cm1MYXllcikgewotICAgICAgICBpZiAobV9jb250ZW50c0xheWVyICE9ICpwbGF0Zm9ybUxheWVy
KSB7Ci0gICAgICAgICAgICBzZXR1cENvbnRlbnRzTGF5ZXIoKnBsYXRmb3JtTGF5ZXIpOwotICAg
ICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JDYW52YXM7
CisgICAgaWYgKGxheWVyKSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIgfHwgbV9jb250
ZW50c0xheWVyUHVycG9zZSAhPSBwdXJwb3NlKSB7CisgICAgICAgICAgICBzZXR1cENvbnRlbnRz
TGF5ZXIobGF5ZXIpOworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IHB1cnBv
c2U7CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIHVwZGF0ZUNvbnRlbnRzUmVjdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbV9j
b250ZW50c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsK
ICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7CiAKICAgICAgICAgICAgIC8vIFRo
ZSBvbGQgY29udGVudHMgbGF5ZXIgd2lsbCBiZSByZW1vdmVkIHZpYSB1cGRhdGVDaGlsZExpc3Qu
Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVzZXQoKTsKKyAgICAgICAgICAgIG1fY29u
dGVudHNMYXllciA9IDA7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUyNSw3ICs1MDIsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxh
eWVyKiBwbGF0Zm9ybUxheWVyKQogCiBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5p
bWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJv
eFNpemUsIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlv
bk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewotICAgIHByaW1hcnlMYXllcigpLnNldEFuaW1h
dGlvbkRlbGVnYXRlKHRoaXMpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0QW5pbWF0aW9uRGVs
ZWdhdGUodGhpcyk7CiAKICAgICBpbnQgYW5pbWF0aW9uSWQgPSBtYXBBbmltYXRpb25OYW1lVG9J
ZChhbmltYXRpb25OYW1lKTsKICAgICBpbnQgZ3JvdXBJZCA9IEFuaW1hdGlvbklkVmVuZG9yOjpn
ZXROZXh0R3JvdXBJZCgpOwpAQCAtNTM0LDggKzUxMSw4IEBAIGJvb2wgR3JhcGhpY3NMYXllckNo
cm9taXVtOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29u
c3QKIAogICAgIGlmICh0b0FkZCkgewogICAgICAgICAvLyBSZW1vdmUgYW55IGV4aXN0aW5nIGFu
aW1hdGlvbnMgd2l0aCB0aGUgc2FtZSBhbmltYXRpb24gaWQgYW5kIHRhcmdldCBwcm9wZXJ0eS4K
LSAgICAgICAgcHJpbWFyeUxheWVyKCkucmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0b0Fk
ZC0+dGFyZ2V0UHJvcGVydHkoKSk7Ci0gICAgICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKS5hZGRB
bmltYXRpb24odG9BZGQuZ2V0KCkpOworICAgICAgICBwbGF0Zm9ybUxheWVyKCktPnJlbW92ZUFu
aW1hdGlvbihhbmltYXRpb25JZCwgdG9BZGQtPnRhcmdldFByb3BlcnR5KCkpOworICAgICAgICBy
ZXR1cm4gcGxhdGZvcm1MYXllcigpLT5hZGRBbmltYXRpb24odG9BZGQuZ2V0KCkpOwogICAgIH0K
IAogICAgIHJldHVybiBmYWxzZTsKQEAgLTU0MywxMiArNTIwLDEyIEBAIGJvb2wgR3JhcGhpY3NM
YXllckNocm9taXVtOjphZGRBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVl
cywgY29uc3QKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBhdXNlQW5pbWF0aW9uKGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7Ci0gICAgcHJp
bWFyeUxheWVyKCkucGF1c2VBbmltYXRpb24obWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9u
TmFtZSksIHRpbWVPZmZzZXQpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+cGF1c2VBbmltYXRpb24o
bWFwQW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSksIHRpbWVPZmZzZXQpOwogfQogCiB2
b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVtb3ZlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZW1vdmVBbmltYXRpb24obWFw
QW5pbWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+
cmVtb3ZlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKIH0K
IAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB3
YWxsQ2xvY2tUaW1lKQpAQCAtNTU2LDg4ICs1MzMsNTQgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSB3YWxsQ2xvY2tUaW1lKQogICAgIC8vIHx3
YWxsQ2xvY2tUaW1lfCBpcyBpbiB0aGUgd3JvbmcgdGltZSBiYXNlLiBOZWVkIHRvIGNvbnZlcnQg
aGVyZS4KICAgICAvLyBGSVhNRTogZmluZCBhIG1vcmUgcmVsaWFibGUgd2F5IHRvIGRvIHRoaXMu
CiAgICAgZG91YmxlIG1vbm90b25pY1RpbWUgPSB3YWxsQ2xvY2tUaW1lICsgbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCkgLSBjdXJyZW50VGltZSgpOwotICAgIHByaW1hcnlMYXllcigpLnN1
c3BlbmRBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c3Vz
cGVuZEFuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjpyZXN1bWVBbmltYXRpb25zKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZXN1bWVB
bmltYXRpb25zKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKTsKKyAgICBwbGF0Zm9ybUxh
eWVyKCktPnJlc3VtZUFuaW1hdGlvbnMobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwog
fQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkTGlua0hpZ2hsaWdodChjb25zdCBQ
YXRoJiBwYXRoKQordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmFkZExpbmtIaWdobGlnaHQo
Y29uc3QgUGF0aCYpCiB7Ci0gICAgbV9saW5rSGlnaGxpZ2h0ID0gTGlua0hpZ2hsaWdodDo6Y3Jl
YXRlKHRoaXMsIHBhdGgsIEFuaW1hdGlvbklkVmVuZG9yOjpMaW5rSGlnaGxpZ2h0QW5pbWF0aW9u
SWQsIEFuaW1hdGlvbklkVmVuZG9yOjpnZXROZXh0R3JvdXBJZCgpKTsKLSAgICB1cGRhdGVDaGls
ZExpc3QoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OmRpZEZpbmlzaExpbmtI
aWdobGlnaHQoKQogewotICAgIGlmIChtX2xpbmtIaWdobGlnaHQpCi0gICAgICAgIG1fbGlua0hp
Z2hsaWdodC0+Y29udGVudExheWVyKCktPnJlbW92ZUZyb21QYXJlbnQoKTsKLQotICAgIG1fbGlu
a0hpZ2hsaWdodC5jbGVhcigpOwotfQotCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqIGxheWVyKQotewotICAgIGJvb2wgY2hpbGRy
ZW5DaGFuZ2VkID0gZmFsc2U7Ci0gICAgaWYgKGxheWVyKSB7Ci0gICAgICAgIGlmIChtX2NvbnRl
bnRzTGF5ZXIuaXNOdWxsKCkgfHwgbV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50c0xh
eWVyRm9yVmlkZW8pIHsKLSAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllcigqbGF5ZXIpOwot
ICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JWaWRl
bzsKLSAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAg
ICAgdXBkYXRlQ29udGVudHNSZWN0KCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFtX2Nv
bnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9IHRy
dWU7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBvbGQgY29udGVudHMgbGF5ZXIgd2lsbCBiZSByZW1v
dmVkIHZpYSB1cGRhdGVDaGlsZExpc3QuCi0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIucmVz
ZXQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCi0gICAg
ICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwotfQotCi1XZWJLaXQ6OldlYkxheWVyIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6cHJpbWFyeUxheWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90cmFuc2Zv
cm1MYXllci5pc051bGwoKSA/IG1fbGF5ZXIgOiBtX3RyYW5zZm9ybUxheWVyOwogfQogCiBQbGF0
Zm9ybUxheWVyKiBHcmFwaGljc0xheWVyQ2hyb21pdW06OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAog
ewotICAgIHJldHVybiBjb25zdF9jYXN0PFBsYXRmb3JtTGF5ZXIqPihtX3RyYW5zZm9ybUxheWVy
LmlzTnVsbCgpID8gJm1fbGF5ZXIgOiAmbV90cmFuc2Zvcm1MYXllcik7CisgICAgcmV0dXJuIG1f
dHJhbnNmb3JtTGF5ZXIgPyBtX3RyYW5zZm9ybUxheWVyLmdldCgpIDogbV9sYXllci0+bGF5ZXIo
KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldERlYnVnQmFja2dyb3VuZENv
bG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKICAgICBpZiAoY29sb3IuaXNWYWxpZCgpKQotICAg
ICAgICBtX2xheWVyLnNldEJhY2tncm91bmRDb2xvcihjb2xvci5yZ2IoKSk7CisgICAgICAgIG1f
bGF5ZXItPmxheWVyKCktPnNldEJhY2tncm91bmRDb2xvcihjb2xvci5yZ2IoKSk7CiAgICAgZWxz
ZQotICAgICAgICBtX2xheWVyLnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+
KDApKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0QmFja2dyb3VuZENvbG9yKHN0YXRp
Y19jYXN0PFJHQkEzMj4oMCkpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0
RGVidWdCb3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCkKIHsKICAg
ICBpZiAoY29sb3IuaXNWYWxpZCgpKSB7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3JkZXJD
b2xvcihjb2xvci5yZ2IoKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3JkZXJXaWR0aChi
b3JkZXJXaWR0aCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERlYnVnQm9yZGVyQ29s
b3IoY29sb3IucmdiKCkpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXREZWJ1Z0JvcmRl
cldpZHRoKGJvcmRlcldpZHRoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX2xheWVyLnNldERl
YnVnQm9yZGVyQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7Ci0gICAgICAgIG1fbGF5ZXIu
c2V0RGVidWdCb3JkZXJXaWR0aCgwKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RGVi
dWdCb3JkZXJDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKKyAgICAgICAgbV9sYXllci0+
bGF5ZXIoKS0+c2V0RGVidWdCb3JkZXJXaWR0aCgwKTsKICAgICB9CiB9CiAKIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVDaGlsZExpc3QoKQogewotICAgIFZlY3RvcjxXZWJMYXll
cj4gbmV3Q2hpbGRyZW47CisgICAgVmVjdG9yPFdlYkxheWVyKj4gbmV3Q2hpbGRyZW47CiAKLSAg
ICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICBpZiAobV90cmFuc2Zvcm1M
YXllcikgewogICAgICAgICAvLyBBZGQgdGhlIHByaW1hcnkgbGF5ZXIgZmlyc3QuIEV2ZW4gaWYg
d2UgaGF2ZSBuZWdhdGl2ZSB6LW9yZGVyIGNoaWxkcmVuLCB0aGUgcHJpbWFyeSBsYXllciBhbHdh
eXMgY29tZXMgYmVoaW5kLgotICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQobV9sYXllcik7Ci0g
ICAgfSBlbHNlIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKSB7CisgICAgICAgIG5ld0No
aWxkcmVuLmFwcGVuZChtX2xheWVyLT5sYXllcigpKTsKKyAgICB9IGVsc2UgaWYgKG1fY29udGVu
dHNMYXllcikgewogICAgICAgICAvLyBGSVhNRTogYWRkIHRoZSBjb250ZW50cyBsYXllciBpbiB0
aGUgY29ycmVjdCBvcmRlciB3aXRoIG5lZ2F0aXZlIHotb3JkZXIgY2hpbGRyZW4uCiAgICAgICAg
IC8vIFRoaXMgZG9lcyBub3QgY2F1c2UgdmlzaWJsZSByZW5kZXJpbmcgaXNzdWVzIGJlY2F1c2Ug
Y3VycmVudGx5IGNvbnRlbnRzIGxheWVycyBhcmUgb25seSB1c2VkCiAgICAgICAgIC8vIGZvciBy
ZXBsYWNlZCBlbGVtZW50cyB0aGF0IGRvbid0IGhhdmUgY2hpbGRyZW4uCkBAIC02NDksNzkgKzU5
Miw3NiBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ2hpbGRMaXN0KCkKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUNoaWxkcmVuOyArK2kpIHsKICAgICAgICAgR3Jh
cGhpY3NMYXllckNocm9taXVtKiBjdXJDaGlsZCA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bSo+KGNoaWxkTGF5ZXJzW2ldKTsKIAotICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQo
Y3VyQ2hpbGQtPnByaW1hcnlMYXllcigpKTsKKyAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKGN1
ckNoaWxkLT5wbGF0Zm9ybUxheWVyKCkpOwogICAgIH0KIAotICAgIGlmIChtX2xpbmtIaWdobGln
aHQpCi0gICAgICAgIG5ld0NoaWxkcmVuLmFwcGVuZChtX2xpbmtIaWdobGlnaHQtPmNvbnRlbnRM
YXllcigpKTsKLQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgp
OyArK2kpCi0gICAgICAgIG5ld0NoaWxkcmVuW2ldLnJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICAg
ICAgbmV3Q2hpbGRyZW5baV0tPnJlbW92ZUZyb21QYXJlbnQoKTsKIAotICAgIFdlYlZlY3RvcjxX
ZWJMYXllcj4gbmV3V2ViQ2hpbGRyZW47CisgICAgV2ViVmVjdG9yPFdlYkxheWVyKj4gbmV3V2Vi
Q2hpbGRyZW47CiAgICAgbmV3V2ViQ2hpbGRyZW4uYXNzaWduKG5ld0NoaWxkcmVuLmRhdGEoKSwg
bmV3Q2hpbGRyZW4uc2l6ZSgpKTsKIAotICAgIGlmICghbV90cmFuc2Zvcm1MYXllci5pc051bGwo
KSkgewotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldENoaWxkcmVuKG5ld1dlYkNoaWxkcmVu
KTsKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikgeworICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LT5zZXRDaGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CiAKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRz
TGF5ZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYgKG1fY29udGVudHNMYXllcikgewogICAgICAg
ICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9ybSBsYXllciwgdGhlbiB0aGUgY29udGVudHMg
bGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlCiAgICAgICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3
aGljaCBpcyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyKS4KLSAgICAgICAg
ICAgIG1fbGF5ZXIucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIG1fbGF5ZXIuYWRk
Q2hpbGQobV9jb250ZW50c0xheWVyKTsKKyAgICAgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnJl
bW92ZUFsbENoaWxkcmVuKCk7CisgICAgICAgICAgICBtX2xheWVyLT5sYXllcigpLT5hZGRDaGls
ZChtX2NvbnRlbnRzTGF5ZXIpOwogICAgICAgICB9CiAgICAgfSBlbHNlCi0gICAgICAgIG1fbGF5
ZXIuc2V0Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4pOworICAgICAgICBtX2xheWVyLT5sYXllcigp
LT5zZXRDaGlsZHJlbihuZXdXZWJDaGlsZHJlbik7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllclBvc2l0aW9uKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRQ
b3NpdGlvbihtX3Bvc2l0aW9uKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldFBvc2l0aW9uKG1f
cG9zaXRpb24pOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJT
aXplKCkKIHsKICAgICBJbnRTaXplIGxheWVyU2l6ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhl
aWdodCgpKTsKLSAgICBpZiAoIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAg
bV90cmFuc2Zvcm1MYXllci5zZXRCb3VuZHMobGF5ZXJTaXplKTsKLSAgICAgICAgbV9sYXllci5z
ZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOworICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7Cisg
ICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEJvdW5kcyhsYXllclNpemUpOworICAgICAgICBt
X2xheWVyLT5sYXllcigpLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOwogICAgIH0KIAotICAg
IG1fbGF5ZXIuc2V0Qm91bmRzKGxheWVyU2l6ZSk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0
Qm91bmRzKGxheWVyU2l6ZSk7CiAKLSAgICAvLyBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1f
Y29udGVudHNMYXllci4gSXQncyB1cCB0aGUgY2FsbGVyIHRvIGRvIHRoYXQuCisgICAgLy8gTm90
ZSB0aGF0IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRlbnRzTGF5ZXItPiBJdCdzIHVwIHRoZSBjYWxs
ZXIgdG8gZG8gdGhhdC4KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUFu
Y2hvclBvaW50KCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBvaW50LnkoKSkpOwotICAgIHByaW1hcnlM
YXllcigpLnNldEFuY2hvclBvaW50WihtX2FuY2hvclBvaW50LnooKSk7CisgICAgcGxhdGZvcm1M
YXllcigpLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2Fu
Y2hvclBvaW50LnkoKSkpOworICAgIHBsYXRmb3JtTGF5ZXIoKS0+c2V0QW5jaG9yUG9pbnRaKG1f
YW5jaG9yUG9pbnQueigpKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZVRyYW5zZm9ybSgpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkuc2V0VHJhbnNmb3JtKFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KG1fdHJhbnNmb3JtKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRU
cmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgobV90cmFuc2Zvcm0pKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCkKIHsKLSAg
ICBwcmltYXJ5TGF5ZXIoKS5zZXRTdWJsYXllclRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeChtX2NoaWxkcmVuVHJhbnNmb3JtKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRTdWJs
YXllclRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2NoaWxkcmVuVHJhbnNmb3Jt
KSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVNYXNrc1RvQm91bmRz
KCkKIHsKLSAgICBtX2xheWVyLnNldE1hc2tzVG9Cb3VuZHMobV9tYXNrc1RvQm91bmRzKTsKKyAg
ICBtX2xheWVyLT5sYXllcigpLT5zZXRNYXNrc1RvQm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAg
ICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9t
aXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKIHsKLSAgICBpZiAobV9wcmVzZXJ2ZXMzRCAm
JiBtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7CisgICAgaWYgKG1fcHJlc2VydmVzM0QgJiYg
IW1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbGF5
ZXIuCi0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAg
ICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0UHJlc2VydmVzM0QodHJ1ZSk7Ci0gICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fbGF5ZXIu
dHJhbnNmZXJBbmltYXRpb25zVG8oJm1fdHJhbnNmb3JtTGF5ZXIpOworICAgICAgICBtX3RyYW5z
Zm9ybUxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgbV90cmFu
c2Zvcm1MYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5
ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOworICAgICAgICBtX2xheWVyLT5sYXllcigp
LT50cmFuc2ZlckFuaW1hdGlvbnNUbyhtX3RyYW5zZm9ybUxheWVyLmdldCgpKTsKIAogICAgICAg
ICAvLyBDb3B5IHRoZSBwb3NpdGlvbiBmcm9tIHRoaXMgbGF5ZXIuCiAgICAgICAgIHVwZGF0ZUxh
eWVyUG9zaXRpb24oKTsKQEAgLTczMCwzNCArNjcwLDM0IEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgdXBkYXRlVHJhbnNmb3Jt
KCk7CiAgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKCk7CiAKLSAgICAgICAgbV9sYXll
ci5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOworICAgICAgICBtX2xheWVyLT5sYXll
cigpLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogCi0gICAgICAgIG1fbGF5ZXIu
c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLjVmLCAwLjVmKSk7Ci0gICAgICAgIG1fbGF5ZXIu
c2V0VHJhbnNmb3JtKFNrTWF0cml4NDQoKSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNl
dEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMC41ZiwgMC41ZikpOworICAgICAgICBtX2xheWVyLT5s
YXllcigpLT5zZXRUcmFuc2Zvcm0oU2tNYXRyaXg0NCgpKTsKIAogICAgICAgICAvLyBTZXQgdGhl
IG9sZCBsYXllciB0byBvcGFjaXR5IG9mIDEuIEZ1cnRoZXIgZG93biB3ZSB3aWxsIHNldCB0aGUg
b3BhY2l0eSBvbiB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX2xheWVyLnNldE9wYWNp
dHkoMSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldE9wYWNpdHkoMSk7CiAKLSAgICAg
ICAgbV9sYXllci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CisgICAgICAgIG1f
bGF5ZXItPnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKIAogICAgICAgICAvLyBN
b3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBvZiB0aGUgdHJhbnNmb3JtIGxheWVyLgogICAg
ICAgICBpZiAocGFyZW50KCkpCi0gICAgICAgICAgICBwYXJlbnQoKS0+cGxhdGZvcm1MYXllcigp
LT5yZXBsYWNlQ2hpbGQobV9sYXllciwgbV90cmFuc2Zvcm1MYXllcik7Ci0gICAgICAgIG1fdHJh
bnNmb3JtTGF5ZXIuYWRkQ2hpbGQobV9sYXllcik7CisgICAgICAgICAgICBwYXJlbnQoKS0+cGxh
dGZvcm1MYXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllci0+bGF5ZXIoKSwgbV90cmFuc2Zvcm1M
YXllci5nZXQoKSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPmFkZENoaWxkKG1fbGF5ZXIt
PmxheWVyKCkpOwogCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwotICAgIH0gZWxzZSBpZiAo
IW1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICB9IGVs
c2UgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8g
UmVsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0aGUgcGFyZW50IHdpdGggdGhpcyBsYXllci4K
LSAgICAgICAgbV9sYXllci5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgICAgIG1fbGF5ZXItPmxh
eWVyKCktPnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICAgICAgaWYgKHBhcmVudCgpKQotICAgICAg
ICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3Jt
TGF5ZXIsIG1fbGF5ZXIpOworICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+
cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIuZ2V0KCksIG1fbGF5ZXItPmxheWVyKCkpOwog
Ci0gICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1f
dHJhbnNmb3JtTGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fbGF5ZXIpOworICAgICAgICBt
X2xheWVyLT5sYXllcigpLT5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90
cmFuc2Zvcm1MYXllci0+dHJhbnNmZXJBbmltYXRpb25zVG8obV9sYXllci0+bGF5ZXIoKSk7CiAK
ICAgICAgICAgLy8gUmVsZWFzZSB0aGUgdHJhbnNmb3JtIGxheWVyLgotICAgICAgICBtX3RyYW5z
Zm9ybUxheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOwotICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyLnJlc2V0KCk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVn
YXRlKDApOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLmNsZWFyKCk7CiAKICAgICAgICAgdXBk
YXRlTGF5ZXJQb3NpdGlvbigpOwogICAgICAgICB1cGRhdGVMYXllclNpemUoKTsKQEAgLTc2OCwz
OSArNzA4LDM5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNl
cnZlczNEKCkKICAgICAgICAgdXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAgfQogCi0gICAgbV9sYXll
ci5zZXRQcmVzZXJ2ZXMzRChtX3ByZXNlcnZlczNEKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRP
cGFjaXR5KG1fb3BhY2l0eSk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0UHJlc2VydmVzM0Qo
bV9wcmVzZXJ2ZXMzRCk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRPcGFjaXR5KG1fb3BhY2l0
eSk7CiAgICAgdXBkYXRlTmFtZXMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnVwZGF0ZUxheWVySXNEcmF3YWJsZSgpCiB7CiAgICAgLy8gRm9yIHRoZSByZXN0IG9mIHRoZSBh
Y2NlbGVyYXRlZCBjb21wb3NpdG9yIGNvZGUsIHRoZXJlIGlzIG5vIHJlYXNvbiB0byBtYWtlIGEK
LSAgICAvLyBkaXN0aW5jdGlvbiBiZXR3ZWVuIGRyYXdzQ29udGVudCBhbmQgY29udGVudHNWaXNp
YmxlLiBTbywgZm9yIG1fbGF5ZXIsIHRoZXNlIHR3bworICAgIC8vIGRpc3RpbmN0aW9uIGJldHdl
ZW4gZHJhd3NDb250ZW50IGFuZCBjb250ZW50c1Zpc2libGUuIFNvLCBmb3IgbV9sYXllci0+bGF5
ZXIoKSwgdGhlc2UgdHdvCiAgICAgLy8gZmxhZ3MgYXJlIGNvbWJpbmVkIGhlcmUuIG1fY29udGVu
dHNMYXllciBzaG91bGRuJ3QgcmVjZWl2ZSB0aGUgZHJhd3NDb250ZW50IGZsYWcKICAgICAvLyBz
byBpdCBpcyBvbmx5IGdpdmVuIGNvbnRlbnRzVmlzaWJsZS4KIAotICAgIG1fbGF5ZXIuc2V0RHJh
d3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKKyAgICBtX2xh
eWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRlbnQobV9kcmF3c0NvbnRlbnQgJiYgbV9jb250ZW50
c1Zpc2libGUpOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAg
IG1fY29udGVudHNMYXllci5zZXREcmF3c0NvbnRlbnQobV9jb250ZW50c1Zpc2libGUpOworICAg
IGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RHJhd3ND
b250ZW50KG1fY29udGVudHNWaXNpYmxlKTsKIAogICAgIGlmIChtX2RyYXdzQ29udGVudCkKLSAg
ICAgICAgbV9sYXllci5pbnZhbGlkYXRlKCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmlu
dmFsaWRhdGUoKTsKIAogICAgIHVwZGF0ZURlYnVnSW5kaWNhdG9ycygpOwogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJCYWNrZ3JvdW5kQ29sb3IoKQogewotICAg
IGlmIChtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFdlIG5ldmVyIGNyZWF0ZSB0aGUgY29udGVudHMg
bGF5ZXIganVzdCBmb3IgYmFja2dyb3VuZCBjb2xvciB5ZXQuCiAgICAgaWYgKG1fYmFja2dyb3Vu
ZENvbG9yU2V0KQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QmFja2dyb3VuZENvbG9yKG1f
YmFja2dyb3VuZENvbG9yLnJnYigpKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNr
Z3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5kQ29sb3IucmdiKCkpOwogICAgIGVsc2UKLSAgICAgICAg
bV9jb250ZW50c0xheWVyLnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDAp
KTsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nh
c3Q8UkdCQTMyPigwKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVD
b250ZW50c1ZpZGVvKCkKQEAgLTgxMCw1MCArNzUwLDQ5IEBAIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVDb250ZW50c1ZpZGVvKCkKIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbnRlbnRzUmVjdCgpCiB7Ci0gICAgaWYgKG1fY29udGVudHNMYXllci5pc051
bGwoKSkKKyAgICBpZiAoIW1fY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9jb250ZW50c0xheWVyLnNldFBvc2l0aW9uKEZsb2F0UG9pbnQobV9jb250ZW50c1JlY3QueCgp
LCBtX2NvbnRlbnRzUmVjdC55KCkpKTsKLSAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0Qm91bmRzKElu
dFNpemUobV9jb250ZW50c1JlY3Qud2lkdGgoKSwgbV9jb250ZW50c1JlY3QuaGVpZ2h0KCkpKTsK
KyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQobV9jb250ZW50c1Jl
Y3QueCgpLCBtX2NvbnRlbnRzUmVjdC55KCkpKTsKKyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKG1fY29udGVudHNSZWN0LndpZHRoKCksIG1fY29udGVudHNSZWN0LmhlaWdo
dCgpKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVDb250ZW50c1Nj
YWxlKCkKIHsKICAgICAvLyBJZiBwYWdlIHNjYWxlIGlzIGFscmVhZHkgYXBwbGllZCB0aGVuIHRo
ZXJlJ3Mgbm8gbmVlZCB0byBhcHBseSBpdCBhZ2Fpbi4KLSAgICBpZiAoYXBwbGllc1BhZ2VTY2Fs
ZSgpIHx8IG1fbGF5ZXIuaXNOdWxsKCkpCisgICAgaWYgKGFwcGxpZXNQYWdlU2NhbGUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9sYXllci5zZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2Nh
bGUoKSk7CisgICAgbV9sYXllci0+c2V0Q29udGVudHNTY2FsZShjb250ZW50c1NjYWxlKCkpOwog
fQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250ZW50c0xheWVyKFdlYkxh
eWVyIGNvbnRlbnRzTGF5ZXIpCit2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0dXBDb250
ZW50c0xheWVyKFdlYkxheWVyKiBjb250ZW50c0xheWVyKQogewogICAgIGlmIChjb250ZW50c0xh
eWVyID09IG1fY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2Nv
bnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldFVzZVBh
cmVudEJhY2tmYWNlVmlzaWJpbGl0eShmYWxzZSk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5y
ZW1vdmVGcm9tUGFyZW50KCk7Ci0gICAgICAgIG1fY29udGVudHNMYXllci5yZXNldCgpOworICAg
IGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXRVc2VQ
YXJlbnRCYWNrZmFjZVZpc2liaWxpdHkoZmFsc2UpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXIt
PnJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB9CiAKICAgICBtX2NvbnRlbnRzTGF5ZXIgPSBjb250
ZW50c0xheWVyOwogCi0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAg
ICAgbV9jb250ZW50c0xheWVyLnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwotICAg
ICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHRydWUp
OworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpIHsKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICAgICAgbV9jb250ZW50c0xheWVy
LT5zZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkodHJ1ZSk7CiAKICAgICAgICAgLy8gSXQg
aXMgbmVjZXNzYXJ5IHRvIGNhbGwgc2V0RHJhd3NDb250ZW50IGFzIHNvb24gYXMgd2UgcmVjZWl2
ZSB0aGUgbmV3IGNvbnRlbnRzTGF5ZXIsIGZvcgogICAgICAgICAvLyB0aGUgY29ycmVjdG5lc3Mg
b2YgZWFybHkgZXhpdCBjb25kaXRpb25zIGluIHNldERyYXdzQ29udGVudCgpIGFuZCBzZXRDb250
ZW50c1Zpc2libGUoKS4KLSAgICAgICAgbV9jb250ZW50c0xheWVyLnNldERyYXdzQ29udGVudCht
X2NvbnRlbnRzVmlzaWJsZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RHJhd3NDb250
ZW50KG1fY29udGVudHNWaXNpYmxlKTsKIAogICAgICAgICAvLyBJbnNlcnQgdGhlIGNvbnRlbnQg
bGF5ZXIgZmlyc3QuIFZpZGVvIGVsZW1lbnRzIHJlcXVpcmUgdGhpcywgYmVjYXVzZSB0aGV5IGhh
dmUKICAgICAgICAgLy8gc2hhZG93IGNvbnRlbnQgdGhhdCBtdXN0IGRpc3BsYXkgaW4gZnJvbnQg
b2YgdGhlIHZpZGVvLgotICAgICAgICBtX2xheWVyLmluc2VydENoaWxkKG1fY29udGVudHNMYXll
ciwgMCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPmluc2VydENoaWxkKG1fY29udGVudHNM
YXllciwgMCk7CiAKICAgICAgICAgaWYgKHNob3dEZWJ1Z0JvcmRlcnMoKSkgewotICAgICAgICAg
ICAgbV9jb250ZW50c0xheWVyLnNldERlYnVnQm9yZGVyQ29sb3IoQ29sb3IoMCwgMCwgMTI4LCAx
ODApLnJnYigpKTsKLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci5zZXREZWJ1Z0JvcmRlcldp
ZHRoKDEpOworICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLT5zZXREZWJ1Z0JvcmRlckNvbG9y
KENvbG9yKDAsIDAsIDEyOCwgMTgwKS5yZ2IoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRzTGF5
ZXItPnNldERlYnVnQm9yZGVyV2lkdGgoMSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdXBkYXRl
RGVidWdJbmRpY2F0b3JzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCmluZGV4
IGFhNjRlYWQ2ZDY2NWUyNThkOTBkMDI2MGZhYTkxMTUwYjk2ZGFkNmIuLjU1N2FiNGRkODJjZmFj
NDU2ZjRjNGY4ZGMwZWUyNmE5MDViMTMwNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5oCkBAIC0zOSw2ICszOSw3IEBACiAKICNpbmNsdWRlIDxwdWJsaWMvV2ViQW5pbWF0aW9u
RGVsZWdhdGUuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+CisjaW5jbHVk
ZSA8cHVibGljL1dlYkltYWdlTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC0xMDEsNyArMTAyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGVudHNUb01lZGlhKFBsYXRmb3JtTGF5ZXIqKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKik7Ci0gICAgdmlydHVhbCBib29s
IGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiAhbV9jb250ZW50c0xheWVyLmlzTnVs
bCgpOyB9CisgICAgdmlydHVhbCBib29sIGhhc0NvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRlbnRzTGF5ZXI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oY29u
c3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmlt
YXRpb24qLCBjb25zdCBTdHJpbmcmLCBkb3VibGUgdGltZU9mZnNldCk7CiAgICAgdmlydHVhbCB2
b2lkIHBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgZG91YmxlIHRp
bWVPZmZzZXQpOwpAQCAtMTI1LDE1ICsxMjYsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGRvdWJsZSBzdGFydFRpbWUpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlBbmltYXRpb25GaW5pc2hlZChkb3VibGUgZmluaXNoVGltZSkg
T1ZFUlJJREU7CiAKKyAgICBXZWJLaXQ6OldlYkNvbnRlbnRMYXllciogY29udGVudExheWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9sYXllci5nZXQoKTsgfQorCiAgICAgLy8gRXhwb3NlZCBmb3IgdGVz
dHMuCi0gICAgV2ViS2l0OjpXZWJMYXllciBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1cm4g
bV9jb250ZW50c0xheWVyOyB9CisgICAgV2ViS2l0OjpXZWJMYXllciogY29udGVudHNMYXllcigp
IGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNMYXllcjsgfQogICAgIGZsb2F0IGNvbnRlbnRzU2Nh
bGUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVk
KCk7Ci0KLSAgICBXZWJLaXQ6OldlYkxheWVyIHByaW1hcnlMYXllcigpIGNvbnN0OwotCiAgICAg
dm9pZCB1cGRhdGVOYW1lcygpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGRMaXN0KCk7CiAgICAgdm9p
ZCB1cGRhdGVMYXllclBvc2l0aW9uKCk7CkBAIC0xNTEsMzIgKzE1MCwzMiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlQ29udGVudHNSZWN0KCk7CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c1Nj
YWxlKCk7CiAKLSAgICB2b2lkIHNldHVwQ29udGVudHNMYXllcihXZWJLaXQ6OldlYkxheWVyKTsK
KyAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKKyAgICAgICAgTm9Db250ZW50c0xheWVy
ID0gMCwKKyAgICAgICAgQ29udGVudHNMYXllckZvckltYWdlLAorICAgICAgICBDb250ZW50c0xh
eWVyRm9yVmlkZW8sCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JDYW52YXMsCisgICAgfTsKKwor
ICAgIHZvaWQgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyUHVycG9zZSwgV2ViS2l0OjpXZWJM
YXllciopOworICAgIHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFdlYktpdDo6V2ViTGF5ZXIqKTsK
IAogICAgIGludCBtYXBBbmltYXRpb25OYW1lVG9JZChjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUpOwogCiAgICAgU3RyaW5nIG1fbmFtZUJhc2U7CiAKLSAgICBXZWJLaXQ6OldlYkNvbnRlbnRM
YXllciBtX2xheWVyOwotICAgIFdlYktpdDo6V2ViTGF5ZXIgbV90cmFuc2Zvcm1MYXllcjsKLSAg
ICBXZWJLaXQ6OldlYkxheWVyIG1fY29udGVudHNMYXllcjsKKyAgICBPd25QdHI8V2ViS2l0OjpX
ZWJDb250ZW50TGF5ZXI+IG1fbGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViTGF5ZXI+IG1f
dHJhbnNmb3JtTGF5ZXI7CisgICAgT3duUHRyPFdlYktpdDo6V2ViSW1hZ2VMYXllcj4gbV9pbWFn
ZUxheWVyOworICAgIFdlYktpdDo6V2ViTGF5ZXIqIG1fY29udGVudHNMYXllcjsKIAogICAgIE93
blB0cjxPcGFxdWVSZWN0VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZT4gbV9vcGFxdWVSZWN0
VHJhY2tpbmdDb250ZW50TGF5ZXJEZWxlZ2F0ZTsKIAotICAgIGVudW0gQ29udGVudHNMYXllclB1
cnBvc2UgewotICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAotICAgICAgICBDb250ZW50c0xh
eWVyRm9ySW1hZ2UsCi0gICAgICAgIENvbnRlbnRzTGF5ZXJGb3JWaWRlbywKLSAgICAgICAgQ29u
dGVudHNMYXllckZvckNhbnZhcywKLSAgICB9OwotCiAgICAgQ29udGVudHNMYXllclB1cnBvc2Ug
bV9jb250ZW50c0xheWVyUHVycG9zZTsKICAgICBib29sIG1fY29udGVudHNMYXllckhhc0JhY2tn
cm91bmRDb2xvciA6IDE7CiAgICAgYm9vbCBtX2luU2V0Q2hpbGRyZW47CiAgICAgYm9vbCBtX3Bh
Z2VTY2FsZUNoYW5nZWQ7CiAKLSAgICBSZWZQdHI8TGlua0hpZ2hsaWdodD4gbV9saW5rSGlnaGxp
Z2h0OwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgaW50PiBBbmltYXRpb25JZE1hcDsK
ICAgICBBbmltYXRpb25JZE1hcCBtX2FuaW1hdGlvbklkTWFwOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggMzBjODFiNjVjOGU1ODgyMTAwYmE5MWJlOThhYzdmMTE5MmNkZjJmNC4uNGU3
ZmE3NGY1NTZlOTllODgwNDU5ZDU3NTM2Njg0ZGQ4MWEyODFkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTIzNCwxMCArMjM0LDExIEBAIHZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0Qm91bmRz
KGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLWNv
bnN0IExheWVyQ2hyb21pdW0qIExheWVyQ2hyb21pdW06OnJvb3RMYXllcigpIGNvbnN0CitMYXll
ckNocm9taXVtKiBMYXllckNocm9taXVtOjpyb290TGF5ZXIoKQogewotICAgIGNvbnN0IExheWVy
Q2hyb21pdW0qIGxheWVyID0gdGhpczsKLSAgICBmb3IgKExheWVyQ2hyb21pdW0qIHBhcmVudCA9
IGxheWVyLT5wYXJlbnQoKTsgcGFyZW50OyBsYXllciA9IHBhcmVudCwgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnQoKSkgeyB9CisgICAgTGF5ZXJDaHJvbWl1bSogbGF5ZXIgPSB0aGlzOworICAgIHdo
aWxlIChsYXllci0+cGFyZW50KCkpCisgICAgICAgIGxheWVyID0gbGF5ZXItPnBhcmVudCgpOwog
ICAgIHJldHVybiBsYXllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IGVjMTRhNTFhN2I0
OTg4M2UwZTVmZjdjNjYyZDBlMzVjOTdkMzVkNTAuLjJlNTQxZWU3YmVjYzNlMzdiNzliOTQ0NjRh
ZTY1NTY2NGExZThjNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIC8vIFRoZSByb290IGxheWVyIGlzIGEgc3BlY2lhbCBjYXNlIC0tIGl0IG9wZXJh
dGVzIGluIHBoeXNpY2FsIHBpeGVscy4KICAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1f
dHJhbnNmb3JtOyB9CiAKLSAgICBjb25zdCBMYXllckNocm9taXVtKiByb290TGF5ZXIoKSBjb25z
dDsKKyAgICBMYXllckNocm9taXVtKiByb290TGF5ZXIoKTsKICAgICBMYXllckNocm9taXVtKiBw
YXJlbnQoKSBjb25zdDsKICAgICB2b2lkIGFkZENoaWxkKFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4pOwogICAgIHZvaWQgaW5zZXJ0Q2hpbGQoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiwgc2l6
ZV90IGluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBlMzUyYmFkMzkxYWVm
ZThkN2Y0MTlkZjEzMjE3MzhhYTkzOWRhZjYwLi44ZTU3Nzg0ZDNmNzgwMDVmY2Q1ZDg5ZTgzMWIz
ZmY5NGQwOWM2OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC00ODYsNyArNDg2
LDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbW1vbi5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViQ29tcG9zaXRvcklucHV0SGFuZGxlckltcGwuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYkNvbXBvc2l0b3JJbnB1dEhhbmRsZXJJbXBsLmgnLAotICAgICAgICAgICAg
ICAgICdzcmMvV2ViQ29udGVudExheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJD
b250ZW50TGF5ZXJJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb250ZW50TGF5
ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQ3Jvc3NPcmlnaW5QcmVmbGlnaHRS
ZXN1bHRDYWNoZS5jcHAnLApAQCAtNTE1LDcgKzUxNCw4IEBACiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJFbnRpdGllcy5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViRW50aXRpZXMuaCcsCi0gICAgICAgICAgICAgICAg
J3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMv
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJG
aWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJG
aWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRmls
ZVN5c3RlbUNhbGxiYWNrc0ltcGwuY3BwJywKQEAgLTU2NCw5ICs1NjQsMTEgQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYklEQlRyYW5zYWN0aW9uSW1wbC5oJywKICAgICAgICAgICAgICAgICAn
c3JjL1dlYklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzSW1wbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViSURCVHJhbnNhY3Rpb25DYWxsYmFja3NJbXBsLmgnLAotICAgICAgICAgICAgICAg
ICdzcmMvV2ViSU9TdXJmYWNlTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYklP
U3VyZmFjZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViSU9TdXJmYWNl
TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViSW1hZ2VEZWNvZGVyLmNwcCcs
Ci0gICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVyLmNwcCcsCisgICAgICAgICAgICAg
ICAgJ3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2Vi
SW1hZ2VMYXllckltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZVNraWEuY3Bw
JywKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RWxlbWVudC5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViSW5wdXRFdmVudC5jcHAnLApAQCAtNTc3LDcgKzU3OSw2IEBACiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJJbnRlbnRTZXJ2aWNlSW5mby5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViS2l0LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1l
bnQuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxh
eWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwJywK
QEAgLTYxOCw4ICs2MTksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2NvcGVkTWljcm90
YXNrU3VwcHJlc3Npb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJH
ZXN0dXJlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNw
cCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAnLAotICAgICAg
ICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYWJsZUxheWVyLmNwcCcsCisgICAgICAgICAgICAgICAg
J3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YlNjcm9sbGJhckxheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJh
ckltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckltcGwuaCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwuY3BwJywKQEAg
LTYzOCw4ICs2MzksOCBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU29ja2V0LmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2NrZXRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTb2NrZXRJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViU29saWRDb2xv
ckxheWVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBs
LmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViU3BlZWNoR3JhbW1hci5jcHAnLAogICAgICAgICAgICAg
ICAgICdzcmMvV2ViU3BlZWNoSW5wdXRSZXN1bHQuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlNwZWVjaFJlY29nbml0aW9uSGFuZGxlLmNwcCcsCkBAIC02NTUsNyArNjU2LDggQEAKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlNjb3BlZFVzZXJHZXN0dXJlLmNwcCcsCiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJUZXh0RmllbGREZWNvcmF0b3JDbGllbnQuY3BwJywKICAgICAgICAgICAg
ICAgICAnc3JjL1dlYlVzZXJNZWRpYVJlcXVlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAnc3Jj
L1dlYlZpZGVvTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlZpZGVvTGF5ZXJJ
bXBsLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJWaWRlb0xheWVySW1wbC5oJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlZpZXdCZW5jaG1hcmtTdXBwb3J0SW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViVmlld0JlbmNobWFya1N1cHBvcnRJbXBsLmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViVmlld0ltcGwuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCmluZGV4IDY1ZGFj
NjJjYWUyNTNkNTE2NTg3NWNlNGUzMzZiZTg1Zjk3OGMxYmEuLjRkZjQyMDRiMzQ3YmM4ZGNlODdm
MTNhNmZiMGM2MjM0NWU3MGNjMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgi
CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgpAQCAtNDgsMTEgKzQ5LDExIEBA
IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KFdlYlZp
ZXdJbXBsKiB3ZWJWaWV3KQogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0TmFtZSgibm9uLWNvbXBv
c2l0ZWQgY29udGVudCIpOwogI2VuZGlmCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXREcmF3c0Nv
bnRlbnQodHJ1ZSk7Ci0gICAgV2ViQ29udGVudExheWVyIGxheWVyID0gbV9ncmFwaGljc0xheWVy
LT5wbGF0Zm9ybUxheWVyKCktPnRvPFdlYkNvbnRlbnRMYXllcj4oKTsKLSAgICBsYXllci5zZXRV
c2VMQ0RUZXh0KHRydWUpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBXZWJDb250
ZW50TGF5ZXIqIGxheWVyID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtKj4obV9ncmFwaGljc0xheWVyLmdldCgpKS0+Y29udGVudExheWVyKCk7CisgICAgbGF5ZXIt
PnNldFVzZUxDRFRleHQodHJ1ZSk7CisgICAgbGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZSh0cnVl
KTsKICNpZiAhT1MoQU5EUk9JRCkKLSAgICBsYXllci5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlz
c2luZ1RpbGVzKHRydWUpOworICAgIGxheWVyLT5zZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2lu
Z1RpbGVzKHRydWUpOwogI2VuZGlmCiB9CiAKQEAgLTgwLDcgKzgxLDcgQEAgdm9pZCBOb25Db21w
b3NpdGVkQ29udGVudEhvc3Q6OnNldFNjcm9sbExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIq
IGxheWVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCpsYXllci0+cGxhdGZv
cm1MYXllcigpID09IHNjcm9sbExheWVyKCkpCisgICAgaWYgKGxheWVyLT5wbGF0Zm9ybUxheWVy
KCkgPT0gc2Nyb2xsTGF5ZXIoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbGF5ZXItPmFkZENo
aWxkQXRJbmRleChtX2dyYXBoaWNzTGF5ZXIuZ2V0KCksIDApOwpAQCAtOTUsMTIgKzk2LDEyIEBA
IHZvaWQgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpzZXRWaWV3cG9ydChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiB2aWV3cG9ydFNpemUsCiAgICAgYm9vbCB2aXNpYmxlUmVjdENoYW5nZWQgPSBt
X3ZpZXdwb3J0U2l6ZSAhPSB2aWV3cG9ydFNpemU7CiAKICAgICBtX3ZpZXdwb3J0U2l6ZSA9IHZp
ZXdwb3J0U2l6ZTsKLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIgbGF5ZXIgPSBzY3JvbGxMYXllcigp
OwotICAgIGxheWVyLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsT3Jp
Z2luKTsKLSAgICBsYXllci5zZXRQb3NpdGlvbihXZWJGbG9hdFBvaW50KC1zY3JvbGxQb3NpdGlv
bikpOworICAgIFdlYkxheWVyKiBsYXllciA9IHNjcm9sbExheWVyKCk7CisgICAgbGF5ZXItPnNl
dFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uICsgc2Nyb2xsT3JpZ2luKTsKKyAgICBsYXll
ci0+c2V0UG9zaXRpb24oV2ViRmxvYXRQb2ludCgtc2Nyb2xsUG9zaXRpb24pKTsKICAgICAvLyBE
dWUgdG8gdGhlIHBvc3NpYmlsaXR5IG9mIHBpbmNoIHpvb20sIHRoZSBub25jb21wb3NpdGVkIGxh
eWVyIGlzIGFsd2F5cwogICAgIC8vIGFzc3VtZWQgdG8gYmUgc2Nyb2xsYWJsZS4KLSAgICBsYXll
ci5zZXRTY3JvbGxhYmxlKHRydWUpOworICAgIGxheWVyLT5zZXRTY3JvbGxhYmxlKHRydWUpOwog
ICAgIG1fZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZTsKICAgICBtX2dyYXBoaWNzTGF5
ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIG1fZ3JhcGhpY3NMYXll
ci0+c2V0U2l6ZShjb250ZW50c1NpemUpOwpAQCAtMTI3LDExICsxMjgsMTEgQEAgYm9vbCBOb25D
b21wb3NpdGVkQ29udGVudEhvc3Q6OmhhdmVTY3JvbGxMYXllcigpCiAgICAgcmV0dXJuIG1fZ3Jh
cGhpY3NMYXllci0+cGFyZW50KCk7CiB9CiAKLVdlYlNjcm9sbGFibGVMYXllciBOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6OnNjcm9sbExheWVyKCkKK1dlYkxheWVyKiBOb25Db21wb3NpdGVkQ29u
dGVudEhvc3Q6OnNjcm9sbExheWVyKCkKIHsKICAgICBpZiAoIW1fZ3JhcGhpY3NMYXllci0+cGFy
ZW50KCkpCi0gICAgICAgIHJldHVybiBXZWJTY3JvbGxhYmxlTGF5ZXIoKTsKLSAgICByZXR1cm4g
bV9ncmFwaGljc0xheWVyLT5wYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT50bzxXZWJTY3JvbGxh
YmxlTGF5ZXI+KCk7CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBtX2dyYXBoaWNzTGF5
ZXItPnBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCk7CiB9CiAKIHZvaWQgTm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0OjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuaAppbmRleCBlNjBlOWVmNDg2YjE0MjMxMjQ3MTNjNjhkZDZhYWMwZWVhNGE3ZGIzLi4w
OGI1ZjZhNDFmNzcwNjFlN2ViMjgxNTQyZjBmZThlNjM1ZmNjNzNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuaApAQCAt
MjksNyArMjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJJbnRTaXplLmgiCiAKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+Cisj
aW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBA
IC04MCw3ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBmbG9hdCBkZXZpY2VTY2FsZUZh
Y3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZGV2aWNlU2NhbGVGYWN0b3I7IH0KIAog
ICAgIGJvb2wgaGF2ZVNjcm9sbExheWVyKCk7Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyIHNjcm9s
bExheWVyKCk7CisgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCk7CiAKICAgICBPd25QdHI8V2Vi
Q29yZTo6R3JhcGhpY3NMYXllcj4gbV9ncmFwaGljc0xheWVyOwogICAgIFdlYlZpZXdJbXBsKiBt
X3dlYlZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250
ZW50TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVy
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNzQ2NWIxN2MxMzE2NzY5ODhm
YTY1YThkNmJhMDRmYjQ3YzY2Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXIuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+Ci0KLSNpbmNsdWRlICJDb250
ZW50TGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllckltcGwuaCIKLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJDb250
ZW50TGF5ZXIgV2ViQ29udGVudExheWVyOjpjcmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50KiBj
b250ZW50Q2xpZW50KQotewotICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVudExh
eWVySW1wbDo6Y3JlYXRlKGNvbnRlbnRDbGllbnQpKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5
ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8Q29udGVudExheWVyQ2hyb21pdW0+KCkt
PmNsZWFyRGVsZWdhdGUoKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldERvdWJsZVNp
ZGVkKGJvb2wgZG91YmxlU2lkZWQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREb3VibGVTaWRlZChk
b3VibGVTaWRlZCk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRDb250ZW50c1NjYWxl
KGZsb2F0IHNjYWxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Q29udGVudHNTY2FsZShzY2FsZSk7
Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXRVc2VMQ0RUZXh0KGJvb2wgZW5hYmxlKQot
ewotICAgIG1fcHJpdmF0ZS0+c2V0VXNlTENEVGV4dChlbmFibGUpOwotfQotCi12b2lkIFdlYkNv
bnRlbnRMYXllcjo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sIGVuYWJs
ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMo
ZW5hYmxlKTsKLX0KLQotV2ViQ29udGVudExheWVyOjpXZWJDb250ZW50TGF5ZXIoY29uc3QgUGFz
c1JlZlB0cjxDb250ZW50TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0gICAgOiBXZWJTY3JvbGxhYmxl
TGF5ZXIobm9kZSkKLXsKLX0KLQotV2ViQ29udGVudExheWVyJiBXZWJDb250ZW50TGF5ZXI6Om9w
ZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiYgbm9kZSkKLXsK
LSAgICBtX3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViQ29udGVu
dExheWVyOjpvcGVyYXRvciBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRlbnRMYXllckNocm9taXVtKj4obV9wcml2
YXRlLmdldCgpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3BwCmluZGV4IDY5ZGExZWEz
ZjBlODkyMDE2OTZkOGRkZWM3NjQ4ZTRmNDY0Yzk2NDguLmZhMjFlODk3NGZkM2IxYjk4MDZhNWMy
ZTFjYTk5ZTY5YzY5OGRjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvbnRlbnRMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkNvbnRlbnRMYXllckltcGwuY3BwCkBAIC0yNiwzNyArMjYsNjYgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCiAKKyNpbmNsdWRlICJT
a01hdHJpeDQ0LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkZs
b2F0UmVjdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYlNpemUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IFdlYkNvbnRlbnRMYXllcklt
cGw6OmNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCitXZWJDb250
ZW50TGF5ZXIqIFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCog
Y2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVudExheWVySW1wbChj
b250ZW50Q2xpZW50KSk7CisgICAgcmV0dXJuIG5ldyBXZWJDb250ZW50TGF5ZXJJbXBsKGNsaWVu
dCk7CiB9CiAKLVdlYkNvbnRlbnRMYXllckltcGw6OldlYkNvbnRlbnRMYXllckltcGwoV2ViQ29u
dGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KQotICAgIDogQ29udGVudExheWVyQ2hyb21p
dW0odGhpcykKLSAgICAsIG1fY29udGVudENsaWVudChjb250ZW50Q2xpZW50KQorV2ViQ29udGVu
dExheWVySW1wbDo6V2ViQ29udGVudExheWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNs
aWVudCkKKyAgICA6IG1fd2ViTGF5ZXJJbXBsKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwoQ29u
dGVudExheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzKSkpKQorICAgICwgbV9jbGllbnQoY2xpZW50
KQogewotICAgIHNldElzRHJhd2FibGUodHJ1ZSk7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVy
KCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdlYkNvbnRlbnRMYXllckltcGw6On5XZWJD
b250ZW50TGF5ZXJJbXBsKCkKIHsKLSAgICBjbGVhckRlbGVnYXRlKCk7CisgICAgc3RhdGljX2Nh
c3Q8Q29udGVudExheWVyQ2hyb21pdW0qPihtX3dlYkxheWVySW1wbC0+bGF5ZXIoKSktPmNsZWFy
RGVsZWdhdGUoKTsKIH0KIAorV2ViTGF5ZXIqIFdlYkNvbnRlbnRMYXllckltcGw6OmxheWVyKCkK
K3sKKyAgICByZXR1cm4gbV93ZWJMYXllckltcGwuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViQ29udGVu
dExheWVySW1wbDo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKK3sKKyAgICBtX3dl
YkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0RG91YmxlU2lkZWQoZG91YmxlU2lkZWQpOworfQorCit2
b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCit7
CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldENvbnRlbnRzU2NhbGUoc2NhbGUpOwor
fQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldFVzZUxDRFRleHQoYm9vbCBlbmFibGUp
Cit7CisgICAgbV93ZWJMYXllckltcGwtPmxheWVyKCktPnNldFVzZUxDRFRleHQoZW5hYmxlKTsK
K30KKwordm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlz
c2luZ1RpbGVzKGJvb2wgZW5hYmxlKQoreworICAgIG1fd2ViTGF5ZXJJbXBsLT5sYXllcigpLT5z
ZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGVuYWJsZSk7Cit9CisKKwogdm9pZCBX
ZWJDb250ZW50TGF5ZXJJbXBsOjpwYWludENvbnRlbnRzKFNrQ2FudmFzKiBjYW52YXMsIGNvbnN0
IEludFJlY3QmIGNsaXAsIEZsb2F0UmVjdCYgb3BhcXVlKQogewotICAgIGlmICghbV9jb250ZW50
Q2xpZW50KQorICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKICAgICBXZWJGbG9h
dFJlY3Qgd2ViT3BhcXVlOwotICAgIG1fY29udGVudENsaWVudC0+cGFpbnRDb250ZW50cyhjYW52
YXMsIFdlYlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7CisgICAgbV9jbGllbnQtPnBhaW50Q29udGVu
dHMoY2FudmFzLCBXZWJSZWN0KGNsaXApLCB3ZWJPcGFxdWUpOwogICAgIG9wYXF1ZSA9IHdlYk9w
YXF1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29u
dGVudExheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExh
eWVySW1wbC5oCmluZGV4IDk3NzI5ZWExZTBjMjAxYTA4YjFmOTA5MDdhNjI4MjgxYTRlMTBiNTku
LjUxMWY4ZTBiYTA4NjBiNDZhMDgxNTY1ZjA5ODdkZmYwZThhY2I1ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKQEAgLTI3LDIzICsy
NywzMyBAQAogI2RlZmluZSBXZWJDb250ZW50TGF5ZXJJbXBsX2gKIAogI2luY2x1ZGUgIkNvbnRl
bnRMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisjaW5jbHVkZSA8
cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50OwogCi1jbGFz
cyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9t
aXVtLCBwdWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVyRGVsZWdhdGUgeworY2xhc3MgV2ViQ29u
dGVudExheWVySW1wbCA6IHB1YmxpYyBXZWJDb250ZW50TGF5ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OkNvbnRlbnRMYXllckRlbGVnYXRlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBjcmVhdGUoV2Vi
Q29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKKyAgICBleHBsaWNpdCBXZWJDb250
ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRMYXllckNsaWVudCopOworCisgICAgLy8gV2ViQ29udGVu
dExheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wpICBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCkgIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzZXRVc2VMQ0RUZXh0KGJvb2wpICBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcyhib29sKSAgT1ZFUlJJREU7
CiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNvbnRl
bnRMYXllckNsaWVudCogY29udGVudENsaWVudCk7CiAgICAgdmlydHVhbCB+V2ViQ29udGVudExh
eWVySW1wbCgpOwogCiAgICAgLy8gQ29udGVudExheWVyRGVsZWdhdGUgaW1wbGVtZW50YXRpb24u
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoU2tDYW52YXMqLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwLCBXZWJDb3JlOjpGbG9hdFJlY3QmIG9wYXF1ZSkgT1ZFUlJJREU7CiAK
LSAgICBXZWJDb250ZW50TGF5ZXJDbGllbnQqIG1fY29udGVudENsaWVudDsKKyAgICBPd25QdHI8
V2ViTGF5ZXJJbXBsPiBtX3dlYkxheWVySW1wbDsKKyAgICBXZWJDb250ZW50TGF5ZXJDbGllbnQq
IG1fY2xpZW50OwogICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YWZmNTcyMTk0YzA4YTliYTgzZmE5MzUzYmM0
YzVmMWEzMTZiZGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyLmg+Ci0KLSNpbmNs
dWRlICJDQ1RleHR1cmVVcGRhdGVRdWV1ZS5oIgotI2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9t
aXVtLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50Lmg+
Ci0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJT
aXplLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotY2xhc3MgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIDogcHVibGljIFdlYlRleHR1cmVVcGRhdGVy
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJUZXh0dXJlVXBkYXRlckltcGwoQ0NUZXh0dXJl
VXBkYXRlUXVldWUmIHF1ZXVlKQotICAgICAgICA6IG1fcXVldWUocXVldWUpCi0gICAgewotICAg
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDb3B5KHVuc2lnbmVkIHNvdXJjZVRleHR1cmUs
IHVuc2lnbmVkIGRlc3RpbmF0aW9uVGV4dHVyZSwgV2ViU2l6ZSBzaXplKSBPVkVSUklERQotICAg
IHsKLSAgICAgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5ID0geyBzb3VyY2VUZXh0
dXJlLCBkZXN0aW5hdGlvblRleHR1cmUsIHNpemUgfTsKLSAgICAgICAgbV9xdWV1ZS5hcHBlbmRD
b3B5KGNvcHkpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBDQ1RleHR1cmVVcGRhdGVRdWV1ZSYg
bV9xdWV1ZTsKLX07Ci0KLWNsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1Ymxp
YyBUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCwgcHVibGljIFRleHR1cmVMYXllckNocm9taXVt
IHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKLSAgICAgICAgOiBUZXh0dXJlTGF5
ZXJDaHJvbWl1bShjbGllbnQgPyB0aGlzIDogMCkKLSAgICAgICAgLCBtX2NsaWVudChjbGllbnQp
Ci0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoQ0NU
ZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgV2ViVGV4
dHVyZVVwZGF0ZXJJbXBsIHVwZGF0ZXJJbXBsKHF1ZXVlKTsKLSAgICAgICAgcmV0dXJuIG1fY2xp
ZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBX
ZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgT1ZFUlJJREUKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBtX2NsaWVudC0+Y29udGV4dCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAg
ICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogbV9jbGllbnQ7Ci19OwotCi1XZWJFeHRl
cm5hbFRleHR1cmVMYXllciBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgUmVmUHRyPFRleHR1cmVMYXll
ckNocm9taXVtPiBsYXllciA9IGFkb3B0UmVmKG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGwoY2xpZW50KSk7Ci0gICAgbGF5ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJu
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKGxheWVyLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNsZWFyQ2xpZW50KCkKLXsKLSAgICB1bndyYXA8VGV4dHVy
ZUxheWVyQ2hyb21pdW0+KCktPmNsZWFyQ2xpZW50KCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxU
ZXh0dXJlTGF5ZXI6OnNldFRleHR1cmVJZCh1bnNpZ25lZCBpZCkKLXsKLSAgICB1bndyYXA8VGV4
dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFRleHR1cmVJZChpZCk7Ci19Ci0KLXZvaWQgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldEZsaXBwZWQoYm9vbCBmbGlwcGVkKQotewotICAgIHVud3Jh
cDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0RmxpcHBlZChmbGlwcGVkKTsKLX0KLQotdm9p
ZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VVZSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYg
cmVjdCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCktPnNldFVWUmVjdChy
ZWN0KTsKLX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0T3BhcXVlKGJvb2wg
b3BhcXVlKQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0T3BhcXVl
KG9wYXF1ZSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OnNldFByZW11bHRp
cGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKLXsKLSAgICB1bndyYXA8VGV4dHVy
ZUxheWVyQ2hyb21pdW0+KCktPnNldFByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxw
aGEpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjp3aWxsTW9kaWZ5VGV4dHVy
ZSgpCi17Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT53aWxsTW9kaWZ5VGV4
dHVyZSgpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRSYXRlTGltaXRD
b250ZXh0KGJvb2wgcmF0ZUxpbWl0KQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1
bT4oKS0+c2V0UmF0ZUxpbWl0Q29udGV4dChyYXRlTGltaXQpOwotfQotCi1XZWJFeHRlcm5hbFRl
eHR1cmVMYXllcjo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIoUGFzc1JlZlB0cjxUZXh0dXJlTGF5
ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjIxNjZmNDQ0
MTU2OGRiNGEyZjU5Njc0NWQ1MTNlZTJhZThjMjMxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcApAQCAt
MCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJF
eHRlcm5hbFRleHR1cmVMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkNDVGV4dHVyZVVwZGF0ZVF1
ZXVlLmgiCisjaW5jbHVkZSAiVGV4dHVyZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJM
YXllckltcGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGll
bnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8cHVibGlj
L1dlYlNpemUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitXZWJFeHRlcm5hbFRleHR1cmVMYXllciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6
OmNyZWF0ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogY2xpZW50KQoreworICAgIHJl
dHVybiBuZXcgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKGNsaWVudCk7Cit9CisKK1dlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4
dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2NsaWVudChjbGllbnQp
Cit7CisgICAgUmVmUHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXllcjsKKyAgICBpZiAobV9j
bGllbnQpCisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0ZSh0aGlz
KTsKKyAgICBlbHNlCisgICAgICAgIGxheWVyID0gVGV4dHVyZUxheWVyQ2hyb21pdW06OmNyZWF0
ZSgwKTsKKyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICBtX2xheWVyID0gYWRv
cHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllci5yZWxlYXNlKCkpKTsKK30KKworV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsOjp+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKCkKK3sKKyAg
ICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5j
bGVhckNsaWVudCgpOworfQorCitXZWJMYXllciogV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
OjpsYXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViRXh0
ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRUZXh0dXJlSWQodW5zaWduZWQgaWQpCit7CisgICAg
c3RhdGljX2Nhc3Q8VGV4dHVyZUxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0
VGV4dHVyZUlkKGlkKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNl
dEZsaXBwZWQoYm9vbCBmbGlwcGVkKQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNo
cm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldEZsaXBwZWQoZmxpcHBlZCk7Cit9CisKK3Zv
aWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRS
ZWN0JiByZWN0KQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9s
YXllci0+bGF5ZXIoKSktPnNldFVWUmVjdChyZWN0KTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKK3sKKyAgICBzdGF0aWNfY2Fz
dDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRPcGFxdWUob3Bh
cXVlKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldFByZW11bHRp
cGxpZWRBbHBoYShib29sIHByZW11bHRpcGxpZWRBbHBoYSkKK3sKKyAgICBzdGF0aWNfY2FzdDxU
ZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRQcmVtdWx0aXBsaWVk
QWxwaGEocHJlbXVsdGlwbGllZEFscGhhKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6OndpbGxNb2RpZnlUZXh0dXJlKCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJl
TGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT53aWxsTW9kaWZ5VGV4dHVyZSgpOwor
fQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0UmF0ZUxpbWl0Q29udGV4
dChib29sIHJhdGVMaW1pdCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1
bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5zZXRSYXRlTGltaXRDb250ZXh0KHJhdGVMaW1pdCk7Cit9
CisKK2NsYXNzIFdlYlRleHR1cmVVcGRhdGVySW1wbCA6IHB1YmxpYyBXZWJUZXh0dXJlVXBkYXRl
ciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsKENDVGV4dHVy
ZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKKyAgICAgICAgOiBtX3F1ZXVlKHF1ZXVlKQorICAgIHsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kQ29weSh1bnNpZ25lZCBzb3VyY2VUZXh0dXJl
LCB1bnNpZ25lZCBkZXN0aW5hdGlvblRleHR1cmUsIFdlYlNpemUgc2l6ZSkgT1ZFUlJJREUKKyAg
ICB7CisgICAgICAgIFRleHR1cmVDb3BpZXI6OlBhcmFtZXRlcnMgY29weSA9IHsgc291cmNlVGV4
dHVyZSwgZGVzdGluYXRpb25UZXh0dXJlLCBzaXplIH07CisgICAgICAgIG1fcXVldWUuYXBwZW5k
Q29weShjb3B5KTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQ0NUZXh0dXJlVXBkYXRlUXVldWUm
IG1fcXVldWU7Cit9OworCit1bnNpZ25lZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnBy
ZXBhcmVUZXh0dXJlKENDVGV4dHVyZVVwZGF0ZVF1ZXVlJiBxdWV1ZSkKK3sKKyAgICBBU1NFUlQo
bV9jbGllbnQpOworICAgIFdlYlRleHR1cmVVcGRhdGVySW1wbCB1cGRhdGVySW1wbChxdWV1ZSk7
CisgICAgcmV0dXJuIG1fY2xpZW50LT5wcmVwYXJlVGV4dHVyZSh1cGRhdGVySW1wbCk7Cit9CisK
K1dlYkdyYXBoaWNzQ29udGV4dDNEKiBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OmNvbnRl
eHQoKQoreworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgcmV0dXJuIG1fY2xpZW50LT5jb250
ZXh0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MzQ4ODk1YmYxY2Q1M2I1NDQ5M2IyMzU3ZDA4MTk2MmJmNTgzNGU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsLmgKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXJJbXBsX2gKKyNkZWZpbmUgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsX2gKKwor
I2luY2x1ZGUgIlRleHR1cmVMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJM
YXllckltcGw7CisKK2NsYXNzIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCA6IHB1YmxpYyBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCB7CitwdWJsaWM6
CisgICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsKFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyQ2xpZW50Kik7CisgICAgdmlydHVhbCB+V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsKCk7CisKKyAgICAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllciBpbXBsZW1lbnRhdGlvbi4K
KyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRUZXh0dXJlSWQodW5zaWduZWQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRG
bGlwcGVkKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRVVlJlY3QoY29uc3Qg
V2ViRmxvYXRSZWN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29s
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB3aWxsTW9kaWZ5VGV4dHVyZSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRSYXRlTGltaXRDb250ZXh0KGJvb2wpIE9WRVJSSURFOwor
CisgICAgLy8gVGV4dHVyZUxheWVyQ2hyb21pdW1DbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAg
dmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShXZWJDb3JlOjpDQ1RleHR1cmVVcGRhdGVR
dWV1ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQoKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNs
aWVudCogbV9jbGllbnQ7CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisK
K30KKworI2VuZGlmIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbF9oCisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzdkYjBjODc3NzdmZmI0NWZjODNiYzk5MGQ1ZWRmOTI1NGZi
ODUxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllci5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
PHB1YmxpYy9XZWJJT1N1cmZhY2VMYXllci5oPgotCi0jaW5jbHVkZSAiSU9TdXJmYWNlTGF5ZXJD
aHJvbWl1bS5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViSU9TdXJmYWNlTGF5ZXIgV2Vi
SU9TdXJmYWNlTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hy
b21pdW0+IGxheWVyID0gSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgbGF5
ZXItPnNldElzRHJhd2FibGUodHJ1ZSk7Ci0gICAgcmV0dXJuIFdlYklPU3VyZmFjZUxheWVyKGxh
eWVyLnJlbGVhc2UoKSk7Ci19Ci0KLXZvaWQgV2ViSU9TdXJmYWNlTGF5ZXI6OnNldElPU3VyZmFj
ZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUgc2l6ZSkKLXsKLSAgICB1
bndyYXA8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0SU9TdXJmYWNlUHJvcGVydGllcyhp
b1N1cmZhY2VJZCwgc2l6ZSk7Ci19Ci0KLVdlYklPU3VyZmFjZUxheWVyOjpXZWJJT1N1cmZhY2VM
YXllcihQYXNzUmVmUHRyPElPU3VyZmFjZUxheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogV2Vi
TGF5ZXIobGF5ZXIpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYmFiNzBjNjFkOGI0MTc0NDIyZDdmYzUzNTQzMjlmODkxZTkwOGI0ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1w
bC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJXZWJJT1N1cmZhY2VMYXllckltcGwuaCIKKworI2luY2x1ZGUgIklPU3VyZmFjZUxheWVy
Q2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwordXNpbmcgV2ViQ29yZTo6
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYklPU3Vy
ZmFjZUxheWVyKiBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkKK3sKKyAgICBSZWZQdHI8SU9T
dXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBJT1N1cmZhY2VMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKKyAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICByZXR1cm4gbmV3IFdl
YklPU3VyZmFjZUxheWVySW1wbChsYXllci5yZWxlYXNlKCkpOworfQorCitXZWJJT1N1cmZhY2VM
YXllckltcGw6OldlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPElPU3VyZmFjZUxheWVy
Q2hyb21pdW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBs
KGxheWVyKSkpCit7Cit9CisKK1dlYklPU3VyZmFjZUxheWVySW1wbDo6fldlYklPU3VyZmFjZUxh
eWVySW1wbCgpCit7Cit9CisKK3ZvaWQgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpzZXRJT1N1cmZh
Y2VQcm9wZXJ0aWVzKHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplIHNpemUpCit7CisgICAg
c3RhdGljX2Nhc3Q8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXItPmxheWVyKCkpLT5z
ZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBzaXplKTsKK30KKworV2ViTGF5ZXIq
IFdlYklPU3VyZmFjZUxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xheWVyLmdl
dCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2RiYjAyNzU5
YTVjYmQ3NGQzNTY0ODk5OGFlYzYyMTBhMmY0NzI5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYklPU3VyZmFjZUxheWVySW1wbF9oCisjZGVmaW5lIFdl
YklPU3VyZmFjZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViSU9TdXJmYWNlTGF5
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIElPU3VyZmFjZUxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitj
bGFzcyBXZWJJT1N1cmZhY2VMYXllckltcGwgOiBwdWJsaWMgV2ViSU9TdXJmYWNlTGF5ZXIgewor
cHVibGljOgorICAgIGV4cGxpY2l0IFdlYklPU3VyZmFjZUxheWVySW1wbChQYXNzUmVmUHRyPFdl
YkNvcmU6OklPU3VyZmFjZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJJT1N1cmZh
Y2VMYXllckltcGwoKTsKKworICAgIC8vIFdlYklPU3VyZmFjZUxheWVyIGltcGxlbWVudGF0aW9u
LgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUp
IE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7
Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJT1N1cmZhY2VMYXllckltcGxfaAorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmNzYxNTE1MzBkMTA3NTdkMmNkNDRhNzgwMzBhOTY5ZjU2ZTI0MDZmLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
SW1hZ2VMYXllci5oPgotCi0jaW5jbHVkZSAiSW1hZ2VMYXllckNocm9taXVtLmgiCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1XZWJJbWFnZUxheWVyIFdlYkltYWdlTGF5ZXI6OmNyZWF0ZSgpCi17
Ci0gICAgcmV0dXJuIFdlYkltYWdlTGF5ZXIoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpj
cmVhdGUoKSk7Ci19Ci0KLVdlYkltYWdlTGF5ZXI6OldlYkltYWdlTGF5ZXIoUGFzc1JlZlB0cjxX
ZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDogV2ViTGF5ZXIobGF5ZXIp
Ci17Ci19Ci0KLXZvaWQgV2ViSW1hZ2VMYXllcjo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1hcCkK
LXsKLSAgICB1bndyYXA8V2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtPigpLT5zZXRCaXRtYXAo
Yml0bWFwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDkzYWY4MDQ1
YTI2ZjY4ZTgyNmQwMGNhZDRkOTI3NjVlOTFlOWRjMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDYw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYkltYWdlTGF5ZXJJ
bXBsLmgiCisKKyNpbmNsdWRlICJJbWFnZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJM
YXllckltcGwuaCIKKwordXNpbmcgV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworV2ViSW1hZ2VMYXllciogV2ViSW1hZ2VMYXllcjo6Y3JlYXRlKCkK
K3sKKyAgICByZXR1cm4gbmV3IFdlYkltYWdlTGF5ZXJJbXBsKFdlYkNvcmU6OkltYWdlTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCkpOworfQorCitXZWJJbWFnZUxheWVySW1wbDo6V2ViSW1hZ2VMYXll
ckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+IGxheWVyKQorICAg
IDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCit7Cit9CisKK1dl
YkltYWdlTGF5ZXJJbXBsOjp+V2ViSW1hZ2VMYXllckltcGwoKQoreworfQorCitXZWJMYXllciog
V2ViSW1hZ2VMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsK
K30KKwordm9pZCBXZWJJbWFnZUxheWVySW1wbDo6c2V0Qml0bWFwKFNrQml0bWFwIGJpdG1hcCkK
K3sKKyAgICBzdGF0aWNfY2FzdDxJbWFnZUxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigp
KS0+c2V0Qml0bWFwKGJpdG1hcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllckltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
OWE0YjhiM2ViMGZmOTIyOTJiOWQ5MGVlZDFiZDU0MjdiYjg0NGYyOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmgKQEAgLTAs
MCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSW1hZ2VMYXllckltcGxfaAorI2RlZmluZSBX
ZWJJbWFnZUxheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViSW1hZ2VMYXllci5oPgor
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW1h
Z2VMYXllckNocm9taXVtOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkxheWVy
SW1wbDsKKworY2xhc3MgV2ViSW1hZ2VMYXllckltcGwgOiBwdWJsaWMgV2ViSW1hZ2VMYXllciB7
CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViSW1hZ2VMYXllckltcGwoUGFzc1JlZlB0cjxXZWJD
b3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJJbWFnZUxheWVySW1w
bCgpOworCisgICAgLy8gV2ViSW1hZ2VMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICBXZWJMYXll
ciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Qml0bWFwKFNrQml0bWFw
KSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBtX2xheWVy
OworfTsKKworfQorCisjZW5kaWYgLy8gV2ViSW1hZ2VMYXllckltcGxfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
Nzg5N2U2ZjgxMmIxNzFmOTBmMjI2OGViYzU3ZDUwNjEwMzM5N2JlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgotCi0jaW5jbHVk
ZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKLSNpbmNsdWRlICJX
ZWJBbmltYXRpb25JbXBsLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSA8
cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRQ
b2ludC5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KLSNpbmNsdWRlIDxwdWJs
aWMvV2ViU2l6ZS5oPgotI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
PgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg7Ci0KLW5hbWVzcGFjZSB7Ci0KLVdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4
KQotewotICAgIGRvdWJsZSBkYXRhWzE2XTsKLSAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7
Ci0gICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRh
dGFbMl0sIGRhdGFbM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFb
NF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwg
ZGF0YVsxNV0pOwotfQotCi1Ta01hdHJpeDQ0IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25N
YXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBTa01h
dHJpeDQ0IHNrTWF0cml4OwotICAgIHNrTWF0cml4LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxh
cihtYXRyaXgubTExKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2Fs
YXIobWF0cml4Lm0xMigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2Nh
bGFyKG1hdHJpeC5tMTMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNj
YWxhcihtYXRyaXgubTE0KCkpKTsKLSAgICBza01hdHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01T
Y2FsYXIobWF0cml4Lm0yMSgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9N
U2NhbGFyKG1hdHJpeC5tMjIoKSkpOwotICAgIHNrTWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRv
TVNjYWxhcihtYXRyaXgubTIzKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVU
b01TY2FsYXIobWF0cml4Lm0yNCgpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDAsIDIsIFNrRG91Ymxl
VG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOwotICAgIHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJs
ZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3Vi
bGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91
YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkpOwotICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0Rv
dWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwgMywgU2tE
b3VibGVUb01TY2FsYXIobWF0cml4Lm00MigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIsIDMsIFNr
RG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOwotICAgIHNrTWF0cml4LnNldCgzLCAzLCBT
a0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKLSAgICByZXR1cm4gc2tNYXRyaXg7Ci19
Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2Vi
TGF5ZXIgV2ViTGF5ZXI6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIFdlYkxheWVyKFdlYkxheWVy
SW1wbDo6Y3JlYXRlKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZXNldCgpCi17Ci0gICAgbV9w
cml2YXRlLnJlc2V0KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmFzc2lnbihjb25zdCBXZWJMYXll
ciYgb3RoZXIpCi17Ci0gICAgbV9wcml2YXRlID0gb3RoZXIubV9wcml2YXRlOwotfQotCi1ib29s
IFdlYkxheWVyOjplcXVhbHMoY29uc3QgV2ViTGF5ZXImIG4pIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IChtX3ByaXZhdGUuZ2V0KCkgPT0gbi5tX3ByaXZhdGUuZ2V0KCkpOwotfQotCi12b2lkIFdlYkxh
eWVyOjppbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmIGRpcnR5UmVjdCkKLXsKLSAg
ICBtX3ByaXZhdGUtPnNldE5lZWRzRGlzcGxheVJlY3QoZGlydHlSZWN0KTsKLX0KLQotdm9pZCBX
ZWJMYXllcjo6aW52YWxpZGF0ZSgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXROZWVkc0Rpc3BsYXko
KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6YWRkQ2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkKQot
ewotICAgIG1fcHJpdmF0ZS0+YWRkQ2hpbGQoY2hpbGQpOwotfQotCi12b2lkIFdlYkxheWVyOjpp
bnNlcnRDaGlsZChjb25zdCBXZWJMYXllciYgY2hpbGQsIHNpemVfdCBpbmRleCkKLXsKLSAgICBt
X3ByaXZhdGUtPmluc2VydENoaWxkKGNoaWxkLCBpbmRleCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6
OnJlcGxhY2VDaGlsZChjb25zdCBXZWJMYXllciYgcmVmZXJlbmNlLCBjb25zdCBXZWJMYXllciYg
bmV3TGF5ZXIpCi17Ci0gICAgV2ViTGF5ZXIgcmVmID0gcmVmZXJlbmNlOwotICAgIG1fcHJpdmF0
ZS0+cmVwbGFjZUNoaWxkKHJlZi51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKSwgbmV3TGF5ZXIpOwot
fQotCi12b2lkIFdlYkxheWVyOjpzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXI+
JiB3ZWJDaGlsZHJlbikKLXsKLSAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gY2hp
bGRyZW4od2ViQ2hpbGRyZW4uc2l6ZSgpKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdl
YkNoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBjaGlsZHJlbltpXSA9IHdlYkNoaWxkcmVu
W2ldLnVud3JhcDxMYXllckNocm9taXVtPigpOwotICAgIG1fcHJpdmF0ZS0+c2V0Q2hpbGRyZW4o
Y2hpbGRyZW4pOwotfQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVGcm9tUGFyZW50KCkKLXsKLSAg
ICBtX3ByaXZhdGUtPnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVt
b3ZlQWxsQ2hpbGRyZW4oKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsK
LX0KLQotdm9pZCBXZWJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYg
YW5jaG9yUG9pbnQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRBbmNob3JQb2ludChhbmNob3JQb2lu
dCk7Ci19Ci0KLVdlYkZsb2F0UG9pbnQgV2ViTGF5ZXI6OmFuY2hvclBvaW50KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX3ByaXZhdGUtPmFuY2hvclBvaW50KCkpOwotfQot
Ci12b2lkIFdlYkxheWVyOjpzZXRBbmNob3JQb2ludFooZmxvYXQgYW5jaG9yUG9pbnRaKQotewot
ICAgIG1fcHJpdmF0ZS0+c2V0QW5jaG9yUG9pbnRaKGFuY2hvclBvaW50Wik7Ci19Ci0KLWZsb2F0
IFdlYkxheWVyOjphbmNob3JQb2ludFooKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUt
PmFuY2hvclBvaW50WigpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCb3VuZHMoY29uc3QgV2Vi
U2l6ZSYgc2l6ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldEJvdW5kcyhzaXplKTsKLX0KLQotV2Vi
U2l6ZSBXZWJMYXllcjo6Ym91bmRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViU2l6ZShtX3By
aXZhdGUtPmJvdW5kcygpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0TWFza3NUb0JvdW5kcyhi
b29sIG1hc2tzVG9Cb3VuZHMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRNYXNrc1RvQm91bmRzKG1h
c2tzVG9Cb3VuZHMpOwotfQotCi1ib29sIFdlYkxheWVyOjptYXNrc1RvQm91bmRzKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXNrc1RvQm91bmRzKCk7Ci19Ci0KLXZvaWQgV2Vi
TGF5ZXI6OnNldE1hc2tMYXllcihjb25zdCBXZWJMYXllciYgbWFza0xheWVyKQotewotICAgIFdl
YkxheWVyIHJlZiA9IG1hc2tMYXllcjsKLSAgICBtX3ByaXZhdGUtPnNldE1hc2tMYXllcihyZWYu
dW53cmFwPExheWVyQ2hyb21pdW0+KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRSZXBsaWNh
TGF5ZXIoY29uc3QgV2ViTGF5ZXImIHJlcGxpY2FMYXllcikKLXsKLSAgICBXZWJMYXllciByZWYg
PSByZXBsaWNhTGF5ZXI7Ci0gICAgbV9wcml2YXRlLT5zZXRSZXBsaWNhTGF5ZXIocmVmLnVud3Jh
cDxMYXllckNocm9taXVtPigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhY2l0eShmbG9h
dCBvcGFjaXR5KQotewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhY2l0eShvcGFjaXR5KTsKLX0KLQot
ZmxvYXQgV2ViTGF5ZXI6Om9wYWNpdHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUt
Pm9wYWNpdHkoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQot
ewotICAgIG1fcHJpdmF0ZS0+c2V0T3BhcXVlKG9wYXF1ZSk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6
Om9wYXF1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+b3BhcXVlKCk7Ci19Ci0K
LXZvaWQgV2ViTGF5ZXI6OnNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9u
KQotewotICAgIG1fcHJpdmF0ZS0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwotfQotCi1XZWJGbG9h
dFBvaW50IFdlYkxheWVyOjpwb3NpdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkZsb2F0
UG9pbnQobV9wcml2YXRlLT5wb3NpdGlvbigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0
ZS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0
NChtYXRyaXgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKLXsKLSAgICBtX3ByaXZhdGUtPnNl
dFN1YmxheWVyVHJhbnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnN1
YmxheWVyVHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFu
c2Zvcm1hdGlvbk1hdHJpeChtX3ByaXZhdGUtPnN1YmxheWVyVHJhbnNmb3JtKCkpOwotfQotCi12
b2lkIFdlYkxheWVyOjpzZXRUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewot
ICAgIG1fcHJpdmF0ZS0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0
cml4NDQobWF0cml4KSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VHJh
bnNmb3JtKG1hdHJpeCk7Ci19Ci0KLVNrTWF0cml4NDQgV2ViTGF5ZXI6OnRyYW5zZm9ybSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgobV9w
cml2YXRlLT50cmFuc2Zvcm0oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERyYXdzQ29udGVu
dChib29sIGRyYXdzQ29udGVudCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzRHJhd2FibGUoZHJh
d3NDb250ZW50KTsKLX0KLQotYm9vbCBXZWJMYXllcjo6ZHJhd3NDb250ZW50KCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9wcml2YXRlLT5kcmF3c0NvbnRlbnQoKTsKLX0KLQotdm9pZCBXZWJMYXll
cjo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQotewotICAgIG1fcHJpdmF0ZS0+c2V0
UHJlc2VydmVzM0QocHJlc2VydmUzRCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFVzZVBhcmVu
dEJhY2tmYWNlVmlzaWJpbGl0eShib29sIHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSkKLXsK
LSAgICBtX3ByaXZhdGUtPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh1c2VQYXJlbnRC
YWNrZmFjZVZpc2liaWxpdHkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kQ29s
b3IoV2ViQ29sb3IgY29sb3IpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
Y29sb3IpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9w
ZXJhdGlvbnMmIGZpbHRlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRGaWx0ZXJzKGZpbHRlcnMp
OwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QmFja2dyb3VuZEZp
bHRlcnMoZmlsdGVycyk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyQ29sb3Io
Y29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RGVidWdCb3JkZXJD
b2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldERlYnVnQm9yZGVyV2lkdGgoZmxv
YXQgd2lkdGgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsK
LX0KLQotdm9pZCBXZWJMYXllcjo6c2V0RGVidWdOYW1lKFdlYlN0cmluZyBuYW1lKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0RGVidWdOYW1lKG5hbWUpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRB
bmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUpCi17Ci0gICAg
bV9wcml2YXRlLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKGRlbGVnYXRlKTsKLX0KLQotYm9v
bCBXZWJMYXllcjo6YWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQotewotICAg
IHJldHVybiBtX3ByaXZhdGUtPmFkZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRpb25J
bXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOwotfQotCi12b2lkIFdlYkxh
eWVyOjpyZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKQotewotICAgIG1fcHJpdmF0ZS0+
cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVtb3Zl
QW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0
YXJnZXRQcm9wZXJ0eSkKLXsKLSAgICBtX3ByaXZhdGUtPmxheWVyQW5pbWF0aW9uQ29udHJvbGxl
cigpLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQsIHN0YXRpY19jYXN0PENDQWN0aXZlQW5p
bWF0aW9uOjpUYXJnZXRQcm9wZXJ0eT4odGFyZ2V0UHJvcGVydHkpKTsKLX0KLQotdm9pZCBXZWJM
YXllcjo6cGF1c2VBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCkK
LXsKLSAgICBtX3ByaXZhdGUtPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0aW1lT2Zmc2V0
KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c3VzcGVuZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25p
Y1RpbWUpCi17Ci0gICAgbV9wcml2YXRlLT5zdXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1l
KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rvbmlj
VGltZSkKLXsKLSAgICBtX3ByaXZhdGUtPnJlc3VtZUFuaW1hdGlvbnMobW9ub3RvbmljVGltZSk7
Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Omhhc0FjdGl2ZUFuaW1hdGlvbigpCi17Ci0gICAgcmV0dXJu
IG1fcHJpdmF0ZS0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnRy
YW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKiBvdGhlcikKLXsKLSAgICBBU1NFUlQob3RoZXIp
OwotICAgIGlmIChvdGhlcikKLSAgICAgICAgb3RoZXItPm1fcHJpdmF0ZS0+c2V0TGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKG1fcHJpdmF0ZS0+cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxl
cigpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9y
Y2VSZW5kZXJTdXJmYWNlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Rm9yY2VSZW5kZXJTdXJmYWNl
KGZvcmNlUmVuZGVyU3VyZmFjZSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OmNsZWFyUmVuZGVyU3Vy
ZmFjZSgpCi17Ci0gICAgbV9wcml2YXRlLT5jbGVhclJlbmRlclN1cmZhY2UoKTsKLX0KLQotV2Vi
TGF5ZXI6OldlYkxheWVyKGNvbnN0IFBhc3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4mIG5vZGUpCi0g
ICAgOiBtX3ByaXZhdGUobm9kZSkKLXsKLX0KLQotV2ViTGF5ZXImIFdlYkxheWVyOjpvcGVyYXRv
cj0oY29uc3QgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPiYgbm9kZSkKLXsKLSAgICBtX3ByaXZh
dGUgPSBub2RlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViTGF5ZXI6Om9wZXJhdG9yIFBh
c3NSZWZQdHI8TGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUu
Z2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVySW1wbC5jcHAKaW5kZXggMTZlMTIwNmNhMzM1YzNlOTgxNGRlYmVjYjRl
ZDhiYjJiMDJlYjc3Ny4uMWE1YmRkMjExMGZmMjUxYzNjZjFkNWQ1NTJjMjIyNTI0NmM5YjAzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCkBAIC0yNiwy
NSArMjYsMzcxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJJbXBs
LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1ZGUgIkNDQWN0aXZlQW5pbWF0
aW9uLmgiCisjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlNrTWF0cml4NDQu
aCIKKyNpbmNsdWRlICJXZWJBbmltYXRpb25JbXBsLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYkZs
b2F0UG9pbnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8
cHVibGljL1dlYlNpemUuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXguaD4KKwordXNpbmcgV2ViQ29yZTo6Q0NBY3RpdmVBbmltYXRpb247Cit1c2luZyBXZWJDb3Jl
OjpMYXllckNocm9taXVtOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJM
YXllckltcGw+IFdlYkxheWVySW1wbDo6Y3JlYXRlKCkKK25hbWVzcGFjZSB7CisKK1dlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3Qg
U2tNYXRyaXg0NCYgbWF0cml4KQoreworICAgIGRvdWJsZSBkYXRhWzE2XTsKKyAgICBtYXRyaXgu
YXNDb2xNYWpvcmQoZGF0YSk7CisgICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRh
dGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBk
YXRhWzExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRh
dGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOworfQorCitTa01hdHJpeDQ0IHNrTWF0cml4NDRG
cm9tVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCkKK3sKKyAgICBTa01hdHJpeDQ0IHNrTWF0cml4OworICAgIHNrTWF0cml4LnNldCgwLCAw
LCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKKyAgICBza01hdHJpeC5zZXQoMSwg
MCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7CisgICAgc2tNYXRyaXguc2V0KDIs
IDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOworICAgIHNrTWF0cml4LnNldCgz
LCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKKyAgICBza01hdHJpeC5zZXQo
MCwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7CisgICAgc2tNYXRyaXguc2V0
KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOworICAgIHNrTWF0cml4LnNl
dCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsKKyAgICBza01hdHJpeC5z
ZXQoMywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7CisgICAgc2tNYXRyaXgu
c2V0KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOworICAgIHNrTWF0cml4
LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsKKyAgICBza01hdHJp
eC5zZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7CisgICAgc2tNYXRy
aXguc2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkpOworICAgIHNrTWF0
cml4LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkpKTsKKyAgICBza01h
dHJpeC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MigpKSk7CisgICAgc2tN
YXRyaXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkpOworICAgIHNr
TWF0cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkpKTsKKyAgICBy
ZXR1cm4gc2tNYXRyaXg7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisKK1dlYkxh
eWVyKiBXZWJMYXllcjo6Y3JlYXRlKCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkxh
eWVySW1wbCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYkxheWVySW1wbChMYXllckNocm9taXVtOjpj
cmVhdGUoKSk7CiB9CiAKLVdlYkxheWVySW1wbDo6V2ViTGF5ZXJJbXBsKCkKLSAgICA6IExheWVy
Q2hyb21pdW0oKQorV2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwoUGFzc1JlZlB0cjxMYXllckNo
cm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIobGF5ZXIpCiB7Ci0gICAgLy8gTWFrZSBzdXJl
IHRoYXQgdGhpcyBsYXllciBkb2VzIG5vdCBkcmF3IGNvbnRlbnQuIFRoaXMgd2F5IHdlIGRvbid0
IGhhdmUgdG8gb3ZlcnJpZGUKLSAgICAvLyB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiBv
ZiBkcmF3c0NvbnRlbnQoKS4KLSAgICBBU1NFUlQoIWRyYXdzQ29udGVudCgpKTsKIH0KIAogV2Vi
TGF5ZXJJbXBsOjp+V2ViTGF5ZXJJbXBsKCkKIHsKKyAgICBtX2xheWVyLT5jbGVhclJlbmRlclN1
cmZhY2UoKTsKKyAgICBtX2xheWVyLT5zZXRMYXllckFuaW1hdGlvbkRlbGVnYXRlKDApOworfQor
Cit2b2lkIFdlYkxheWVySW1wbDo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxvYXRSZWN0JiBy
ZWN0KQoreworICAgIG1fbGF5ZXItPnNldE5lZWRzRGlzcGxheVJlY3QocmVjdCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjppbnZhbGlkYXRlKCkKK3sKKyAgICBtX2xheWVyLT5zZXROZWVkc0Rp
c3BsYXkoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OmFkZENoaWxkKFdlYkxheWVyKiBjaGls
ZCkKK3sKKyAgICBtX2xheWVyLT5hZGRDaGlsZChzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihj
aGlsZCktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW5zZXJ0Q2hpbGQoV2Vi
TGF5ZXIqIGNoaWxkLCBzaXplX3QgaW5kZXgpCit7CisgICAgbV9sYXllci0+aW5zZXJ0Q2hpbGQo
c3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4oY2hpbGQpLT5sYXllcigpLCBpbmRleCk7Cit9CisK
K3ZvaWQgV2ViTGF5ZXJJbXBsOjpyZXBsYWNlQ2hpbGQoV2ViTGF5ZXIqIHJlZmVyZW5jZSwgV2Vi
TGF5ZXIqIG5ld0xheWVyKQoreworICAgIG1fbGF5ZXItPnJlcGxhY2VDaGlsZChzdGF0aWNfY2Fz
dDxXZWJMYXllckltcGwqPihyZWZlcmVuY2UpLT5sYXllcigpLCBzdGF0aWNfY2FzdDxXZWJMYXll
ckltcGwqPihuZXdMYXllciktPmxheWVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0
Q2hpbGRyZW4oY29uc3QgV2ViVmVjdG9yPFdlYkxheWVyKj4mIHdlYkNoaWxkcmVuKQoreworICAg
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBjaGlsZHJlbih3ZWJDaGlsZHJlbi5zaXpl
KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hpbGRyZW4uc2l6ZSgpOyArK2kp
CisgICAgICAgIGNoaWxkcmVuW2ldID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4od2ViQ2hp
bGRyZW5baV0pLT5sYXllcigpOworICAgIG1fbGF5ZXItPnNldENoaWxkcmVuKGNoaWxkcmVuKTsK
K30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUZyb21QYXJlbnQoKQoreworICAgIG1fbGF5
ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFs
bENoaWxkcmVuKCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOworfQorCit2
b2lkIFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnQoY29uc3QgV2ViRmxvYXRQb2ludCYgYW5j
aG9yUG9pbnQpCit7CisgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnQoYW5jaG9yUG9pbnQpOwor
fQorCitXZWJGbG9hdFBvaW50IFdlYkxheWVySW1wbDo6YW5jaG9yUG9pbnQoKSBjb25zdAorewor
ICAgIHJldHVybiBXZWJGbG9hdFBvaW50KG1fbGF5ZXItPmFuY2hvclBvaW50KCkpOworfQorCit2
b2lkIFdlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnRaKGZsb2F0IGFuY2hvclBvaW50WikKK3sK
KyAgICBtX2xheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yUG9pbnRaKTsKK30KKworZmxvYXQg
V2ViTGF5ZXJJbXBsOjphbmNob3JQb2ludFooKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVy
LT5hbmNob3JQb2ludFooKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEJvdW5kcyhjb25z
dCBXZWJTaXplJiBzaXplKQoreworICAgIG1fbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKK30KKwor
V2ViU2l6ZSBXZWJMYXllckltcGw6OmJvdW5kcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlNp
emUobV9sYXllci0+Ym91bmRzKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0TWFza3NU
b0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCit7CisgICAgbV9sYXllci0+c2V0TWFza3NUb0Jv
dW5kcyhtYXNrc1RvQm91bmRzKTsKK30KKworYm9vbCBXZWJMYXllckltcGw6Om1hc2tzVG9Cb3Vu
ZHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5tYXNrc1RvQm91bmRzKCk7Cit9CisK
K3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRNYXNrTGF5ZXIoV2ViTGF5ZXIqIG1hc2tMYXllcikKK3sK
KyAgICBtX2xheWVyLT5zZXRNYXNrTGF5ZXIobWFza0xheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5
ZXJJbXBsKj4obWFza0xheWVyKS0+bGF5ZXIoKSA6IDApOworfQorCit2b2lkIFdlYkxheWVySW1w
bDo6c2V0UmVwbGljYUxheWVyKFdlYkxheWVyKiByZXBsaWNhTGF5ZXIpCit7CisgICAgbV9sYXll
ci0+c2V0UmVwbGljYUxheWVyKHJlcGxpY2FMYXllciA/IHN0YXRpY19jYXN0PFdlYkxheWVySW1w
bCo+KHJlcGxpY2FMYXllciktPmxheWVyKCkgOiAwKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6
OnNldE9wYWNpdHkoZmxvYXQgb3BhY2l0eSkKK3sKKyAgICBtX2xheWVyLT5zZXRPcGFjaXR5KG9w
YWNpdHkpOworfQorCitmbG9hdCBXZWJMYXllckltcGw6Om9wYWNpdHkoKSBjb25zdAoreworICAg
IHJldHVybiBtX2xheWVyLT5vcGFjaXR5KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRP
cGFxdWUoYm9vbCBvcGFxdWUpCit7CisgICAgbV9sYXllci0+c2V0T3BhcXVlKG9wYXF1ZSk7Cit9
CisKK2Jvb2wgV2ViTGF5ZXJJbXBsOjpvcGFxdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX2xh
eWVyLT5vcGFxdWUoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFBvc2l0aW9uKGNvbnN0
IFdlYkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIG1fbGF5ZXItPnNldFBvc2l0aW9uKHBv
c2l0aW9uKTsKK30KKworV2ViRmxvYXRQb2ludCBXZWJMYXllckltcGw6OnBvc2l0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX2xheWVyLT5wb3NpdGlvbigpKTsKK30K
Kwordm9pZCBXZWJMYXllckltcGw6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4
NDQmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybSh0cmFuc2Zv
cm1hdGlvbk1hdHJpeEZyb21Ta01hdHJpeDQ0KG1hdHJpeCkpOworfQorCit2b2lkIFdlYkxheWVy
SW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShtYXRyaXgpOwor
fQorCitTa01hdHJpeDQ0IFdlYkxheWVySW1wbDo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAor
eworICAgIHJldHVybiBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9uTWF0cml4KG1fbGF5ZXIt
PnN1YmxheWVyVHJhbnNmb3JtKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0VHJhbnNm
b3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRUcmFuc2Zv
cm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRyaXgpKTsKK30KKwordm9p
ZCBXZWJMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0cml4KQoreworICAgIG1fbGF5ZXItPnNldFRyYW5zZm9ybShtYXRyaXgpOworfQorCitT
a01hdHJpeDQ0IFdlYkxheWVySW1wbDo6dHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
c2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2xheWVyLT50cmFuc2Zvcm0oKSk7
Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREcmF3c0NvbnRlbnQoYm9vbCBkcmF3c0NvbnRl
bnQpCit7CisgICAgbV9sYXllci0+c2V0SXNEcmF3YWJsZShkcmF3c0NvbnRlbnQpOworfQorCiti
b29sIFdlYkxheWVySW1wbDo6ZHJhd3NDb250ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9s
YXllci0+ZHJhd3NDb250ZW50KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRQcmVzZXJ2
ZXMzRChib29sIHByZXNlcnZlM0QpCit7CisgICAgbV9sYXllci0+c2V0UHJlc2VydmVzM0QocHJl
c2VydmUzRCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRVc2VQYXJlbnRCYWNrZmFjZVZp
c2liaWxpdHkoYm9vbCB1c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpCit7CisgICAgbV9sYXll
ci0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHVzZVBhcmVudEJhY2tmYWNlVmlzaWJp
bGl0eSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29s
b3IgY29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKK30K
Kwordm9pZCBXZWJMYXllckltcGw6OnNldEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3BlcmF0aW9u
cyYgZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRGaWx0ZXJzKGZpbHRlcnMpOworfQorCit2
b2lkIFdlYkxheWVySW1wbDo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgV2ViRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRCYWNrZ3JvdW5kRmlsdGVycyhm
aWx0ZXJzKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnQm9yZGVyQ29sb3IoY29u
c3QgV2ViQ29sb3ImIGNvbG9yKQoreworICAgIG1fbGF5ZXItPnNldERlYnVnQm9yZGVyQ29sb3Io
Y29sb3IpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aChmbG9h
dCB3aWR0aCkKK3sKKyAgICBtX2xheWVyLT5zZXREZWJ1Z0JvcmRlcldpZHRoKHdpZHRoKTsKK30K
Kwordm9pZCBXZWJMYXllckltcGw6OnNldERlYnVnTmFtZShXZWJTdHJpbmcgbmFtZSkKK3sKKyAg
ICBtX2xheWVyLT5zZXREZWJ1Z05hbWUobmFtZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpz
ZXRBbmltYXRpb25EZWxlZ2F0ZShXZWJBbmltYXRpb25EZWxlZ2F0ZSogZGVsZWdhdGUpCit7Cisg
ICAgbV9sYXllci0+c2V0TGF5ZXJBbmltYXRpb25EZWxlZ2F0ZShkZWxlZ2F0ZSk7Cit9CisKK2Jv
b2wgV2ViTGF5ZXJJbXBsOjphZGRBbmltYXRpb24oV2ViQW5pbWF0aW9uKiBhbmltYXRpb24pCit7
CisgICAgcmV0dXJuIG1fbGF5ZXItPmFkZEFuaW1hdGlvbihzdGF0aWNfY2FzdDxXZWJBbmltYXRp
b25JbXBsKj4oYW5pbWF0aW9uKS0+Y2xvbmVUb0NDQW5pbWF0aW9uKCkpOworfQorCit2b2lkIFdl
YkxheWVySW1wbDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCkKK3sKKyAgICBtX2xh
eWVyLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQpOworfQorCit2b2lkIFdlYkxheWVySW1w
bDo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQ
cm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKK3sKKyAgICBtX2xheWVyLT5sYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIoKS0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCBzdGF0aWNfY2FzdDxDQ0Fj
dGl2ZUFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHk+KHRhcmdldFByb3BlcnR5KSk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0
aW1lT2Zmc2V0KQoreworICAgIG1fbGF5ZXItPnBhdXNlQW5pbWF0aW9uKGFuaW1hdGlvbklkLCB0
aW1lT2Zmc2V0KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnN1c3BlbmRBbmltYXRpb25zKGRv
dWJsZSBtb25vdG9uaWNUaW1lKQoreworICAgIG1fbGF5ZXItPnN1c3BlbmRBbmltYXRpb25zKG1v
bm90b25pY1RpbWUpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVzdW1lQW5pbWF0aW9ucyhk
b3VibGUgbW9ub3RvbmljVGltZSkKK3sKKyAgICBtX2xheWVyLT5yZXN1bWVBbmltYXRpb25zKG1v
bm90b25pY1RpbWUpOworfQorCitib29sIFdlYkxheWVySW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9u
KCkKK3sKKyAgICByZXR1cm4gbV9sYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyhXZWJMYXllciogb3RoZXIpCit7
CisgICAgQVNTRVJUKG90aGVyKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihvdGhl
ciktPm1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uQ29udHJvbGxlcihtX2xheWVyLT5yZWxlYXNl
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0
Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wgZm9yY2VSZW5kZXJTdXJmYWNlKQoreworICAgIG1fbGF5
ZXItPnNldEZvcmNlUmVuZGVyU3VyZmFjZShmb3JjZVJlbmRlclN1cmZhY2UpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0U2Nyb2xsUG9zaXRpb24oV2ViUG9pbnQgcG9zaXRpb24pCit7Cisg
ICAgbV9sYXllci0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRpb24pOworfQorCit2b2lkIFdlYkxh
eWVySW1wbDo6c2V0U2Nyb2xsYWJsZShib29sIHNjcm9sbGFibGUpCit7CisgICAgbV9sYXllci0+
c2V0U2Nyb2xsYWJsZShzY3JvbGxhYmxlKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEhh
dmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKQoreworICAg
IG1fbGF5ZXItPnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cyk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQo
Ym9vbCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAgbV9sYXllci0+c2V0U2hvdWxk
U2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8
V2ViUmVjdD4mIHJlY3RzKQoreworICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdpb247CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBXZWJDb3Jl
OjpJbnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKKyAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOwor
ICAgIH0KKyAgICBtX2xheWVyLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihyZWdpb24pOwor
Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25M
YXllcnMoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXllci0+c2V0SXNDb250YWluZXJGb3JGaXhl
ZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRGaXhl
ZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7CisgICAgbV9sYXllci0+c2V0Rml4ZWRU
b0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Cit9CisKK0xheWVyQ2hyb21pdW0qIFdlYkxheWVySW1w
bDo6bGF5ZXIoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBs
LmgKaW5kZXggN2U0ZTc1MDYyNDhmNGNhNWVlNjdlNzUxYzM4ZThlYmY0YzE5YzE5Yi4uNGI0NGZi
Y2Q0NDY5ZmExOTY4ZTU3NGM2YzkzNDk3ZmI5Yzc0ZTQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmgKQEAgLTI2LDE4ICsyNiw4MyBAQAogI2lmbmRlZiBXZWJM
YXllckltcGxfaAogI2RlZmluZSBXZWJMYXllckltcGxfaAogCi0jaW5jbHVkZSAiTGF5ZXJDaHJv
bWl1bS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YkxheWVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBMYXllckNocm9taXVtOworfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3Mg
V2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkxheWVyQ2hyb21pdW0geworY2xhc3MgV2Vi
TGF5ZXJJbXBsIDogcHVibGljIFdlYkxheWVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxXZWJMYXllckltcGw+IGNyZWF0ZSgpOworICAgIGV4cGxpY2l0IFdlYkxheWVySW1wbChQ
YXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJMYXll
ckltcGwoKTsKKworICAgIC8vIFdlYkxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGRD
aGlsZChXZWJMYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChX
ZWJMYXllciosIHNpemVfdCBpbmRleCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlcGxh
Y2VDaGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3TGF5ZXIpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5ZXIq
PiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
V2ViU2l6ZSBib3VuZHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWFz
a3NUb0JvdW5kcyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0JvdW5k
cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoV2ViTGF5
ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG9wYXF1
ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBX
ZWJGbG9hdFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IHBvc2l0
aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJhbnNm
b3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0IHRyYW5zZm9ybSgp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3Qg
V2ViRmlsdGVyT3BlcmF0aW9ucyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREZWJ1
Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXREZWJ1Z05hbWUoV2ViU3RyaW5nKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5p
bWF0aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9u
OjpUYXJnZXRQcm9wZXJ0eSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0
aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1Rp
bWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3Qg
V2ViVmVjdG9yPFdlYlJlY3Q+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldElzQ29u
dGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIE9WRVJSSURFOworCisgICAgV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bSogbGF5ZXIoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFdl
YkxheWVySW1wbCgpOwotICAgIHZpcnR1YWwgfldlYkxheWVySW1wbCgpOworICAgIFJlZlB0cjxX
ZWJDb3JlOjpMYXllckNocm9taXVtPiBtX2xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
CmluZGV4IGYzOTdlNTM0YTg0MWQ0NTZiYTIzNzNkYjM1MTllYzVhZjRhZDZkNWIuLjdkZmJjZDEy
OWVlMTE3NWMyYWMwNTk2ODU4MjdkYzA1YzRkMWZhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSAiQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiQ0NSZW5kZXJpbmdTdGF0cy5oIgog
I2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKICNp
bmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXll
ci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgpAQCAtODMsNyArODQsNyBAQCB2b2lk
IFdlYkxheWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSgpCiB2b2lkIFdlYkxheWVyVHJlZVZp
ZXc6OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkKIHsKICAgICBpZiAocm9vdCkKLSAgICAg
ICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcigqcm9vdCk7CisgICAg
ICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoc3RhdGljX2Nhc3Q8
V2ViTGF5ZXJJbXBsKj4ocm9vdCktPmxheWVyKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9wcml2
YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hyb21p
dW0+KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJU
cmVlVmlld0ltcGwuY3BwCmluZGV4IDFmMTkzM2ZjOTY2ZGEwYTkzNTA4NGUzMzJmMzRkYmY0Y2Jl
MWMxNjAuLjFmZDgyMzk3NjhjMDliNjY5NTRkYzAyNTBlMjhiNmY5NWY2ZjA5NTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5jcHAK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNsdWRl
ICJDQ1RocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUg
IldlYkxheWVySW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5o
PgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXll
clRyZWVWaWV3Lmg+CkBAIC0xNDIsNyArMTQzLDcgQEAgUGFzc093blB0cjxXZWJMYXllclRyZWVW
aWV3SW1wbD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2wK
ICAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcgV2Vi
TGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwogICAgIGlmICghaW1wbC0+bGF5
ZXJUcmVlSG9zdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXllclRy
ZWVIb3N0KCktPnNldFJvb3RMYXllcihyb290KTsKKyAgICBpbXBsLT5sYXllclRyZWVIb3N0KCkt
PnNldFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwqPigmcm9vdCktPmxh
eWVyKCkpOwogICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAKaW5k
ZXggNGE5MGE5ODhkNDFjNmNlNGU1NmJhNTlhNGQ3NmJkNjVhZmE5MTNkZC4uY2I3NTYyMzNlMWE3
ZTQ4OGIxNzE1M2YzMmEyM2YwNzlkZDcwYWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0xMDksOSAr
MTA5LDkgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2Vk
KCkKICAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7CiAgICAgbV9tZWRpYVBsYXllci0+cmVhZHlT
dGF0ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYg
KGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fdmlkZW9M
YXllci5pc051bGwoKSkgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBXZWJWaWRlb0xheWVyOjpj
cmVhdGUodGhpcyk7Ci0gICAgICAgIG1fdmlkZW9MYXllci5zZXRPcGFxdWUobV9vcGFxdWUpOwor
ICAgIGlmIChoYXNWaWRlbygpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAmJiAh
bV92aWRlb0xheWVyKSB7CisgICAgICAgIG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKFdlYlZpZGVv
TGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+c2V0
T3BhcXVlKG1fb3BhcXVlKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTEzOCw4ICsxMzgsOCBAQCB2
b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVwYWludCgpCiB7CiAgICAgQVNTRVJUKG1f
bWVkaWFQbGF5ZXIpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBpZiAo
IW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkp
Ci0gICAgICAgIG1fdmlkZW9MYXllci5pbnZhbGlkYXRlKCk7CisgICAgaWYgKG1fdmlkZW9MYXll
ciAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCisgICAgICAgIG1fdmlkZW9MYXll
ci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAgICAgbV9tZWRpYVBsYXllci0+cmVw
YWludCgpOwogfQpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGllbnRJ
bXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIG1fb3BhcXVlID0gb3BhcXVlOwotICAgIGlmICghbV92aWRlb0xheWVyLmlz
TnVsbCgpKQotICAgICAgICBtX3ZpZGVvTGF5ZXIuc2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAgICBp
ZiAobV92aWRlb0xheWVyKQorICAgICAgICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9wYXF1
ZShtX29wYXF1ZSk7CiAjZW5kaWYKIH0KIApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgV2ViTWVk
aWFQbGF5ZXJDbGllbnRJbXBsOjpjYW5jZWxMb2FkKCkKIFdlYkxheWVyKiBXZWJNZWRpYVBsYXll
ckNsaWVudEltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIEFTU0VSVChtX3N1cHBv
cnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViVmlk
ZW9MYXllcio+KCZtX3ZpZGVvTGF5ZXIpOworICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIgPyBtX3Zp
ZGVvTGF5ZXItPmxheWVyKCkgOiAwOwogfQogI2VuZGlmCiAKQEAgLTc0NSw3ICs3NDUsNyBAQCBi
b29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmlu
ZygpIGNvbnN0CiAKIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjphY2NlbGVyYXRlZFJl
bmRlcmluZ0luVXNlKCkKIHsKLSAgICByZXR1cm4gIW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBt
X3ZpZGVvTGF5ZXIuYWN0aXZlKCk7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllciAmJiBtX3ZpZGVv
TGF5ZXItPmFjdGl2ZSgpOwogfQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c2V0
VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KFdlYlZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50KiBj
bGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBs
YXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxh
eWVyQ2xpZW50SW1wbC5oCmluZGV4IDM3MzAxNWViNzU2YWYwZjQ1MTFkYWU5ODFlNmJmMmUxYjU0
ZGQ0ODguLjMyOWZkOWVjMGY0ODhhOWVhYWZlYTZlOTVjOGZiYjI0OTA0MTVjMGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
cjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgUmVmUHRyPFdlYkhlbHBlclBsdWdpbkltcGw+IG1f
aGVscGVyUGx1Z2luOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBXZWJW
aWRlb0xheWVyIG1fdmlkZW9MYXllcjsKKyAgICBPd25QdHI8V2ViVmlkZW9MYXllcj4gbV92aWRl
b0xheWVyOwogICAgIGJvb2wgbV9zdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAgICAg
Ym9vbCBtX29wYXF1ZTsKICAgICBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCogbV92aWRl
b0ZyYW1lUHJvdmlkZXJDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IDcxMzYxNzgwYjQ1YWI0YjlmMDg3
MGFmYzRlMDU3ZTRjMTI5ZTQ3MjAuLmYxMDc1NDkwNDJkZWM5MjBjYTI0YzM4ZTIwNWMyYmM4ZDRk
NTk1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuY3BwCkBAIC0zNjYsMTEgKzM2NiwxMSBAQCB2b2lkIFdlYlBsdWdpbkNv
bnRhaW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQogICAg
IGlmIChtX3RleHR1cmVJZCA9PSB0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVChtX2lvU3VyZmFjZUxheWVyLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIW1faW9TdXJmYWNl
TGF5ZXIpOwogCi0gICAgaWYgKG1fdGV4dHVyZUxheWVyLmlzTnVsbCgpKQotICAgICAgICBtX3Rl
eHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3Rl
eHR1cmVMYXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKyAgICBpZiAoIW1fdGV4dHVyZUxh
eWVyKQorICAgICAgICBtX3RleHR1cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVyOjpjcmVhdGUoKSk7CisgICAgbV90ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0ZXh0
dXJlSWQpOwogCiAgICAgLy8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRv
IHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5n
LiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtMzkwLDExICsz
OTAsMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNl
SWQoaW50IHdpZHRoLAogICAgIGlmIChpb1N1cmZhY2VJZCA9PSBtX2lvU3VyZmFjZUlkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpOworICAg
IEFTU0VSVCghbV90ZXh0dXJlTGF5ZXIpOwogCi0gICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIuaXNO
dWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBXZWJJT1N1cmZhY2VMYXllcjo6Y3Jl
YXRlKCk7Ci0gICAgbV9pb1N1cmZhY2VMYXllci5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlvU3Vy
ZmFjZUlkLCBXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICBpZiAoIW1faW9TdXJmYWNlTGF5
ZXIpCisgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VMYXll
cjo6Y3JlYXRlKCkpOworICAgIG1faW9TdXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3BlcnRp
ZXMoaW9TdXJmYWNlSWQsIFdlYlNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSWYgYW55
b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJl
CiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dl
cmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtNDA5LDExICs0MDksMTEgQEAgdm9pZCBXZWJQbHVnaW5D
b250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRoLAogdm9pZCBXZWJQ
bHVnaW5Db250YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSgpCiB7CiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICghbV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkp
Ci0gICAgICAgIG1fdGV4dHVyZUxheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV90ZXh0dXJl
TGF5ZXIpCisgICAgICAgIG1fdGV4dHVyZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAK
LSAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNl
TGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2lvU3VyZmFjZUxheWVyKQorICAgICAgICBt
X2lvU3VyZmFjZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIH0KIApAQCAt
NDgwLDExICs0ODAsMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp6b29tTGV2ZWxD
aGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwpCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OnNl
dE9wYXF1ZShib29sIG9wYXF1ZSkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
Ci0gICAgaWYgKCFtX3RleHR1cmVMYXllci5pc051bGwoKSkKLSAgICAgICAgbV90ZXh0dXJlTGF5
ZXIuc2V0T3BhcXVlKG9wYXF1ZSk7CisgICAgaWYgKG1fdGV4dHVyZUxheWVyKQorICAgICAgICBt
X3RleHR1cmVMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG9wYXF1ZSk7CiAKLSAgICBpZiAoIW1f
aW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuc2V0T3Bh
cXVlKG9wYXF1ZSk7CisgICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIpCisgICAgICAgIG1faW9TdXJm
YWNlTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShvcGFxdWUpOwogI2VuZGlmCiB9CiAKQEAgLTU3
Niw5ICs1NzYsOSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbGxEZXN0cm95UGx1
Z2luTG9hZE9ic2VydmVyKFdlYlBsdWdpbkxvYWRPYnNlcnZlcgogV2ViTGF5ZXIqIFdlYlBsdWdp
bkNvbnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIGlmIChtX3RleHR1
cmVJZCkKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIq
PigmbV90ZXh0dXJlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV90ZXh0dXJlTGF5ZXItPmxheWVy
KCk7CiAgICAgaWYgKG1faW9TdXJmYWNlSWQpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PFdl
YklPU3VyZmFjZUxheWVyKj4oJm1faW9TdXJmYWNlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV9p
b1N1cmZhY2VMYXllci0+bGF5ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5oCmlu
ZGV4IDA3NGEwY2NkY2QwM2JiNTI1NmUzNjU4MDcyYTgxZTlhNWY4M2M4ODYuLjk5OGJlNmU0MTlm
ODk1ZmE4MjE3OTQwMzkzNDRiYzE2ZjMxMWY5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTE4NiwxMCArMTg2LDEw
IEBAIHByaXZhdGU6CiAgICAgLy8gQSBjb21wb3NpdGVkIHBsdWdpbiB3aWxsIGVpdGhlciBoYXZl
IG5vIGNvbXBvc2l0ZWQgbGF5ZXIsIGEgdGV4dHVyZSBsYXllciwgb3IgYW4gSU9TdXJmYWNlIGxh
eWVyLgogICAgIC8vIEl0IHdpbGwgbmV2ZXIgaGF2ZSBib3RoIGEgdGV4dHVyZSBhbmQgSU9TdXJm
YWNlIG91dHB1dC4KICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLSAgICBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllciBtX3RleHR1cmVMYXllcjsKKyAgICBPd25QdHI8V2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXI+IG1fdGV4dHVyZUxheWVyOwogCiAgICAgdW5zaWduZWQgbV9pb1N1cmZhY2VJZDsKLSAg
ICBXZWJJT1N1cmZhY2VMYXllciBtX2lvU3VyZmFjZUxheWVyOworICAgIE93blB0cjxXZWJJT1N1
cmZhY2VMYXllcj4gbV9pb1N1cmZhY2VMYXllcjsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFzc29j
aWF0ZWQgc2Nyb2xsYmFyIGdyb3VwIG9iamVjdCwgY3JlYXRlZCBsYXppbHkuIFVzZWQgZm9yIFBl
cHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJs
ZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGFibGVMYXll
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGU4MWQ4MTM3NTljM2Y3OTA5
N2EyOWMxNDY5YjI1NzBmOWJhODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxheWVy
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oPgotCi0jaW5jbHVk
ZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uKFdlYlBv
aW50IHBvc2l0aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9zaXRp
b24pOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsYWJsZShib29sIHNj
cm9sbGFibGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRTY3JvbGxhYmxlKHNjcm9sbGFibGUpOwot
fQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhi
b29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRIYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwotfQotCi12b2lkIFdlYlNj
cm9sbGFibGVMYXllcjo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Ny
b2xsT25NYWluVGhyZWFkKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkU2Nyb2xsT25NYWlu
VGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xsYWJs
ZUxheWVyOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVj
dD4mIHJlY3RzKQotewotICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdpb247Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QgPSByZWN0c1tpXTsKLSAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOwotICAgIH0K
LSAgICBtX3ByaXZhdGUtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHJlZ2lvbik7Ci0KLX0K
LQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlv
bkxheWVycyhib29sIGVuYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzQ29udGFpbmVyRm9y
Rml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXll
cjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0
ZS0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xs
YWJsZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxh
YmxlTGF5ZXJJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMjBlODFkODEzNzU5YzNmNzkwOTdhMjljMTQ2
OWIyNTcwZjliYTg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2Nyb2xsYWJsZUxheWVySW1wbC5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg+
CisKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiUmVnaW9uLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsUG9z
aXRpb24oV2ViUG9pbnQgcG9zaXRpb24pCit7CisgICAgbV9wcml2YXRlLT5zZXRTY3JvbGxQb3Np
dGlvbihwb3NpdGlvbik7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTY3JvbGxh
YmxlKGJvb2wgc2Nyb2xsYWJsZSkKK3sKKyAgICBtX3ByaXZhdGUtPnNldFNjcm9sbGFibGUoc2Ny
b2xsYWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRIYXZlV2hlZWxFdmVu
dEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycykKK3sKKyAgICBtX3ByaXZhdGUt
PnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoaGF2ZVdoZWVsRXZlbnRIYW5kbGVycyk7Cit9CisK
K3ZvaWQgV2ViU2Nyb2xsYWJsZUxheWVyOjpzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9v
bCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQpCit7CisgICAgbV9wcml2YXRlLT5zZXRTaG91bGRT
Y3JvbGxPbk1haW5UaHJlYWQoc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKTsKK30KKwordm9pZCBX
ZWJTY3JvbGxhYmxlTGF5ZXI6OnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKGNvbnN0IFdlYlZl
Y3RvcjxXZWJSZWN0PiYgcmVjdHMpCit7CisgICAgV2ViQ29yZTo6UmVnaW9uIHJlZ2lvbjsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFdl
YkNvcmU6OkludFJlY3QgcmVjdCA9IHJlY3RzW2ldOworICAgICAgICByZWdpb24udW5pdGUocmVj
dCk7CisgICAgfQorICAgIG1fcHJpdmF0ZS0+c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24ocmVn
aW9uKTsKKworfQorCit2b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SXNDb250YWluZXJGb3JG
aXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wgZW5hYmxlKQoreworICAgIG1fcHJpdmF0ZS0+c2V0SXND
b250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7Cit9CisKK3ZvaWQgV2ViU2Ny
b2xsYWJsZUxheWVyOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCBlbmFibGUpCit7Cisg
ICAgbV9wcml2YXRlLT5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5hYmxlKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTY3JvbGxiYXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
Y3JvbGxiYXJMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZDFiMjBm
YjQwZjdjNjRkN2UxNzYzYWE2ODY2YjE0ZTE1ZjliYWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Ny
b2xsYmFyTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4K
LQotI2luY2x1ZGUgIlNjcm9sbGJhckxheWVyQ2hyb21pdW0uaCIKLQotdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi12b2lkIFdlYlNjcm9sbGJhckxheWVy
OjpzZXRTY3JvbGxMYXllcihjb25zdCBXZWJMYXllciBsYXllcikKLXsKLSAgICBpbnQgaWQgPSBs
YXllci5pc051bGwoKSA/IDAgOiBsYXllci5jb25zdFVud3JhcDxMYXllckNocm9taXVtPigpLT5p
ZCgpOwotICAgIHVud3JhcDxTY3JvbGxiYXJMYXllckNocm9taXVtPigpLT5zZXRTY3JvbGxMYXll
cklkKGlkKTsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXIgV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0
ZShXZWJDb3JlOjpTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVy
IHBhaW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkp
Ci17Ci0gICAgcmV0dXJuIFdlYlNjcm9sbGJhckxheWVyKFNjcm9sbGJhckxheWVyQ2hyb21pdW06
OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRy
eSwgMCkpOwotfQotCi1XZWJTY3JvbGxiYXJMYXllcjo6V2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3Qg
V1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+JiBsYXllcikK
LSAgICA6IFdlYkxheWVyKGxheWVyKQotewotfQotCi1XZWJTY3JvbGxiYXJMYXllciYgV2ViU2Ny
b2xsYmFyTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bT4mIGxheWVyKQotewotICAgIG1fcHJpdmF0ZSA9IGxheWVyOwot
ICAgIHJldHVybiAqdGhpczsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXI6Om9wZXJhdG9yIFBhc3NS
ZWZQdHI8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25zdAotewotICAgIHJldHVybiB1bndy
YXA8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYzZlOTg5NWRkYmQ1OTE5NTdlMWFkMGU0ODVjMWIwMTBmYmZm
ODIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Ny
b2xsYmFyTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYlNjcm9sbGJhckxheWVySW1wbC5oIgorCisjaW5jbHVkZSAi
U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1
c2luZyBXZWJDb3JlOjpTY3JvbGxiYXI7Cit1c2luZyBXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNo
cm9taXVtOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU2Nyb2xsYmFyTGF5ZXIqIFdlYlNj
cm9sbGJhckxheWVyOjpjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNj
cm9sbGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1l
R2VvbWV0cnk+IGdlb21ldHJ5KQoreworICAgIHJldHVybiBuZXcgV2ViU2Nyb2xsYmFyTGF5ZXJJ
bXBsKFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShz
Y3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwgMCkpOworfQorCisKK1dlYlNjcm9sbGJhckxh
eWVySW1wbDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJM
YXllckltcGwobGF5ZXIpKSkKK3sKK30KKworV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjp+V2ViU2Ny
b2xsYmFyTGF5ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlNjcm9sbGJhckxheWVySW1w
bDo6bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOworfQorCit2b2lkIFdlYlNj
cm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsTGF5ZXIoV2ViTGF5ZXIqIGxheWVyKQoreworICAg
IGludCBpZCA9IGxheWVyID8gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obGF5ZXIpLT5sYXll
cigpLT5pZCgpIDogMDsKKyAgICBzdGF0aWNfY2FzdDxTY3JvbGxiYXJMYXllckNocm9taXVtKj4o
bV9sYXllci0+bGF5ZXIoKSktPnNldFNjcm9sbExheWVySWQoaWQpOworfQorCisKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTY3JvbGxiYXJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNj
cm9sbGJhckxheWVySW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcyMGY3OWM1NThlNDEwMjJhZWNkNjI5OWVj
NmZkNDE4M2YxMjI5YzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJTY3JvbGxiYXJMYXllckltcGxfaAorI2RlZmluZSBXZWJTY3JvbGxiYXJMYXllcklt
cGxfaAorCisjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+CisjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworY2xhc3MgV2ViTGF5ZXJJbXBsOworCitjbGFzcyBXZWJTY3JvbGxiYXJMYXllcklt
cGwgOiBwdWJsaWMgV2ViU2Nyb2xsYmFyTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IFdl
YlNjcm9sbGJhckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hy
b21pdW0+KTsKKyAgICB2aXJ0dWFsIH5XZWJTY3JvbGxiYXJMYXllckltcGwoKTsKKworICAgIC8v
IFdlYlNjcm9sbGJhckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIq
IGxheWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbExheWVyKFdlYkxh
eWVyKikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9s
YXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYlNjcm9sbGJhckxheWVySW1wbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODM5MTRiMjYzMjk0YjUzZjU0NjYxMWFkY2E4OTgz
ODQ2MTY3MGFlZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlIDxwdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+Ci0KLSNpbmNsdWRlICJXZWJTb2xp
ZENvbG9yTGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgotCi1u
YW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViU29saWRDb2xvckxheWVyIFdlYlNvbGlkQ29sb3JMYXll
cjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gV2ViU29saWRDb2xvckxheWVyKFdlYlNvbGlkQ29s
b3JMYXllckltcGw6OmNyZWF0ZSgpKTsKLX0KLQotV2ViU29saWRDb2xvckxheWVyOjpXZWJTb2xp
ZENvbG9yTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiYgbm9k
ZSkKLSAgICA6IFdlYkxheWVyKG5vZGUpCi17Ci19Ci0KLXZvaWQgV2ViU29saWRDb2xvckxheWVy
OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29sb3ImIGNvbG9yKQotewotICAgIG1fcHJp
dmF0ZS0+c2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9y
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JM
YXllckltcGwuY3BwCmluZGV4IDMzYjFhMzBlMzhjMzBhOTU3ZGRlM2E4NjFhNDg3ZGExN2M4MWQy
OTkuLjk0NDA0MjYyY2E4MWMzYTY3ZmI0ZTIxMmYzYmZlZDg2MTk5NjBlMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuY3Bw
CkBAIC0yNiwyNCArMjYsMzcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJT
b2xpZENvbG9yTGF5ZXJJbXBsLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworI2luY2x1
ZGUgIlNvbGlkQ29sb3JMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgi
CisKK3VzaW5nIFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVtOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJTb2xpZENvbG9yTGF5ZXJJbXBsPiBXZWJTb2xpZENv
bG9yTGF5ZXJJbXBsOjpjcmVhdGUoKQorV2ViU29saWRDb2xvckxheWVyKiBXZWJTb2xpZENvbG9y
TGF5ZXI6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJTb2xpZENvbG9y
TGF5ZXJJbXBsKCkpOworICAgIHJldHVybiBuZXcgV2ViU29saWRDb2xvckxheWVySW1wbChTb2xp
ZENvbG9yTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCkpOwogfQogCi1XZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsOjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkKLSAgICA6IFNvbGlkQ29sb3JMYXllckNocm9t
aXVtKCkKK1dlYlNvbGlkQ29sb3JMYXllckltcGw6OldlYlNvbGlkQ29sb3JMYXllckltcGwoUGFz
c1JlZlB0cjxTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFk
b3B0UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIpKSkKIHsKLSAgICBzZXRJc0RyYXdhYmxlKHRy
dWUpOworICAgIG1fbGF5ZXItPmxheWVyKCktPnNldElzRHJhd2FibGUodHJ1ZSk7CiB9CiAKIFdl
YlNvbGlkQ29sb3JMYXllckltcGw6On5XZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCkKIHsKIH0KIAor
V2ViTGF5ZXIqIFdlYlNvbGlkQ29sb3JMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4g
bV9sYXllci5nZXQoKTsKK30KKwordm9pZCBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpzZXRCYWNr
Z3JvdW5kQ29sb3IoV2ViQ29sb3IgY29sb3IpCit7CisgICAgbV9sYXllci0+c2V0QmFja2dyb3Vu
ZENvbG9yKGNvbG9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllckltcGwuaAppbmRleCBk
MjY3M2I0MmI2OGY4Y2QxZTcxMWI5MWUxMjcwZDY3NmQ1ZDc2OWVhLi43NzQyYmE0OTJkNGM1MTRk
YzM3ODI3YzBiZDZlMDUzMGRkZDQwMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oCkBAIC0yNiwxOCArMjYsMjggQEAKICNp
Zm5kZWYgV2ViU29saWRDb2xvckxheWVySW1wbF9oCiAjZGVmaW5lIFdlYlNvbGlkQ29sb3JMYXll
ckltcGxfaAogCi0jaW5jbHVkZSAiU29saWRDb2xvckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViU29saWRDb2xvckxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNz
IFNvbGlkQ29sb3JMYXllckNocm9taXVtOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNz
IFdlYkxheWVySW1wbDsKIAotY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbCA6IHB1YmxpYyBX
ZWJDb3JlOjpTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bSB7CitjbGFzcyBXZWJTb2xpZENvbG9yTGF5
ZXJJbXBsIDogcHVibGljIFdlYlNvbGlkQ29sb3JMYXllciB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViU29saWRDb2xvckxheWVySW1wbD4gY3JlYXRlKCk7Ci0KLXByb3RlY3Rl
ZDoKLSAgICBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CisgICAgZXhwbGljaXQgV2ViU29saWRD
b2xvckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNvbGlkQ29sb3JMYXllckNocm9taXVt
Pik7CiAgICAgdmlydHVhbCB+V2ViU29saWRDb2xvckxheWVySW1wbCgpOworCisgICAgLy8gV2Vi
U29saWRDb2xvckxheWVyIGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxh
eWVyKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJD
b2xvcikgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9s
YXllcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWRlb0xheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGYzNDIxNTVkYWNlZWFhYTdkODY2NjUzN2Y3MDAzYWExOTMzMDQyZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWRlb0xheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVmlkZW9MYXllckNocm9taXVtLmgiCi0j
aW5jbHVkZSA8cHVibGljL1dlYlZpZGVvTGF5ZXIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0K
LVdlYlZpZGVvTGF5ZXIgV2ViVmlkZW9MYXllcjo6Y3JlYXRlKFdlYlZpZGVvRnJhbWVQcm92aWRl
ciogcHJvdmlkZXIpCi17Ci0gICAgcmV0dXJuIFdlYlZpZGVvTGF5ZXIoV2ViQ29yZTo6VmlkZW9M
YXllckNocm9taXVtOjpjcmVhdGUocHJvdmlkZXIpKTsKLX0KLQotV2ViVmlkZW9MYXllcjo6V2Vi
VmlkZW9MYXllcihQYXNzUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbGF5ZXIp
Ci0gICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0KLQotYm9vbCBXZWJWaWRlb0xheWVyOjphY3Rp
dmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmxheWVyVHJlZUhvc3QoKTsKLX0K
LQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWRlb0xheWVySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWJmZWQ2NzQyZjJkYzdmOTA5ZmFl
MjU1MzcyMjZlMWFkMGUwOWJkZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDU4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlZpZGVvTGF5ZXJJbXBsLmgiCisKKyNp
bmNsdWRlICJWaWRlb0xheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlZpZGVvTGF5ZXIqIFdlYlZpZGVvTGF5ZXI6OmNy
ZWF0ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3ZpZGVyKQoreworICAgIHJldHVybiBuZXcg
V2ViVmlkZW9MYXllckltcGwoV2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtOjpjcmVhdGUocHJv
dmlkZXIpKTsKK30KKworV2ViVmlkZW9MYXllckltcGw6OldlYlZpZGVvTGF5ZXJJbXBsKFBhc3NS
ZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtPiBsYXllcikKKyAgICA6IG1fbGF5ZXIo
YWRvcHRQdHIobmV3IFdlYkxheWVySW1wbChsYXllcikpKQoreworfQorCitXZWJWaWRlb0xheWVy
SW1wbDo6fldlYlZpZGVvTGF5ZXJJbXBsKCkKK3sKK30KKworV2ViTGF5ZXIqIFdlYlZpZGVvTGF5
ZXJJbXBsOjpsYXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK2Jvb2wg
V2ViVmlkZW9MYXllckltcGw6OmFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXIt
PmxheWVyKCktPmxheWVyVHJlZUhvc3QoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWRlb0xheWVySW1wbC5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4yODdlNGI1ZTIwZGM5NmFiNzJiNjQwYjExYTI5YjY5ODdmZmNmZmFkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaApA
QCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWRlb0xheWVySW1wbF9oCisjZGVm
aW5lIFdlYlZpZGVvTGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJWaWRlb0xheWVy
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFZpZGVvTGF5ZXJDaHJvbWl1bTsKK30K
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXllckltcGw7CisKK2NsYXNzIFdlYlZp
ZGVvTGF5ZXJJbXBsIDogcHVibGljIFdlYlZpZGVvTGF5ZXIgeworcHVibGljOgorICAgIGV4cGxp
Y2l0IFdlYlZpZGVvTGF5ZXJJbXBsKFBhc3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9t
aXVtPik7CisgICAgdmlydHVhbCB+V2ViVmlkZW9MYXllckltcGwoKTsKKworICAgIC8vIFdlYlZp
ZGVvTGF5ZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgYWN0aXZlKCkgY29uc3QgT1ZFUlJJREU7CisKK3By
aXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVySW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2Vu
ZGlmIC8vIFdlYlZpZGVvTGF5ZXJJbXBsX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCmluZGV4IDBiZDNlYTExNmU0YzA1MmRlYWEwNWU2NjMwNzY0ZTMyZjlj
YTQxNjguLjYwYzc1YzI5ZjJmYmQ0M2Q5MjZkYjgzYTY1MTkzZGMyYmEyNjM3ZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTQxMCw2ICs0MTAsNyBA
QCBXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogICAgICwg
bV9pc0NhbmNlbGluZ0Z1bGxTY3JlZW4oZmFsc2UpCiAgICAgLCBtX2JlbmNobWFya1N1cHBvcnQo
dGhpcykKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgLCBtX3Jvb3RMYXll
cigwKQogICAgICwgbV9yb290R3JhcGhpY3NMYXllcigwKQogICAgICwgbV9pc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoZmFsc2UpCiAgICAgLCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxl
ZChmYWxzZSkKQEAgLTM1MTQsNiArMzUxNSw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmFsbG93c0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcoKQogdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNz
TGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiB7CiAgICAgbV9yb290R3JhcGhpY3NMYXllciA9
IGxheWVyOworICAgIG1fcm9vdExheWVyID0gbGF5ZXIgPyBsYXllci0+cGxhdGZvcm1MYXllcigp
IDogMDsKIAogICAgIHNldElzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShsYXllcik7CiAg
ICAgaWYgKG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0KSB7CkBAIC0zNTI3LDExICszNTI5LDgg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciog
bGF5ZXIpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LT5zZXRTY3JvbGxMYXll
cihzY3JvbGxMYXllcik7CiAgICAgfQogCi0gICAgaWYgKGxheWVyKQotICAgICAgICBtX3Jvb3RM
YXllciA9ICpsYXllci0+cGxhdGZvcm1MYXllcigpOwotCiAgICAgaWYgKCFtX2xheWVyVHJlZVZp
ZXcuaXNOdWxsKCkpCi0gICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIobGF5ZXIg
PyAmbV9yb290TGF5ZXIgOiAwKTsKKyAgICAgICAgbV9sYXllclRyZWVWaWV3LnNldFJvb3RMYXll
cihtX3Jvb3RMYXllcik7CiAKICAgICBJbnRSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIG1fc2l6ZS53
aWR0aCwgbV9zaXplLmhlaWdodCk7CiAgICAgaWYgKCFtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0FjdGl2ZSkKQEAgLTM2NDQsNyArMzY0Myw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OnNldElzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0FjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9ub25Db21w
b3NpdGVkQ29udGVudEhvc3QtPnNldFNob3dEZWJ1Z0JvcmRlcnMocGFnZSgpLT5zZXR0aW5ncygp
LT5zaG93RGVidWdCb3JkZXJzKCkpOwogICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9z
dC0+c2V0T3BhcXVlKCFpc1RyYW5zcGFyZW50KCkpOwogCi0gICAgICAgIG1fbGF5ZXJUcmVlVmll
dy5pbml0aWFsaXplKHRoaXMsIG1fcm9vdExheWVyLCBsYXllclRyZWVWaWV3U2V0dGluZ3MpOwor
ICAgICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlhbGl6ZSh0aGlzLCAqbV9yb290TGF5ZXIsIGxh
eWVyVHJlZVZpZXdTZXR0aW5ncyk7CiAgICAgICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVs
bCgpKSB7CiAgICAgICAgICAgICBpZiAobV93ZWJTZXR0aW5ncy0+YXBwbHlEZWZhdWx0RGV2aWNl
U2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSAmJiBwYWdlKCktPmRldmljZVNjYWxlRmFjdG9yKCkg
IT0gMSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChwYWdlKCktPmRldmljZVNjYWxlRmFjdG9y
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggMzk3ODM2
ODBmYTE5ODk4ODZjNDYwYjEzZDQwZGQxNDA0MWEyYTQyYi4uMTIzZjM4YzRjMzViZGU5NzEwOThk
ZGMyNjBkODgxNDM1YTI5MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5oCkBAIC04MTQsNyArODE0LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpJbnRSZWN0
IG1fcm9vdExheWVyU2Nyb2xsRGFtYWdlOwogICAgIE93blB0cjxOb25Db21wb3NpdGVkQ29udGVu
dEhvc3Q+IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OwogICAgIFdlYkxheWVyVHJlZVZpZXcg
bV9sYXllclRyZWVWaWV3OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIFdlYkxheWVy
KiBtX3Jvb3RMYXllcjsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiBtX3Jvb3RHcmFwaGlj
c0xheWVyOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmU7CiAgICAg
Ym9vbCBtX2NvbXBvc2l0b3JDcmVhdGlvbkZhaWxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGE1Y2E1
NTEyNGMyOTA0NzJjMjc0N2QwOTM5ZmIwMGRhMjA1OWY3N2QuLjQ5NDhmOTdjYzU4OGEwYjViYjIw
MGQxNDM5YmM0ZjkxNzliNDlmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMTIyLDEzICsxMjIsMTMg
QEAgVEVTVChJbWFnZUxheWVyQ2hyb21pdW1UZXN0LCBvcGFxdWVJbWFnZXMpCiAgICAgUmVmUHRy
PEltYWdlPiBub25PcGFxdWVJbWFnZSA9IFRlc3RJbWFnZTo6Y3JlYXRlKEludFNpemUoMTAwLCAx
MDApLCBmYWxzZSk7CiAgICAgQVNTRVJUX1RSVUUobm9uT3BhcXVlSW1hZ2UuZ2V0KCkpOwogCi0g
ICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLmlzTnVsbCgpKTsK
KyAgICBBU1NFUlRfRkFMU0UoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpKTsKIAogICAg
IGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShvcGFxdWVJbWFnZS5nZXQoKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLm9wYXF1ZSgpKTsK
KyAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCktPm9wYXF1ZSgp
KTsKIAogICAgIGdyYXBoaWNzTGF5ZXItPnNldENvbnRlbnRzVG9JbWFnZShub25PcGFxdWVJbWFn
ZS5nZXQoKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIo
KS5vcGFxdWUoKSk7CisgICAgQVNTRVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5
ZXIoKS0+b3BhcXVlKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCmluZGV4IDY2NzIwMDQxMDM4NTk2MzliZWE2
MjNjY2RlZjUxYjkyMzIzMGI2ZDAuLjliOGU1OGNhMTAwZTc3ZDkwMzY1YmQ0NjI4YjFkZTM4MTA5
Mzc0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KIAogI2lu
Y2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJX
ZWJMYXllckltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29tcG9zaXRvci5oPgogI2luY2x1
ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVu
dExheWVyQ2xpZW50Lmg+CkBAIC03Niw5ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IC8vIEluaXRpYWxpemUgd2l0aG91dCB0aHJlYWRpbmcgc3VwcG9ydC4KICAgICAgICAgV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjppbml0aWFsaXplKDApOwotICAgICAgICBtX3Jvb3RMYXllciA9IFdl
YkxheWVyOjpjcmVhdGUoKTsKKyAgICAgICAgbV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXll
cjo6Y3JlYXRlKCkpOwogICAgICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21w
b3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcu
aW5pdGlhbGl6ZSgmbV9jbGllbnQsIG1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0
aW5ncygpKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1fdmlldy5pbml0aWFsaXplKCZtX2NsaWVu
dCwgKm1fcm9vdExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAg
IE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAgICAgfQogCkBA
IC04NywxNCArODgsMTQgQEAgcHVibGljOgogICAgICAgICAvLyBXZSBtYXkgZ2V0IGFueSBudW1i
ZXIgb2Ygc2NoZWR1bGVDb21wb3NpdGUgY2FsbHMgZHVyaW5nIHNodXRkb3duLgogICAgICAgICBF
WFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVy
KCkpOwogICAgICAgICBtX3ZpZXcuc2V0Um9vdExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXll
ci5yZXNldCgpOworICAgICAgICBtX3Jvb3RMYXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcu
cmVzZXQoKTsKICAgICAgICAgV2ViS2l0OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAg
IH0KIAogcHJvdGVjdGVkOgogICAgIE1vY2tXZWJMYXllclRyZWVWaWV3Q2xpZW50IG1fY2xpZW50
OwotICAgIFdlYkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290
TGF5ZXI7CiAgICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCkBAIC0xMDQsNzMgKzEw
NSw3MyBAQCBURVNUX0YoV2ViTGF5ZXJUZXN0LCBDbGllbnQpCiB7CiAgICAgLy8gQmFzZSBsYXll
ci4KICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMo
QW55TnVtYmVyKCkpOwotICAgIFdlYkxheWVyIGxheWVyID0gV2ViTGF5ZXI6OmNyZWF0ZSgpOwot
ICAgIG1fcm9vdExheWVyLmFkZENoaWxkKGxheWVyKTsKKyAgICBPd25QdHI8V2ViTGF5ZXI+IGxh
eWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRk
Q2hpbGQobGF5ZXIuZ2V0KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25z
KCZtX2NsaWVudCk7CiAKICAgICBXZWJGbG9hdFBvaW50IHBvaW50KDMsIDQpOwogICAgIEVYUEVD
VF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsK
LSAgICBsYXllci5zZXRBbmNob3JQb2ludChwb2ludCk7CisgICAgbGF5ZXItPnNldEFuY2hvclBv
aW50KHBvaW50KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGll
bnQpOwotICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXIuYW5jaG9yUG9pbnQoKSk7CisgICAgRVhQ
RUNUX0VRKHBvaW50LCBsYXllci0+YW5jaG9yUG9pbnQoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTCht
X2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7CiAgICAgZmxv
YXQgYW5jaG9yWiA9IDU7Ci0gICAgbGF5ZXIuc2V0QW5jaG9yUG9pbnRaKGFuY2hvclopOworICAg
IGxheWVyLT5zZXRBbmNob3JQb2ludFooYW5jaG9yWik7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xl
YXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEoYW5jaG9yWiwgbGF5ZXIu
YW5jaG9yUG9pbnRaKCkpOworICAgIEVYUEVDVF9FUShhbmNob3JaLCBsYXllci0+YW5jaG9yUG9p
bnRaKCkpOwogCiAgICAgV2ViU2l6ZSBzaXplKDcsIDgpOwogICAgIEVYUEVDVF9DQUxMKG1fY2xp
ZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXllci5z
ZXRCb3VuZHMoc2l6ZSk7CisgICAgbGF5ZXItPnNldEJvdW5kcyhzaXplKTsKICAgICBNb2NrOjpW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9FUShzaXpl
LCBsYXllci5ib3VuZHMoKSk7CisgICAgRVhQRUNUX0VRKHNpemUsIGxheWVyLT5ib3VuZHMoKSk7
CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMo
QXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKKyAgICBsYXll
ci0+c2V0TWFza3NUb0JvdW5kcyh0cnVlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyLm1hc2tzVG9Cb3VuZHMo
KSk7CisgICAgRVhQRUNUX1RSVUUobGF5ZXItPm1hc2tzVG9Cb3VuZHMoKSk7CiAKICAgICBFWFBF
Q1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkp
OwotICAgIFdlYkxheWVyIG90aGVyTGF5ZXIgPSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAgbV9y
b290TGF5ZXIuYWRkQ2hpbGQob3RoZXJMYXllcik7CisgICAgT3duUHRyPFdlYkxheWVyPiBvdGhl
ckxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+
YWRkQ2hpbGQob3RoZXJMYXllci5nZXQoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNj
aGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE1hc2tM
YXllcihvdGhlckxheWVyKTsKKyAgICBsYXllci0+c2V0TWFza0xheWVyKG90aGVyTGF5ZXIuZ2V0
KCkpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAK
ICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRM
ZWFzdCgxKSk7CiAgICAgZmxvYXQgb3BhY2l0eSA9IDAuMTIzZjsKLSAgICBsYXllci5zZXRPcGFj
aXR5KG9wYWNpdHkpOworICAgIGxheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogICAgIE1vY2s6
OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VRKG9w
YWNpdHksIGxheWVyLm9wYWNpdHkoKSk7CisgICAgRVhQRUNUX0VRKG9wYWNpdHksIGxheWVyLT5v
cGFjaXR5KCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRl
KCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldE9wYXF1ZSh0cnVlKTsKKyAgICBs
YXllci0+c2V0T3BhcXVlKHRydWUpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRp
b25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX1RSVUUobGF5ZXIub3BhcXVlKCkpOworICAgIEVY
UEVDVF9UUlVFKGxheWVyLT5vcGFxdWUoKSk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwg
c2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0UG9z
aXRpb24ocG9pbnQpOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihwb2ludCk7CiAgICAgTW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEocG9p
bnQsIGxheWVyLnBvc2l0aW9uKCkpOworICAgIEVYUEVDVF9FUShwb2ludCwgbGF5ZXItPnBvc2l0
aW9uKCkpOwogCiAgICAgLy8gVGV4dHVyZSBsYXllci4KICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVu
dCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQW55TnVtYmVyKCkpOwotICAgIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyIHRleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpj
cmVhdGUoKTsKLSAgICBtX3Jvb3RMYXllci5hZGRDaGlsZCh0ZXh0dXJlTGF5ZXIpOworICAgIE93
blB0cjxXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gdGV4dHVyZUxheWVyID0gYWRvcHRQdHIoV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hp
bGQodGV4dHVyZUxheWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVj
dGF0aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxl
Q29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIHRleHR1cmVMYXllci5zZXRUZXh0
dXJlSWQoMyk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRUZXh0dXJlSWQoMyk7CiAgICAgTW9jazo6
VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9DQUxM
KG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICB0
ZXh0dXJlTGF5ZXIuc2V0RmxpcHBlZCh0cnVlKTsKKyAgICB0ZXh0dXJlTGF5ZXItPnNldEZsaXBw
ZWQodHJ1ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50
KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1l
cyhBdExlYXN0KDEpKTsKICAgICBXZWJGbG9hdFJlY3QgdXZSZWN0KDAuMWYsIDAuMWYsIDAuOWYs
IDAuOWYpOwotICAgIHRleHR1cmVMYXllci5zZXRVVlJlY3QodXZSZWN0KTsKKyAgICB0ZXh0dXJl
TGF5ZXItPnNldFVWUmVjdCh1dlJlY3QpOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKCZtX2NsaWVudCk7CiAKIApAQCAtMTc4LDE0ICsxNzksMTQgQEAgVEVTVF9GKFdlYkxh
eWVyVGVzdCwgQ2xpZW50KQogICAgIE1vY2tXZWJDb250ZW50TGF5ZXJDbGllbnQgY29udGVudENs
aWVudDsKICAgICBFWFBFQ1RfQ0FMTChjb250ZW50Q2xpZW50LCBwYWludENvbnRlbnRzKF8sIF8s
IF8pKS5UaW1lcyhBbnlOdW1iZXIoKSk7CiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVk
dWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJDb250ZW50TGF5ZXIg
Y29udGVudExheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUoJmNvbnRlbnRDbGllbnQpOwot
ICAgIG1fcm9vdExheWVyLmFkZENoaWxkKGNvbnRlbnRMYXllcik7CisgICAgT3duUHRyPFdlYkNv
bnRlbnRMYXllcj4gY29udGVudExheWVyID0gYWRvcHRQdHIoV2ViQ29udGVudExheWVyOjpjcmVh
dGUoJmNvbnRlbnRDbGllbnQpKTsKKyAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQoY29udGVudExh
eWVyLT5sYXllcigpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9j
bGllbnQpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkp
LlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGNvbnRlbnRMYXllci5zZXREcmF3c0NvbnRlbnQoZmFs
c2UpOworICAgIGNvbnRlbnRMYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsK
ICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVY
UEVDVF9GQUxTRShjb250ZW50TGF5ZXIuZHJhd3NDb250ZW50KCkpOworICAgIEVYUEVDVF9GQUxT
RShjb250ZW50TGF5ZXItPmxheWVyKCktPmRyYXdzQ29udGVudCgpKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNw
cAppbmRleCBiZWMyYzYwMzVhY2FlZjA3MzQwYTFiOGMzNjRlMWE5OTA4MmYzY2Q1Li4xYzE2MDJj
MjM0MTY5OWQ5ODY1ZTgzOTM5YWQxMDRkMGIzYjEwOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVHJlZVZpZXdUZXN0LmNwcApAQCAtNjAsOCAr
NjAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7CiAgICAgICAg
IGluaXRpYWxpemVDb21wb3NpdG9yKCk7Ci0gICAgICAgIG1fcm9vdExheWVyID0gV2ViTGF5ZXI6
OmNyZWF0ZSgpOwotICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQo
KSwgbV9yb290TGF5ZXIsIFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzKCkpKTsKKyAgICAgICAg
bV9yb290TGF5ZXIgPSBhZG9wdFB0cihXZWJMYXllcjo6Y3JlYXRlKCkpOworICAgICAgICBFWFBF
Q1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZShjbGllbnQoKSwgKm1fcm9vdExheWVyLCBXZWJMYXll
clRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CiAgICAgICAgIG1fdmlldy5zZXRTdXJmYWNlUmVhZHko
KTsKICAgICB9CiAKQEAgLTcwLDEzICs3MCwxMyBAQCBwdWJsaWM6CiAgICAgICAgIE1vY2s6OlZl
cmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKGNsaWVudCgpKTsKIAogICAgICAgICBtX3ZpZXcuc2V0
Um9vdExheWVyKDApOwotICAgICAgICBtX3Jvb3RMYXllci5yZXNldCgpOworICAgICAgICBtX3Jv
b3RMYXllci5jbGVhcigpOwogICAgICAgICBtX3ZpZXcucmVzZXQoKTsKICAgICAgICAgV2ViS2l0
OjpXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIFdl
YkxheWVyIG1fcm9vdExheWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9yb290TGF5ZXI7CiAg
ICAgV2ViTGF5ZXJUcmVlVmlldyBtX3ZpZXc7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160051</attachid>
            <date>2012-08-22 17:46:30 -0700</date>
            <delta_ts>2012-08-22 17:56:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94174-20120822174627.patch</filename>
            <type>text/plain</type>
            <size>202433</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBmYTQxNTI5NmQ0ZDRk
YzFmNDRmMjNjYjQ5ZTcxNTYwYzdkYjhlYTZmLi41ODcxNDYxNWQ1YTllOTM1MGI0ZTU2OGRhMzdh
ZWUxNGIwMmIzOTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMi0wOC0yMiAg
SmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1
bV0gQ2hhbmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFs
IGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQxNzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIGNoYW5nZXMgV2ViTGF5ZXIgZnJvbSBhIHZhbHVlIHR5cGUgdG8gYSBwdXJlIHZpcnR1
YWwgaW50ZXJmYWNlIGFuZCBjaGFuZ2VzIFdlYipMYXllcnMgZnJvbSBzdWJ0eXBlcyB0bworICAg
ICAgICBzdGFuZGFsb25lIHR5cGVzIHRoYXQgaGF2ZSBhIFdlYkxheWVyLiBUaGlzIGJldHRlciBp
c29sYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSB0aGUgaW50ZXJmYWNlIGFuZCwgc2luY2UK
KyAgICAgICAgaXQncyBub3QgcG9zc2libGUgdG8gcmUtd3JhcCBhbiBleGlzdGluZyBsYXllciwg
bWFrZXMgY2xlYW51cCBleHBsaWNpdCBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUgY2FsbGVyIHRv
CitpbnZva2UKKyAgICAgICAgc3BlY2lhbCBjbGVhbnVwIG1ldGhvZHMgYmVmb3JlIHNodXRkb3du
LgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oOgorICAgICAg
ICAoV2ViQ29udGVudExheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXIuaDoKKyAgICAgICAgKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyKToKKyAg
ICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5ZXIuaDoKKyAgICAgICAgKFdl
YklPU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VMYXll
ci5oOgorICAgICAgICAoV2ViSW1hZ2VMYXllcik6CisgICAgICAgICogY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViTGF5ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJMYXllcjo6fldlYkxheWVyKToKKyAgICAgICAgKiBjaHJvbWl1bS9w
dWJsaWMvV2ViU2Nyb2xsYWJsZUxheWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogY2hyb21pdW0v
cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg6CisgICAgICAgIChXZWJTY3JvbGxiYXJMYXllcik6
CisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlNvbGlkQ29sb3JMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OldlYlNvbGlkQ29sb3JMYXllcjo6fldlYlNvbGlkQ29sb3JMYXllcik6CisgICAgICAgICog
Y2hyb21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaDoKKyAgICAgICAgKFdlYlZpZGVvTGF5ZXIp
OgorCiAyMDEyLTA4LTIxICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFN0b3JlIENTdHJpbmcgZGF0YSBpbiB0aGUgQ1N0cmluZ0J1ZmZlciB0byBhdm9p
ZCB0aGUgZG91YmxlIGluZGlyZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg1YTg5MTg5MTM3MzJhOTU2
ODg3N2RlNjVkODQ5Y2I3ZGU4OTZhNS4uYWNmMzBkYTEzMzc1YzdmYTI1OGFmNzhlNTM5Y2UyMzdh
ODk0NGRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAxMi0wOC0yMiAgSmFtZXMg
Um9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQ2hh
bmdlIFdlYkxheWVyIGZyb20gYSBjb25jcmV0ZSB0eXBlIHRvIGEgcHVyZSB2aXJ0dWFsIGludGVy
ZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQx
NzQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHVwZGF0ZXMgV2ViQ29yZSBjb2RlIGZvciB0aGUgV2ViTGF5ZXIgaW50ZXJmYWNlIGNoYW5nZXMu
IENsYXNzZXMgdGhhdCBoYXZlIG93bmVyc2hpcCBvZiBzcGVjaWZpYyBsYXllcgorICAgICAgICB0
eXBlcyAoc3VjaCBhcyBEcmF3aW5nQnVmZmVyQ2hyb21pdW0sIENhbnZhczJETGF5ZXJCcmlkZ2Ug
YW5kIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0pIGhvbGQgb3duZXJzaGlwCisgICAgICAg
IG9mIGEgc3BlY2lmaWMgdHlwZSBhbmQgYSBwb2ludGVyIHRvIHRoZSBXZWJMYXllciB0byBHcmFw
aGljc0xheWVyQ2hyb21pdW0gdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIGxheWVyCisgICAg
ICAgIHRyZWUuIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSBob2xkcyBhIFdlYkNvbnRlbnRMYXllciBh
bmQgKG9wdGlvbmFsbHkpIGEgV2ViSW1hZ2VMYXllciBhbmQgV2ViTGF5ZXIgKGZvcgorICAgICAg
ICBtX3RyYW5zZm9ybUxheWVyKSBhbmQgYXNzZW1ibGVzIHRoZSBmaW5hbCBsYXllciB0cmVlLgor
CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0vU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZh
dGU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSk6CisgICAgICAgIChTY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQ
cml2YXRlOjpzZXRTY3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29y
ZGluYXRvclByaXZhdGU6OnNldEhvcml6b250YWxTY3JvbGxiYXJMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGU6OnNldFZlcnRpY2FsU2Nyb2xsYmFy
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlOjpz
Y3JvbGxMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpzY3JvbGxhYmxlTGF5ZXJGb3JHcmFwaGlj
c0xheWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2Ny
b2xsYmFyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZy
YW1lVmlld0hvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3VmVydGljYWxTY3JvbGxiYXJMYXll
ckRpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0
U2Nyb2xsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNl
dE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxlckNvdW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
T25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpz
ZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdDb29yZGluYXRvcjo6c2V0TGF5ZXJJc0ZpeGVkVG9Db250YWluZXJMYXll
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJy
aWRnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXMyRExheWVyQnJpZGdlOjpDYW52YXMy
RExheWVyQnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6On5D
YW52YXMyRExheWVyQnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlk
Z2U6OnByZXBhcmVGb3JEcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlk
Z2U6OmxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhczJETGF5ZXJCcmlkZ2U6OmNvbnRl
eHRBY3F1aXJlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFz
MkRMYXllckJyaWRnZS5oOgorICAgICAgICAoQ2FudmFzMkRMYXllckJyaWRnZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjpEcmF3aW5nQnVmZmVyUHJp
dmF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmF3aW5nQnVmZmVyUHJpdmF0ZTo6fkRyYXdpbmdC
dWZmZXJQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdpbmdCdWZmZXJQcml2YXRlOjps
YXllcik6CisgICAgICAgIChEcmF3aW5nQnVmZmVyUHJpdmF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6fkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OndpbGxC
ZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVw
ZGF0ZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVt
b3ZlRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpjbGVh
ckJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21p
dW06OnNldENvbnRlbnRzT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
aHJvbWl1bTo6c2V0RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hy
b21pdW06OnNldEJhY2tncm91bmRGaWx0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0TWFza0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0QmFja2ZhY2VWaXNpYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0T3BhY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OnNldFJlcGxpY2F0ZWRCeUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXkp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3Bs
YXlJblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRD
b250ZW50c1RvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRDb250ZW50c1RvQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvTWVkaWEpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cGF1c2VBbmltYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpyZW1vdmVBbmltYXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlc3VtZUFuaW1h
dGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpwbGF0Zm9y
bUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0RGVi
dWdCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9t
aXVtOjpzZXREZWJ1Z0JvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hy
b21pdW06OnVwZGF0ZUNoaWxkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVy
Q2hyb21pdW06OnVwZGF0ZUxheWVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVBbmNob3JQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNoaWxkcmVuVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTWFza3NUb0JvdW5k
cyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVy
UHJlc2VydmVzM0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVMYXllcklzRHJhd2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVMYXllckJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzU2NhbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1
bS5oOgorICAgICAgICAoR3JhcGhpY3NMYXllckNocm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6aGFzQ29udGVudHNMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNvbnRlbnRMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyQ2hyb21pdW06OmNvbnRlbnRzTGF5ZXIpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bTo6cm9vdExheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisKIDIwMTItMDgtMjIgIERhdmlkIEdyb2dh
biAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogcmV2ZXJ0IGlu
dCB2ZXJzaW9uIHdoZW4gdmVyc2lvbiBjaGFuZ2UgdHJhbnNhY3Rpb24gYWJvcnRzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDE0MWZjZDEyZmRkZGRhNTE5NjNkMmJlOTA5MmViMGRhZWRh
MGJhYmQuLjkzZDUyMDE4ZGJhMjdhNzg0NTQwY2I2NzljOGE0NWU3ODNkZDU4NmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjE1IEBACisyMDEyLTA4LTIyICBKYW1lcyBS
b2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBDaGFu
Z2UgV2ViTGF5ZXIgZnJvbSBhIGNvbmNyZXRlIHR5cGUgdG8gYSBwdXJlIHZpcnR1YWwgaW50ZXJm
YWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDE3
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
dXBkYXRlcyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFdlYipMYXllciBmYW1pbHkgdG8gdGhl
IG5ldyBkZXNpZ24gYW5kIHVwZGF0ZXMgY2FsbGVycyBpbiBXZWJWaWV3SW1wbCAvCisgICAgICAg
IE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCAvIExpbmtIaWdobGlnaHQuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwaToKKyAgICAgICAgKiBzcmMvTGlua0hpZ2hsaWdodC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkxpbmtIaWdobGlnaHQ6OkxpbmtIaWdobGlnaHQpOgorICAgICAgICAoV2ViS2l0OjpM
aW5rSGlnaGxpZ2h0Ojpjb250ZW50TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMaW5rSGlnaGxp
Z2h0OjpjbGlwTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpMaW5rSGlnaGxpZ2h0OjpyZWxlYXNl
UmVzb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6TGlua0hpZ2hsaWdodDo6Y29tcHV0ZUhpZ2hs
aWdodExheWVyUGF0aEFuZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TGlua0hpZ2hsaWdo
dDo6c3RhcnRIaWdobGlnaHRBbmltYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpMaW5rSGlnaGxp
Z2h0Ojp1cGRhdGVHZW9tZXRyeSk6CisgICAgICAgICogc3JjL0xpbmtIaWdobGlnaHQuaDoKKyAg
ICAgICAgKExpbmtIaWdobGlnaHQpOgorICAgICAgICAqIHNyYy9Ob25Db21wb3NpdGVkQ29udGVu
dEhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6Ok5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5vbkNvbXBvc2l0ZWRD
b250ZW50SG9zdDo6c2V0U2Nyb2xsTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpOb25Db21wb3Np
dGVkQ29udGVudEhvc3Q6OnNldFZpZXdwb3J0KToKKyAgICAgICAgKFdlYktpdDo6Tm9uQ29tcG9z
aXRlZENvbnRlbnRIb3N0OjpzY3JvbGxMYXllcik6CisgICAgICAgICogc3JjL05vbkNvbXBvc2l0
ZWRDb250ZW50SG9zdC5oOgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQ29udGVudExheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250
ZW50TGF5ZXJJbXBsOjpXZWJDb250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGVudExheWVySW1wbDo6fldlYkNvbnRlbnRMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0
OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpsYXllcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXRVc2VMQ0RUZXh0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViQ29udGVudExheWVySW1wbDo6c2V0RHJhd0NoZWNrZXJib2FyZEZvck1pc3Np
bmdUaWxlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbnRlbnRMYXllckltcGw6OnBhaW50Q29u
dGVudHMpOgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmg6CisgICAgICAgIChX
ZWJDb250ZW50TGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4
dGVybmFsVGV4dHVyZUxheWVyLmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6fldlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGw6OnNldFRleHR1cmVJZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFsVGV4
dHVyZUxheWVySW1wbDo6c2V0RmxpcHBlZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbDo6c2V0VVZSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGw6OnNldFByZW11bHRpcGxpZWRBbHBoYSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6d2lsbE1vZGlmeVRleHR1cmUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldFJhdGVMaW1p
dENvbnRleHQpOgorICAgICAgICAoV2ViVGV4dHVyZVVwZGF0ZXJJbXBsKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVGV4dHVyZVVwZGF0ZXJJbXBsOjpXZWJUZXh0dXJlVXBkYXRlckltcGwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnByZXBhcmVUZXh0dXJl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpjb250ZXh0
KToKKyAgICAgICAgKiBzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmg6IENvcGllZCBm
cm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9MYXllci5oLgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbCk6Cisg
ICAgICAgICogc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllci5jcHAuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpXZWJJT1N1cmZhY2VMYXllcklt
cGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VMYXllckltcGw6On5XZWJJT1N1cmZh
Y2VMYXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VMYXllckltcGw6OnNl
dElPU3VyZmFjZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJJT1N1cmZhY2VMYXll
ckltcGw6OmxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSW1hZ2VMYXllci5o
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViSU9T
dXJmYWNlTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VMYXllckltcGwuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVy
LmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlTGF5ZXI6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlTGF5ZXJJbXBsOjpXZWJJbWFnZUxh
eWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlTGF5ZXJJbXBsOjp+V2ViSW1hZ2VM
YXllckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZUxheWVySW1wbDo6bGF5ZXIpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbWFnZUxheWVySW1wbDo6c2V0Qml0bWFwKToKKyAgICAgICAg
KiBzcmMvV2ViSW1hZ2VMYXllckltcGwuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkltYWdlTGF5ZXIuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViSW1hZ2VMYXllckltcGwpOgorICAgICAgICAqIHNyYy9X
ZWJMYXllci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogc3JjL1dlYkxheWVySW1wbC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllckltcGw6OldlYkxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6
fldlYkxheWVySW1wbCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJM
YXllckltcGw6OmlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjppbnZhbGlkYXRl
UmVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6Omluc2VydENoaWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBs
OjpyZXBsYWNlQ2hpbGQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnNldENoaWxk
cmVuKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpyZW1vdmVGcm9tUGFyZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpyZW1vdmVBbGxDaGlsZHJlbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QW5jaG9yUG9pbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllckltcGw6OmFuY2hvclBvaW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRBbmNob3JQb2ludFopOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6
OmFuY2hvclBvaW50Wik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0Qm91bmRz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpib3VuZHMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJMYXllckltcGw6OnNldE1hc2tzVG9Cb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6Om1hc2tzVG9Cb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6OnNldE1hc2tMYXllcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0UmVw
bGljYUxheWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpvcGFjaXR5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViTGF5ZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllcklt
cGw6Om9wYXF1ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0UG9zaXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJL
aXQ6OldlYkxheWVySW1wbDo6c3VibGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJMYXllckltcGw6OnNldFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6dHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXREcmF3c0Nv
bnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OmRyYXdzQ29udGVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0UHJlc2VydmVzM0QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRGaWx0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXJJbXBsOjpzZXRCYWNrZ3JvdW5kRmlsdGVycyk6CisgICAgICAgIChXZWJLaXQ6Oldl
YkxheWVySW1wbDo6c2V0RGVidWdCb3JkZXJDb2xvcik6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVySW1wbDo6c2V0RGVidWdCb3JkZXJXaWR0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
SW1wbDo6c2V0RGVidWdOYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRB
bmltYXRpb25EZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6YWRkQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpyZW1vdmVBbmltYXRpb24p
OgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllckltcGw6OnBhdXNlQW5pbWF0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBsOjpzdXNwZW5kQW5pbWF0aW9ucyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYkxheWVySW1wbDo6cmVzdW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJLaXQ6
OldlYkxheWVySW1wbDo6aGFzQWN0aXZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
TGF5ZXJJbXBsOjp0cmFuc2ZlckFuaW1hdGlvbnNUbyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxh
eWVySW1wbDo6c2V0Rm9yY2VSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXJJbXBsOjpzZXRTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1w
bDo6c2V0U2Nyb2xsYWJsZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0SGF2
ZVdoZWVsRXZlbnRIYW5kbGVycyk6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVySW1wbDo6c2V0
U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5ZXJJbXBs
OjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVy
SW1wbDo6c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKToKKyAgICAgICAgKFdl
YktpdDo6V2ViTGF5ZXJJbXBsOjpzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJMYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJJbXBs
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkxheWVySW1wbCk6CisgICAgICAg
ICogc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMYXllclRy
ZWVWaWV3OjpzZXRSb290TGF5ZXIpOgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxheWVyVHJlZVZpZXdJbXBsOjpjcmVhdGUpOgor
ICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpyZXBhaW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnBsYXRmb3JtTGF5ZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OmFjY2VsZXJhdGVkUmVuZGVyaW5n
SW5Vc2UpOgorICAgICAgICAqIHNyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaDoKKyAgICAg
ICAgKFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbCk6CisgICAgICAgICogc3JjL1dlYlBsdWdpbkNv
bnRhaW5lckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXJJbXBs
OjpzZXRCYWNraW5nVGV4dHVyZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luQ29udGFp
bmVySW1wbDo6c2V0QmFja2luZ0lPU3VyZmFjZUlkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1
Z2luQ29udGFpbmVySW1wbDo6Y29tbWl0QmFja2luZ1RleHR1cmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRPcGFxdWUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjpwbGF0Zm9ybUxheWVyKToKKyAgICAgICAgKiBzcmMvV2Vi
UGx1Z2luQ29udGFpbmVySW1wbC5oOgorICAgICAgICAoV2ViUGx1Z2luQ29udGFpbmVySW1wbCk6
CisgICAgICAgICogc3JjL1dlYlNjcm9sbGFibGVMYXllci5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAuCisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllcjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjpXZWJTY3JvbGxiYXJMYXllckltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6On5XZWJTY3JvbGxiYXJMYXll
ckltcGwpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJMYXllckltcGw6OmxheWVyKToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsOjpzZXRTY3JvbGxMYXllcik6
CisgICAgICAgICogc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5oOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmguCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJTY3JvbGxiYXJMYXll
ckltcGwpOgorICAgICAgICAqIHNyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29saWRDb2xvckxheWVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29saWRDb2xvckxheWVySW1wbDo6bGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU29saWRDb2xvckxheWVySW1wbDo6c2V0QmFja2dy
b3VuZENvbG9yKToKKyAgICAgICAgKiBzcmMvV2ViU29saWRDb2xvckxheWVySW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViU29saWRDb2xv
ckxheWVySW1wbCk6CisgICAgICAgICogc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmNwcDogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllci5jcHAuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6V2ViVmlkZW9MYXllckltcGwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWRlb0xheWVySW1wbDo6fldlYlZpZGVvTGF5ZXJJbXBsKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlkZW9MYXllckltcGw6OmxheWVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlkZW9MYXllckltcGw6OmFjdGl2ZSk6CisgICAgICAgICogc3JjL1dlYlZpZGVv
TGF5ZXJJbXBsLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWRlb0xheWVyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViS2l0KToKKyAg
ICAgICAgKFdlYlZpZGVvTGF5ZXJJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2ViVmlld0ltcGwpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3SW1wbDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgICog
dGVzdHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNU
KToKKyAgICAgICAgKiB0ZXN0cy9XZWJMYXllclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL1dl
YkxheWVyVHJlZVZpZXdUZXN0LmNwcDoKKwogMjAxMi0wOC0xNyAgSmVmZnJleSBQZmF1ICA8anBm
YXVAYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGJsb2NraW5nIG9mIFdlYiBTUUwgZGF0YWJh
c2VzIGluIHRoaXJkLXBhcnR5IHdlYiB3b3JrZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2No
cm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaAppbmRleCA3MzM2YmZhYmNkNzQ2MTgyMThi
OWRlZGViYTAxYmMyNzMyMzI2YzY3Li4zMTIxMDdmOWNiNmM2YmNhNzlkMTAzZGVkMzAwNmEyNTJj
OGRlMjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNv
bnRlbnRMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ29u
dGVudExheWVyLmgKQEAgLTI3LDU1ICsyNywzNyBAQAogI2RlZmluZSBXZWJDb250ZW50TGF5ZXJf
aAogCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViU2Nyb2xsYWJsZUxheWVy
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENvbnRlbnRMYXllckNocm9taXVtOwot
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYkNvbnRlbnRMYXllckNsaWVudDsKLWNs
YXNzIFdlYkNvbnRlbnRMYXllckltcGw7CiAKLWNsYXNzIFdlYkNvbnRlbnRMYXllciA6IHB1Ymxp
YyBXZWJTY3JvbGxhYmxlTGF5ZXIgeworY2xhc3MgV2ViQ29udGVudExheWVyIHsKIHB1YmxpYzoK
LSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJDb250ZW50TGF5ZXIgY3JlYXRlKFdlYkNvbnRl
bnRMYXllckNsaWVudCopOworICAgIC8vIFRoZSBjbGllbnQgbXVzdCBvdXRsaXZlIHRoZSBXZWJD
b250ZW50TGF5ZXIuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViQ29udGVudExheWVyKiBj
cmVhdGUoV2ViQ29udGVudExheWVyQ2xpZW50Kik7CiAKLSAgICBXZWJDb250ZW50TGF5ZXIoKSB7
IH0KLSAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV2ViQ29udGVudExheWVyJiBsYXllcikgOiBX
ZWJTY3JvbGxhYmxlTGF5ZXIobGF5ZXIpIHsgfQogICAgIHZpcnR1YWwgfldlYkNvbnRlbnRMYXll
cigpIHsgfQotICAgIFdlYkNvbnRlbnRMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYkNvbnRlbnRM
YXllciYgbGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KIAotICAgIC8vIENhbGxlZCB3aGVuIHRoZSBXZWJD
b250ZW50TGF5ZXJDbGllbnQgaXMgZ29pbmcgYXdheSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgot
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBjbGVhckNsaWVudCgpOworICAgIC8vIFRoZSBXZWJDb250
ZW50TGF5ZXIgaGFzIG93bmVyc2hpcCBvZiB0aGlzIHdyYXBwZXIuCisgICAgdmlydHVhbCBXZWJM
YXllciogbGF5ZXIoKSA9IDA7CiAKICAgICAvLyBTZXQgdG8gdHJ1ZSBpZiB0aGUgYmFja3NpZGUg
b2YgdGhpcyBsYXllcidzIGNvbnRlbnRzIHNob3VsZCBiZSB2aXNpYmxlIHdoZW4gY29tcG9zaXRl
ZC4KICAgICAvLyBEZWZhdWx0cyB0byBmYWxzZS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
RG91YmxlU2lkZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldERvdWJsZVNpZGVkKGJvb2wp
ID0gMDsKIAogICAgIC8vIFNldCB0byBhcHBseSBhIHNjYWxlIGZhY3RvciB1c2VkIHdoZW4gcGFp
bnRpbmcgYW5kIGRyYXdpbmcgdGhpcyBsYXllcidzIGNvbnRlbnQuIERlZmF1bHRzIHRvIDEuMC4K
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Q29udGVudHNTY2FsZShmbG9hdCk7CisgICAgdmly
dHVhbCB2b2lkIHNldENvbnRlbnRzU2NhbGUoZmxvYXQpID0gMDsKIAogICAgIC8vIFNldCB0byBy
ZW5kZXIgdGV4dCBpbiB0aGlzIGxheWVyIHdpdGggTENEIGFudGlhbGlhc2luZy4gT25seSBzZXQg
aWYgeW91IGtub3cgdGhhdCB0aGlzIGxheWVyIHdpbGwgYmUKICAgICAvLyBkcmF3biBpbiBhIHdh
eSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlIC0gaS5lLiBvcGFxdWUgYmFja2dyb3VuZCwgbm90IHJv
dGF0ZWQgb3Igc2NhbGVkLCBldGMuCiAgICAgLy8gRGVmYXVsdHMgdG8gZmFsc2U7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldFVzZUxDRFRleHQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNl
dFVzZUxDRFRleHQoYm9vbCkgPSAwOwogCiAgICAgLy8gU2V0IHRvIGRyYXcgYSBzeXN0ZW0tZGVm
aW5lZCBjaGVja2VyYm9hcmQgaWYgdGhlIGNvbXBvc2l0b3Igd291bGQgb3RoZXJ3aXNlIGRyYXcg
YSB0aWxlIGluIHRoaXMgbGF5ZXIKICAgICAvLyBhbmQgdGhlIGFjdHVhbCBjb250ZW50cyBhcmUg
dW5hdmFpbGFibGUuIElmIGZhbHNlLCB0aGUgY29tcG9zaXRvciB3aWxsIGRyYXcgdGhlIGxheWVy
J3MgYmFja2dyb3VuZCBjb2xvcgogICAgIC8vIGZvciB0aGVzZSB0aWxlcy4KICAgICAvLyBEZWZh
dWx0cyB0byBmYWxzZS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0RHJhd0NoZWNrZXJib2Fy
ZEZvck1pc3NpbmdUaWxlcyhib29sKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAg
IFdlYkNvbnRlbnRMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q29udGVudExh
eWVyQ2hyb21pdW0+Jik7Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3QgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtPiYpOwotICAgIG9wZXJh
dG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bT4oKSBjb25z
dDsKLSNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2lu
Z1RpbGVzKGJvb2wpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJFeHRlcm5hbFRleHR1cmVM
YXllci5oCmluZGV4IGIxOWMwNWYzZTNiMDk4ZDhlYjAzZWU1NjEyNzk2NDZiOTA4MWY0NTQuLjky
ZDJjNGZlZTg3NmE5MWJkYmY2MGJlMzg1MTM3M2NjZWY3MWIxNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
LmgKQEAgLTMwLDEwICszMCw2IEBACiAjaW5jbHVkZSAiV2ViRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSAiV2ViTGF5ZXIuaCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgVGV4dHVyZUxheWVy
Q2hyb21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckNsaWVudDsKQEAgLTQ0LDQ5ICs0MCw0MyBAQCBjbGFzcyBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckNsaWVudDsKIC8vIFdoZW4gaW4gc2luZ2xlLXRocmVhZCBtb2RlLCB0aGlzIG1l
YW5zIGR1cmluZyBXZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdGUoKS4KIC8vIFdoZW4gdXNpbmcg
dGhlIHRocmVhZGVkIGNvbXBvc2l0b3IsIHRoaXMgY2FuIG1lYW4gYXQgYW4gYXJiaXRyYXJ5IHRp
bWUgdW50aWwKIC8vIHRoZSBXZWJMYXllclRyZWVWaWV3IGlzIGRlc3Ryb3llZC4KLWNsYXNzIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdlYkV4dGVy
bmFsVGV4dHVyZUxheWVyIHsKIHB1YmxpYzoKICAgICAvLyBUaGUgb3duZXIgb2YgdGhpcyBsYXll
ciBtYXkgb3B0aW9uYWxseSBwcm92aWRlIGEgY2xpZW50LiBUaGlzIGNsaWVudCB3aWxsCiAgICAg
Ly8gYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb21wb3NpdG9yIHdpc2hlcyB0byBwcm9kdWNlIGEg
bmV3IGZyYW1lIGFuZCBjYW4KICAgICAvLyBwcm92aWRlIGEgbmV3IGZyb250IGJ1ZmZlciB0ZXh0
dXJlIElELiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgY2xpZW50IHdhbnRzIHRvCiAgICAgLy8gaW1w
bGVtZW50IGEgZG91YmxlLWJ1ZmZlcmluZyBzY2hlbWUgdGhhdCBpcyBzeW5jaHJvbml6ZWQgd2l0
aCB0aGUgY29tcG9zaXRvciwgZm9yIGluc3RhbmNlLgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGlj
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIGNyZWF0ZShXZWJFeHRlcm5hbFRleHR1cmVMYXllckNs
aWVudCogPSAwKTsKLQotICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBjbGllbnQgZm9yIHRoaXMg
bGF5ZXIgaXMgZ29pbmcgYXdheSBhbmQgc2hvdWxkbid0IGJlIHVzZWQuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIGNsZWFyQ2xpZW50KCk7CisgICAgLy8gVGhlIGNsaWVudCBtdXN0IG91dGxpdmUg
dGhlIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyLgorICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdl
YkV4dGVybmFsVGV4dHVyZUxheWVyKiBjcmVhdGUoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGll
bnQqID0gMCk7CiAKLSAgICBXZWJFeHRlcm5hbFRleHR1cmVMYXllcigpIHsgfQogICAgIHZpcnR1
YWwgfldlYkV4dGVybmFsVGV4dHVyZUxheWVyKCkgeyB9CiAKKyAgICB2aXJ0dWFsIFdlYkxheWVy
KiBsYXllcigpID0gMDsKKwogICAgIC8vIFNldHMgdGhlIHRleHR1cmUgaWQgdGhhdCByZXByZXNl
bnRzIHRoZSBsYXllciwgaW4gdGhlIG5hbWVzcGFjZSBvZiB0aGUKICAgICAvLyBjb21wb3NpdG9y
IGNvbnRleHQuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCkgPSAwOwogCiAgICAgLy8g
U2V0cyB3aGV0aGVyIG9yIG5vdCB0aGUgdGV4dHVyZSBzaG91bGQgYmUgZmxpcHBlZCBpbiB0aGUg
WSBkaXJlY3Rpb24gd2hlbgogICAgIC8vIHJlbmRlcmVkLgotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRGbGlwcGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRGbGlwcGVkKGJvb2wpID0g
MDsKIAogICAgIC8vIFNldHMgdGhlIHJlY3QgaW4gVVYgc3BhY2Ugb2YgdGhlIHRleHR1cmUgdGhh
dCBpcyBtYXBwZWQgdG8gdGhlIGxheWVyCiAgICAgLy8gYm91bmRzLgotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXRVVlJlY3QoY29uc3QgV2ViRmxvYXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lk
IHNldFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRo
ZXIgZXZlcnkgcGl4ZWwgaW4gdGhpcyBsYXllciBpcyBvcGFxdWUuIERlZmF1bHRzIHRvIGZhbHNl
LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRPcGFxdWUoYm9vbCk7CisgICAgdmlydHVhbCB2
b2lkIHNldE9wYXF1ZShib29sKSA9IDA7CiAKICAgICAvLyBTZXRzIHdoZXRoZXIgdGhpcyBsYXll
cidzIHRleHR1cmUgaGFzIHByZW11bHRpcGxpZWQgYWxwaGEgb3Igbm90LiBEZWZhdWx0cyB0byB0
cnVlLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRQcmVtdWx0aXBsaWVkQWxwaGEoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldFByZW11bHRpcGxpZWRBbHBoYShib29sKSA9IDA7CiAKICAg
ICAvLyBJbmRpY2F0ZXMgdGhhdCB0aGUgbW9zdCByZWNlbnRseSBwcm92aWRlZCB0ZXh0dXJlIElE
IGlzIGFib3V0IHRvIGJlIG1vZGlmaWVkIGV4dGVybmFsbHkuCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHdpbGxNb2RpZnlUZXh0dXJlKCk7CisgICAgdmlydHVhbCB2b2lkIHdpbGxNb2RpZnlUZXh0
dXJlKCkgPSAwOwogCiAgICAgLy8gU2V0cyB3aGV0aGVyIHRoaXMgY29udGV4dCBzaG91bGQgYmUg
cmF0ZSBsaW1pdGVkIGJ5IHRoZSBjb21wb3NpdG9yLiBSYXRlIGxpbWl0aW5nIHdvcmtzIGJ5IGJs
b2NraW5nCiAgICAgLy8gaW52YWxpZGF0ZSgpIGFuZCBpbnZhbGlkYXRlUmVjdCgpIGNhbGxzIGlm
IHRoZSBjb21wb3NpdG9yIGlzIHRvbyBtYW55IGZyYW1lcyBiZWhpbmQuCi0gICAgV0VCS0lUX0VY
UE9SVCB2b2lkIHNldFJhdGVMaW1pdENvbnRleHQoYm9vbCk7Ci0KLXByaXZhdGU6Ci0jaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIo
UGFzc1JlZlB0cjxXZWJDb3JlOjpUZXh0dXJlTGF5ZXJDaHJvbWl1bT4pOwotI2VuZGlmCisgICAg
dmlydHVhbCB2b2lkIHNldFJhdGVMaW1pdENvbnRleHQoYm9vbCkgPSAwOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYklPU3VyZmFjZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYklPU3VyZmFjZUxheWVyLmgKaW5kZXggMzdhNGM2NzkyYzFjNzZlZWNjMGM2MGMwZjNmYzlk
MGVhM2QzMzliYi4uYmNmMTQxMTJhYTRiOTQ5MGQwMzY5ZGJhNGE3Y2Y1YTA4NzY2ZjI4OSAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJT1N1cmZhY2VMYXll
ci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViSU9TdXJmYWNlTGF5
ZXIuaApAQCAtMzAsMjcgKzMwLDE5IEBACiAjaW5jbHVkZSAiV2ViTGF5ZXIuaCIKICNpbmNsdWRl
ICJXZWJTaXplLmgiCiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIElPU3VyZmFjZUxheWVy
Q2hyb21pdW07Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBUaGlzIGNsYXNzIHJlcHJl
c2VudHMgYSBsYXllciB0aGF0IHJlbmRlcnMgYW4gZXh0ZXJuYWxseSBtYW5hZ2VkIElPU3VyZmFj
ZS4KLWNsYXNzIFdlYklPU3VyZmFjZUxheWVyIDogcHVibGljIFdlYkxheWVyIHsKK2NsYXNzIFdl
YklPU3VyZmFjZUxheWVyIHsKIHB1YmxpYzoKLSAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJ
T1N1cmZhY2VMYXllciBjcmVhdGUoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJT1N1
cmZhY2VMYXllciogY3JlYXRlKCk7CiAKLSAgICBXZWJJT1N1cmZhY2VMYXllcigpIHsgfQogICAg
IHZpcnR1YWwgfldlYklPU3VyZmFjZUxheWVyKCkgeyB9CiAKLSAgICAvLyBTZXRzIHRoZSBJTyBz
dXJmYWNlIGlkIHRoYXQgcmVwcmVzZW50cyB0aGlzIGxheWVyJ3MgY29udGVudHMuCi0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNl
SWQsIFdlYlNpemUpOworICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOwogCi1wcml2
YXRlOgotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIGV4cGxpY2l0IFdlYklPU3VyZmFj
ZUxheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4pOwotI2Vu
ZGlmCisgICAgLy8gU2V0cyB0aGUgSU8gc3VyZmFjZSBpZCB0aGF0IHJlcHJlc2VudHMgdGhpcyBs
YXllcidzIGNvbnRlbnRzLgorICAgIHZpcnR1YWwgdm9pZCBzZXRJT1N1cmZhY2VQcm9wZXJ0aWVz
KHVuc2lnbmVkIGlvU3VyZmFjZUlkLCBXZWJTaXplKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
SW1hZ2VMYXllci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxh
eWVyLmgKaW5kZXggYTkxNjgzNWYyMDViYzA2ZjU4NGQ0MjMzMmE0MWU0YzYwZTk5MDBiNC4uYzc3
MzdmMzFhMzc5NmZkMDRkY2RjNGJkZWYyNmI1YWI1NjBjMDE2ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgKKysrIGIvU291cmNlL1Bs
YXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJJbWFnZUxheWVyLmgKQEAgLTMwLDI0ICszMCwxNiBA
QAogI2luY2x1ZGUgIldlYkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkxheWVyLmgiCiAKLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLWNsYXNzIEltYWdlTGF5ZXJDaHJvbWl1bTsKLX0KLQogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLWNsYXNzIFdlYkltYWdlTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xh
c3MgV2ViSW1hZ2VMYXllciB7CiBwdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2Vi
SW1hZ2VMYXllciBjcmVhdGUoKTsKKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJJbWFnZUxh
eWVyKiBjcmVhdGUoKTsKIAotICAgIFdlYkltYWdlTGF5ZXIoKSB7IH0KICAgICB2aXJ0dWFsIH5X
ZWJJbWFnZUxheWVyKCkgeyB9CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Qml0bWFwKFNr
Qml0bWFwKTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIGV4cGxpY2l0IFdlYklt
YWdlTGF5ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+KTsKLSNlbmRp
ZgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRCaXRtYXAoU2tCaXRtYXApID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCmluZGV4IDY0MzFmODQ4YzZh
OThmOWM2ZWIyNWMxZGNhZGMyYTEzNjIzZDY1MWYuLjYwZWQ2OTQyMzlkYTM0OTNlZjIwMGE0NjA0
Mjc2OTkxMTI2MzUzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJs
aWMvV2ViTGF5ZXIuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxh
eWVyLmgKQEAgLTI5LDEyICsyOSwxMyBAQAogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYkNvbG9yLmgiCiAjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2Vi
UG9pbnQuaCIKICNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCisjaW5jbHVkZSAiV2ViUmVjdC5o
IgogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiBjbGFz
cyBTa01hdHJpeDQ0OwotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBMYXllckNocm9taXVtOyB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViQW5pbWF0aW9uRGVsZWdhdGU7CkBAIC00
NCw3MyArNDUsNjkgQEAgc3RydWN0IFdlYkZsb2F0UG9pbnQ7CiBzdHJ1Y3QgV2ViRmxvYXRSZWN0
Owogc3RydWN0IFdlYlNpemU7CiAKK2NsYXNzIFdlYkxheWVySW1wbDsKKwogY2xhc3MgV2ViTGF5
ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYkxheWVyIGNyZWF0ZSgp
OwotCi0gICAgV2ViTGF5ZXIoKSB7IH0KLSAgICBXZWJMYXllcihjb25zdCBXZWJMYXllciYgbGF5
ZXIpIHsgYXNzaWduKGxheWVyKTsgfQotICAgIHZpcnR1YWwgfldlYkxheWVyKCkgeyByZXNldCgp
OyB9Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJMYXllciYgbGF5ZXIpCi0gICAg
ewotICAgICAgICBhc3NpZ24obGF5ZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQot
ICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV9wcml2YXRlLmlzTnVsbCgpOyB9Ci0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHJlc2V0KCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFz
c2lnbihjb25zdCBXZWJMYXllciYpOwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29u
c3QgV2ViTGF5ZXImKSBjb25zdDsKKyNkZWZpbmUgV0VCTEFZRVJfSVNfUFVSRV9WSVJUVUFMCisg
ICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViTGF5ZXIqIGNyZWF0ZSgpOworCisgICAgdmlydHVh
bCB+V2ViTGF5ZXIoKSB7IH0KKworICAgIC8vIFJldHVybnMgYSBwb3NpdGl2ZSBJRCB0aGF0IHdp
bGwgYmUgdW5pcXVlIGFjcm9zcyBhbGwgV2ViTGF5ZXJzIGFsbG9jYXRlZCBpbiB0aGlzIHByb2Nl
c3MuCisgICAgdmlydHVhbCBpbnQgaWQoKSBjb25zdCA9IDA7CiAKICAgICAvLyBTZXRzIGEgcmVn
aW9uIG9mIHRoZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29u
dGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgV2ViRmxv
YXRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0
UmVjdCYpID0gMDsKIAogICAgIC8vIFNldHMgdGhlIGVudGlyZSBsYXllciBhcyBpbnZhbGlkLCBp
LmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQg
aW52YWxpZGF0ZSgpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOwogCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVyJik7Ci0gICAgV0VCS0lU
X0VYUE9SVCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwgc2l6ZV90IGluZGV4KTsK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiByZWZl
cmVuY2UsIGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcj4mKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgcmVtb3ZlRnJvbVBhcmVudCgpOwotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZW1v
dmVBbGxDaGlsZHJlbigpOworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBkbyBub3QgdGFrZSBvd25l
cnNoaXAgb2YgdGhlIFdlYkxheWVyKiBwYXJhbWV0ZXIuCisgICAgdmlydHVhbCB2b2lkIGFkZENo
aWxkKFdlYkxheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGlsZChXZWJMYXll
ciosIHNpemVfdCBpbmRleCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXBsYWNlQ2hpbGQoV2Vi
TGF5ZXIqIHJlZmVyZW5jZSwgV2ViTGF5ZXIqIG5ld0xheWVyKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcio+JikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVBbGxDaGlsZHJlbigpID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNob3JQ
b2ludChjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9hdFBv
aW50IGFuY2hvclBvaW50KCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50
KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IGFu
Y2hvclBvaW50KCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuY2hv
clBvaW50WihmbG9hdCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBmbG9hdCBhbmNob3JQb2ludFooKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSA9IDA7CisgICAg
dmlydHVhbCBmbG9hdCBhbmNob3JQb2ludFooKSBjb25zdCA9IDA7CiAKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0Qm91bmRzKGNvbnN0IFdlYlNpemUmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFdl
YlNpemUgYm91bmRzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldEJvdW5kcyhjb25zdCBX
ZWJTaXplJikgPSAwOworICAgIHZpcnR1YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCA9IDA7CiAK
LSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0TWFza3NUb0JvdW5kcyhib29sKTsKLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgbWFza3NUb0JvdW5kcygpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBz
ZXRNYXNrc1RvQm91bmRzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0JvdW5k
cygpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRNYXNrTGF5ZXIoY29u
c3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UmVwbGljYUxheWVyKGNv
bnN0IFdlYkxheWVyJik7CisgICAgdmlydHVhbCB2b2lkIHNldE1hc2tMYXllcihXZWJMYXllciop
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxheWVyKikgPSAwOwog
Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpOwotICAgIFdFQktJVF9F
WFBPUlQgZmxvYXQgb3BhY2l0eSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5
KGZsb2F0KSA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3QgPSAwOwogCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKLSAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgb3BhcXVlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYXF1ZShib29sKSA9
IDA7CisgICAgdmlydHVhbCBib29sIG9wYXF1ZSgpIGNvbnN0ID0gMDsKIAotICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lU
X0VYUE9SVCBXZWJGbG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lk
IHNldFBvc2l0aW9uKGNvbnN0IFdlYkZsb2F0UG9pbnQmKSA9IDA7CisgICAgdmlydHVhbCBXZWJG
bG9hdFBvaW50IHBvc2l0aW9uKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lk
IHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBj
b25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgU2tNYXRy
aXg0NCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0IHN1
YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIFdFQktJVF9F
WFBPUlQgU2tNYXRyaXg0NCB0cmFuc2Zvcm0oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRy
YW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0dWFs
IFNrTWF0cml4NDQgdHJhbnNmb3JtKCkgY29uc3QgPSAwOwogCiAgICAgLy8gU2V0cyB3aGV0aGVy
IHRoZSBsYXllciBkcmF3cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgotICAgIFdFQktJ
VF9FWFBPUlQgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBi
b29sIGRyYXdzQ29udGVudCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRl
bnQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkcmF3c0NvbnRlbnQoKSBjb25zdCA9IDA7
CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UHJlc2VydmVzM0QoYm9vbCk7CisgICAgdmly
dHVhbCB2b2lkIHNldFByZXNlcnZlczNEKGJvb2wpID0gMDsKIAogICAgIC8vIE1hcmsgdGhhdCB0
aGlzIGxheWVyIHNob3VsZCB1c2UgaXRzIHBhcmVudCdzIHRyYW5zZm9ybSBhbmQgZG91YmxlLXNp
ZGVkCiAgICAgLy8gcHJvcGVydGllcyBpbiBkZXRlcm1pbmluZyB0aGlzIGxheWVyJ3MgYmFja2Zh
Y2UgdmlzaWJpbGl0eSBpbnN0ZWFkIG9mCkBAIC0xMTksMTA1ICsxMTYsNjggQEAgcHVibGljOgog
ICAgIC8vIE5vdGU6IFRoaXMgQVBJIGlzIHRvIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIHZpc2li
aWxpdHkgdGhlIGhhbmRsaW5nIG9mCiAgICAgLy8gV2ViS2l0IGxheWVycyB0aGF0IGhhdmUgYSBj
b250ZW50cyBsYXllciAoY2FudmFzLCBwbHVnaW4sIFdlYkdMLCB2aWRlbywKICAgICAvLyBldGMp
LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRVc2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHko
Ym9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eShi
b29sKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdl
YkNvbG9yKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yKSA9
IDA7CiAKICAgICAvLyBDbGVhciB0aGUgZmlsdGVycyBpbiB1c2UgYnkgcGFzc2luZyBpbiBhIG5l
d2x5IGluc3RhbnRpYXRlZAogICAgIC8vIFdlYkZpbHRlck9wZXJhdGlvbnMgb2JqZWN0LgotICAg
IFdFQktJVF9FWFBPUlQgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsdGVycyhjb25zdCBXZWJGaWx0ZXJPcGVyYXRpb25z
JikgPSAwOwogCiAgICAgLy8gQXBwbHkgZmlsdGVycyB0byBwaXhlbHMgdGhhdCBzaG93IHRocm91
Z2ggdGhlIGJhY2tncm91bmQgb2YgdGhpcyBsYXllci4KICAgICAvLyBOb3RlOiBUaGVzZSBmaWx0
ZXJzIGFyZSBvbmx5IHBvc3NpYmxlIG9uIGxheWVycyB0aGF0IGFyZSBkcmF3biBkaXJlY3RseQog
ICAgIC8vIHRvIGEgcm9vdCByZW5kZXIgc3VyZmFjZSB3aXRoIGFuIG9wYXF1ZSBiYWNrZ3JvdW5k
LiBUaGlzIG1lYW5zIGlmIGFuCiAgICAgLy8gYW5jZXN0b3Igb2YgdGhlIGJhY2tncm91bmQtZmls
dGVyZWQgbGF5ZXIgc2V0cyBjZXJ0YWluIHByb3BlcnRpZXMKICAgICAvLyAob3BhY2l0eSwgdHJh
bnNmb3JtcyksIGl0IG1heSBjb25mbGljdCBhbmQgaGlkZSB0aGUgYmFja2dyb3VuZCBmaWx0ZXJz
LgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBXZWJG
aWx0ZXJPcGVyYXRpb25zJik7CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRGaWx0ZXJz
KGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmKSA9IDA7CiAKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0RGVidWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBzZXREZWJ1Z0JvcmRlcldpZHRoKGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgc2V0RGVidWdOYW1lKFdlYlN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVnQm9y
ZGVyQ29sb3IoY29uc3QgV2ViQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldERlYnVn
Qm9yZGVyV2lkdGgoZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGVidWdOYW1lKFdl
YlN0cmluZykgPSAwOwogCiAgICAgLy8gQW4gYW5pbWF0aW9uIGRlbGVnYXRlIGlzIG5vdGlmaWVk
IHdoZW4gYW5pbWF0aW9ucyBhcmUgc3RhcnRlZCBhbmQKICAgICAvLyBzdG9wcGVkLiBUaGUgV2Vi
TGF5ZXIgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGRlbGVnYXRlLCBhbmQgaXQgaXMK
ICAgICAvLyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNsaWVudCB0byByZXNldCB0aGUgbGF5
ZXIncyBkZWxlZ2F0ZSBiZWZvcmUKICAgICAvLyBkZWxldGluZyB0aGUgZGVsZWdhdGUuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRlbGVn
YXRlKik7CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlv
bkRlbGVnYXRlKikgPSAwOwogCiAgICAgLy8gUmV0dXJucyBmYWxzZSBpZiB0aGUgYW5pbWF0aW9u
IGNhbm5vdCBiZSBhZGRlZC4KLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wgYWRkQW5pbWF0aW9uKFdl
YkFuaW1hdGlvbiopOworICAgIHZpcnR1YWwgYm9vbCBhZGRBbmltYXRpb24oV2ViQW5pbWF0aW9u
KikgPSAwOwogCiAgICAgLy8gUmVtb3ZlcyBhbGwgYW5pbWF0aW9ucyB3aXRoIHRoZSBnaXZlbiBp
ZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25J
ZCk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpID0g
MDsKIAogICAgIC8vIFJlbW92ZXMgYWxsIGFuaW1hdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gaWQgdGFy
Z2V0aW5nIHRoZSBnaXZlbiBwcm9wZXJ0eS4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVtb3Zl
QW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSk7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIFdlYkFu
aW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkpID0gMDsKIAogICAgIC8vIFBhdXNlcyBhbGwgYW5pbWF0
aW9ucyB3aXRoIHRoZSBnaXZlbiBpZC4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcGF1c2VBbmlt
YXRpb24oaW50IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgdmlydHVhbCB2
b2lkIHBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpID0g
MDsKIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHN1c3BlbmQgYW5kIHJlc3VtZSBh
bGwgYW5pbWF0aW9ucy4gVGhlIGdpdmVuIHRpbWUKICAgICAvLyBpcyBhc3N1bWVkIHRvIHVzZSB0
aGUgc2FtZSB0aW1lIGJhc2UgYXMgbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkuCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1l
KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3Rv
bmljVGltZSk7CisgICAgdmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25v
dG9uaWNUaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91Ymxl
IG1vbm90b25pY1RpbWUpID0gMDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxheWVy
IGhhcyBhbnkgYWN0aXZlIGFuaW1hdGlvbnMgLSB1c2VmdWwgZm9yIHRlc3RzLgotICAgIFdFQktJ
VF9FWFBPUlQgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QWN0aXZlQW5pbWF0aW9uKCkgPSAwOwogCiAgICAgLy8gVHJhbnNmZXJzIGFsbCBhbmltYXRpb25z
IHJ1bm5pbmcgb24gdGhlIGN1cnJlbnQgbGF5ZXIuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHRy
YW5zZmVyQW5pbWF0aW9uc1RvKFdlYkxheWVyKik7CisgICAgdmlydHVhbCB2b2lkIHRyYW5zZmVy
QW5pbWF0aW9uc1RvKFdlYkxheWVyKikgPSAwOworCisgICAgLy8gU2Nyb2xsaW5nCisgICAgdmly
dHVhbCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKFdlYlBvaW50KSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hl
ZWxFdmVudEhhbmRsZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkU2Ny
b2xsT25NYWluVGhyZWFkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNj
cm9sbGFibGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXllcnMoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAwOwogCiAg
ICAgLy8gRm9yY2VzIHRoaXMgbGF5ZXIgdG8gdXNlIGEgcmVuZGVyIHN1cmZhY2UuIFRoZXJlIGlz
IG5vIGJlbmVmaXQgaW4gZG9pbmcKICAgICAvLyBzbywgYnV0IHRoaXMgaXMgdG8gZmFjaWxpdGF0
ZSBiZW5jaG1hcmtzIGFuZCB0ZXN0cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Rm9yY2VS
ZW5kZXJTdXJmYWNlKGJvb2wpOwotCi0gICAgLy8gRHJvcHMgdGhpcyBsYXllcidzIHJlbmRlciBz
dXJmYWNlLCBpZiBpdCBoYXMgb25lLiBVc2VkIHRvIGJyZWFrIGN5Y2xlcyBpbiBzb21lCi0gICAg
Ly8gY2FzZXMgLSBpZiB5b3UgYXJlbid0IHN1cmUsIHlvdSBkb24ndCBuZWVkIHRvIGNhbGwgdGhp
cy4KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIHRvKCkKLSAgICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAg
ICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCB0b0NvbnN0KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIFQgcmVzOwotICAgICAgICByZXMuV2ViTGF5ZXI6OmFzc2lnbigqdGhpcyk7
Ci0gICAgICAgIHJldHVybiByZXM7Ci0gICAgfQotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9O
Ci0gICAgV2ViTGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21p
dW0+Jik7Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6TGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBU
KiB1bndyYXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPiht
X3ByaXZhdGUuZ2V0KCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNvbnN0
IFQqIGNvbnN0VW53cmFwKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBUKj4obV9wcml2YXRlLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotcHJvdGVjdGVk
OgotICAgIFdlYlByaXZhdGVQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4gbV9wcml2YXRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRGb3JjZVJlbmRlclN1cmZhY2UoYm9vbCkgPSAwOwogfTsKIAot
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBXZWJMYXllciYgYSwgY29uc3QgV2ViTGF5ZXIm
IGIpCi17Ci0gICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKLXsKLSAgICByZXR1cm4g
IShhID09IGIpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFdlYkxh
eWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Ny
b2xsYWJsZUxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9s
bGFibGVMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTAyZjhjNzM5NjFh
ZmQzZjM5NWM3ZTJhYzliNjM4MGZkOGQ3NmFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Ny
b2xsYWJsZUxheWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJTY3JvbGxhYmxlTGF5ZXJfaAotI2RlZmluZSBXZWJTY3JvbGxhYmxlTGF5ZXJfaAot
Ci0jaW5jbHVkZSAiV2ViQ29tbW9uLmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXIuaCIKLSNpbmNsdWRl
ICJXZWJQb2ludC5oIgotI2luY2x1ZGUgIldlYlJlY3QuaCIKLSNpbmNsdWRlICJXZWJWZWN0b3Iu
aCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYlNjcm9sbGFibGVMYXllciA6IHB1
YmxpYyBXZWJMYXllciB7Ci1wdWJsaWM6Ci0gICAgV2ViU2Nyb2xsYWJsZUxheWVyKCkgeyB9Ci0g
ICAgV2ViU2Nyb2xsYWJsZUxheWVyKGNvbnN0IFdlYlNjcm9sbGFibGVMYXllciYgbGF5ZXIpIDog
V2ViTGF5ZXIobGF5ZXIpIHsgfQotICAgIHZpcnR1YWwgfldlYlNjcm9sbGFibGVMYXllcigpIHsg
fQotICAgIFdlYlNjcm9sbGFibGVMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYlNjcm9sbGFibGVM
YXllciYgbGF5ZXIpCi0gICAgewotICAgICAgICBXZWJMYXllcjo6YXNzaWduKGxheWVyKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRT
Y3JvbGxQb3NpdGlvbihXZWJQb2ludCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNjcm9s
bGFibGUoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFp
blRocmVhZChib29sKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKTsKLSAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpOwotCi0KLSNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJTY3JvbGxhYmxlTGF5ZXIoY29uc3QgV1RGOjpQ
YXNzUmVmUHRyPFdlYkNvcmU6OkxheWVyQ2hyb21pdW0+JiBsYXllcikgOiBXZWJMYXllcihsYXll
cikgeyB9Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8g
V2ViU2Nyb2xsYWJsZUxheWVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaAppbmRleCAxYmZlN2Q2YWJiM2E1OWYzZjNlYTMzMDQ0
OGNjNjQwN2QzMTFhMWE5Li40NTFhMGI5YzEzNGI2YzQ0NDk1MGUxYTJiNjIzZjNiZTFmMDIxMTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJh
ckxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxi
YXJMYXllci5oCkBAIC0zMiwyOSArMzIsMjAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgU2Nyb2xsYmFyOwotY2xhc3MgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYlNjcm9sbGJhckxheWVyIDogcHVibGljIFdlYkxheWVy
IHsKK2NsYXNzIFdlYlNjcm9sbGJhckxheWVyIHsKIHB1YmxpYzoKLSAgICBXZWJTY3JvbGxiYXJM
YXllcigpIHsgfQotICAgIFdlYlNjcm9sbGJhckxheWVyKGNvbnN0IFdlYlNjcm9sbGJhckxheWVy
JiBsYXllcikgOiBXZWJMYXllcihsYXllcikgeyB9CiAgICAgdmlydHVhbCB+V2ViU2Nyb2xsYmFy
TGF5ZXIoKSB7IH0KLSAgICBXZWJTY3JvbGxiYXJMYXllciYgb3BlcmF0b3I9KGNvbnN0IFdlYlNj
cm9sbGJhckxheWVyJiBsYXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5
ZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQogCi0gICAgV0VCS0lUX0VYUE9SVCB2
b2lkIHNldFNjcm9sbExheWVyKGNvbnN0IFdlYkxheWVyKTsKKyAgICB2aXJ0dWFsIFdlYkxheWVy
KiBsYXllcigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxMYXllcihXZWJMYXll
ciopID0gMDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIHN0YXRpYyBXZWJTY3Jv
bGxiYXJMYXllciBjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiwgV2ViU2Nyb2xsYmFyVGhlbWVQ
YWludGVyLCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+KTsKLSAgICBleHBs
aWNpdCBXZWJTY3JvbGxiYXJMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBXZWJTY3JvbGxiYXJMYXllciYgb3BlcmF0b3I9
KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtPiYp
OwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNo
cm9taXVtPigpIGNvbnN0OworICAgIFdFQktJVF9FWFBPUlQgc3RhdGljIFdlYlNjcm9sbGJhckxh
eWVyKiBjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVy
LCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+KTsKICNlbmRpZgogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9y
TGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU29saWRDb2xvckxh
eWVyLmgKaW5kZXggYWQ5MTIzZDk2MmFmZWFlYThhNTYzMTI5NDVkZTFmYzVmODk2YzlmYy4uMDJl
NDZmMDQ3ZmFmMjUzYWMxMWUxOTdjNDUxMDgxN2JhMWY0ODI2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTb2xpZENvbG9yTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oCkBAIC0yNiwy
MSArMjYsMjAgQEAKICNpZm5kZWYgV2ViU29saWRDb2xvckxheWVyX2gKICNkZWZpbmUgV2ViU29s
aWRDb2xvckxheWVyX2gKIAorI2luY2x1ZGUgIldlYkNvbG9yLmgiCiAjaW5jbHVkZSAiV2ViQ29t
bW9uLmgiCi0jaW5jbHVkZSAiV2ViRmxvYXRSZWN0LmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXIuaCIK
IAogbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOworY2xh
c3MgV2ViTGF5ZXI7CiAKLWNsYXNzIFdlYlNvbGlkQ29sb3JMYXllciA6IHB1YmxpYyBXZWJMYXll
ciB7CitjbGFzcyBXZWJTb2xpZENvbG9yTGF5ZXIgewogcHVibGljOgotICAgIFdFQktJVF9FWFBP
UlQgc3RhdGljIFdlYlNvbGlkQ29sb3JMYXllciBjcmVhdGUoKTsKLSAgICBXRUJLSVRfRVhQT1JU
IHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvbG9yJik7CisgICAgV0VCS0lUX0VY
UE9SVCBzdGF0aWMgV2ViU29saWRDb2xvckxheWVyKiBjcmVhdGUoKTsKIAotI2lmIFdFQktJVF9J
TVBMRU1FTlRBVElPTgotICAgIFdlYlNvbGlkQ29sb3JMYXllcihjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViU29saWRDb2xvckxheWVySW1wbD4mKTsKLSNlbmRpZgorICAgIHZpcnR1YWwgfldlYlNv
bGlkQ29sb3JMYXllcigpIHsgfQorCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91bmRDb2xvcihXZWJDb2xvcikgPSAwOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hy
b21pdW0vcHVibGljL1dlYlZpZGVvTGF5ZXIuaCBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9w
dWJsaWMvV2ViVmlkZW9MYXllci5oCmluZGV4IDU0ZGEzNDU0YmEwM2VmZmI1ZTM0YjBkMzMyYjky
YzAxMTI0NzVhYTQuLjFhY2ZmZjU0YTA3MjdiNDk4ZGQ5NDFmY2M0NmEyNzcyNmFhN2Q3MGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9MYXllci5o
CisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVmlkZW9MYXllci5oCkBA
IC0yOSwyNyArMjksMjAgQEAKICNpbmNsdWRlICJXZWJDb21tb24uaCIKICNpbmNsdWRlICJXZWJM
YXllci5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBWaWRlb0xheWVyQ2hyb21pdW07
Ci19Ci0KIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI7
CiAKLWNsYXNzIFdlYlZpZGVvTGF5ZXIgOiBwdWJsaWMgV2ViTGF5ZXIgeworY2xhc3MgV2ViVmlk
ZW9MYXllciB7CiBwdWJsaWM6Ci0gICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgV2ViVmlkZW9MYXll
ciBjcmVhdGUoV2ViVmlkZW9GcmFtZVByb3ZpZGVyKik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0
aWMgV2ViVmlkZW9MYXllciogY3JlYXRlKFdlYlZpZGVvRnJhbWVQcm92aWRlciopOwogCi0gICAg
V2ViVmlkZW9MYXllcigpIHsgfQogICAgIHZpcnR1YWwgfldlYlZpZGVvTGF5ZXIoKSB7IH0KIAot
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGxheWVyIGlzIGFjdGl2ZWx5IHJlbmRlcmluZyAo
ZS5nLiBjdXJyZW50bHkgYXR0YWNoZWQgdG8gYSBXZWJMYXllclRyZWVWaWV3KS4KLSAgICBXRUJL
SVRfRVhQT1JUIGJvb2wgYWN0aXZlKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJMYXllciogbGF5
ZXIoKSA9IDA7CiAKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJW
aWRlb0xheWVyKFBhc3NSZWZQdHI8V2ViQ29yZTo6VmlkZW9MYXllckNocm9taXVtPik7Ci0jZW5k
aWYKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBsYXllciBpcyBhY3RpdmVseSByZW5kZXJp
bmcgKGUuZy4gY3VycmVudGx5IGF0dGFjaGVkIHRvIGEgV2ViTGF5ZXJUcmVlVmlldykuCisgICAg
dmlydHVhbCBib29sIGFjdGl2ZSgpIGNvbnN0ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY2hyb21pdW0v
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcAppbmRleCAx
ZGI3NTk0MDQ3Yzg4Y2FiMGRkYWZlMDAzN2EzYmU2Y2FjMzg2ODg2Li5lMjU2YmRlMWE1YTRhZTg3
YTY2MDgxOThjNzNkZmFmOGUxOTgxM2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdDb29yZGlu
YXRvckNocm9taXVtLmNwcApAQCAtMjksMTIgKzI5LDEyIEBACiAKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJS
ZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0b3IuaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCIKICNpbmNs
dWRlICJXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmgiCi0jaW5jbHVkZSA8cHVibGlj
L1dlYlNjcm9sbGFibGVMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxiYXIuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyTGF5ZXIuaD4KICNpbmNsdWRlIDxwdWJsaWMv
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oPgpAQCAtNDIsNyArNDIsNiBAQAogCiB1c2luZyBX
ZWJLaXQ6OldlYkxheWVyOwogdXNpbmcgV2ViS2l0OjpXZWJSZWN0OwotdXNpbmcgV2ViS2l0OjpX
ZWJTY3JvbGxhYmxlTGF5ZXI7CiB1c2luZyBXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOwogdXNp
bmcgV2ViS2l0OjpXZWJWZWN0b3I7CiAKQEAgLTUxLDM2ICs1MCwzOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBTY3JvbGxpbmdDb29yZGluYXRvclByaXZhdGUgewogV1RGX01BS0VfTk9O
Q09QWUFCTEUoU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcml2YXRlKTsKIHB1YmxpYzoKLSAgICBTY3Jv
bGxpbmdDb29yZGluYXRvclByaXZhdGUoKSB7IH0KKyAgICBTY3JvbGxpbmdDb29yZGluYXRvclBy
aXZhdGUoKQorICAgICAgICA6IG1fc2Nyb2xsTGF5ZXIoMCkKKyAgICB7CisgICAgfQorCiAgICAg
flNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJpdmF0ZSgpIHsgfQogCi0gICAgdm9pZCBzZXRTY3JvbGxM
YXllcihXZWJTY3JvbGxhYmxlTGF5ZXIgbGF5ZXIpCisgICAgdm9pZCBzZXRTY3JvbGxMYXllcihX
ZWJMYXllciogbGF5ZXIpCiAgICAgewogICAgICAgICBtX3Njcm9sbExheWVyID0gbGF5ZXI7CiAK
LSAgICAgICAgaWYgKCFtX2hvcml6b250YWxTY3JvbGxiYXJMYXllci5pc051bGwoKSkKLSAgICAg
ICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyLnNldFNjcm9sbExheWVyKGxheWVyKTsK
LSAgICAgICAgaWYgKCFtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAg
ICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIuc2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOworICAg
ICAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIpCisgICAgICAgICAgICBtX2hvcml6
b250YWxTY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xsTGF5ZXIobGF5ZXIpOworICAgICAgICBpZiAo
bV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyKQorICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJh
ckxheWVyLT5zZXRTY3JvbGxMYXllcihsYXllcik7CiAgICAgfQogCi0gICAgdm9pZCBzZXRIb3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIoV2ViU2Nyb2xsYmFyTGF5ZXIgbGF5ZXIpCisgICAgdm9pZCBz
ZXRIb3Jpem9udGFsU2Nyb2xsYmFyTGF5ZXIoUGFzc093blB0cjxXZWJTY3JvbGxiYXJMYXllcj4g
bGF5ZXIpCiAgICAgewogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXJMYXllciA9IGxheWVy
OwogICAgIH0KIAotICAgIHZvaWQgc2V0VmVydGljYWxTY3JvbGxiYXJMYXllcihXZWJTY3JvbGxi
YXJMYXllciBsYXllcikKKyAgICB2b2lkIHNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoUGFzc093
blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gbGF5ZXIpCiAgICAgewogICAgICAgICBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyTGF5ZXIgPSBsYXllcjsKICAgICB9CiAKLSAgICBib29sIGhhc1Njcm9sbExheWVy
KCkgY29uc3QgeyByZXR1cm4gIW1fc2Nyb2xsTGF5ZXIuaXNOdWxsKCk7IH0KLSAgICBXZWJTY3Jv
bGxhYmxlTGF5ZXIgc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVyOyB9
CisgICAgV2ViTGF5ZXIqIHNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXll
cjsgfQogCiBwcml2YXRlOgotICAgIFdlYlNjcm9sbGFibGVMYXllciBtX3Njcm9sbExheWVyOwot
ICAgIFdlYlNjcm9sbGJhckxheWVyIG1faG9yaXpvbnRhbFNjcm9sbGJhckxheWVyOwotICAgIFdl
YlNjcm9sbGJhckxheWVyIG1fdmVydGljYWxTY3JvbGxiYXJMYXllcjsKKyAgICBXZWJMYXllciog
bV9zY3JvbGxMYXllcjsKKyAgICBPd25QdHI8V2ViU2Nyb2xsYmFyTGF5ZXI+IG1faG9yaXpvbnRh
bFNjcm9sbGJhckxheWVyOworICAgIE93blB0cjxXZWJTY3JvbGxiYXJMYXllcj4gbV92ZXJ0aWNh
bFNjcm9sbGJhckxheWVyOwogfTsKIAogUGFzc1JlZlB0cjxTY3JvbGxpbmdDb29yZGluYXRvcj4g
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlKQpAQCAtMTEyLDE1ICsxMTQs
MjAgQEAgc3RhdGljIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KEZyYW1l
VmlldyogZnJhbWVWaWV3KQogI2VuZGlmCiB9CiAKLXN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBj
cmVhdGVTY3JvbGxiYXJMYXllcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYWJsZUxh
eWVyIHNjcm9sbExheWVyLCBHcmFwaGljc0xheWVyKiBzY3JvbGxiYXJHcmFwaGljc0xheWVyLCBG
cmFtZVZpZXcqIGZyYW1lVmlldykKK3N0YXRpYyBXZWJMYXllciogc2Nyb2xsYWJsZUxheWVyRm9y
R3JhcGhpY3NMYXllcihHcmFwaGljc0xheWVyKiBsYXllcikKK3sKKyAgICByZXR1cm4gbGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKTsKK30KKworc3RhdGljIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyTGF5
ZXI+IGNyZWF0ZVNjcm9sbGJhckxheWVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBXZWJMYXllciog
c2Nyb2xsTGF5ZXIsIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbGJhckdyYXBoaWNzTGF5ZXIsIEZyYW1l
VmlldyogZnJhbWVWaWV3KQogewogICAgIEFTU0VSVChzY3JvbGxiYXIpOwogICAgIEFTU0VSVChz
Y3JvbGxiYXJHcmFwaGljc0xheWVyKTsKIAotICAgIGlmIChzY3JvbGxMYXllci5pc051bGwoKSkg
eworICAgIGlmICghc2Nyb2xsTGF5ZXIpIHsKICAgICAgICAgLy8gRklYTUU6IHNvbWV0aW1lcyB3
ZSBnZXQgY2FsbGVkIGJlZm9yZSBzZXRTY3JvbGxMYXllciwgd29ya2Fyb3VuZCBieSBmaW5kaW5n
IHRoZSBzY3JvbGwgbGF5b3V0IG91cnNlbHZlcy4KLSAgICAgICAgc2Nyb2xsTGF5ZXIgPSBzY3Jv
bGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpLT5wbGF0Zm9ybUxheWVyKCktPnRvPFdlYlNj
cm9sbGFibGVMYXllcj4oKTsKLSAgICAgICAgQVNTRVJUKCFzY3JvbGxMYXllci5pc051bGwoKSk7
CisgICAgICAgIHNjcm9sbExheWVyID0gc2Nyb2xsYWJsZUxheWVyRm9yR3JhcGhpY3NMYXllcihz
Y3JvbGxMYXllckZvckZyYW1lVmlldyhmcmFtZVZpZXcpKTsKKyAgICAgICAgQVNTRVJUKHNjcm9s
bExheWVyKTsKICAgICB9CiAKICAgICAvLyBSb290IGxheWVyIG5vbi1vdmVybGF5IHNjcm9sbGJh
cnMgc2hvdWxkIGJlIG1hcmtlZCBvcGFxdWUgdG8gZGlzYWJsZQpAQCAtMTM4LDcgKzE0NSw3IEBA
IHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGVTY3JvbGxiYXJMYXllcihTY3JvbGxiYXIq
IHNjcm9sbGJhciwgV2ViU2Nyb2xsYWJsCiAgICAgaWYgKCFwbGF0Zm9ybVN1cHBvcnRlZCB8fCBz
Y3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xsYmFyKCkpIHsKICAgICAgICAgc2Nyb2xsYmFyR3JhcGhp
Y3NMYXllci0+c2V0Q29udGVudHNUb01lZGlhKDApOwogICAgICAgICBzY3JvbGxiYXJHcmFwaGlj
c0xheWVyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7Ci0gICAgICAgIHJldHVybiBXZWJTY3JvbGxi
YXJMYXllcigpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICAvLyBBbGwg
Q2hyb21pdW0gc2Nyb2xsYmFyIHRoZW1lcyBkZXJpdmUgZnJvbSBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS4KQEAgLTE0NiwxNCArMTUzLDE0IEBAIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVh
dGVTY3JvbGxiYXJMYXllcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYWJsCiAgICAg
V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlcih0aGVtZUNvbXBvc2l0ZSwg
c2Nyb2xsYmFyKTsKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5
PiBnZW9tZXRyeShXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU6OmNyZWF0
ZSh0aGVtZUNvbXBvc2l0ZSkpOwogCi0gICAgV2ViU2Nyb2xsYmFyTGF5ZXIgc2Nyb2xsYmFyTGF5
ZXIgPSBXZWJTY3JvbGxiYXJMYXllcjo6Y3JlYXRlKHNjcm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0
cnkucmVsZWFzZSgpKTsKLSAgICBzY3JvbGxiYXJMYXllci5zZXRTY3JvbGxMYXllcihzY3JvbGxM
YXllcik7CisgICAgT3duUHRyPFdlYlNjcm9sbGJhckxheWVyPiBzY3JvbGxiYXJMYXllciA9IGFk
b3B0UHRyKFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoc2Nyb2xsYmFyLCBwYWludGVyLCBnZW9t
ZXRyeS5yZWxlYXNlKCkpKTsKKyAgICBzY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xsTGF5ZXIoc2Ny
b2xsTGF5ZXIpOwogCi0gICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb01l
ZGlhKCZzY3JvbGxiYXJMYXllcik7CisgICAgc2Nyb2xsYmFyR3JhcGhpY3NMYXllci0+c2V0Q29u
dGVudHNUb01lZGlhKHNjcm9sbGJhckxheWVyLT5sYXllcigpKTsKICAgICBzY3JvbGxiYXJHcmFw
aGljc0xheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwotICAgIHNjcm9sbGJhckxheWVyLnNl
dE9wYXF1ZShzY3JvbGxiYXJHcmFwaGljc0xheWVyLT5jb250ZW50c09wYXF1ZSgpKTsKKyAgICBz
Y3JvbGxiYXJMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKHNjcm9sbGJhckdyYXBoaWNzTGF5ZXIt
PmNvbnRlbnRzT3BhcXVlKCkpOwogCi0gICAgcmV0dXJuIHNjcm9sbGJhckxheWVyOworICAgIHJl
dHVybiBzY3JvbGxiYXJMYXllci5yZWxlYXNlKCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmZyYW1lVmlld0hvcml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZShGcmFtZVZp
ZXcqIGZyYW1lVmlldywgR3JhcGhpY3NMYXllciogaG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKQpA
QCAtMTYxLDYgKzE2OCw3IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0hv
cml6b250YWxTY3JvbGxiYXJMYXllckRpZENoYW5nZShGcmFtZVZpZXcqCiAgICAgaWYgKCFob3Jp
em9udGFsU2Nyb2xsYmFyTGF5ZXIgfHwgIWNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3
KGZyYW1lVmlldykpCiAgICAgICAgIHJldHVybjsKIAorICAgIHNldFNjcm9sbExheWVyKHNjcm9s
bExheWVyRm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkpOwogICAgIG1f
cHJpdmF0ZS0+c2V0SG9yaXpvbnRhbFNjcm9sbGJhckxheWVyKGNyZWF0ZVNjcm9sbGJhckxheWVy
KGZyYW1lVmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhcigpLCBtX3ByaXZhdGUtPnNjcm9sbExheWVy
KCksIGhvcml6b250YWxTY3JvbGxiYXJMYXllciwgZnJhbWVWaWV3KSk7CiB9CiAKQEAgLTE2OSwy
NSArMTc3LDI1IEBAIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld1ZlcnRpY2Fs
U2Nyb2xsYmFyTGF5ZXJEaWRDaGFuZ2UoRnJhbWVWaWV3KiBmCiAgICAgaWYgKCF2ZXJ0aWNhbFNj
cm9sbGJhckxheWVyIHx8ICFjb29yZGluYXRlc1Njcm9sbGluZ0ZvckZyYW1lVmlldyhmcmFtZVZp
ZXcpKQogICAgICAgICByZXR1cm47CiAKKyAgICBzZXRTY3JvbGxMYXllcihzY3JvbGxMYXllckZv
ckZyYW1lVmlldyhtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCkpKTsKICAgICBtX3ByaXZhdGUt
PnNldFZlcnRpY2FsU2Nyb2xsYmFyTGF5ZXIoY3JlYXRlU2Nyb2xsYmFyTGF5ZXIoZnJhbWVWaWV3
LT52ZXJ0aWNhbFNjcm9sbGJhcigpLCBtX3ByaXZhdGUtPnNjcm9sbExheWVyKCksIHZlcnRpY2Fs
U2Nyb2xsYmFyTGF5ZXIsIGZyYW1lVmlldykpOwogfQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzZXRTY3JvbGxMYXllcihHcmFwaGljc0xheWVyKiBzY3JvbGxMYXllcikKIHsKLSAgICBX
ZWJTY3JvbGxhYmxlTGF5ZXIgbGF5ZXI7Ci0gICAgaWYgKHNjcm9sbExheWVyKQotICAgICAgICBs
YXllciA9IHNjcm9sbExheWVyLT5wbGF0Zm9ybUxheWVyKCktPnRvPFdlYlNjcm9sbGFibGVMYXll
cj4oKTsKLSAgICBtX3ByaXZhdGUtPnNldFNjcm9sbExheWVyKGxheWVyKTsKKyAgICBtX3ByaXZh
dGUtPnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyID8gc2Nyb2xsYWJsZUxheWVyRm9yR3JhcGhp
Y3NMYXllcihzY3JvbGxMYXllcikgOiAwKTsKIH0KIAogdm9pZCBTY3JvbGxpbmdDb29yZGluYXRv
cjo6c2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29uc3QgUmVnaW9uJiByZWdpb24pCiB7Ci0g
ICAgaWYgKG1fcHJpdmF0ZS0+aGFzU2Nyb2xsTGF5ZXIoKSkgeworICAgIC8vIFdlIHdvbid0IG5l
Y2Vzc2FyaWx5IGdldCBhIHNldFNjcm9sbExheWVyKCkgY2FsbCBiZWZvcmUgdGhpcyBvbmUsIHNv
IGdyYWIgdGhlIHJvb3Qgb3Vyc2VsdmVzLgorICAgIHNldFNjcm9sbExheWVyKHNjcm9sbExheWVy
Rm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkpOworICAgIGlmIChtX3By
aXZhdGUtPnNjcm9sbExheWVyKCkpIHsKICAgICAgICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzID0g
cmVnaW9uLnJlY3RzKCk7CiAgICAgICAgIFdlYlZlY3RvcjxXZWJSZWN0PiB3ZWJSZWN0cyhyZWN0
cy5zaXplKCkpOwogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlY3RzLnNpemUoKTsg
KytpKQogICAgICAgICAgICAgd2ViUmVjdHNbaV0gPSByZWN0c1tpXTsKLSAgICAgICAgbV9wcml2
YXRlLT5zY3JvbGxMYXllcigpLnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHdlYlJlY3RzKTsK
KyAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigpLT5zZXROb25GYXN0U2Nyb2xsYWJsZVJl
Z2lvbih3ZWJSZWN0cyk7CiAgICAgfQogfQogCkBAIC0xOTgsMTQgKzIwNiwxOCBAQCB2b2lkIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRTY3JvbGxQYXJhbWV0ZXJzKGNvbnN0IFNjcm9sbFBhcmFt
ZXRlcnMmKQogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzZXRXaGVlbEV2ZW50SGFuZGxl
ckNvdW50KHVuc2lnbmVkIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQpCiB7Ci0gICAgaWYgKG1fcHJp
dmF0ZS0+aGFzU2Nyb2xsTGF5ZXIoKSkKLSAgICAgICAgbV9wcml2YXRlLT5zY3JvbGxMYXllcigp
LnNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMod2hlZWxFdmVudEhhbmRsZXJDb3VudCA+IDApOwor
ICAgIC8vIFdlIHdvbid0IG5lY2Vzc2FyaWx5IGdldCBhIHNldFNjcm9sbExheWVyKCkgY2FsbCBi
ZWZvcmUgdGhpcyBvbmUsIHNvIGdyYWIgdGhlIHJvb3Qgb3Vyc2VsdmVzLgorICAgIHNldFNjcm9s
bExheWVyKHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXco
KSkpOworICAgIGlmIChtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkpCisgICAgICAgIG1fcHJpdmF0
ZS0+c2Nyb2xsTGF5ZXIoKS0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyh3aGVlbEV2ZW50SGFu
ZGxlckNvdW50ID4gMCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNob3Vs
ZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoYm9vbCBzaG91bGQpCiB7Ci0g
ICAgaWYgKG1fcHJpdmF0ZS0+aGFzU2Nyb2xsTGF5ZXIoKSkKLSAgICAgICAgbV9wcml2YXRlLT5z
Y3JvbGxMYXllcigpLnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGQpOworICAgIC8v
IFdlIHdvbid0IG5lY2Vzc2FyaWx5IGdldCBhIHNldFNjcm9sbExheWVyKCkgY2FsbCBiZWZvcmUg
dGhpcyBvbmUsIHNvIGdyYWIgdGhlIHJvb3Qgb3Vyc2VsdmVzLgorICAgIHNldFNjcm9sbExheWVy
KHNjcm9sbExheWVyRm9yRnJhbWVWaWV3KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKSkpOwor
ICAgIGlmIChtX3ByaXZhdGUtPnNjcm9sbExheWVyKCkpCisgICAgICAgIG1fcHJpdmF0ZS0+c2Ny
b2xsTGF5ZXIoKS0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHNob3VsZCk7CiB9CiAKIGJv
b2wgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpIGNv
bnN0CkBAIC0yMTUsMTQgKzIyNywxNCBAQCBib29sIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzdXBw
b3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSBjb25zdAogCiB2b2lkIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yOjpzZXRMYXllcklzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhHcmFwaGljc0xh
eWVyKiBsYXllciwgYm9vbCBlbmFibGUpCiB7Ci0gICAgaWYgKFdlYkxheWVyKiBwbGF0Zm9ybUxh
eWVyID0gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSkKLSAgICAgICAgcGxhdGZvcm1MYXllci0+dG88
V2ViU2Nyb2xsYWJsZUxheWVyPigpLnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVy
cyhlbmFibGUpOworICAgIGlmIChXZWJMYXllciogc2Nyb2xsYWJsZUxheWVyID0gc2Nyb2xsYWJs
ZUxheWVyRm9yR3JhcGhpY3NMYXllcihsYXllcikpCisgICAgICAgIHNjcm9sbGFibGVMYXllci0+
c2V0SXNDb250YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGVuYWJsZSk7CiB9CiAKIHZvaWQg
U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldExheWVySXNGaXhlZFRvQ29udGFpbmVyTGF5ZXIoR3Jh
cGhpY3NMYXllciogbGF5ZXIsIGJvb2wgZW5hYmxlKQogewotICAgIGlmIChXZWJMYXllciogcGxh
dGZvcm1MYXllciA9IGxheWVyLT5wbGF0Zm9ybUxheWVyKCkpCi0gICAgICAgIHBsYXRmb3JtTGF5
ZXItPnRvPFdlYlNjcm9sbGFibGVMYXllcj4oKS5zZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoZW5h
YmxlKTsKKyAgICBpZiAoV2ViTGF5ZXIqIHNjcm9sbGFibGVMYXllciA9IHNjcm9sbGFibGVMYXll
ckZvckdyYXBoaWNzTGF5ZXIobGF5ZXIpKQorICAgICAgICBzY3JvbGxhYmxlTGF5ZXItPnNldEZp
eGVkVG9Db250YWluZXJMYXllcihlbmFibGUpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5
ZXJCcmlkZ2UuY3BwCmluZGV4IGRiNTE3Y2FkMjYzM2I4YmY0ZTcxNTRiNTc0ODIyNTcyYzQ2NTkw
YWEuLjEwNjU0MzEyY2YyZWZiYWM3ZTVjMjBiZjBkYzA2NTFjODRmMzQwMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZhczJETGF5ZXJC
cmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0NhbnZhczJETGF5ZXJCcmlkZ2UuY3BwCkBAIC02OSwyMiArNjksMjEgQEAgQ2FudmFzMkRMYXll
ckJyaWRnZTo6Q2FudmFzMkRMYXllckJyaWRnZShQYXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNE
PiBjb250ZXh0LAogICAgICAgICAgICAgZ3JDb250ZXh0LT5yZXNldENvbnRleHQoKTsKICAgICB9
CiAKLSAgICBtX2xheWVyID0gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKTsK
LSAgICBtX2xheWVyLnNldFRleHR1cmVJZCh0ZXh0dXJlSWQpOwotICAgIG1fbGF5ZXIuc2V0UmF0
ZUxpbWl0Q29udGV4dCghV2ViS2l0OjpXZWJDb21wb3NpdG9yOjp0aHJlYWRpbmdFbmFibGVkKCkg
fHwgbV91c2VEb3VibGVCdWZmZXJpbmcpOworICAgIG1fbGF5ZXIgPSBhZG9wdFB0cihXZWJFeHRl
cm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKHRoaXMpKTsKKyAgICBtX2xheWVyLT5zZXRUZXh0dXJl
SWQodGV4dHVyZUlkKTsKKyAgICBtX2xheWVyLT5zZXRSYXRlTGltaXRDb250ZXh0KCFXZWJLaXQ6
OldlYkNvbXBvc2l0b3I6OnRocmVhZGluZ0VuYWJsZWQoKSB8fCBtX3VzZURvdWJsZUJ1ZmZlcmlu
Zyk7CiB9CiAKIENhbnZhczJETGF5ZXJCcmlkZ2U6On5DYW52YXMyRExheWVyQnJpZGdlKCkKIHsK
ICAgICBpZiAoU2tEZWZlcnJlZENhbnZhcyogZGVmZXJyZWQgPSBkZWZlcnJlZENhbnZhcygpKQog
ICAgICAgICBkZWZlcnJlZC0+c2V0Tm90aWZpY2F0aW9uQ2xpZW50KDApOwotICAgIG1fbGF5ZXIu
c2V0VGV4dHVyZUlkKDApOworICAgIG1fbGF5ZXItPnNldFRleHR1cmVJZCgwKTsKICAgICBpZiAo
bV91c2VEb3VibGVCdWZmZXJpbmcpIHsKICAgICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1
cnJlbnQoKTsKICAgICAgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5kZWxldGVU
ZXh0dXJlKG1fZnJvbnRCdWZmZXJUZXh0dXJlKSk7CiAgICAgICAgIG1fY29udGV4dC0+Zmx1c2go
KTsKICAgICB9Ci0gICAgbV9sYXllci5jbGVhckNsaWVudCgpOwogfQogCiBTa0RlZmVycmVkQ2Fu
dmFzKiBDYW52YXMyRExheWVyQnJpZGdlOjpkZWZlcnJlZENhbnZhcygpCkBAIC05OCw3ICs5Nyw3
IEBAIHZvaWQgQ2FudmFzMkRMYXllckJyaWRnZTo6cHJlcGFyZUZvckRyYXcoKQogewogICAgIEFT
U0VSVChkZWZlcnJlZENhbnZhcygpKTsKICAgICBpZiAoIW1fdXNlRG91YmxlQnVmZmVyaW5nKQot
ICAgICAgICBtX2xheWVyLndpbGxNb2RpZnlUZXh0dXJlKCk7CisgICAgICAgIG1fbGF5ZXItPndp
bGxNb2RpZnlUZXh0dXJlKCk7CiAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsK
IH0KIApAQCAtMTQ4LDEzICsxNDcsMTMgQEAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIENhbnZhczJE
TGF5ZXJCcmlkZ2U6OmNvbnRleHQoKQogCiBXZWJLaXQ6OldlYkxheWVyKiBDYW52YXMyRExheWVy
QnJpZGdlOjpsYXllcigpCiB7Ci0gICAgcmV0dXJuICZtX2xheWVyOworICAgIHJldHVybiBtX2xh
eWVyLT5sYXllcigpOwogfQogCiB2b2lkIENhbnZhczJETGF5ZXJCcmlkZ2U6OmNvbnRleHRBY3F1
aXJlZCgpCiB7CiAgICAgaWYgKG1fZGVmZXJyYWxNb2RlID09IE5vbkRlZmVycmVkICYmICFtX3Vz
ZURvdWJsZUJ1ZmZlcmluZykKLSAgICAgICAgbV9sYXllci53aWxsTW9kaWZ5VGV4dHVyZSgpOwor
ICAgICAgICBtX2xheWVyLT53aWxsTW9kaWZ5VGV4dHVyZSgpOwogfQogCiB1bnNpZ25lZCBDYW52
YXMyRExheWVyQnJpZGdlOjpiYWNrQnVmZmVyVGV4dHVyZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVyQnJpZGdlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9DYW52YXMyRExheWVy
QnJpZGdlLmgKaW5kZXggNDA5ZDIwN2M1NWU0OTUxOGMzOTI0NGQxNDg3YzBhMGFmNzQxODIxZS4u
MjdiMWVhNjU5YzQxYzdjNjhjMzI3NDVjYTFkMTA2YWU1MDU1YTRiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ2FudmFzMkRMYXllckJyaWRn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NhbnZh
czJETGF5ZXJCcmlkZ2UuaApAQCAtNzYsNyArNzYsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fYmFja0J1ZmZlclRleHR1cmU7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgU2tDYW52YXMq
IG1fY2FudmFzOwotICAgIFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgbV9sYXllcjsK
KyAgICBPd25QdHI8V2ViS2l0OjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcj4gbV9sYXllcjsKICAg
ICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IG1fY29udGV4dDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0RyYXdpbmdCdWZmZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9E
cmF3aW5nQnVmZmVyQ2hyb21pdW0uY3BwCmluZGV4IDFkMTY3YTU1NmU2YTFkZmNkMTFhYzZmODQ5
MThmMmQxZDg4OTRkOWEuLjYxMDJhM2U2Zjc4Njk3NjBlMWYzNzgwMmQwNmZlNjVmNGViZDM1MjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Ry
YXdpbmdCdWZmZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRHJhd2luZ0J1ZmZlckNocm9taXVtLmNwcApAQCAtMTU2LDE2ICsxNTYs
MTUgQEAgY2xhc3MgRHJhd2luZ0J1ZmZlclByaXZhdGUgOiBwdWJsaWMgV2ViS2l0OjpXZWJFeHRl
cm5hbFRleHR1cmVMYXllckNsaWVudCB7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgRHJhd2luZ0J1
ZmZlclByaXZhdGUoRHJhd2luZ0J1ZmZlciogZHJhd2luZ0J1ZmZlcikKICAgICAgICAgOiBtX2Ry
YXdpbmdCdWZmZXIoZHJhd2luZ0J1ZmZlcikKLSAgICAgICAgLCBtX2xheWVyKFdlYktpdDo6V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSkKKyAgICAgICAgLCBtX2xheWVyKGFk
b3B0UHRyKFdlYktpdDo6V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6OmNyZWF0ZSh0aGlzKSkpCiAg
ICAgewogICAgICAgICBHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRyaWJ1dGVzID0g
bV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpLT5nZXRDb250ZXh0QXR0cmlidXRl
cygpOwotICAgICAgICBtX2xheWVyLnNldE9wYXF1ZSghYXR0cmlidXRlcy5hbHBoYSk7Ci0gICAg
ICAgIG1fbGF5ZXIuc2V0UHJlbXVsdGlwbGllZEFscGhhKGF0dHJpYnV0ZXMucHJlbXVsdGlwbGll
ZEFscGhhKTsKKyAgICAgICAgbV9sYXllci0+c2V0T3BhcXVlKCFhdHRyaWJ1dGVzLmFscGhhKTsK
KyAgICAgICAgbV9sYXllci0+c2V0UHJlbXVsdGlwbGllZEFscGhhKGF0dHJpYnV0ZXMucHJlbXVs
dGlwbGllZEFscGhhKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5EcmF3aW5nQnVmZmVyUHJpdmF0
ZSgpCiAgICAgewotICAgICAgICBtX2xheWVyLmNsZWFyQ2xpZW50KCk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB1bnNpZ25lZCBwcmVwYXJlVGV4dHVyZShXZWJLaXQ6OldlYlRleHR1cmVVcGRhdGVy
JiB1cGRhdGVyKSBPVkVSUklERQpAQCAtMTg3LDExICsxODYsMTEgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpleHRyYWN0V2ViR3JhcGhpY3NDb250
ZXh0M0QobV9kcmF3aW5nQnVmZmVyLT5ncmFwaGljc0NvbnRleHQzRCgpKTsKICAgICB9CiAKLSAg
ICBXZWJLaXQ6OldlYkxheWVyKiBsYXllcigpIHsgcmV0dXJuICZtX2xheWVyOyB9CisgICAgV2Vi
S2l0OjpXZWJMYXllciogbGF5ZXIoKSB7IHJldHVybiBtX2xheWVyLT5sYXllcigpOyB9CiAKIHBy
aXZhdGU6CiAgICAgRHJhd2luZ0J1ZmZlciogbV9kcmF3aW5nQnVmZmVyOwotICAgIFdlYktpdDo6
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIgbV9sYXllcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJF
eHRlcm5hbFRleHR1cmVMYXllcj4gbV9sYXllcjsKIH07CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcAppbmRleCA3
OTczYTJmYzhkOGIyMzM3NjI3YjFkOTE5MDY4ZjI2OWYzYTc5NjU2Li43ZDU1OTFiZTM0MDljM2Mw
ZGMyNDUwM2U2YWNlMmMxZmFiMjE3ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTgyLDYgKzgyLDggQEAgUGFzc093blB0cjxHcmFwaGljc0xheWVyPiBHcmFw
aGljc0xheWVyOjpjcmVhdGUoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogCiBHcmFwaGlj
c0xheWVyQ2hyb21pdW06OkdyYXBoaWNzTGF5ZXJDaHJvbWl1bShHcmFwaGljc0xheWVyQ2xpZW50
KiBjbGllbnQpCiAgICAgOiBHcmFwaGljc0xheWVyKGNsaWVudCkKKyAgICAsIG1fY29udGVudHNM
YXllcigwKQorICAgICwgbV9jb250ZW50c0xheWVySWQoMCkKICAgICAsIG1fbGlua0hpZ2hsaWdo
dCgwKQogICAgICwgbV9jb250ZW50c0xheWVyUHVycG9zZShOb0NvbnRlbnRzTGF5ZXIpCiAgICAg
LCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3IoZmFsc2UpCkBAIC04OSw4ICs5MSw4
IEBAIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6R3JhcGhpY3NMYXllckNocm9taXVtKEdyYXBoaWNz
TGF5ZXJDbGllbnQqIGNsaWVudCkKICAgICAsIG1fcGFnZVNjYWxlQ2hhbmdlZChmYWxzZSkKIHsK
ICAgICBtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlID0gYWRvcHRQdHIo
bmV3IE9wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXllckRlbGVnYXRlKHRoaXMpKTsKLSAgICBt
X2xheWVyID0gV2ViQ29udGVudExheWVyOjpjcmVhdGUobV9vcGFxdWVSZWN0VHJhY2tpbmdDb250
ZW50TGF5ZXJEZWxlZ2F0ZS5nZXQoKSk7Ci0gICAgbV9sYXllci5zZXREcmF3c0NvbnRlbnQobV9k
cmF3c0NvbnRlbnQgJiYgbV9jb250ZW50c1Zpc2libGUpOworICAgIG1fbGF5ZXIgPSBhZG9wdFB0
cihXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZShtX29wYXF1ZVJlY3RUcmFja2luZ0NvbnRlbnRMYXll
ckRlbGVnYXRlLmdldCgpKSk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0RHJhd3NDb250ZW50
KG1fZHJhd3NDb250ZW50ICYmIG1fY29udGVudHNWaXNpYmxlKTsKICAgICBpZiAoY2xpZW50KQog
ICAgICAgICBkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKICAgICB1cGRhdGVEZWJ1
Z0luZGljYXRvcnMoKTsKQEAgLTk4LDI4ICsxMDAsMTEgQEAgR3JhcGhpY3NMYXllckNocm9taXVt
OjpHcmFwaGljc0xheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQogCiBH
cmFwaGljc0xheWVyQ2hyb21pdW06On5HcmFwaGljc0xheWVyQ2hyb21pdW0oKQogewotICAgIC8v
IERvIGNsZWFudXAgd2hpbGUgd2UgY2FuIHN0aWxsIHNhZmVseSBjYWxsIG1ldGhvZHMgb24gdGhl
IGRlcml2ZWQgY2xhc3MuCiAgICAgd2lsbEJlRGVzdHJveWVkKCk7CiB9CiAKIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjp3aWxsQmVEZXN0cm95ZWQoKQogewotICAgIGlmICghbV9sYXllci5p
c051bGwoKSkgewotICAgICAgICBtX2xheWVyLmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgIG1fbGF5
ZXIuY2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9uRGVs
ZWdhdGUoMCk7Ci0gICAgfQotCi0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsK
LSAgICAgICAgbV9jb250ZW50c0xheWVyLmNsZWFyUmVuZGVyU3VyZmFjZSgpOwotICAgICAgICBt
X2NvbnRlbnRzTGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdhdGUoMCk7Ci0gICAgfQotCi0gICAgaWYg
KCFtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIu
Y2xlYXJSZW5kZXJTdXJmYWNlKCk7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0QW5pbWF0
aW9uRGVsZWdhdGUoMCk7Ci0gICAgfQotCiAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkgewogICAg
ICAgICBtX2xpbmtIaWdobGlnaHQtPmNsZWFyQ3VycmVudEdyYXBoaWNzTGF5ZXIoKTsKICAgICAg
ICAgbV9saW5rSGlnaGxpZ2h0ID0gMDsKQEAgLTEzOCwxNyArMTIzLDE2IEBAIHZvaWQgR3JhcGhp
Y3NMYXllckNocm9taXVtOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgaW5OYW1lKQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlTmFtZXMoKQogewotICAgIGlmICghbV9sYXllci5p
c051bGwoKSkgewotICAgICAgICBTdHJpbmcgZGVidWdOYW1lID0gIkxheWVyIGZvciAiICsgbV9u
YW1lQmFzZTsKLSAgICAgICAgbV9sYXllci5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsKLSAgICB9
Ci0gICAgaWYgKCFtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7CisgICAgU3RyaW5nIGRlYnVn
TmFtZSA9ICJMYXllciBmb3IgIiArIG1fbmFtZUJhc2U7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+
c2V0RGVidWdOYW1lKGRlYnVnTmFtZSk7CisKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikgewog
ICAgICAgICBTdHJpbmcgZGVidWdOYW1lID0gIlRyYW5zZm9ybUxheWVyIGZvciAiICsgbV9uYW1l
QmFzZTsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXREZWJ1Z05hbWUoZGVidWdOYW1lKTsK
KyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0RGVidWdOYW1lKGRlYnVnTmFtZSk7CiAgICAg
fQotICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKSB7CisgICAgaWYgKG1fY29udGVu
dHNMYXllcikgewogICAgICAgICBTdHJpbmcgZGVidWdOYW1lID0gIkNvbnRlbnRzTGF5ZXIgZm9y
ICIgKyBtX25hbWVCYXNlOwotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RGVidWdOYW1lKGRl
YnVnTmFtZSk7CisgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RGVidWdOYW1lKGRlYnVnTmFt
ZSk7CiAgICAgfQogICAgIGlmIChtX2xpbmtIaWdobGlnaHQpIHsKICAgICAgICAgU3RyaW5nIGRl
YnVnTmFtZSA9ICJMaW5rSGlnaGxpZ2h0IGZvciAiICsgbV9uYW1lQmFzZTsKQEAgLTIwNSw3ICsx
ODksNyBAQCBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVwbGFjZUNoaWxkKEdyYXBoaWNz
TGF5ZXIqIG9sZENoaWxkLCBHcmFwaGljc0xheWVyKgogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21p
dW06OnJlbW92ZUZyb21QYXJlbnQoKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUZyb21Q
YXJlbnQoKTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5yZW1vdmVGcm9tUGFyZW50KCk7CisgICAgcGxh
dGZvcm1MYXllcigpLT5yZW1vdmVGcm9tUGFyZW50KCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKQEAgLTIzNSw4
ICsyMTksOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0U2l6ZShjb25zdCBGbG9h
dFNpemUmIHNpemUpCiAgICAgR3JhcGhpY3NMYXllcjo6c2V0U2l6ZShjbGFtcGVkU2l6ZSk7CiAg
ICAgdXBkYXRlTGF5ZXJTaXplKCk7CiAKLSAgICBpZiAobV9wYWdlU2NhbGVDaGFuZ2VkICYmICFt
X2xheWVyLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlm
IChtX3BhZ2VTY2FsZUNoYW5nZWQpIHsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxp
ZGF0ZSgpOwogICAgICAgICBpZiAobV9saW5rSGlnaGxpZ2h0KQogICAgICAgICAgICAgbV9saW5r
SGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpAQCAtMzA2LDEzICsyOTAsMTMgQEAgdm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6Y2xlYXJCYWNrZ3JvdW5kQ29sb3Io
KQogewogICAgIEdyYXBoaWNzTGF5ZXI6OmNsZWFyQmFja2dyb3VuZENvbG9yKCk7Ci0gICAgbV9j
b250ZW50c0xheWVyLnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsK
KyAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JB
MzI+KDApKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzT3Bh
cXVlKGJvb2wgb3BhcXVlKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzT3BhcXVl
KG9wYXF1ZSk7Ci0gICAgbV9sYXllci5zZXRPcGFxdWUobV9jb250ZW50c09wYXF1ZSk7CisgICAg
bV9sYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG1fY29udGVudHNPcGFxdWUpOwogfQogCiBzdGF0
aWMgYm9vbCBjb3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMo
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycywgV2ViRmlsdGVyT3BlcmF0aW9ucyYgd2Vi
RmlsdGVycykKQEAgLTM5NiwxMSArMzgwLDExIEBAIGJvb2wgR3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRGaWx0ZXJzKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiAgICAgaWYgKCFj
b3B5V2ViQ29yZUZpbHRlck9wZXJhdGlvbnNUb1dlYkZpbHRlck9wZXJhdGlvbnMoZmlsdGVycywg
d2ViRmlsdGVycykpIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBmaWx0ZXJzIGFyZSByZW1v
dmVkIGZyb20gdGhlIHBsYXRmb3JtIGxheWVyLCBhcyB0aGV5IGFyZQogICAgICAgICAvLyBnb2lu
ZyB0byBmYWxsYmFjayB0byBzb2Z0d2FyZSBtb2RlLgotICAgICAgICBtX2xheWVyLnNldEZpbHRl
cnMoV2ViRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0
RmlsdGVycyhXZWJGaWx0ZXJPcGVyYXRpb25zKCkpOwogICAgICAgICBHcmFwaGljc0xheWVyOjpz
ZXRGaWx0ZXJzKEZpbHRlck9wZXJhdGlvbnMoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9Ci0gICAgbV9sYXllci5zZXRGaWx0ZXJzKHdlYkZpbHRlcnMpOworICAgIG1fbGF5ZXItPmxh
eWVyKCktPnNldEZpbHRlcnMod2ViRmlsdGVycyk7CiAgICAgcmV0dXJuIEdyYXBoaWNzTGF5ZXI6
OnNldEZpbHRlcnMoZmlsdGVycyk7CiB9CiAKQEAgLTQwOSw3ICszOTMsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6c2V0QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycwogICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgd2ViRmlsdGVyczsKICAgICBp
ZiAoIWNvcHlXZWJDb3JlRmlsdGVyT3BlcmF0aW9uc1RvV2ViRmlsdGVyT3BlcmF0aW9ucyhmaWx0
ZXJzLCB3ZWJGaWx0ZXJzKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fbGF5ZXIuc2V0QmFja2dy
b3VuZEZpbHRlcnMod2ViRmlsdGVycyk7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0QmFja2dy
b3VuZEZpbHRlcnMod2ViRmlsdGVycyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVt
OjpzZXRNYXNrTGF5ZXIoR3JhcGhpY3NMYXllciogbWFza0xheWVyKQpAQCAtNDE5LDIzICs0MDMs
MjEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE1hc2tMYXllcihHcmFwaGljc0xh
eWVyKiBtYXNrTGF5ZXIpCiAKICAgICBHcmFwaGljc0xheWVyOjpzZXRNYXNrTGF5ZXIobWFza0xh
eWVyKTsKIAotICAgIFdlYkxheWVyIG1hc2tXZWJMYXllcjsKLSAgICBpZiAobV9tYXNrTGF5ZXIp
Ci0gICAgICAgIG1hc2tXZWJMYXllciA9ICptX21hc2tMYXllci0+cGxhdGZvcm1MYXllcigpOwot
ICAgIG1fbGF5ZXIuc2V0TWFza0xheWVyKG1hc2tXZWJMYXllcik7CisgICAgV2ViTGF5ZXIqIG1h
c2tXZWJMYXllciA9IG1fbWFza0xheWVyID8gbV9tYXNrTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6
IDA7CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0TWFza0xheWVyKG1hc2tXZWJMYXllcik7CiB9
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRCYWNrZmFjZVZpc2liaWxpdHkoYm9v
bCB2aXNpYmxlKQogewogICAgIEdyYXBoaWNzTGF5ZXI6OnNldEJhY2tmYWNlVmlzaWJpbGl0eSh2
aXNpYmxlKTsKLSAgICBtX2xheWVyLnNldERvdWJsZVNpZGVkKG1fYmFja2ZhY2VWaXNpYmlsaXR5
KTsKKyAgICBtX2xheWVyLT5zZXREb3VibGVTaWRlZChtX2JhY2tmYWNlVmlzaWJpbGl0eSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkp
CiB7CiAgICAgZmxvYXQgY2xhbXBlZE9wYWNpdHkgPSBtYXgobWluKG9wYWNpdHksIDEuMGYpLCAw
LjBmKTsKICAgICBHcmFwaGljc0xheWVyOjpzZXRPcGFjaXR5KGNsYW1wZWRPcGFjaXR5KTsKLSAg
ICBwcmltYXJ5TGF5ZXIoKS5zZXRPcGFjaXR5KG9wYWNpdHkpOworICAgIHBsYXRmb3JtTGF5ZXIo
KS0+c2V0T3BhY2l0eShvcGFjaXR5KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnNldFJlcGxpY2F0ZWRCeUxheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQpAQCAtNDQzLDIzICs0
MjUsMjEgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldFJlcGxpY2F0ZWRCeUxheWVy
KEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogbGF5ZXJD
aHJvbWl1bSA9IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSo+KGxheWVyKTsKICAg
ICBHcmFwaGljc0xheWVyOjpzZXRSZXBsaWNhdGVkQnlMYXllcihsYXllcik7CiAKLSAgICBXZWJM
YXllciB3ZWJSZXBsaWNhTGF5ZXI7Ci0gICAgaWYgKGxheWVyQ2hyb21pdW0pCi0gICAgICAgIHdl
YlJlcGxpY2FMYXllciA9IGxheWVyQ2hyb21pdW0tPnByaW1hcnlMYXllcigpOwotICAgIHByaW1h
cnlMYXllcigpLnNldFJlcGxpY2FMYXllcih3ZWJSZXBsaWNhTGF5ZXIpOworICAgIFdlYkxheWVy
KiB3ZWJSZXBsaWNhTGF5ZXIgPSBsYXllckNocm9taXVtID8gbGF5ZXJDaHJvbWl1bS0+cGxhdGZv
cm1MYXllcigpIDogMDsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNldFJlcGxpY2FMYXllcih3ZWJS
ZXBsaWNhTGF5ZXIpOwogfQogCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250
ZW50c05lZWRzRGlzcGxheSgpCiB7Ci0gICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkp
Ci0gICAgICAgIG1fY29udGVudHNMYXllci5pbnZhbGlkYXRlKCk7CisgICAgaWYgKG1fY29udGVu
dHNMYXllcikKKyAgICAgICAgbV9jb250ZW50c0xheWVyLT5pbnZhbGlkYXRlKCk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rpc3BsYXkoKQogewogICAgIGlmIChk
cmF3c0NvbnRlbnQoKSkgewotICAgICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsKKyAgICAgICAg
bV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBpZiAobV9saW5rSGlnaGxp
Z2h0KQogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpA
QCAtNDY4LDcgKzQ0OCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXROZWVkc0Rp
c3BsYXkoKQogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldE5lZWRzRGlzcGxheUluUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKGRyYXdzQ29udGVudCgpKSB7Ci0g
ICAgICAgIG1fbGF5ZXIuaW52YWxpZGF0ZVJlY3QocmVjdCk7CisgICAgICAgIG1fbGF5ZXItPmxh
eWVyKCktPmludmFsaWRhdGVSZWN0KHJlY3QpOwogICAgICAgICBpZiAobV9saW5rSGlnaGxpZ2h0
KQogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7CiAgICAgfQpAQCAt
NDg3LDQ2ICs0NjcsNTYgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRz
VG9JbWFnZShJbWFnZSogaW1hZ2UpCiB7CiAgICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxz
ZTsKICAgICBpZiAoaW1hZ2UpIHsKLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllci5pc051bGwo
KSB8fCBtX2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZSkgewot
ICAgICAgICAgICAgV2ViS2l0OjpXZWJJbWFnZUxheWVyIGltYWdlTGF5ZXIgPSBXZWJLaXQ6Oldl
YkltYWdlTGF5ZXI6OmNyZWF0ZSgpOwotICAgICAgICAgICAgc2V0dXBDb250ZW50c0xheWVyKGlt
YWdlTGF5ZXIpOworICAgICAgICBpZiAobV9jb250ZW50c0xheWVyUHVycG9zZSAhPSBDb250ZW50
c0xheWVyRm9ySW1hZ2UpIHsKKyAgICAgICAgICAgIG1faW1hZ2VMYXllciA9IGFkb3B0UHRyKFdl
YkltYWdlTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIHNldHVwQ29udGVudHNMYXllciht
X2ltYWdlTGF5ZXItPmxheWVyKCkpOwogICAgICAgICAgICAgbV9jb250ZW50c0xheWVyUHVycG9z
ZSA9IENvbnRlbnRzTGF5ZXJGb3JJbWFnZTsKICAgICAgICAgICAgIGNoaWxkcmVuQ2hhbmdlZCA9
IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgV2ViS2l0OjpXZWJJbWFnZUxheWVyIGltYWdlTGF5
ZXIgPSBtX2NvbnRlbnRzTGF5ZXIudG88V2ViS2l0OjpXZWJJbWFnZUxheWVyPigpOwogICAgICAg
ICBOYXRpdmVJbWFnZVNraWEqIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3Vy
cmVudEZyYW1lKCk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0Qml0bWFwKG5hdGl2ZUltYWdlLT5i
aXRtYXAoKSk7Ci0gICAgICAgIGltYWdlTGF5ZXIuc2V0T3BhcXVlKGltYWdlLT5pc0JpdG1hcElt
YWdlKCkgJiYgIWltYWdlLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpKTsKKyAgICAgICAgbV9pbWFn
ZUxheWVyLT5zZXRCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpKTsKKyAgICAgICAgbV9pbWFn
ZUxheWVyLT5sYXllcigpLT5zZXRPcGFxdWUoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSAmJiAhaW1h
Z2UtPmN1cnJlbnRGcmFtZUhhc0FscGhhKCkpOwogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3Qo
KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkg
eworICAgICAgICBpZiAobV9pbWFnZUxheWVyKSB7CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5n
ZWQgPSB0cnVlOwogCi0gICAgICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwg
YmUgcmVtb3ZlZCB2aWEgdXBkYXRlQ2hpbGRMaXN0LgotICAgICAgICAgICAgbV9jb250ZW50c0xh
eWVyLnJlc2V0KCk7CisgICAgICAgICAgICBtX2ltYWdlTGF5ZXIuY2xlYXIoKTsKICAgICAgICAg
fQorICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEg
dXBkYXRlQ2hpbGRMaXN0LgorICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwogICAgIH0KIAog
ICAgIGlmIChjaGlsZHJlbkNoYW5nZWQpCiAgICAgICAgIHVwZGF0ZUNoaWxkTGlzdCgpOwogfQog
Ci12b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKQordm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENv
bnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogbGF5ZXIpCit7CisgICAgc2V0Q29udGVudHNU
byhDb250ZW50c0xheWVyRm9yQ2FudmFzLCBsYXllcik7Cit9CisKK3ZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciogbGF5ZXIpCit7Cisg
ICAgc2V0Q29udGVudHNUbyhDb250ZW50c0xheWVyRm9yVmlkZW8sIGxheWVyKTsKK30KKwordm9p
ZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG8oQ29udGVudHNMYXllclB1cnBv
c2UgcHVycG9zZSwgV2ViS2l0OjpXZWJMYXllciogbGF5ZXIpCiB7CiAgICAgYm9vbCBjaGlsZHJl
bkNoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAocGxhdGZvcm1MYXllcikgewotICAgICAgICBpZiAo
bV9jb250ZW50c0xheWVyICE9ICpwbGF0Zm9ybUxheWVyKSB7Ci0gICAgICAgICAgICBzZXR1cENv
bnRlbnRzTGF5ZXIoKnBsYXRmb3JtTGF5ZXIpOwotICAgICAgICAgICAgbV9jb250ZW50c0xheWVy
UHVycG9zZSA9IENvbnRlbnRzTGF5ZXJGb3JDYW52YXM7CisgICAgaWYgKGxheWVyKSB7CisgICAg
ICAgIGlmIChtX2NvbnRlbnRzTGF5ZXJJZCAhPSBsYXllci0+aWQoKSkgeworICAgICAgICAgICAg
c2V0dXBDb250ZW50c0xheWVyKGxheWVyKTsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllclB1
cnBvc2UgPSBwdXJwb3NlOwogICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICB1cGRhdGVDb250ZW50c1JlY3QoKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkgeworICAgICAgICBpZiAobV9jb250
ZW50c0xheWVyKSB7CiAgICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQgPSB0cnVlOwogCiAgICAg
ICAgICAgICAvLyBUaGUgb2xkIGNvbnRlbnRzIGxheWVyIHdpbGwgYmUgcmVtb3ZlZCB2aWEgdXBk
YXRlQ2hpbGRMaXN0LgotICAgICAgICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7CisgICAg
ICAgICAgICBtX2NvbnRlbnRzTGF5ZXIgPSAwOwogICAgICAgICB9CiAgICAgfQogCkBAIC01MzYs
NyArNTI2LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldENvbnRlbnRzVG9DYW52
YXMoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKIAogYm9vbCBHcmFwaGljc0xheWVyQ2hy
b21pdW06OmFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVzLCBjb25z
dCBJbnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgY29uc3QgU3Ry
aW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKIHsKLSAgICBwcmltYXJ5TGF5
ZXIoKS5zZXRBbmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnNl
dEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOwogCiAgICAgaW50IGFuaW1hdGlvbklkID0gbWFwQW5p
bWF0aW9uTmFtZVRvSWQoYW5pbWF0aW9uTmFtZSk7CiAgICAgaW50IGdyb3VwSWQgPSBBbmltYXRp
b25JZFZlbmRvcjo6Z2V0TmV4dEdyb3VwSWQoKTsKQEAgLTU0NSw4ICs1MzUsOCBAQCBib29sIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0
JiB2YWx1ZXMsIGNvbnN0CiAKICAgICBpZiAodG9BZGQpIHsKICAgICAgICAgLy8gUmVtb3ZlIGFu
eSBleGlzdGluZyBhbmltYXRpb25zIHdpdGggdGhlIHNhbWUgYW5pbWF0aW9uIGlkIGFuZCB0YXJn
ZXQgcHJvcGVydHkuCi0gICAgICAgIHByaW1hcnlMYXllcigpLnJlbW92ZUFuaW1hdGlvbihhbmlt
YXRpb25JZCwgdG9BZGQtPnRhcmdldFByb3BlcnR5KCkpOwotICAgICAgICByZXR1cm4gcHJpbWFy
eUxheWVyKCkuYWRkQW5pbWF0aW9uKHRvQWRkLmdldCgpKTsKKyAgICAgICAgcGxhdGZvcm1MYXll
cigpLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQsIHRvQWRkLT50YXJnZXRQcm9wZXJ0eSgp
KTsKKyAgICAgICAgcmV0dXJuIHBsYXRmb3JtTGF5ZXIoKS0+YWRkQW5pbWF0aW9uKHRvQWRkLmdl
dCgpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC01NTQsMTIgKzU0NCwxMiBAQCBi
b29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFs
dWVMaXN0JiB2YWx1ZXMsIGNvbnN0CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpwYXVz
ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zmc2V0
KQogewotICAgIHByaW1hcnlMYXllcigpLnBhdXNlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVU
b0lkKGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zmc2V0KTsKKyAgICBwbGF0Zm9ybUxheWVyKCktPnBh
dXNlQW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpLCB0aW1lT2Zm
c2V0KTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnJlbW92ZUFuaW1hdGlvbihj
b25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCiB7Ci0gICAgcHJpbWFyeUxheWVyKCkucmVtb3Zl
QW5pbWF0aW9uKG1hcEFuaW1hdGlvbk5hbWVUb0lkKGFuaW1hdGlvbk5hbWUpKTsKKyAgICBwbGF0
Zm9ybUxheWVyKCktPnJlbW92ZUFuaW1hdGlvbihtYXBBbmltYXRpb25OYW1lVG9JZChhbmltYXRp
b25OYW1lKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0
aW9ucyhkb3VibGUgd2FsbENsb2NrVGltZSkKQEAgLTU2NywxMiArNTU3LDEyIEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNocm9taXVtOjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgd2FsbENsb2NrVGlt
ZSkKICAgICAvLyB8d2FsbENsb2NrVGltZXwgaXMgaW4gdGhlIHdyb25nIHRpbWUgYmFzZS4gTmVl
ZCB0byBjb252ZXJ0IGhlcmUuCiAgICAgLy8gRklYTUU6IGZpbmQgYSBtb3JlIHJlbGlhYmxlIHdh
eSB0byBkbyB0aGlzLgogICAgIGRvdWJsZSBtb25vdG9uaWNUaW1lID0gd2FsbENsb2NrVGltZSAr
IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gY3VycmVudFRpbWUoKTsKLSAgICBwcmlt
YXJ5TGF5ZXIoKS5zdXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKKyAgICBwbGF0Zm9y
bUxheWVyKCktPnN1c3BlbmRBbmltYXRpb25zKG1vbm90b25pY1RpbWUpOwogfQogCiB2b2lkIEdy
YXBoaWNzTGF5ZXJDaHJvbWl1bTo6cmVzdW1lQW5pbWF0aW9ucygpCiB7Ci0gICAgcHJpbWFyeUxh
eWVyKCkucmVzdW1lQW5pbWF0aW9ucyhtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7Cisg
ICAgcGxhdGZvcm1MYXllcigpLT5yZXN1bWVBbmltYXRpb25zKG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnNldExpbmtIaWdo
bGlnaHQoTGlua0hpZ2hsaWdodENsaWVudCogbGlua0hpZ2hsaWdodCkKQEAgLTU4MSw2NiArNTcx
LDM4IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRMaW5rSGlnaGxpZ2h0KExpbmtI
aWdobGlnaHRDbGllbnQqIGxpbmtIaWdobGlnaHQpCiAgICAgdXBkYXRlQ2hpbGRMaXN0KCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXRDb250ZW50c1RvTWVkaWEoUGxhdGZv
cm1MYXllciogbGF5ZXIpCi17Ci0gICAgYm9vbCBjaGlsZHJlbkNoYW5nZWQgPSBmYWxzZTsKLSAg
ICBpZiAobGF5ZXIpIHsKLSAgICAgICAgaWYgKG1fY29udGVudHNMYXllci5pc051bGwoKSB8fCBt
X2NvbnRlbnRzTGF5ZXJQdXJwb3NlICE9IENvbnRlbnRzTGF5ZXJGb3JWaWRlbykgewotICAgICAg
ICAgICAgc2V0dXBDb250ZW50c0xheWVyKCpsYXllcik7Ci0gICAgICAgICAgICBtX2NvbnRlbnRz
TGF5ZXJQdXJwb3NlID0gQ29udGVudHNMYXllckZvclZpZGVvOwotICAgICAgICAgICAgY2hpbGRy
ZW5DaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICB1cGRhdGVDb250ZW50c1JlY3Qo
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkg
ewotICAgICAgICAgICAgY2hpbGRyZW5DaGFuZ2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgLy8g
VGhlIG9sZCBjb250ZW50cyBsYXllciB3aWxsIGJlIHJlbW92ZWQgdmlhIHVwZGF0ZUNoaWxkTGlz
dC4KLSAgICAgICAgICAgIG1fY29udGVudHNMYXllci5yZXNldCgpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKGNoaWxkcmVuQ2hhbmdlZCkKLSAgICAgICAgdXBkYXRlQ2hpbGRMaXN0KCk7
Ci19Ci0KLVdlYktpdDo6V2ViTGF5ZXIgR3JhcGhpY3NMYXllckNocm9taXVtOjpwcmltYXJ5TGF5
ZXIoKSBjb25zdAotewotICAgIHJldHVybiBtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpID8gbV9s
YXllciA6IG1fdHJhbnNmb3JtTGF5ZXI7Ci19Ci0KIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzTGF5
ZXJDaHJvbWl1bTo6cGxhdGZvcm1MYXllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nh
c3Q8UGxhdGZvcm1MYXllcio+KG1fdHJhbnNmb3JtTGF5ZXIuaXNOdWxsKCkgPyAmbV9sYXllciA6
ICZtX3RyYW5zZm9ybUxheWVyKTsKKyAgICByZXR1cm4gbV90cmFuc2Zvcm1MYXllciA/IG1fdHJh
bnNmb3JtTGF5ZXIuZ2V0KCkgOiBtX2xheWVyLT5sYXllcigpOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6c2V0RGVidWdCYWNrZ3JvdW5kQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogewogICAgIGlmIChjb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIG1fbGF5ZXIuc2V0QmFja2dy
b3VuZENvbG9yKGNvbG9yLnJnYigpKTsKKyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0QmFj
a2dyb3VuZENvbG9yKGNvbG9yLnJnYigpKTsKICAgICBlbHNlCi0gICAgICAgIG1fbGF5ZXIuc2V0
QmFja2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOworICAgICAgICBtX2xheWVy
LT5sYXllcigpLT5zZXRCYWNrZ3JvdW5kQ29sb3Ioc3RhdGljX2Nhc3Q8UkdCQTMyPigwKSk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXREZWJ1Z0JvcmRlcihjb25zdCBDb2xv
ciYgY29sb3IsIGZsb2F0IGJvcmRlcldpZHRoKQogewogICAgIGlmIChjb2xvci5pc1ZhbGlkKCkp
IHsKLSAgICAgICAgbV9sYXllci5zZXREZWJ1Z0JvcmRlckNvbG9yKGNvbG9yLnJnYigpKTsKLSAg
ICAgICAgbV9sYXllci5zZXREZWJ1Z0JvcmRlcldpZHRoKGJvcmRlcldpZHRoKTsKKyAgICAgICAg
bV9sYXllci0+bGF5ZXIoKS0+c2V0RGVidWdCb3JkZXJDb2xvcihjb2xvci5yZ2IoKSk7CisgICAg
ICAgIG1fbGF5ZXItPmxheWVyKCktPnNldERlYnVnQm9yZGVyV2lkdGgoYm9yZGVyV2lkdGgpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbGF5ZXIuc2V0RGVidWdCb3JkZXJDb2xvcihzdGF0aWNf
Y2FzdDxSR0JBMzI+KDApKTsKLSAgICAgICAgbV9sYXllci5zZXREZWJ1Z0JvcmRlcldpZHRoKDAp
OworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXREZWJ1Z0JvcmRlckNvbG9yKHN0YXRpY19j
YXN0PFJHQkEzMj4oMCkpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXREZWJ1Z0JvcmRl
cldpZHRoKDApOwogICAgIH0KIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZUNoaWxkTGlzdCgpCiB7Ci0gICAgVmVjdG9yPFdlYkxheWVyPiBuZXdDaGlsZHJlbjsKKyAgICBW
ZWN0b3I8V2ViTGF5ZXIqPiBuZXdDaGlsZHJlbjsKIAotICAgIGlmICghbV90cmFuc2Zvcm1MYXll
ci5pc051bGwoKSkgeworICAgIGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CiAgICAgICAgIC8vIEFk
ZCB0aGUgcHJpbWFyeSBsYXllciBmaXJzdC4gRXZlbiBpZiB3ZSBoYXZlIG5lZ2F0aXZlIHotb3Jk
ZXIgY2hpbGRyZW4sIHRoZSBwcmltYXJ5IGxheWVyIGFsd2F5cyBjb21lcyBiZWhpbmQuCi0gICAg
ICAgIG5ld0NoaWxkcmVuLmFwcGVuZChtX2xheWVyKTsKLSAgICB9IGVsc2UgaWYgKCFtX2NvbnRl
bnRzTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgbmV3Q2hpbGRyZW4uYXBwZW5kKG1fbGF5ZXIt
PmxheWVyKCkpOworICAgIH0gZWxzZSBpZiAobV9jb250ZW50c0xheWVyKSB7CiAgICAgICAgIC8v
IEZJWE1FOiBhZGQgdGhlIGNvbnRlbnRzIGxheWVyIGluIHRoZSBjb3JyZWN0IG9yZGVyIHdpdGgg
bmVnYXRpdmUgei1vcmRlciBjaGlsZHJlbi4KICAgICAgICAgLy8gVGhpcyBkb2VzIG5vdCBjYXVz
ZSB2aXNpYmxlIHJlbmRlcmluZyBpc3N1ZXMgYmVjYXVzZSBjdXJyZW50bHkgY29udGVudHMgbGF5
ZXJzIGFyZSBvbmx5IHVzZWQKICAgICAgICAgLy8gZm9yIHJlcGxhY2VkIGVsZW1lbnRzIHRoYXQg
ZG9uJ3QgaGF2ZSBjaGlsZHJlbi4KQEAgLTY1Miw3OSArNjE0LDc5IEBAIHZvaWQgR3JhcGhpY3NM
YXllckNocm9taXVtOjp1cGRhdGVDaGlsZExpc3QoKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtQ2hpbGRyZW47ICsraSkgewogICAgICAgICBHcmFwaGljc0xheWVyQ2hyb21pdW0qIGN1
ckNoaWxkID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtKj4oY2hpbGRMYXllcnNb
aV0pOwogCi0gICAgICAgIG5ld0NoaWxkcmVuLmFwcGVuZChjdXJDaGlsZC0+cHJpbWFyeUxheWVy
KCkpOworICAgICAgICBuZXdDaGlsZHJlbi5hcHBlbmQoY3VyQ2hpbGQtPnBsYXRmb3JtTGF5ZXIo
KSk7CiAgICAgfQogCiAgICAgaWYgKG1fbGlua0hpZ2hsaWdodCkKLSAgICAgICAgbmV3Q2hpbGRy
ZW4uYXBwZW5kKCptX2xpbmtIaWdobGlnaHQtPmxheWVyKCkpOworICAgICAgICBuZXdDaGlsZHJl
bi5hcHBlbmQobV9saW5rSGlnaGxpZ2h0LT5sYXllcigpKTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbmV3Q2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIG5ld0NoaWxkcmVuW2ld
LnJlbW92ZUZyb21QYXJlbnQoKTsKKyAgICAgICAgbmV3Q2hpbGRyZW5baV0tPnJlbW92ZUZyb21Q
YXJlbnQoKTsKIAotICAgIFdlYlZlY3RvcjxXZWJMYXllcj4gbmV3V2ViQ2hpbGRyZW47CisgICAg
V2ViVmVjdG9yPFdlYkxheWVyKj4gbmV3V2ViQ2hpbGRyZW47CiAgICAgbmV3V2ViQ2hpbGRyZW4u
YXNzaWduKG5ld0NoaWxkcmVuLmRhdGEoKSwgbmV3Q2hpbGRyZW4uc2l6ZSgpKTsKIAotICAgIGlm
ICghbV90cmFuc2Zvcm1MYXllci5pc051bGwoKSkgewotICAgICAgICBtX3RyYW5zZm9ybUxheWVy
LnNldENoaWxkcmVuKG5ld1dlYkNoaWxkcmVuKTsKKyAgICBpZiAobV90cmFuc2Zvcm1MYXllcikg
eworICAgICAgICBtX3RyYW5zZm9ybUxheWVyLT5zZXRDaGlsZHJlbihuZXdXZWJDaGlsZHJlbik7
CiAKLSAgICAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCkpIHsKKyAgICAgICAgaWYg
KG1fY29udGVudHNMYXllcikgewogICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHRyYW5zZm9y
bSBsYXllciwgdGhlbiB0aGUgY29udGVudHMgbGF5ZXIgaXMgcGFyZW50ZWQgaW4gdGhlCiAgICAg
ICAgICAgICAvLyBwcmltYXJ5IGxheWVyICh3aGljaCBpcyBpdHNlbGYgYSBjaGlsZCBvZiB0aGUg
dHJhbnNmb3JtIGxheWVyKS4KLSAgICAgICAgICAgIG1fbGF5ZXIucmVtb3ZlQWxsQ2hpbGRyZW4o
KTsKLSAgICAgICAgICAgIG1fbGF5ZXIuYWRkQ2hpbGQobV9jb250ZW50c0xheWVyKTsKKyAgICAg
ICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnJlbW92ZUFsbENoaWxkcmVuKCk7CisgICAgICAgICAg
ICBtX2xheWVyLT5sYXllcigpLT5hZGRDaGlsZChtX2NvbnRlbnRzTGF5ZXIpOwogICAgICAgICB9
CiAgICAgfSBlbHNlCi0gICAgICAgIG1fbGF5ZXIuc2V0Q2hpbGRyZW4obmV3V2ViQ2hpbGRyZW4p
OworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRDaGlsZHJlbihuZXdXZWJDaGlsZHJlbik7
CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclBvc2l0aW9uKCkK
IHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRQb3NpdGlvbihtX3Bvc2l0aW9uKTsKKyAgICBwbGF0
Zm9ybUxheWVyKCktPnNldFBvc2l0aW9uKG1fcG9zaXRpb24pOwogfQogCiB2b2lkIEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJTaXplKCkKIHsKICAgICBJbnRTaXplIGxheWVyU2l6
ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpKTsKLSAgICBpZiAoIW1fdHJhbnNmb3Jt
TGF5ZXIuaXNOdWxsKCkpIHsKLSAgICAgICAgbV90cmFuc2Zvcm1MYXllci5zZXRCb3VuZHMobGF5
ZXJTaXplKTsKLSAgICAgICAgbV9sYXllci5zZXRQb3NpdGlvbihGbG9hdFBvaW50KCkpOworICAg
IGlmIChtX3RyYW5zZm9ybUxheWVyKSB7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEJv
dW5kcyhsYXllclNpemUpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRQb3NpdGlvbihG
bG9hdFBvaW50KCkpOwogICAgIH0KIAotICAgIG1fbGF5ZXIuc2V0Qm91bmRzKGxheWVyU2l6ZSk7
CisgICAgbV9sYXllci0+bGF5ZXIoKS0+c2V0Qm91bmRzKGxheWVyU2l6ZSk7CiAKLSAgICAvLyBO
b3RlIHRoYXQgd2UgZG9uJ3QgcmVzaXplIG1fY29udGVudHNMYXllci4gSXQncyB1cCB0aGUgY2Fs
bGVyIHRvIGRvIHRoYXQuCisgICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHJlc2l6ZSBtX2NvbnRl
bnRzTGF5ZXItPiBJdCdzIHVwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUFuY2hvclBvaW50KCkKIHsKLSAgICBwcmltYXJ5TGF5
ZXIoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hv
clBvaW50LnkoKSkpOwotICAgIHByaW1hcnlMYXllcigpLnNldEFuY2hvclBvaW50WihtX2FuY2hv
clBvaW50LnooKSk7CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50KG1fYW5jaG9yUG9pbnQueCgpLCBtX2FuY2hvclBvaW50LnkoKSkpOworICAgIHBsYXRmb3Jt
TGF5ZXIoKS0+c2V0QW5jaG9yUG9pbnRaKG1fYW5jaG9yUG9pbnQueigpKTsKIH0KIAogdm9pZCBH
cmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZVRyYW5zZm9ybSgpCiB7Ci0gICAgcHJpbWFyeUxh
eWVyKCkuc2V0VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG1fdHJhbnNmb3JtKSk7
CisgICAgcGxhdGZvcm1MYXllcigpLT5zZXRUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgobV90cmFuc2Zvcm0pKTsKIH0KIAogdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0
ZUNoaWxkcmVuVHJhbnNmb3JtKCkKIHsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRTdWJsYXllclRy
YW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeChtX2NoaWxkcmVuVHJhbnNmb3JtKSk7Cisg
ICAgcGxhdGZvcm1MYXllcigpLT5zZXRTdWJsYXllclRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeChtX2NoaWxkcmVuVHJhbnNmb3JtKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NMYXllckNo
cm9taXVtOjp1cGRhdGVNYXNrc1RvQm91bmRzKCkKIHsKLSAgICBtX2xheWVyLnNldE1hc2tzVG9C
b3VuZHMobV9tYXNrc1RvQm91bmRzKTsKKyAgICBtX2xheWVyLT5sYXllcigpLT5zZXRNYXNrc1Rv
Qm91bmRzKG1fbWFza3NUb0JvdW5kcyk7CiAgICAgdXBkYXRlRGVidWdJbmRpY2F0b3JzKCk7CiB9
CiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkK
IHsKLSAgICBpZiAobV9wcmVzZXJ2ZXMzRCAmJiBtX3RyYW5zZm9ybUxheWVyLmlzTnVsbCgpKSB7
CisgICAgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3JtTGF5ZXIpIHsKICAgICAgICAg
Ly8gQ3JlYXRlIHRoZSB0cmFuc2Zvcm0gbGF5ZXIuCi0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIg
PSBXZWJMYXllcjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0UHJlc2Vy
dmVzM0QodHJ1ZSk7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuc2V0QW5pbWF0aW9uRGVsZWdh
dGUodGhpcyk7Ci0gICAgICAgIG1fbGF5ZXIudHJhbnNmZXJBbmltYXRpb25zVG8oJm1fdHJhbnNm
b3JtTGF5ZXIpOworICAgICAgICBtX3RyYW5zZm9ybUxheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6
OmNyZWF0ZSgpKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+c2V0UHJlc2VydmVzM0QodHJ1
ZSk7CisgICAgICAgIG1fdHJhbnNmb3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMp
OworICAgICAgICBtX2xheWVyLT5sYXllcigpLT50cmFuc2ZlckFuaW1hdGlvbnNUbyhtX3RyYW5z
Zm9ybUxheWVyLmdldCgpKTsKIAogICAgICAgICAvLyBDb3B5IHRoZSBwb3NpdGlvbiBmcm9tIHRo
aXMgbGF5ZXIuCiAgICAgICAgIHVwZGF0ZUxheWVyUG9zaXRpb24oKTsKQEAgLTczMywzNCArNjk1
LDM0IEBAIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNE
KCkKICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7CiAgICAgICAgIHVwZGF0ZUNoaWxkcmVuVHJh
bnNmb3JtKCk7CiAKLSAgICAgICAgbV9sYXllci5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJv
KCkpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6
ZXJvKCkpOwogCi0gICAgICAgIG1fbGF5ZXIuc2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLjVm
LCAwLjVmKSk7Ci0gICAgICAgIG1fbGF5ZXIuc2V0VHJhbnNmb3JtKFNrTWF0cml4NDQoKSk7Cisg
ICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMC41Ziwg
MC41ZikpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRUcmFuc2Zvcm0oU2tNYXRyaXg0
NCgpKTsKIAogICAgICAgICAvLyBTZXQgdGhlIG9sZCBsYXllciB0byBvcGFjaXR5IG9mIDEuIEZ1
cnRoZXIgZG93biB3ZSB3aWxsIHNldCB0aGUgb3BhY2l0eSBvbiB0aGUgdHJhbnNmb3JtIGxheWVy
LgotICAgICAgICBtX2xheWVyLnNldE9wYWNpdHkoMSk7CisgICAgICAgIG1fbGF5ZXItPmxheWVy
KCktPnNldE9wYWNpdHkoMSk7CiAKLSAgICAgICAgbV9sYXllci5zZXRDb250ZW50c1NjYWxlKGNv
bnRlbnRzU2NhbGUoKSk7CisgICAgICAgIG1fbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoY29udGVu
dHNTY2FsZSgpKTsKIAogICAgICAgICAvLyBNb3ZlIHRoaXMgbGF5ZXIgdG8gYmUgYSBjaGlsZCBv
ZiB0aGUgdHJhbnNmb3JtIGxheWVyLgogICAgICAgICBpZiAocGFyZW50KCkpCi0gICAgICAgICAg
ICBwYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT5yZXBsYWNlQ2hpbGQobV9sYXllciwgbV90cmFu
c2Zvcm1MYXllcik7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIuYWRkQ2hpbGQobV9sYXllcik7
CisgICAgICAgICAgICBwYXJlbnQoKS0+cGxhdGZvcm1MYXllcigpLT5yZXBsYWNlQ2hpbGQobV9s
YXllci0+bGF5ZXIoKSwgbV90cmFuc2Zvcm1MYXllci5nZXQoKSk7CisgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXItPmFkZENoaWxkKG1fbGF5ZXItPmxheWVyKCkpOwogCiAgICAgICAgIHVwZGF0ZUNo
aWxkTGlzdCgpOwotICAgIH0gZWxzZSBpZiAoIW1fcHJlc2VydmVzM0QgJiYgIW1fdHJhbnNmb3Jt
TGF5ZXIuaXNOdWxsKCkpIHsKKyAgICB9IGVsc2UgaWYgKG1fcHJlc2VydmVzM0QgJiYgIW1fdHJh
bnNmb3JtTGF5ZXIpIHsKICAgICAgICAgLy8gUmVsYWNlIHRoZSB0cmFuc2Zvcm1MYXllciBpbiB0
aGUgcGFyZW50IHdpdGggdGhpcyBsYXllci4KLSAgICAgICAgbV9sYXllci5yZW1vdmVGcm9tUGFy
ZW50KCk7CisgICAgICAgIG1fbGF5ZXItPmxheWVyKCktPnJlbW92ZUZyb21QYXJlbnQoKTsKICAg
ICAgICAgaWYgKHBhcmVudCgpKQotICAgICAgICAgICAgcGFyZW50KCktPnBsYXRmb3JtTGF5ZXIo
KS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIsIG1fbGF5ZXIpOworICAgICAgICAgICAg
cGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKS0+cmVwbGFjZUNoaWxkKG1fdHJhbnNmb3JtTGF5ZXIu
Z2V0KCksIG1fbGF5ZXItPmxheWVyKCkpOwogCi0gICAgICAgIG1fbGF5ZXIuc2V0QW5pbWF0aW9u
RGVsZWdhdGUodGhpcyk7Ci0gICAgICAgIG1fdHJhbnNmb3JtTGF5ZXIudHJhbnNmZXJBbmltYXRp
b25zVG8oJm1fbGF5ZXIpOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5zZXRBbmltYXRpb25E
ZWxlZ2F0ZSh0aGlzKTsKKyAgICAgICAgbV90cmFuc2Zvcm1MYXllci0+dHJhbnNmZXJBbmltYXRp
b25zVG8obV9sYXllci0+bGF5ZXIoKSk7CiAKICAgICAgICAgLy8gUmVsZWFzZSB0aGUgdHJhbnNm
b3JtIGxheWVyLgotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRl
KDApOwotICAgICAgICBtX3RyYW5zZm9ybUxheWVyLnJlc2V0KCk7CisgICAgICAgIG1fdHJhbnNm
b3JtTGF5ZXItPnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOworICAgICAgICBtX3RyYW5zZm9ybUxh
eWVyLmNsZWFyKCk7CiAKICAgICAgICAgdXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogICAgICAgICB1
cGRhdGVMYXllclNpemUoKTsKQEAgLTc3MSwyNSArNzMzLDI1IEBAIHZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjp1cGRhdGVMYXllclByZXNlcnZlczNEKCkKICAgICAgICAgdXBkYXRlQ2hpbGRM
aXN0KCk7CiAgICAgfQogCi0gICAgbV9sYXllci5zZXRQcmVzZXJ2ZXMzRChtX3ByZXNlcnZlczNE
KTsKLSAgICBwcmltYXJ5TGF5ZXIoKS5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CisgICAgbV9sYXll
ci0+bGF5ZXIoKS0+c2V0UHJlc2VydmVzM0QobV9wcmVzZXJ2ZXMzRCk7CisgICAgcGxhdGZvcm1M
YXllcigpLT5zZXRPcGFjaXR5KG1fb3BhY2l0eSk7CiAgICAgdXBkYXRlTmFtZXMoKTsKIH0KIAog
dm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUxheWVySXNEcmF3YWJsZSgpCiB7CiAg
ICAgLy8gRm9yIHRoZSByZXN0IG9mIHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdG9yIGNvZGUsIHRo
ZXJlIGlzIG5vIHJlYXNvbiB0byBtYWtlIGEKLSAgICAvLyBkaXN0aW5jdGlvbiBiZXR3ZWVuIGRy
YXdzQ29udGVudCBhbmQgY29udGVudHNWaXNpYmxlLiBTbywgZm9yIG1fbGF5ZXIsIHRoZXNlIHR3
bworICAgIC8vIGRpc3RpbmN0aW9uIGJldHdlZW4gZHJhd3NDb250ZW50IGFuZCBjb250ZW50c1Zp
c2libGUuIFNvLCBmb3IgbV9sYXllci0+bGF5ZXIoKSwgdGhlc2UgdHdvCiAgICAgLy8gZmxhZ3Mg
YXJlIGNvbWJpbmVkIGhlcmUuIG1fY29udGVudHNMYXllciBzaG91bGRuJ3QgcmVjZWl2ZSB0aGUg
ZHJhd3NDb250ZW50IGZsYWcKICAgICAvLyBzbyBpdCBpcyBvbmx5IGdpdmVuIGNvbnRlbnRzVmlz
aWJsZS4KIAotICAgIG1fbGF5ZXIuc2V0RHJhd3NDb250ZW50KG1fZHJhd3NDb250ZW50ICYmIG1f
Y29udGVudHNWaXNpYmxlKTsKKyAgICBtX2xheWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRlbnQo
bV9kcmF3c0NvbnRlbnQgJiYgbV9jb250ZW50c1Zpc2libGUpOwogCi0gICAgaWYgKCFtX2NvbnRl
bnRzTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1fY29udGVudHNMYXllci5zZXREcmF3c0NvbnRl
bnQobV9jb250ZW50c1Zpc2libGUpOworICAgIGlmIChtX2NvbnRlbnRzTGF5ZXIpCisgICAgICAg
IG1fY29udGVudHNMYXllci0+c2V0RHJhd3NDb250ZW50KG1fY29udGVudHNWaXNpYmxlKTsKIAog
ICAgIGlmIChtX2RyYXdzQ29udGVudCkgewotICAgICAgICBtX2xheWVyLmludmFsaWRhdGUoKTsK
KyAgICAgICAgbV9sYXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBpZiAobV9s
aW5rSGlnaGxpZ2h0KQogICAgICAgICAgICAgbV9saW5rSGlnaGxpZ2h0LT5pbnZhbGlkYXRlKCk7
CiAgICAgfQpAQCAtNzk5LDE0ICs3NjEsMTQgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06
OnVwZGF0ZUxheWVySXNEcmF3YWJsZSgpCiAKIHZvaWQgR3JhcGhpY3NMYXllckNocm9taXVtOjp1
cGRhdGVMYXllckJhY2tncm91bmRDb2xvcigpCiB7Ci0gICAgaWYgKG1fY29udGVudHNMYXllci5p
c051bGwoKSkKKyAgICBpZiAoIW1fY29udGVudHNMYXllcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgLy8gV2UgbmV2ZXIgY3JlYXRlIHRoZSBjb250ZW50cyBsYXllciBqdXN0IGZvciBiYWNrZ3Jv
dW5kIGNvbG9yIHlldC4KICAgICBpZiAobV9iYWNrZ3JvdW5kQ29sb3JTZXQpCi0gICAgICAgIG1f
Y29udGVudHNMYXllci5zZXRCYWNrZ3JvdW5kQ29sb3IobV9iYWNrZ3JvdW5kQ29sb3IucmdiKCkp
OworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihtX2JhY2tncm91
bmRDb2xvci5yZ2IoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0QmFj
a2dyb3VuZENvbG9yKHN0YXRpY19jYXN0PFJHQkEzMj4oMCkpOworICAgICAgICBtX2NvbnRlbnRz
TGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihzdGF0aWNfY2FzdDxSR0JBMzI+KDApKTsKIH0KIAog
dm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzVmlkZW8oKQpAQCAtODE2
LDUwICs3NzgsNDIgQEAgdm9pZCBHcmFwaGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRz
VmlkZW8oKQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29udGVudHNSZWN0
KCkKIHsKLSAgICBpZiAobV9jb250ZW50c0xheWVyLmlzTnVsbCgpKQorICAgIGlmICghbV9jb250
ZW50c0xheWVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0UG9z
aXRpb24oRmxvYXRQb2ludChtX2NvbnRlbnRzUmVjdC54KCksIG1fY29udGVudHNSZWN0LnkoKSkp
OwotICAgIG1fY29udGVudHNMYXllci5zZXRCb3VuZHMoSW50U2l6ZShtX2NvbnRlbnRzUmVjdC53
aWR0aCgpLCBtX2NvbnRlbnRzUmVjdC5oZWlnaHQoKSkpOworICAgIG1fY29udGVudHNMYXllci0+
c2V0UG9zaXRpb24oRmxvYXRQb2ludChtX2NvbnRlbnRzUmVjdC54KCksIG1fY29udGVudHNSZWN0
LnkoKSkpOworICAgIG1fY29udGVudHNMYXllci0+c2V0Qm91bmRzKEludFNpemUobV9jb250ZW50
c1JlY3Qud2lkdGgoKSwgbV9jb250ZW50c1JlY3QuaGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0xheWVyQ2hyb21pdW06OnVwZGF0ZUNvbnRlbnRzU2NhbGUoKQogewogICAgIC8vIElmIHBh
Z2Ugc2NhbGUgaXMgYWxyZWFkeSBhcHBsaWVkIHRoZW4gdGhlcmUncyBubyBuZWVkIHRvIGFwcGx5
IGl0IGFnYWluLgotICAgIGlmIChhcHBsaWVzUGFnZVNjYWxlKCkgfHwgbV9sYXllci5pc051bGwo
KSkKKyAgICBpZiAoYXBwbGllc1BhZ2VTY2FsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X2xheWVyLnNldENvbnRlbnRzU2NhbGUoY29udGVudHNTY2FsZSgpKTsKKyAgICBtX2xheWVyLT5z
ZXRDb250ZW50c1NjYWxlKGNvbnRlbnRzU2NhbGUoKSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NMYXll
ckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIgY29udGVudHNMYXllcikKK3Zv
aWQgR3JhcGhpY3NMYXllckNocm9taXVtOjpzZXR1cENvbnRlbnRzTGF5ZXIoV2ViTGF5ZXIqIGNv
bnRlbnRzTGF5ZXIpCiB7Ci0gICAgaWYgKGNvbnRlbnRzTGF5ZXIgPT0gbV9jb250ZW50c0xheWVy
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIW1fY29udGVudHNMYXllci5pc051bGwoKSkg
ewotICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5
KGZhbHNlKTsKLSAgICAgICAgbV9jb250ZW50c0xheWVyLnJlbW92ZUZyb21QYXJlbnQoKTsKLSAg
ICAgICAgbV9jb250ZW50c0xheWVyLnJlc2V0KCk7Ci0gICAgfQotCiAgICAgbV9jb250ZW50c0xh
eWVyID0gY29udGVudHNMYXllcjsKKyAgICBtX2NvbnRlbnRzTGF5ZXJJZCA9IG1fY29udGVudHNM
YXllci0+aWQoKTsKIAotICAgIGlmICghbV9jb250ZW50c0xheWVyLmlzTnVsbCgpKSB7Ci0gICAg
ICAgIG1fY29udGVudHNMYXllci5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKLSAg
ICAgICAgbV9jb250ZW50c0xheWVyLnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh0cnVl
KTsKKyAgICBpZiAobV9jb250ZW50c0xheWVyKSB7CisgICAgICAgIG1fY29udGVudHNMYXllci0+
c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CisgICAgICAgIG1fY29udGVudHNMYXll
ci0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KHRydWUpOwogCiAgICAgICAgIC8vIEl0
IGlzIG5lY2Vzc2FyeSB0byBjYWxsIHNldERyYXdzQ29udGVudCBhcyBzb29uIGFzIHdlIHJlY2Vp
dmUgdGhlIG5ldyBjb250ZW50c0xheWVyLCBmb3IKICAgICAgICAgLy8gdGhlIGNvcnJlY3RuZXNz
IG9mIGVhcmx5IGV4aXQgY29uZGl0aW9ucyBpbiBzZXREcmF3c0NvbnRlbnQoKSBhbmQgc2V0Q29u
dGVudHNWaXNpYmxlKCkuCi0gICAgICAgIG1fY29udGVudHNMYXllci5zZXREcmF3c0NvbnRlbnQo
bV9jb250ZW50c1Zpc2libGUpOworICAgICAgICBtX2NvbnRlbnRzTGF5ZXItPnNldERyYXdzQ29u
dGVudChtX2NvbnRlbnRzVmlzaWJsZSk7CiAKICAgICAgICAgLy8gSW5zZXJ0IHRoZSBjb250ZW50
IGxheWVyIGZpcnN0LiBWaWRlbyBlbGVtZW50cyByZXF1aXJlIHRoaXMsIGJlY2F1c2UgdGhleSBo
YXZlCiAgICAgICAgIC8vIHNoYWRvdyBjb250ZW50IHRoYXQgbXVzdCBkaXNwbGF5IGluIGZyb250
IG9mIHRoZSB2aWRlby4KLSAgICAgICAgbV9sYXllci5pbnNlcnRDaGlsZChtX2NvbnRlbnRzTGF5
ZXIsIDApOworICAgICAgICBtX2xheWVyLT5sYXllcigpLT5pbnNlcnRDaGlsZChtX2NvbnRlbnRz
TGF5ZXIsIDApOwogCiAgICAgICAgIGlmIChzaG93RGVidWdCb3JkZXJzKCkpIHsKLSAgICAgICAg
ICAgIG1fY29udGVudHNMYXllci5zZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yKDAsIDAsIDEyOCwg
MTgwKS5yZ2IoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRzTGF5ZXIuc2V0RGVidWdCb3JkZXJX
aWR0aCgxKTsKKyAgICAgICAgICAgIG1fY29udGVudHNMYXllci0+c2V0RGVidWdCb3JkZXJDb2xv
cihDb2xvcigwLCAwLCAxMjgsIDE4MCkucmdiKCkpOworICAgICAgICAgICAgbV9jb250ZW50c0xh
eWVyLT5zZXREZWJ1Z0JvcmRlcldpZHRoKDEpOwogICAgICAgICB9CiAgICAgfQogICAgIHVwZGF0
ZURlYnVnSW5kaWNhdG9ycygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAppbmRl
eCAyYTkxNDhjYzRlYzQ1N2I0MGQyZDdlNjIxYWVkZWJhNDQzOTMzNTQ5Li40ZmM4ZDFjZmRmMmY3
MzdkNTg5YTUyNjM4OGViNmQ0NThhMGM3ODk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hyb21pdW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGljc0xheWVyQ2hy
b21pdW0uaApAQCAtMzksNiArMzksNyBAQAogCiAjaW5jbHVkZSA8cHVibGljL1dlYkFuaW1hdGlv
bkRlbGVnYXRlLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllci5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJJbWFnZUxheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtNjIsNiArNjMsOCBAQCBwdWJsaWM6CiAg
ICAgR3JhcGhpY3NMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDbGllbnQqKTsKICAgICB2aXJ0
dWFsIH5HcmFwaGljc0xheWVyQ2hyb21pdW0oKTsKIAorICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVE
ZXN0cm95ZWQoKSBPVkVSUklERTsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXROYW1lKGNvbnN0IFN0
cmluZyYpOwogCiAgICAgdmlydHVhbCBib29sIHNldENoaWxkcmVuKGNvbnN0IFZlY3RvcjxHcmFw
aGljc0xheWVyKj4mKTsKQEAgLTExMCw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250
ZW50c1RvTWVkaWEoUGxhdGZvcm1MYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50
c1RvQ2FudmFzKFBsYXRmb3JtTGF5ZXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNM
YXllcigpIGNvbnN0IHsgcmV0dXJuICFtX2NvbnRlbnRzTGF5ZXIuaXNOdWxsKCk7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaGFzQ29udGVudHNMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNM
YXllcjsgfQogCiAgICAgdmlydHVhbCBib29sIGFkZEFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlvbiosIGNvbnN0
IFN0cmluZyYsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmlt
YXRpb24oY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCk7CkBA
IC0xMzUsMTUgKzEzOCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1h
dGlvblN0YXJ0ZWQoZG91YmxlIHN0YXJ0VGltZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUFuaW1hdGlvbkZpbmlzaGVkKGRvdWJsZSBmaW5pc2hUaW1lKSBPVkVSUklERTsKIAor
ICAgIFdlYktpdDo6V2ViQ29udGVudExheWVyKiBjb250ZW50TGF5ZXIoKSBjb25zdCB7IHJldHVy
biBtX2xheWVyLmdldCgpOyB9CisKICAgICAvLyBFeHBvc2VkIGZvciB0ZXN0cy4KLSAgICBXZWJL
aXQ6OldlYkxheWVyIGNvbnRlbnRzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRzTGF5
ZXI7IH0KKyAgICBXZWJLaXQ6OldlYkxheWVyKiBjb250ZW50c0xheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb250ZW50c0xheWVyOyB9CiAgICAgZmxvYXQgY29udGVudHNTY2FsZSgpIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKLQotICAgIFdl
YktpdDo6V2ViTGF5ZXIgcHJpbWFyeUxheWVyKCkgY29uc3Q7Ci0KICAgICB2b2lkIHVwZGF0ZU5h
bWVzKCk7CiAgICAgdm9pZCB1cGRhdGVDaGlsZExpc3QoKTsKICAgICB2b2lkIHVwZGF0ZUxheWVy
UG9zaXRpb24oKTsKQEAgLTE2MSwyNiArMTYyLDM0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVDb250ZW50c1JlY3QoKTsKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzU2NhbGUoKTsKIAotICAg
IHZvaWQgc2V0dXBDb250ZW50c0xheWVyKFdlYktpdDo6V2ViTGF5ZXIpOworICAgIGVudW0gQ29u
dGVudHNMYXllclB1cnBvc2UgeworICAgICAgICBOb0NvbnRlbnRzTGF5ZXIgPSAwLAorICAgICAg
ICBDb250ZW50c0xheWVyRm9ySW1hZ2UsCisgICAgICAgIENvbnRlbnRzTGF5ZXJGb3JWaWRlbywK
KyAgICAgICAgQ29udGVudHNMYXllckZvckNhbnZhcywKKyAgICB9OworCisgICAgdm9pZCBzZXRD
b250ZW50c1RvKENvbnRlbnRzTGF5ZXJQdXJwb3NlLCBXZWJLaXQ6OldlYkxheWVyKik7CisgICAg
dm9pZCBzZXR1cENvbnRlbnRzTGF5ZXIoV2ViS2l0OjpXZWJMYXllciopOwogCiAgICAgaW50IG1h
cEFuaW1hdGlvbk5hbWVUb0lkKGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSk7CiAKICAgICBT
dHJpbmcgbV9uYW1lQmFzZTsKIAotICAgIFdlYktpdDo6V2ViQ29udGVudExheWVyIG1fbGF5ZXI7
Ci0gICAgV2ViS2l0OjpXZWJMYXllciBtX3RyYW5zZm9ybUxheWVyOwotICAgIFdlYktpdDo6V2Vi
TGF5ZXIgbV9jb250ZW50c0xheWVyOworICAgIE93blB0cjxXZWJLaXQ6OldlYkNvbnRlbnRMYXll
cj4gbV9sYXllcjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJMYXllcj4gbV90cmFuc2Zvcm1MYXll
cjsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJJbWFnZUxheWVyPiBtX2ltYWdlTGF5ZXI7CisgICAg
V2ViS2l0OjpXZWJMYXllciogbV9jb250ZW50c0xheWVyOworICAgIC8vIFdlIGRvbid0IGhhdmUg
b3duZXJzaGlwIG9mIG1fY29udGVudHNMYXllciwgYnV0IHdlIGRvIHdhbnQgdG8ga25vdyBpZiBh
IGdpdmVuIGxheWVyIGlzIHRoZQorICAgIC8vIHNhbWUgYXMgb3VyIGN1cnJlbnQgbGF5ZXIgaW4g
c2V0Q29udGVudHNUbygpLiBTaW5jZSBtX2NvbnRlbnRzTGF5ZXIgbWF5IGJlIGRlbGV0ZWQgYXQg
dGhpcyBwb2ludCwKKyAgICAvLyB3ZSBzdGFzaCBhbiBJRCBhd2F5IHdoZW4gd2Uga25vdyBtX2Nv
bnRlbnRzTGF5ZXIgaXMgYWxpdmUgYW5kIHVzZSB0aGF0IGZvciBjb21wYXJpc29ucyBmcm9tIHRo
YXQgcG9pbnQKKyAgICAvLyBvbi4KKyAgICBpbnQgbV9jb250ZW50c0xheWVySWQ7CisKICAgICBM
aW5rSGlnaGxpZ2h0Q2xpZW50KiBtX2xpbmtIaWdobGlnaHQ7CiAKICAgICBPd25QdHI8T3BhcXVl
UmVjdFRyYWNraW5nQ29udGVudExheWVyRGVsZWdhdGU+IG1fb3BhcXVlUmVjdFRyYWNraW5nQ29u
dGVudExheWVyRGVsZWdhdGU7CiAKLSAgICBlbnVtIENvbnRlbnRzTGF5ZXJQdXJwb3NlIHsKLSAg
ICAgICAgTm9Db250ZW50c0xheWVyID0gMCwKLSAgICAgICAgQ29udGVudHNMYXllckZvckltYWdl
LAotICAgICAgICBDb250ZW50c0xheWVyRm9yVmlkZW8sCi0gICAgICAgIENvbnRlbnRzTGF5ZXJG
b3JDYW52YXMsCi0gICAgfTsKLQogICAgIENvbnRlbnRzTGF5ZXJQdXJwb3NlIG1fY29udGVudHNM
YXllclB1cnBvc2U7CiAgICAgYm9vbCBtX2NvbnRlbnRzTGF5ZXJIYXNCYWNrZ3JvdW5kQ29sb3Ig
OiAxOwogICAgIGJvb2wgbV9pblNldENoaWxkcmVuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAppbmRl
eCAzMGM4MWI2NWM4ZTU4ODIxMDBiYTkxYmU5OGFjN2YxMTkyY2RmMmY0Li40ZTdmYTc0ZjU1NmU5
OWU4ODA0NTlkNTc1MzY2ODRkZDgxYTI4MWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcApAQCAt
MjM0LDEwICsyMzQsMTEgQEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRCb3VuZHMoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICAgICAgc2V0TmVlZHNDb21taXQoKTsKIH0KIAotY29uc3QgTGF5ZXJD
aHJvbWl1bSogTGF5ZXJDaHJvbWl1bTo6cm9vdExheWVyKCkgY29uc3QKK0xheWVyQ2hyb21pdW0q
IExheWVyQ2hyb21pdW06OnJvb3RMYXllcigpCiB7Ci0gICAgY29uc3QgTGF5ZXJDaHJvbWl1bSog
bGF5ZXIgPSB0aGlzOwotICAgIGZvciAoTGF5ZXJDaHJvbWl1bSogcGFyZW50ID0gbGF5ZXItPnBh
cmVudCgpOyBwYXJlbnQ7IGxheWVyID0gcGFyZW50LCBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudCgp
KSB7IH0KKyAgICBMYXllckNocm9taXVtKiBsYXllciA9IHRoaXM7CisgICAgd2hpbGUgKGxheWVy
LT5wYXJlbnQoKSkKKyAgICAgICAgbGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CiAgICAgcmV0dXJu
IGxheWVyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKaW5kZXggZWMxNGE1MWE3YjQ5ODgzZTBlNWZm
N2M2NjJkMGUzNWM5N2QzNWQ1MC4uMmU1NDFlZTdiZWNjM2UzN2I3OWI5NDQ2NGFlNjU1NjY0YTFl
OGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaApAQCAtOTUsNyArOTUsNyBAQCBwdWJsaWM6CiAgICAg
Ly8gVGhlIHJvb3QgbGF5ZXIgaXMgYSBzcGVjaWFsIGNhc2UgLS0gaXQgb3BlcmF0ZXMgaW4gcGh5
c2ljYWwgcGl4ZWxzLgogICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90cmFuc2Zvcm07
IH0KIAotICAgIGNvbnN0IExheWVyQ2hyb21pdW0qIHJvb3RMYXllcigpIGNvbnN0OworICAgIExh
eWVyQ2hyb21pdW0qIHJvb3RMYXllcigpOwogICAgIExheWVyQ2hyb21pdW0qIHBhcmVudCgpIGNv
bnN0OwogICAgIHZvaWQgYWRkQ2hpbGQoUGFzc1JlZlB0cjxMYXllckNocm9taXVtPik7CiAgICAg
dm9pZCBpbnNlcnRDaGlsZChQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+LCBzaXplX3QgaW5kZXgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggN2ZiMGMwZjcwN2UxZDY4OGMxYmU5
MGJkMjM1ZjAzYTBiNmU0NDhlYy4uZmM4NmY4M2IzZGZlODUzOWIxMzVjNDBiZDVhMzhmMTYwYTkz
NzcxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC0xODMsMjYgKzE4MywyNyBA
QAogICAgICAgICAgICAgJ3NyYy9XZWJBbmltYXRpb25JbXBsLmgnLAogICAgICAgICAgICAgJ3Ny
Yy9XZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5jcHAnLAogICAgICAgICAgICAgJ3NyYy9X
ZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVySW1wbC5oJywKLSAgICAgICAgICAgICdzcmMvV2ViQ29u
dGVudExheWVyLmNwcCcsCiAgICAgICAgICAgICAnc3JjL1dlYkNvbnRlbnRMYXllckltcGwuY3Bw
JywKICAgICAgICAgICAgICdzcmMvV2ViQ29udGVudExheWVySW1wbC5oJywKLSAgICAgICAgICAg
ICdzcmMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuY3BwJywKKyAgICAgICAgICAgICdzcmMvV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAnc3JjL1dlYkV4dGVy
bmFsVGV4dHVyZUxheWVySW1wbC5oJywKICAgICAgICAgICAgICdzcmMvV2ViRmxvYXRBbmltYXRp
b25DdXJ2ZS5jcHAnLAotICAgICAgICAgICAgJ3NyYy9XZWJJT1N1cmZhY2VMYXllci5jcHAnLAot
ICAgICAgICAgICAgJ3NyYy9XZWJJbWFnZUxheWVyLmNwcCcsCi0gICAgICAgICAgICAnc3JjL1dl
YkxheWVyLmNwcCcsCisgICAgICAgICAgICAnc3JjL1dlYklPU3VyZmFjZUxheWVySW1wbC5jcHAn
LAorICAgICAgICAgICAgJ3NyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuaCcsCisgICAgICAgICAg
ICAnc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcCcsCisgICAgICAgICAgICAnc3JjL1dlYkltYWdl
TGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3NyYy9XZWJMYXllckltcGwuY3BwJywKICAgICAg
ICAgICAgICdzcmMvV2ViTGF5ZXJJbXBsLmgnLAogICAgICAgICAgICAgJ3NyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcCcsCiAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCcs
CiAgICAgICAgICAgICAnc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgnLAotICAgICAgICAgICAg
J3NyYy9XZWJTY3JvbGxhYmxlTGF5ZXIuY3BwJywKLSAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xs
YmFyTGF5ZXIuY3BwJywKLSAgICAgICAgICAgICdzcmMvV2ViU29saWRDb2xvckxheWVyLmNwcCcs
CisgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5jcHAnLAorICAgICAgICAg
ICAgJ3NyYy9XZWJTY3JvbGxiYXJMYXllckltcGwuaCcsCiAgICAgICAgICAgICAnc3JjL1dlYlNv
bGlkQ29sb3JMYXllckltcGwuY3BwJywKICAgICAgICAgICAgICdzcmMvV2ViU29saWRDb2xvckxh
eWVySW1wbC5oJywKICAgICAgICAgICAgICdzcmMvV2ViVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUu
Y3BwJywKLSAgICAgICAgICAgICdzcmMvV2ViVmlkZW9MYXllci5jcHAnLAorICAgICAgICAgICAg
J3NyYy9XZWJWaWRlb0xheWVySW1wbC5jcHAnLAorICAgICAgICAgICAgJ3NyYy9XZWJWaWRlb0xh
eWVySW1wbC5oJywKICAgICAgICAgXSwKIAogICAgICAgICAnY29uZGl0aW9ucyc6IFsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hsaWdodC5jcHAKaW5kZXggYTYzMTc0ZWQx
YTFjNTljMDRkMWQwZjA4OTY3MzhhMmE3ZWQ4ZDkyNC4uZmEzNGQxZDBkNTI2ZTY1YWZmZTVhOTUz
OTk3MWM5M2I0OGViZWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
TGlua0hpZ2hsaWdodC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hp
Z2hsaWdodC5jcHAKQEAgLTU5LDggKzU5LDggQEAgUGFzc093blB0cjxMaW5rSGlnaGxpZ2h0PiBM
aW5rSGlnaGxpZ2h0OjpjcmVhdGUoTm9kZSogbm9kZSwgV2ViVmlld0ltcGwqIG93bmluZ1cKIH0K
IAogTGlua0hpZ2hsaWdodDo6TGlua0hpZ2hsaWdodChOb2RlKiBub2RlLCBXZWJWaWV3SW1wbCog
b3duaW5nV2ViVmlld0ltcGwpCi0gICAgOiBtX2NvbnRlbnRMYXllcihXZWJDb250ZW50TGF5ZXI6
OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1fY2xpcExheWVyKFdlYkxheWVyOjpjcmVhdGUoKSkKKyAg
ICA6IG1fY29udGVudExheWVyKGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKHRoaXMp
KSkKKyAgICAsIG1fY2xpcExheWVyKGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSkpCiAgICAg
LCBtX25vZGUobm9kZSkKICAgICAsIG1fb3duaW5nV2ViVmlld0ltcGwob3duaW5nV2ViVmlld0lt
cGwpCiAgICAgLCBtX2N1cnJlbnRHcmFwaGljc0xheWVyKDApCkBAIC02OSwxNCArNjksMTQgQEAg
TGlua0hpZ2hsaWdodDo6TGlua0hpZ2hsaWdodChOb2RlKiBub2RlLCBXZWJWaWV3SW1wbCogb3du
aW5nV2ViVmlld0ltcGwpCiAgICAgQVNTRVJUKG1fbm9kZSk7CiAgICAgQVNTRVJUKG93bmluZ1dl
YlZpZXdJbXBsKTsKIAotICAgIG1fY2xpcExheWVyLnNldEFuY2hvclBvaW50KFdlYkZsb2F0UG9p
bnQoKSk7Ci0gICAgbV9jbGlwTGF5ZXIuYWRkQ2hpbGQobV9jb250ZW50TGF5ZXIpOwotICAgIG1f
Y29udGVudExheWVyLnNldERyYXdzQ29udGVudChmYWxzZSk7CisgICAgbV9jbGlwTGF5ZXItPnNl
dEFuY2hvclBvaW50KFdlYkZsb2F0UG9pbnQoKSk7CisgICAgbV9jbGlwTGF5ZXItPmFkZENoaWxk
KG1fY29udGVudExheWVyLT5sYXllcigpKTsKKyAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+
c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKIAogICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gc2hvdyB0
aGUgaGlnaGxpZ2h0IHVudGlsIHN0YXJ0QW5pbWF0aW9uIGlzIGNhbGxlZCwgZXZlbiB0aG91Z2gg
dGhlIGhpZ2hsaWdodAogICAgIC8vIGxheWVyIG1heSBiZSBhZGRlZCB0byB0aGUgdHJlZSBpbW1l
ZGlhdGVseS4KLSAgICBtX2NvbnRlbnRMYXllci5zZXRPcGFjaXR5KDApOwotICAgIG1fY29udGVu
dExheWVyLnNldEFuaW1hdGlvbkRlbGVnYXRlKHRoaXMpOworICAgIG1fY29udGVudExheWVyLT5s
YXllcigpLT5zZXRPcGFjaXR5KDApOworICAgIG1fY29udGVudExheWVyLT5sYXllcigpLT5zZXRB
bmltYXRpb25EZWxlZ2F0ZSh0aGlzKTsKIH0KIAogTGlua0hpZ2hsaWdodDo6fkxpbmtIaWdobGln
aHQoKQpAQCAtODcsMTkgKzg3LDE3IEBAIExpbmtIaWdobGlnaHQ6On5MaW5rSGlnaGxpZ2h0KCkK
IAogV2ViQ29udGVudExheWVyKiBMaW5rSGlnaGxpZ2h0Ojpjb250ZW50TGF5ZXIoKQogewotICAg
IHJldHVybiAmbV9jb250ZW50TGF5ZXI7CisgICAgcmV0dXJuIG1fY29udGVudExheWVyLmdldCgp
OwogfQogCiBXZWJMYXllciogTGlua0hpZ2hsaWdodDo6Y2xpcExheWVyKCkKIHsKLSAgICByZXR1
cm4gJm1fY2xpcExheWVyOworICAgIHJldHVybiBtX2NsaXBMYXllci5nZXQoKTsKIH0KIAogdm9p
ZCBMaW5rSGlnaGxpZ2h0OjpyZWxlYXNlUmVzb3VyY2VzKCkKIHsKICAgICBtX25vZGUuY2xlYXIo
KTsKLSAgICBtX2NvbnRlbnRMYXllci5jbGVhckNsaWVudCgpOwotICAgIG1fY29udGVudExheWVy
LnNldEFuaW1hdGlvbkRlbGVnYXRlKDApOwogfQogCiBSZW5kZXJMYXllciogTGlua0hpZ2hsaWdo
dDo6Y29tcHV0ZUVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXIoKQpAQCAtMTc1LDggKzE3Myw4IEBA
IGJvb2wgTGlua0hpZ2hsaWdodDo6Y29tcHV0ZUhpZ2hsaWdodExheWVyUGF0aEFuZFBvc2l0aW9u
KFJlbmRlckxheWVyKiBjb21wb3NpdGluCiAgICAgSW50UG9pbnQgdGFyZ2V0Q29tcG9zaXRvckFi
c29sdXRlID0gY29tcG9zaXRpbmdMYXllci0+cmVuZGVyZXIoKS0+ZnJhbWUoKS0+dmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKHRhcmdldFdpbmRvdyk7CiAgICAgRmxvYXRQb2ludCB0YXJnZXRDb21w
b3NpdG9yTG9jYWwgPSBjb21wb3NpdGluZ0xheWVyLT5yZW5kZXJlcigpLT5hYnNvbHV0ZVRvTG9j
YWwodGFyZ2V0Q29tcG9zaXRvckFic29sdXRlLCBmYWxzZSwgdHJ1ZSk7CiAKLSAgICBtX2NvbnRl
bnRMYXllci5zZXRCb3VuZHMoV2ViU2l6ZShlbmNsb3NpbmdJbnRSZWN0KG5vZGVCb3VuZHMpLnNp
emUoKSkpOwotICAgIG1fY29udGVudExheWVyLnNldFBvc2l0aW9uKFdlYkZsb2F0UG9pbnQodGFy
Z2V0Q29tcG9zaXRvckxvY2FsKSk7CisgICAgbV9jb250ZW50TGF5ZXItPmxheWVyKCktPnNldEJv
dW5kcyhXZWJTaXplKGVuY2xvc2luZ0ludFJlY3Qobm9kZUJvdW5kcykuc2l6ZSgpKSk7CisgICAg
bV9jb250ZW50TGF5ZXItPmxheWVyKCktPnNldFBvc2l0aW9uKFdlYkZsb2F0UG9pbnQodGFyZ2V0
Q29tcG9zaXRvckxvY2FsKSk7CiAKICAgICByZXR1cm4gcGF0aEhhc0NoYW5nZWQ7CiB9CkBAIC0y
MDAsNyArMTk4LDcgQEAgdm9pZCBMaW5rSGlnaGxpZ2h0OjpzdGFydEhpZ2hsaWdodEFuaW1hdGlv
bigpCiAgICAgLy8gRklYTUU6IFNob3VsZCBkdXJhdGlvbiBiZSBjb25maWd1cmFibGU/CiAgICAg
Y29uc3QgZmxvYXQgZHVyYXRpb24gPSAyOwogCi0gICAgbV9jb250ZW50TGF5ZXIuc2V0T3BhY2l0
eShzdGFydE9wYWNpdHkpOworICAgIG1fY29udGVudExheWVyLT5sYXllcigpLT5zZXRPcGFjaXR5
KHN0YXJ0T3BhY2l0eSk7CiAKICAgICBXZWJGbG9hdEFuaW1hdGlvbkN1cnZlIGN1cnZlOwogICAg
IGN1cnZlLmFkZChXZWJGbG9hdEtleWZyYW1lKDAsIHN0YXJ0T3BhY2l0eSkpOwpAQCAtMjA5LDgg
KzIwNyw4IEBAIHZvaWQgTGlua0hpZ2hsaWdodDo6c3RhcnRIaWdobGlnaHRBbmltYXRpb24oKQog
ICAgIGN1cnZlLmFkZChXZWJGbG9hdEtleWZyYW1lKGR1cmF0aW9uLCBXZWJLaXQ6OmxheW91dFRl
c3RNb2RlKCkgPyBzdGFydE9wYWNpdHkgOiAwKSk7CiAKICAgICBtX2FuaW1hdGlvbiA9IGFkb3B0
UHRyKFdlYkFuaW1hdGlvbjo6Y3JlYXRlKGN1cnZlLCBXZWJBbmltYXRpb246OlRhcmdldFByb3Bl
cnR5T3BhY2l0eSkpOwotICAgIG1fY29udGVudExheWVyLnNldERyYXdzQ29udGVudCh0cnVlKTsK
LSAgICBtX2NvbnRlbnRMYXllci5hZGRBbmltYXRpb24obV9hbmltYXRpb24uZ2V0KCkpOworICAg
IG1fY29udGVudExheWVyLT5sYXllcigpLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CisgICAgbV9j
b250ZW50TGF5ZXItPmxheWVyKCktPmFkZEFuaW1hdGlvbihtX2FuaW1hdGlvbi5nZXQoKSk7CiAK
ICAgICBpbnZhbGlkYXRlKCk7CiAgICAgbV9vd25pbmdXZWJWaWV3SW1wbC0+c2NoZWR1bGVBbmlt
YXRpb24oKTsKQEAgLTI0OSw3ICsyNDcsNyBAQCB2b2lkIExpbmtIaWdobGlnaHQ6OnVwZGF0ZUdl
b21ldHJ5KCkKICAgICBpZiAoY29tcG9zaXRpbmdMYXllciAmJiBjb21wdXRlSGlnaGxpZ2h0TGF5
ZXJQYXRoQW5kUG9zaXRpb24oY29tcG9zaXRpbmdMYXllcikpIHsKICAgICAgICAgLy8gV2Ugb25s
eSBuZWVkIHRvIGludmFsaWRhdGUgdGhlIGxheWVyIGlmIHRoZSBoaWdobGlnaHQgc2l6ZSBoYXMg
Y2hhbmdlZCwgb3RoZXJ3aXNlCiAgICAgICAgIC8vIHdlIGNhbiBqdXN0IHJlLXBvc2l0aW9uIHRo
ZSBsYXllciB3aXRob3V0IG5lZWRpbmcgdG8gcmVwYWludC4KLSAgICAgICAgbV9jb250ZW50TGF5
ZXIuaW52YWxpZGF0ZSgpOworICAgICAgICBtX2NvbnRlbnRMYXllci0+bGF5ZXIoKS0+aW52YWxp
ZGF0ZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvTGlua0hpZ2hsaWdodC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTGlua0hpZ2hs
aWdodC5oCmluZGV4IDg3NjJmMjNhY2Q2NGIyOTQwNTI5YjQwZjBjMzI4NWNkNTYyN2Y0MWYuLjRl
YjZmNTk2N2I0YmM2YzQ1MzhjMDk4NDdmZjA4ODgxM2Q4OGQ5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xpbmtIaWdobGlnaHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9MaW5rSGlnaGxpZ2h0LmgKQEAgLTgwLDggKzgwLDggQEAgcHJpdmF0ZToK
ICAgICAvLyBzaXplIHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8gdGhpcyBmdW5jdGlvbi4KICAgICBi
b29sIGNvbXB1dGVIaWdobGlnaHRMYXllclBhdGhBbmRQb3NpdGlvbihXZWJDb3JlOjpSZW5kZXJM
YXllciopOwogCi0gICAgV2ViQ29udGVudExheWVyIG1fY29udGVudExheWVyOwotICAgIFdlYkxh
eWVyIG1fY2xpcExheWVyOworICAgIE93blB0cjxXZWJDb250ZW50TGF5ZXI+IG1fY29udGVudExh
eWVyOworICAgIE93blB0cjxXZWJMYXllcj4gbV9jbGlwTGF5ZXI7CiAgICAgV2ViQ29yZTo6UGF0
aCBtX3BhdGg7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbV9ub2RlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5j
cHAKaW5kZXggNjVkYWM2MmNhZTI1M2Q1MTY1ODc1Y2U0ZTMzNmJlODVmOTc4YzFiYS4uNGRmNDIw
NGIzNDdiYzhkY2U4N2YxM2E2ZmIwYzYyMzQ1ZTcwY2MxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25Db21wb3NpdGVkQ29udGVudEhvc3QuY3BwCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0xheWVy
Q2hyb21pdW0uaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCiAjaW5jbHVkZSAi
V2ViVmlld0ltcGwuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+CkBAIC00
OCwxMSArNDksMTEgQEAgTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0OjpOb25Db21wb3NpdGVkQ29u
dGVudEhvc3QoV2ViVmlld0ltcGwqIHdlYlZpZXcpCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRO
YW1lKCJub24tY29tcG9zaXRlZCBjb250ZW50Iik7CiAjZW5kaWYKICAgICBtX2dyYXBoaWNzTGF5
ZXItPnNldERyYXdzQ29udGVudCh0cnVlKTsKLSAgICBXZWJDb250ZW50TGF5ZXIgbGF5ZXIgPSBt
X2dyYXBoaWNzTGF5ZXItPnBsYXRmb3JtTGF5ZXIoKS0+dG88V2ViQ29udGVudExheWVyPigpOwot
ICAgIGxheWVyLnNldFVzZUxDRFRleHQodHJ1ZSk7Ci0gICAgbGF5ZXIuc2V0T3BhcXVlKHRydWUp
OworICAgIFdlYkNvbnRlbnRMYXllciogbGF5ZXIgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpHcmFw
aGljc0xheWVyQ2hyb21pdW0qPihtX2dyYXBoaWNzTGF5ZXIuZ2V0KCkpLT5jb250ZW50TGF5ZXIo
KTsKKyAgICBsYXllci0+c2V0VXNlTENEVGV4dCh0cnVlKTsKKyAgICBsYXllci0+bGF5ZXIoKS0+
c2V0T3BhcXVlKHRydWUpOwogI2lmICFPUyhBTkRST0lEKQotICAgIGxheWVyLnNldERyYXdDaGVj
a2VyYm9hcmRGb3JNaXNzaW5nVGlsZXModHJ1ZSk7CisgICAgbGF5ZXItPnNldERyYXdDaGVja2Vy
Ym9hcmRGb3JNaXNzaW5nVGlsZXModHJ1ZSk7CiAjZW5kaWYKIH0KIApAQCAtODAsNyArODEsNyBA
QCB2b2lkIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2V0U2Nyb2xsTGF5ZXIoV2ViQ29yZTo6
R3JhcGhpY3NMYXllciogbGF5ZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
KmxheWVyLT5wbGF0Zm9ybUxheWVyKCkgPT0gc2Nyb2xsTGF5ZXIoKSkKKyAgICBpZiAobGF5ZXIt
PnBsYXRmb3JtTGF5ZXIoKSA9PSBzY3JvbGxMYXllcigpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBsYXllci0+YWRkQ2hpbGRBdEluZGV4KG1fZ3JhcGhpY3NMYXllci5nZXQoKSwgMCk7CkBAIC05
NSwxMiArOTYsMTIgQEAgdm9pZCBOb25Db21wb3NpdGVkQ29udGVudEhvc3Q6OnNldFZpZXdwb3J0
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHZpZXdwb3J0U2l6ZSwKICAgICBib29sIHZpc2libGVS
ZWN0Q2hhbmdlZCA9IG1fdmlld3BvcnRTaXplICE9IHZpZXdwb3J0U2l6ZTsKIAogICAgIG1fdmll
d3BvcnRTaXplID0gdmlld3BvcnRTaXplOwotICAgIFdlYlNjcm9sbGFibGVMYXllciBsYXllciA9
IHNjcm9sbExheWVyKCk7Ci0gICAgbGF5ZXIuc2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRp
b24gKyBzY3JvbGxPcmlnaW4pOwotICAgIGxheWVyLnNldFBvc2l0aW9uKFdlYkZsb2F0UG9pbnQo
LXNjcm9sbFBvc2l0aW9uKSk7CisgICAgV2ViTGF5ZXIqIGxheWVyID0gc2Nyb2xsTGF5ZXIoKTsK
KyAgICBsYXllci0+c2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9zaXRpb24gKyBzY3JvbGxPcmln
aW4pOworICAgIGxheWVyLT5zZXRQb3NpdGlvbihXZWJGbG9hdFBvaW50KC1zY3JvbGxQb3NpdGlv
bikpOwogICAgIC8vIER1ZSB0byB0aGUgcG9zc2liaWxpdHkgb2YgcGluY2ggem9vbSwgdGhlIG5v
bmNvbXBvc2l0ZWQgbGF5ZXIgaXMgYWx3YXlzCiAgICAgLy8gYXNzdW1lZCB0byBiZSBzY3JvbGxh
YmxlLgotICAgIGxheWVyLnNldFNjcm9sbGFibGUodHJ1ZSk7CisgICAgbGF5ZXItPnNldFNjcm9s
bGFibGUodHJ1ZSk7CiAgICAgbV9kZXZpY2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxlOwogICAg
IG1fZ3JhcGhpY3NMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CiAgICAg
bV9ncmFwaGljc0xheWVyLT5zZXRTaXplKGNvbnRlbnRzU2l6ZSk7CkBAIC0xMjcsMTEgKzEyOCwx
MSBAQCBib29sIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6aGF2ZVNjcm9sbExheWVyKCkKICAg
ICByZXR1cm4gbV9ncmFwaGljc0xheWVyLT5wYXJlbnQoKTsKIH0KIAotV2ViU2Nyb2xsYWJsZUxh
eWVyIE5vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2Nyb2xsTGF5ZXIoKQorV2ViTGF5ZXIqIE5v
bkNvbXBvc2l0ZWRDb250ZW50SG9zdDo6c2Nyb2xsTGF5ZXIoKQogewogICAgIGlmICghbV9ncmFw
aGljc0xheWVyLT5wYXJlbnQoKSkKLSAgICAgICAgcmV0dXJuIFdlYlNjcm9sbGFibGVMYXllcigp
OwotICAgIHJldHVybiBtX2dyYXBoaWNzTGF5ZXItPnBhcmVudCgpLT5wbGF0Zm9ybUxheWVyKCkt
PnRvPFdlYlNjcm9sbGFibGVMYXllcj4oKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IG1fZ3JhcGhpY3NMYXllci0+cGFyZW50KCktPnBsYXRmb3JtTGF5ZXIoKTsKIH0KIAogdm9pZCBO
b25Db21wb3NpdGVkQ29udGVudEhvc3Q6OmludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Ob25D
b21wb3NpdGVkQ29udGVudEhvc3QuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNv
bXBvc2l0ZWRDb250ZW50SG9zdC5oCmluZGV4IGU2MGU5ZWY0ODZiMTQyMzEyNDcxM2M2OGRkNmFh
YzBlZWE0YTdkYjMuLjA4YjVmNmE0MWY3NzA2MWU3ZWIyODE1NDJmMGZlOGU2MzVmY2M3M2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250ZW50
SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL05vbkNvbXBvc2l0ZWRDb250
ZW50SG9zdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVu
dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxh
YmxlTGF5ZXIuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KICNpbmNsdWRlIDx3dGYv
Tm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9kZXZpY2VTY2Fs
ZUZhY3RvcjsgfQogCiAgICAgYm9vbCBoYXZlU2Nyb2xsTGF5ZXIoKTsKLSAgICBXZWJTY3JvbGxh
YmxlTGF5ZXIgc2Nyb2xsTGF5ZXIoKTsKKyAgICBXZWJMYXllciogc2Nyb2xsTGF5ZXIoKTsKIAog
ICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX2dyYXBoaWNzTGF5ZXI7CiAgICAg
V2ViVmlld0ltcGwqIG1fd2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkNvbnRlbnRMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJDb250ZW50TGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmE3NDY1
YjE3YzEzMTY3Njk4OGZhNjVhOGQ2YmEwNGZiNDdjNjY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNv
bnRlbnRMYXllci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaD4KLQot
I2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiV2ViQ29udGVudExh
eWVySW1wbC5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktp
dCB7Ci0KLVdlYkNvbnRlbnRMYXllciBXZWJDb250ZW50TGF5ZXI6OmNyZWF0ZShXZWJDb250ZW50
TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCi17Ci0gICAgcmV0dXJuIFdlYkNvbnRlbnRMYXll
cihXZWJDb250ZW50TGF5ZXJJbXBsOjpjcmVhdGUoY29udGVudENsaWVudCkpOwotfQotCi12b2lk
IFdlYkNvbnRlbnRMYXllcjo6Y2xlYXJDbGllbnQoKQotewotICAgIHVud3JhcDxDb250ZW50TGF5
ZXJDaHJvbWl1bT4oKS0+Y2xlYXJEZWxlZ2F0ZSgpOwotfQotCi12b2lkIFdlYkNvbnRlbnRMYXll
cjo6c2V0RG91YmxlU2lkZWQoYm9vbCBkb3VibGVTaWRlZCkKLXsKLSAgICBtX3ByaXZhdGUtPnNl
dERvdWJsZVNpZGVkKGRvdWJsZVNpZGVkKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNl
dENvbnRlbnRzU2NhbGUoZmxvYXQgc2NhbGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRDb250ZW50
c1NjYWxlKHNjYWxlKTsKLX0KLQotdm9pZCBXZWJDb250ZW50TGF5ZXI6OnNldFVzZUxDRFRleHQo
Ym9vbCBlbmFibGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRVc2VMQ0RUZXh0KGVuYWJsZSk7Ci19
Ci0KLXZvaWQgV2ViQ29udGVudExheWVyOjpzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1Rp
bGVzKGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0RHJhd0NoZWNrZXJib2FyZEZv
ck1pc3NpbmdUaWxlcyhlbmFibGUpOwotfQotCi1XZWJDb250ZW50TGF5ZXI6OldlYkNvbnRlbnRM
YXllcihjb25zdCBQYXNzUmVmUHRyPENvbnRlbnRMYXllckNocm9taXVtPiYgbm9kZSkKLSAgICA6
IFdlYlNjcm9sbGFibGVMYXllcihub2RlKQotewotfQotCi1XZWJDb250ZW50TGF5ZXImIFdlYkNv
bnRlbnRMYXllcjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hyb21p
dW0+JiBub2RlKQotewotICAgIG1fcHJpdmF0ZSA9IG5vZGU7Ci0gICAgcmV0dXJuICp0aGlzOwot
fQotCi1XZWJDb250ZW50TGF5ZXI6Om9wZXJhdG9yIFBhc3NSZWZQdHI8Q29udGVudExheWVyQ2hy
b21pdW0+KCkgY29uc3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q29udGVudExheWVyQ2hy
b21pdW0qPihtX3ByaXZhdGUuZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAK
aW5kZXggNjlkYTFlYTNmMGU4OTIwMTY5NmQ4ZGRlYzc2NDhlNGY0NjRjOTY0OC4uZmEyMWU4OTc0
ZmQzYjFiOTgwNmE1YzJlMWNhOTllNjljNjk4ZGNhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAKQEAgLTI2LDM3ICsyNiw2NiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllckltcGwuaCIK
IAorI2luY2x1ZGUgIlNrTWF0cml4NDQuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExh
eWVyQ2xpZW50Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UG9pbnQuaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKLVBhc3NSZWZQdHI8V2ViQ29udGVudExheWVySW1wbD4gV2Vi
Q29udGVudExheWVySW1wbDo6Y3JlYXRlKFdlYkNvbnRlbnRMYXllckNsaWVudCogY29udGVudENs
aWVudCkKK1dlYkNvbnRlbnRMYXllciogV2ViQ29udGVudExheWVyOjpjcmVhdGUoV2ViQ29udGVu
dExheWVyQ2xpZW50KiBjbGllbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDb250
ZW50TGF5ZXJJbXBsKGNvbnRlbnRDbGllbnQpKTsKKyAgICByZXR1cm4gbmV3IFdlYkNvbnRlbnRM
YXllckltcGwoY2xpZW50KTsKIH0KIAotV2ViQ29udGVudExheWVySW1wbDo6V2ViQ29udGVudExh
eWVySW1wbChXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCi0gICAgOiBDb250
ZW50TGF5ZXJDaHJvbWl1bSh0aGlzKQotICAgICwgbV9jb250ZW50Q2xpZW50KGNvbnRlbnRDbGll
bnQpCitXZWJDb250ZW50TGF5ZXJJbXBsOjpXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkNvbnRlbnRM
YXllckNsaWVudCogY2xpZW50KQorICAgIDogbV93ZWJMYXllckltcGwoYWRvcHRQdHIobmV3IFdl
YkxheWVySW1wbChDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMpKSkpCisgICAgLCBt
X2NsaWVudChjbGllbnQpCiB7Ci0gICAgc2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAgICBtX3dlYkxh
eWVySW1wbC0+bGF5ZXIoKS0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKIH0KIAogV2ViQ29udGVudExh
eWVySW1wbDo6fldlYkNvbnRlbnRMYXllckltcGwoKQogewotICAgIGNsZWFyRGVsZWdhdGUoKTsK
KyAgICBzdGF0aWNfY2FzdDxDb250ZW50TGF5ZXJDaHJvbWl1bSo+KG1fd2ViTGF5ZXJJbXBsLT5s
YXllcigpKS0+Y2xlYXJEZWxlZ2F0ZSgpOwogfQogCitXZWJMYXllciogV2ViQ29udGVudExheWVy
SW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVybiBtX3dlYkxheWVySW1wbC5nZXQoKTsKK30KKwor
dm9pZCBXZWJDb250ZW50TGF5ZXJJbXBsOjpzZXREb3VibGVTaWRlZChib29sIGRvdWJsZVNpZGVk
KQoreworICAgIG1fd2ViTGF5ZXJJbXBsLT5sYXllcigpLT5zZXREb3VibGVTaWRlZChkb3VibGVT
aWRlZCk7Cit9CisKK3ZvaWQgV2ViQ29udGVudExheWVySW1wbDo6c2V0Q29udGVudHNTY2FsZShm
bG9hdCBzY2FsZSkKK3sKKyAgICBtX3dlYkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0Q29udGVudHNT
Y2FsZShzY2FsZSk7Cit9CisKK3ZvaWQgV2ViQ29udGVudExheWVySW1wbDo6c2V0VXNlTENEVGV4
dChib29sIGVuYWJsZSkKK3sKKyAgICBtX3dlYkxheWVySW1wbC0+bGF5ZXIoKS0+c2V0VXNlTENE
VGV4dChlbmFibGUpOworfQorCit2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnNldERyYXdDaGVj
a2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoYm9vbCBlbmFibGUpCit7CisgICAgbV93ZWJMYXllcklt
cGwtPmxheWVyKCktPnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoZW5hYmxlKTsK
K30KKworCiB2b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnBhaW50Q29udGVudHMoU2tDYW52YXMq
IGNhbnZhcywgY29uc3QgSW50UmVjdCYgY2xpcCwgRmxvYXRSZWN0JiBvcGFxdWUpCiB7Ci0gICAg
aWYgKCFtX2NvbnRlbnRDbGllbnQpCisgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJu
OwogICAgIFdlYkZsb2F0UmVjdCB3ZWJPcGFxdWU7Ci0gICAgbV9jb250ZW50Q2xpZW50LT5wYWlu
dENvbnRlbnRzKGNhbnZhcywgV2ViUmVjdChjbGlwKSwgd2ViT3BhcXVlKTsKKyAgICBtX2NsaWVu
dC0+cGFpbnRDb250ZW50cyhjYW52YXMsIFdlYlJlY3QoY2xpcCksIHdlYk9wYXF1ZSk7CiAgICAg
b3BhcXVlID0gd2ViT3BhcXVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKaW5kZXggOTc3MjllYTFlMGMyMDFhMDhiMWY5MDkwN2E2
MjgyODFhNGUxMGI1OS4uNTExZjhlMGJhMDg2MGI0NmEwODE1NjVmMDk4N2RmZjBlOGFjYjVmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwu
aApAQCAtMjcsMjMgKzI3LDMzIEBACiAjZGVmaW5lIFdlYkNvbnRlbnRMYXllckltcGxfaAogCiAj
aW5jbHVkZSAiQ29udGVudExheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwu
aCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29udGVudExheWVyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJDb250ZW50TGF5ZXJD
bGllbnQ7CiAKLWNsYXNzIFdlYkNvbnRlbnRMYXllckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q29u
dGVudExheWVyQ2hyb21pdW0sIHB1YmxpYyBXZWJDb3JlOjpDb250ZW50TGF5ZXJEZWxlZ2F0ZSB7
CitjbGFzcyBXZWJDb250ZW50TGF5ZXJJbXBsIDogcHVibGljIFdlYkNvbnRlbnRMYXllciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVyRGVs
ZWdhdGUgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllcklt
cGw+IGNyZWF0ZShXZWJDb250ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpOworICAgIGV4
cGxpY2l0IFdlYkNvbnRlbnRMYXllckltcGwoV2ViQ29udGVudExheWVyQ2xpZW50Kik7CisKKyAg
ICAvLyBXZWJDb250ZW50TGF5ZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJMYXll
ciogbGF5ZXIoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RG91YmxlU2lkZWQoYm9v
bCkgIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1NjYWxlKGZsb2F0KSAg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFVzZUxDRFRleHQoYm9vbCkgIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3Q2hlY2tlcmJvYXJkRm9yTWlzc2luZ1RpbGVzKGJv
b2wpICBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IFdlYkNvbnRlbnRMYXll
ckltcGwoV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKICAgICB2aXJ0dWFs
IH5XZWJDb250ZW50TGF5ZXJJbXBsKCk7CiAKICAgICAvLyBDb250ZW50TGF5ZXJEZWxlZ2F0ZSBp
bXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhTa0NhbnZhcyos
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXAsIFdlYkNvcmU6OkZsb2F0UmVjdCYgb3BhcXVl
KSBPVkVSUklERTsKIAotICAgIFdlYkNvbnRlbnRMYXllckNsaWVudCogbV9jb250ZW50Q2xpZW50
OworICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fd2ViTGF5ZXJJbXBsOworICAgIFdlYkNvbnRl
bnRMYXllckNsaWVudCogbV9jbGllbnQ7CiAgICAgYm9vbCBtX2RyYXdzQ29udGVudDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVy
ZUxheWVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDRhZmY1NzIxOTRjMDhh
OWJhODNmYTkzNTNiYzRjNWYxYTMxNmJkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIuaD4KLQotI2luY2x1ZGUgIkNDVGV4dHVyZVVwZGF0ZVF1ZXVlLmgiCi0jaW5jbHVkZSAiVGV4
dHVyZUxheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJl
TGF5ZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmxvYXRSZWN0Lmg+Ci0jaW5jbHVk
ZSA8cHVibGljL1dlYlNpemUuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1jbGFzcyBXZWJUZXh0dXJlVXBkYXRlckltcGwgOiBwdWJsaWMgV2Vi
VGV4dHVyZVVwZGF0ZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYlRleHR1cmVVcGRhdGVy
SW1wbChDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgcXVldWUpCi0gICAgICAgIDogbV9xdWV1ZShxdWV1
ZSkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGFwcGVuZENvcHkodW5zaWduZWQg
c291cmNlVGV4dHVyZSwgdW5zaWduZWQgZGVzdGluYXRpb25UZXh0dXJlLCBXZWJTaXplIHNpemUp
IE9WRVJSSURFCi0gICAgewotICAgICAgICBUZXh0dXJlQ29waWVyOjpQYXJhbWV0ZXJzIGNvcHkg
PSB7IHNvdXJjZVRleHR1cmUsIGRlc3RpbmF0aW9uVGV4dHVyZSwgc2l6ZSB9OwotICAgICAgICBt
X3F1ZXVlLmFwcGVuZENvcHkoY29weSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIENDVGV4dHVy
ZVVwZGF0ZVF1ZXVlJiBtX3F1ZXVlOwotfTsKLQotY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXJJbXBsIDogcHVibGljIFRleHR1cmVMYXllckNocm9taXVtQ2xpZW50LCBwdWJsaWMgVGV4dHVy
ZUxheWVyQ2hyb21pdW0gewotcHVibGljOgotICAgIGV4cGxpY2l0IFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbChXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVudCogY2xpZW50KQotICAgICAg
ICA6IFRleHR1cmVMYXllckNocm9taXVtKGNsaWVudCA/IHRoaXMgOiAwKQotICAgICAgICAsIG1f
Y2xpZW50KGNsaWVudCkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB1bnNpZ25lZCBwcmVw
YXJlVGV4dHVyZShDQ1RleHR1cmVVcGRhdGVRdWV1ZSYgcXVldWUpIE9WRVJSSURFCi0gICAgewot
ICAgICAgICBXZWJUZXh0dXJlVXBkYXRlckltcGwgdXBkYXRlckltcGwocXVldWUpOwotICAgICAg
ICByZXR1cm4gbV9jbGllbnQtPnByZXBhcmVUZXh0dXJlKHVwZGF0ZXJJbXBsKTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSBPVkVS
UklERQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5jb250ZXh0KCk7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBtX2NsaWVudDsK
LX07Ci0KLVdlYkV4dGVybmFsVGV4dHVyZUxheWVyIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpj
cmVhdGUoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKLXsKLSAgICBSZWZQ
dHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGxheWVyID0gYWRvcHRSZWYobmV3IFdlYkV4dGVybmFs
VGV4dHVyZUxheWVySW1wbChjbGllbnQpKTsKLSAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVl
KTsKLSAgICByZXR1cm4gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIobGF5ZXIucmVsZWFzZSgpKTsK
LX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y2xlYXJDbGllbnQoKQotewotICAg
IHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+Y2xlYXJDbGllbnQoKTsKLX0KLQotdm9p
ZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0VGV4dHVyZUlkKHVuc2lnbmVkIGlkKQotewot
ICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0VGV4dHVyZUlkKGlkKTsKLX0K
LQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6c2V0RmxpcHBlZChib29sIGZsaXBwZWQp
Ci17Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVtPigpLT5zZXRGbGlwcGVkKGZsaXBw
ZWQpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpzZXRVVlJlY3QoY29uc3Qg
V2ViRmxvYXRSZWN0JiByZWN0KQotewotICAgIHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4o
KS0+c2V0VVZSZWN0KHJlY3QpOwotfQotCi12b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpz
ZXRPcGFxdWUoYm9vbCBvcGFxdWUpCi17Ci0gICAgdW53cmFwPFRleHR1cmVMYXllckNocm9taXVt
PigpLT5zZXRPcGFxdWUob3BhcXVlKTsKLX0KLQotdm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXll
cjo6c2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKQotewotICAg
IHVud3JhcDxUZXh0dXJlTGF5ZXJDaHJvbWl1bT4oKS0+c2V0UHJlbXVsdGlwbGllZEFscGhhKHBy
ZW11bHRpcGxpZWRBbHBoYSk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6Ondp
bGxNb2RpZnlUZXh0dXJlKCkKLXsKLSAgICB1bndyYXA8VGV4dHVyZUxheWVyQ2hyb21pdW0+KCkt
PndpbGxNb2RpZnlUZXh0dXJlKCk7Ci19Ci0KLXZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXI6
OnNldFJhdGVMaW1pdENvbnRleHQoYm9vbCByYXRlTGltaXQpCi17Ci0gICAgdW53cmFwPFRleHR1
cmVMYXllckNocm9taXVtPigpLT5zZXRSYXRlTGltaXRDb250ZXh0KHJhdGVMaW1pdCk7Ci19Ci0K
LVdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpXZWJFeHRlcm5hbFRleHR1cmVMYXllcihQYXNzUmVm
UHRyPFRleHR1cmVMYXllckNocm9taXVtPiBsYXllcikKLSAgICA6IFdlYkxheWVyKGxheWVyKQot
ewotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ2MjE2NmY0NDQxNTY4ZGI0YTJmNTk2NzQ1ZDUxM2VlMmFlOGMyMzEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGwuY3BwCkBAIC0wLDAgKzEsMTMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbC5oIgorCisjaW5jbHVkZSAiQ0NU
ZXh0dXJlVXBkYXRlUXVldWUuaCIKKyNpbmNsdWRlICJUZXh0dXJlTGF5ZXJDaHJvbWl1bS5oIgor
I2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJFeHRlcm5hbFRl
eHR1cmVMYXllckNsaWVudC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYkV4dGVybmFsVGV4dHVyZUxheWVyKiBXZWJFeHRlcm5h
bFRleHR1cmVMYXllcjo6Y3JlYXRlKFdlYkV4dGVybmFsVGV4dHVyZUxheWVyQ2xpZW50KiBjbGll
bnQpCit7CisgICAgcmV0dXJuIG5ldyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwoY2xpZW50
KTsKK30KKworV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGwoV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqIGNsaWVudCkKKyAgICA6IG1f
Y2xpZW50KGNsaWVudCkKK3sKKyAgICBSZWZQdHI8VGV4dHVyZUxheWVyQ2hyb21pdW0+IGxheWVy
OworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbGF5ZXIgPSBUZXh0dXJlTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKHRoaXMpOworICAgIGVsc2UKKyAgICAgICAgbGF5ZXIgPSBUZXh0dXJlTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKDApOworICAgIGxheWVyLT5zZXRJc0RyYXdhYmxlKHRydWUpOworICAg
IG1fbGF5ZXIgPSBhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBsKGxheWVyLnJlbGVhc2UoKSkpOwor
fQorCitXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6On5XZWJFeHRlcm5hbFRleHR1cmVMYXll
ckltcGwoKQoreworICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXll
ci0+bGF5ZXIoKSktPmNsZWFyQ2xpZW50KCk7Cit9CisKK1dlYkxheWVyKiBXZWJFeHRlcm5hbFRl
eHR1cmVMYXllckltcGw6OmxheWVyKCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30K
Kwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldFRleHR1cmVJZCh1bnNpZ25l
ZCBpZCkKK3sKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXIt
PmxheWVyKCkpLT5zZXRUZXh0dXJlSWQoaWQpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6c2V0RmxpcHBlZChib29sIGZsaXBwZWQpCit7CisgICAgc3RhdGljX2Nhc3Q8
VGV4dHVyZUxheWVyQ2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0RmxpcHBlZChmbGlw
cGVkKTsKK30KKwordm9pZCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGw6OnNldFVWUmVjdChj
b25zdCBXZWJGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZUxheWVy
Q2hyb21pdW0qPihtX2xheWVyLT5sYXllcigpKS0+c2V0VVZSZWN0KHJlY3QpOworfQorCit2b2lk
IFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1wbDo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQorewor
ICAgIHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSkt
PnNldE9wYXF1ZShvcGFxdWUpOworfQorCit2b2lkIFdlYkV4dGVybmFsVGV4dHVyZUxheWVySW1w
bDo6c2V0UHJlbXVsdGlwbGllZEFscGhhKGJvb2wgcHJlbXVsdGlwbGllZEFscGhhKQoreworICAg
IHN0YXRpY19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNl
dFByZW11bHRpcGxpZWRBbHBoYShwcmVtdWx0aXBsaWVkQWxwaGEpOworfQorCit2b2lkIFdlYkV4
dGVybmFsVGV4dHVyZUxheWVySW1wbDo6d2lsbE1vZGlmeVRleHR1cmUoKQoreworICAgIHN0YXRp
Y19jYXN0PFRleHR1cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPndpbGxNb2Rp
ZnlUZXh0dXJlKCk7Cit9CisKK3ZvaWQgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBsOjpzZXRS
YXRlTGltaXRDb250ZXh0KGJvb2wgcmF0ZUxpbWl0KQoreworICAgIHN0YXRpY19jYXN0PFRleHR1
cmVMYXllckNocm9taXVtKj4obV9sYXllci0+bGF5ZXIoKSktPnNldFJhdGVMaW1pdENvbnRleHQo
cmF0ZUxpbWl0KTsKK30KKworY2xhc3MgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIDogcHVibGljIFdl
YlRleHR1cmVVcGRhdGVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJUZXh0dXJlVXBkYXRl
ckltcGwoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKQorICAgICAgICA6IG1fcXVldWUocXVl
dWUpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRDb3B5KHVuc2lnbmVk
IHNvdXJjZVRleHR1cmUsIHVuc2lnbmVkIGRlc3RpbmF0aW9uVGV4dHVyZSwgV2ViU2l6ZSBzaXpl
KSBPVkVSUklERQorICAgIHsKKyAgICAgICAgVGV4dHVyZUNvcGllcjo6UGFyYW1ldGVycyBjb3B5
ID0geyBzb3VyY2VUZXh0dXJlLCBkZXN0aW5hdGlvblRleHR1cmUsIHNpemUgfTsKKyAgICAgICAg
bV9xdWV1ZS5hcHBlbmRDb3B5KGNvcHkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBDQ1RleHR1
cmVVcGRhdGVRdWV1ZSYgbV9xdWV1ZTsKK307CisKK3Vuc2lnbmVkIFdlYkV4dGVybmFsVGV4dHVy
ZUxheWVySW1wbDo6cHJlcGFyZVRleHR1cmUoQ0NUZXh0dXJlVXBkYXRlUXVldWUmIHF1ZXVlKQor
eworICAgIEFTU0VSVChtX2NsaWVudCk7CisgICAgV2ViVGV4dHVyZVVwZGF0ZXJJbXBsIHVwZGF0
ZXJJbXBsKHF1ZXVlKTsKKyAgICByZXR1cm4gbV9jbGllbnQtPnByZXBhcmVUZXh0dXJlKHVwZGF0
ZXJJbXBsKTsKK30KKworV2ViR3JhcGhpY3NDb250ZXh0M0QqIFdlYkV4dGVybmFsVGV4dHVyZUxh
eWVySW1wbDo6Y29udGV4dCgpCit7CisgICAgQVNTRVJUKG1fY2xpZW50KTsKKyAgICByZXR1cm4g
bV9jbGllbnQtPmNvbnRleHQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRlcm5hbFRleHR1cmVMYXllcklt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
SW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUzNDg4OTViZjFjZDUzYjU0NDkzYjIzNTdkMDgxOTYyYmY1ODM0
ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFeHRl
cm5hbFRleHR1cmVMYXllckltcGwuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBX
ZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGxfaAorI2RlZmluZSBXZWJFeHRlcm5hbFRleHR1cmVM
YXllckltcGxfaAorCisjaW5jbHVkZSAiVGV4dHVyZUxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYkxheWVySW1wbDsKKworY2xhc3MgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJ
bXBsIDogcHVibGljIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFdlYkNvcmU6OlRleHR1cmVMYXllckNocm9taXVtQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJFeHRlcm5hbFRleHR1cmVMYXllckltcGwo
V2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5XZWJFeHRlcm5h
bFRleHR1cmVMYXllckltcGwoKTsKKworICAgIC8vIFdlYkV4dGVybmFsVGV4dHVyZUxheWVyIGlt
cGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldFRleHR1cmVJZCh1bnNpZ25lZCkgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldEZsaXBwZWQoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFVWUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0T3BhcXVlKGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVtdWx0aXBs
aWVkQWxwaGEoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxNb2RpZnlUZXh0
dXJlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFJhdGVMaW1pdENvbnRleHQoYm9v
bCkgT1ZFUlJJREU7CisKKyAgICAvLyBUZXh0dXJlTGF5ZXJDaHJvbWl1bUNsaWVudCBpbXBsZW1l
bnRhdGlvbi4KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIHByZXBhcmVUZXh0dXJlKFdlYkNvcmU6OkND
VGV4dHVyZVVwZGF0ZVF1ZXVlJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJHcmFwaGljc0Nv
bnRleHQzRCogY29udGV4dCgpIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyQ2xpZW50KiBtX2NsaWVudDsKKyAgICBPd25QdHI8V2ViTGF5ZXJJbXBsPiBt
X2xheWVyOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJJbXBs
X2gKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNl
TGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2RiMGM4Nzc3N2ZmYjQ1ZmM4M2Jj
OTkwZDVlZGY5MjU0ZmI4NTEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklPU3VyZmFjZUxheWVyLmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYklPU3VyZmFjZUxheWVyLmg+Ci0KLSNpbmNsdWRlICJJ
T1N1cmZhY2VMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlNpemUuaD4KLQot
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJJT1N1
cmZhY2VMYXllciBXZWJJT1N1cmZhY2VMYXllcjo6Y3JlYXRlKCkKLXsKLSAgICBSZWZQdHI8SU9T
dXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIgPSBJT1N1cmZhY2VMYXllckNocm9taXVtOjpjcmVh
dGUoKTsKLSAgICBsYXllci0+c2V0SXNEcmF3YWJsZSh0cnVlKTsKLSAgICByZXR1cm4gV2ViSU9T
dXJmYWNlTGF5ZXIobGF5ZXIucmVsZWFzZSgpKTsKLX0KLQotdm9pZCBXZWJJT1N1cmZhY2VMYXll
cjo6c2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZhY2VJZCwgV2ViU2l6ZSBz
aXplKQotewotICAgIHVud3JhcDxJT1N1cmZhY2VMYXllckNocm9taXVtPigpLT5zZXRJT1N1cmZh
Y2VQcm9wZXJ0aWVzKGlvU3VyZmFjZUlkLCBzaXplKTsKLX0KLQotV2ViSU9TdXJmYWNlTGF5ZXI6
OldlYklPU3VyZmFjZUxheWVyKFBhc3NSZWZQdHI8SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5
ZXIpCi0gICAgOiBXZWJMYXllcihsYXllcikKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXll
ckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJ
bXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5iYWI3MGM2MWQ4YjQxNzQ0MjJkN2ZjNTM1NDMyOWY4OTFlOTA4
YjRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9T
dXJmYWNlTGF5ZXJJbXBsLmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIldlYklPU3VyZmFjZUxheWVySW1wbC5oIgorCisjaW5jbHVkZSAi
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1
c2luZyBXZWJDb3JlOjpJT1N1cmZhY2VMYXllckNocm9taXVtOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworV2ViSU9TdXJmYWNlTGF5ZXIqIFdlYklPU3VyZmFjZUxheWVyOjpjcmVhdGUoKQorewor
ICAgIFJlZlB0cjxJT1N1cmZhY2VMYXllckNocm9taXVtPiBsYXllciA9IElPU3VyZmFjZUxheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOworICAgIGxheWVyLT5zZXRJc0RyYXdhYmxlKHRydWUpOworICAg
IHJldHVybiBuZXcgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsKGxheWVyLnJlbGVhc2UoKSk7Cit9CisK
K1dlYklPU3VyZmFjZUxheWVySW1wbDo6V2ViSU9TdXJmYWNlTGF5ZXJJbXBsKFBhc3NSZWZQdHI8
SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5l
dyBXZWJMYXllckltcGwobGF5ZXIpKSkKK3sKK30KKworV2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjp+
V2ViSU9TdXJmYWNlTGF5ZXJJbXBsKCkKK3sKK30KKwordm9pZCBXZWJJT1N1cmZhY2VMYXllcklt
cGw6OnNldElPU3VyZmFjZVByb3BlcnRpZXModW5zaWduZWQgaW9TdXJmYWNlSWQsIFdlYlNpemUg
c2l6ZSkKK3sKKyAgICBzdGF0aWNfY2FzdDxJT1N1cmZhY2VMYXllckNocm9taXVtKj4obV9sYXll
ci0+bGF5ZXIoKSktPnNldElPU3VyZmFjZVByb3BlcnRpZXMoaW9TdXJmYWNlSWQsIHNpemUpOwor
fQorCitXZWJMYXllciogV2ViSU9TdXJmYWNlTGF5ZXJJbXBsOjpsYXllcigpCit7CisgICAgcmV0
dXJuIG1fbGF5ZXIuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJT1N1cmZhY2VMYXllckltcGwuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zZGJiMDI3NTlhNWNiZDc0ZDM1NjQ4OTk4YWVjNjIxMGEyZjQ3MjljCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSU9TdXJmYWNlTGF5ZXJJbXBs
LmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViSU9TdXJmYWNlTGF5ZXJJbXBs
X2gKKyNkZWZpbmUgV2ViSU9TdXJmYWNlTGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgPHB1YmxpYy9X
ZWJJT1N1cmZhY2VMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgSU9TdXJmYWNlTGF5ZXJDaHJvbWl1bTsKK30KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFdlYklPU3VyZmFjZUxheWVySW1wbCA6IHB1YmxpYyBXZWJJT1N1
cmZhY2VMYXllciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV2ViSU9TdXJmYWNlTGF5ZXJJbXBs
KFBhc3NSZWZQdHI8V2ViQ29yZTo6SU9TdXJmYWNlTGF5ZXJDaHJvbWl1bT4pOworICAgIHZpcnR1
YWwgfldlYklPU3VyZmFjZUxheWVySW1wbCgpOworCisgICAgLy8gV2ViSU9TdXJmYWNlTGF5ZXIg
aW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBXZWJMYXllciogbGF5ZXIoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0SU9TdXJmYWNlUHJvcGVydGllcyh1bnNpZ25lZCBpb1N1cmZh
Y2VJZCwgV2ViU2l6ZSkgT1ZFUlJJREU7CisKK3ByaXZhdGU6CisgICAgT3duUHRyPFdlYkxheWVy
SW1wbD4gbV9sYXllcjsKK307CisKK30KKworI2VuZGlmIC8vIFdlYklPU3VyZmFjZUxheWVySW1w
bF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllci5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3NjE1MTUzMGQxMDc1N2QyY2Q0NGE3ODAzMGE5
NjlmNTZlMjQwNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllci5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgPHB1YmxpYy9XZWJJbWFnZUxheWVyLmg+Ci0KLSNpbmNsdWRlICJJbWFnZUxheWVyQ2hyb21p
dW0uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVdlYkltYWdlTGF5ZXIgV2ViSW1hZ2VMYXll
cjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gV2ViSW1hZ2VMYXllcihXZWJDb3JlOjpJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKLX0KLQotV2ViSW1hZ2VMYXllcjo6V2ViSW1hZ2VMYXll
cihQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCi0gICAgOiBX
ZWJMYXllcihsYXllcikKLXsKLX0KLQotdm9pZCBXZWJJbWFnZUxheWVyOjpzZXRCaXRtYXAoU2tC
aXRtYXAgYml0bWFwKQotewotICAgIHVud3JhcDxXZWJDb3JlOjpJbWFnZUxheWVyQ2hyb21pdW0+
KCktPnNldEJpdG1hcChiaXRtYXApOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlTGF5ZXJJbXBsLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kOTNhZjgwNDVhMjZmNjhlODI2ZDAwY2FkNGQ5Mjc2NWU5MWU5ZGMzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllckltcGwuY3Bw
CkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViSW1hZ2VMYXllckltcGwuaCIKKworI2luY2x1ZGUgIkltYWdlTGF5ZXJDaHJvbWl1bS5oIgor
I2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1c2luZyBXZWJDb3JlOjpJbWFnZUxheWVyQ2hy
b21pdW07CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJbWFnZUxheWVyKiBXZWJJbWFnZUxh
eWVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBuZXcgV2ViSW1hZ2VMYXllckltcGwoV2ViQ29y
ZTo6SW1hZ2VMYXllckNocm9taXVtOjpjcmVhdGUoKSk7Cit9CisKK1dlYkltYWdlTGF5ZXJJbXBs
OjpXZWJJbWFnZUxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1
bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRyKG5ldyBXZWJMYXllckltcGwobGF5ZXIp
KSkKK3sKK30KKworV2ViSW1hZ2VMYXllckltcGw6On5XZWJJbWFnZUxheWVySW1wbCgpCit7Cit9
CisKK1dlYkxheWVyKiBXZWJJbWFnZUxheWVySW1wbDo6bGF5ZXIoKQoreworICAgIHJldHVybiBt
X2xheWVyLmdldCgpOworfQorCit2b2lkIFdlYkltYWdlTGF5ZXJJbXBsOjpzZXRCaXRtYXAoU2tC
aXRtYXAgYml0bWFwKQoreworICAgIHN0YXRpY19jYXN0PEltYWdlTGF5ZXJDaHJvbWl1bSo+KG1f
bGF5ZXItPmxheWVyKCkpLT5zZXRCaXRtYXAoYml0bWFwKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZUxh
eWVySW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXllckltcGwu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45YTRiOGIzZWIwZmY5MjI5MmI5ZDkwZWVkMWJkNTQyN2JiODQ0ZjI5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VMYXll
ckltcGwuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJJbWFnZUxheWVySW1w
bF9oCisjZGVmaW5lIFdlYkltYWdlTGF5ZXJJbXBsX2gKKworI2luY2x1ZGUgPHB1YmxpYy9XZWJJ
bWFnZUxheWVyLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBJbWFnZUxheWVyQ2hyb21pdW07Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgewor
Y2xhc3MgV2ViTGF5ZXJJbXBsOworCitjbGFzcyBXZWJJbWFnZUxheWVySW1wbCA6IHB1YmxpYyBX
ZWJJbWFnZUxheWVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJJbWFnZUxheWVySW1wbChQ
YXNzUmVmUHRyPFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bT4pOworICAgIHZpcnR1YWwgfldl
YkltYWdlTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBXZWJJbWFnZUxheWVyIGltcGxlbWVudGF0aW9u
LgorICAgIFdlYkxheWVyKiBsYXllcigpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRC
aXRtYXAoU2tCaXRtYXApIE9WRVJSSURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXll
ckltcGw+IG1fbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBXZWJJbWFnZUxheWVySW1wbF9o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDM3ODk3ZTZmODEyYjE3MWY5MGYyMjY4ZWJjNTdkNTA2MTAzMzk3YmUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzc5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYkxheWVy
Lmg+Ci0KLSNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiU2tNYXRyaXg0NC5o
IgotI2luY2x1ZGUgIldlYkFuaW1hdGlvbkltcGwuaCIKLSNpbmNsdWRlICJXZWJMYXllckltcGwu
aCIKLSNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgotI2luY2x1ZGUgPHB1
YmxpYy9XZWJGbG9hdFBvaW50Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkZsb2F0UmVjdC5oPgot
I2luY2x1ZGUgPHB1YmxpYy9XZWJTaXplLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKLQotbmFtZXNwYWNlIHsKLQotV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChjb25zdCBTa01h
dHJpeDQ0JiBtYXRyaXgpCi17Ci0gICAgZG91YmxlIGRhdGFbMTZdOwotICAgIG1hdHJpeC5hc0Nv
bE1ham9yZChkYXRhKTsKLSAgICByZXR1cm4gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoZGF0YVsw
XSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YVs0XSwgZGF0YVs1XSwgZGF0YVs2XSwgZGF0YVs3XSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVs4XSwgZGF0YVs5XSwgZGF0YVsxMF0sIGRhdGFb
MTFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWzEyXSwgZGF0YVsx
M10sIGRhdGFbMTRdLCBkYXRhWzE1XSk7Ci19Ci0KLVNrTWF0cml4NDQgc2tNYXRyaXg0NEZyb21U
cmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
KQotewotICAgIFNrTWF0cml4NDQgc2tNYXRyaXg7Ci0gICAgc2tNYXRyaXguc2V0KDAsIDAsIFNr
RG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTEoKSkpOwotICAgIHNrTWF0cml4LnNldCgxLCAwLCBT
a0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTEyKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMiwgMCwg
U2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMygpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDMsIDAs
IFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTQoKSkpOwotICAgIHNrTWF0cml4LnNldCgwLCAx
LCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIxKCkpKTsKLSAgICBza01hdHJpeC5zZXQoMSwg
MSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMigpKSk7Ci0gICAgc2tNYXRyaXguc2V0KDIs
IDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjMoKSkpOwotICAgIHNrTWF0cml4LnNldCgz
LCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTI0KCkpKTsKLSAgICBza01hdHJpeC5zZXQo
MCwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMSgpKSk7Ci0gICAgc2tNYXRyaXguc2V0
KDEsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzIoKSkpOwotICAgIHNrTWF0cml4LnNl
dCgyLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMzKCkpKTsKLSAgICBza01hdHJpeC5z
ZXQoMywgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zNCgpKSk7Ci0gICAgc2tNYXRyaXgu
c2V0KDAsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDEoKSkpOwotICAgIHNrTWF0cml4
LnNldCgxLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQyKCkpKTsKLSAgICBza01hdHJp
eC5zZXQoMiwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MygpKSk7Ci0gICAgc2tNYXRy
aXguc2V0KDMsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDQoKSkpOwotICAgIHJldHVy
biBza01hdHJpeDsKLX0KLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1XZWJMYXllciBXZWJMYXllcjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gV2Vi
TGF5ZXIoV2ViTGF5ZXJJbXBsOjpjcmVhdGUoKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnJlc2V0
KCkKLXsKLSAgICBtX3ByaXZhdGUucmVzZXQoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6YXNzaWdu
KGNvbnN0IFdlYkxheWVyJiBvdGhlcikKLXsKLSAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZh
dGU7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6OmVxdWFscyhjb25zdCBXZWJMYXllciYgbikgY29uc3QK
LXsKLSAgICByZXR1cm4gKG1fcHJpdmF0ZS5nZXQoKSA9PSBuLm1fcHJpdmF0ZS5nZXQoKSk7Ci19
Ci0KLXZvaWQgV2ViTGF5ZXI6OmludmFsaWRhdGVSZWN0KGNvbnN0IFdlYkZsb2F0UmVjdCYgZGly
dHlSZWN0KQotewotICAgIG1fcHJpdmF0ZS0+c2V0TmVlZHNEaXNwbGF5UmVjdChkaXJ0eVJlY3Qp
OwotfQotCi12b2lkIFdlYkxheWVyOjppbnZhbGlkYXRlKCkKLXsKLSAgICBtX3ByaXZhdGUtPnNl
dE5lZWRzRGlzcGxheSgpOwotfQotCi12b2lkIFdlYkxheWVyOjphZGRDaGlsZChjb25zdCBXZWJM
YXllciYgY2hpbGQpCi17Ci0gICAgbV9wcml2YXRlLT5hZGRDaGlsZChjaGlsZCk7Ci19Ci0KLXZv
aWQgV2ViTGF5ZXI6Omluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiBjaGlsZCwgc2l6ZV90IGlu
ZGV4KQotewotICAgIG1fcHJpdmF0ZS0+aW5zZXJ0Q2hpbGQoY2hpbGQsIGluZGV4KTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6cmVwbGFjZUNoaWxkKGNvbnN0IFdlYkxheWVyJiByZWZlcmVuY2UsIGNv
bnN0IFdlYkxheWVyJiBuZXdMYXllcikKLXsKLSAgICBXZWJMYXllciByZWYgPSByZWZlcmVuY2U7
Ci0gICAgbV9wcml2YXRlLT5yZXBsYWNlQ2hpbGQocmVmLnVud3JhcDxMYXllckNocm9taXVtPigp
LCBuZXdMYXllcik7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldENoaWxkcmVuKGNvbnN0IFdlYlZl
Y3RvcjxXZWJMYXllcj4mIHdlYkNoaWxkcmVuKQotewotICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBjaGlsZHJlbih3ZWJDaGlsZHJlbi5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgd2ViQ2hpbGRyZW4uc2l6ZSgpOyArK2kpCi0gICAgICAgIGNoaWxkcmVuW2ld
ID0gd2ViQ2hpbGRyZW5baV0udW53cmFwPExheWVyQ2hyb21pdW0+KCk7Ci0gICAgbV9wcml2YXRl
LT5zZXRDaGlsZHJlbihjaGlsZHJlbik7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnJlbW92ZUZyb21Q
YXJlbnQoKQotewotICAgIG1fcHJpdmF0ZS0+cmVtb3ZlRnJvbVBhcmVudCgpOwotfQotCi12b2lk
IFdlYkxheWVyOjpyZW1vdmVBbGxDaGlsZHJlbigpCi17Ci0gICAgbV9wcml2YXRlLT5yZW1vdmVB
bGxDaGlsZHJlbigpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmNob3JQb2ludChjb25zdCBX
ZWJGbG9hdFBvaW50JiBhbmNob3JQb2ludCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldEFuY2hvclBv
aW50KGFuY2hvclBvaW50KTsKLX0KLQotV2ViRmxvYXRQb2ludCBXZWJMYXllcjo6YW5jaG9yUG9p
bnQoKSBjb25zdAotewotICAgIHJldHVybiBXZWJGbG9hdFBvaW50KG1fcHJpdmF0ZS0+YW5jaG9y
UG9pbnQoKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldEFuY2hvclBvaW50WihmbG9hdCBhbmNo
b3JQb2ludFopCi17Ci0gICAgbV9wcml2YXRlLT5zZXRBbmNob3JQb2ludFooYW5jaG9yUG9pbnRa
KTsKLX0KLQotZmxvYXQgV2ViTGF5ZXI6OmFuY2hvclBvaW50WigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+YW5jaG9yUG9pbnRaKCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldEJv
dW5kcyhjb25zdCBXZWJTaXplJiBzaXplKQotewotICAgIG1fcHJpdmF0ZS0+c2V0Qm91bmRzKHNp
emUpOwotfQotCi1XZWJTaXplIFdlYkxheWVyOjpib3VuZHMoKSBjb25zdAotewotICAgIHJldHVy
biBXZWJTaXplKG1fcHJpdmF0ZS0+Ym91bmRzKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRN
YXNrc1RvQm91bmRzKGJvb2wgbWFza3NUb0JvdW5kcykKLXsKLSAgICBtX3ByaXZhdGUtPnNldE1h
c2tzVG9Cb3VuZHMobWFza3NUb0JvdW5kcyk7Ci19Ci0KLWJvb2wgV2ViTGF5ZXI6Om1hc2tzVG9C
b3VuZHMoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPm1hc2tzVG9Cb3VuZHMoKTsK
LX0KLQotdm9pZCBXZWJMYXllcjo6c2V0TWFza0xheWVyKGNvbnN0IFdlYkxheWVyJiBtYXNrTGF5
ZXIpCi17Ci0gICAgV2ViTGF5ZXIgcmVmID0gbWFza0xheWVyOwotICAgIG1fcHJpdmF0ZS0+c2V0
TWFza0xheWVyKHJlZi51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5
ZXI6OnNldFJlcGxpY2FMYXllcihjb25zdCBXZWJMYXllciYgcmVwbGljYUxheWVyKQotewotICAg
IFdlYkxheWVyIHJlZiA9IHJlcGxpY2FMYXllcjsKLSAgICBtX3ByaXZhdGUtPnNldFJlcGxpY2FM
YXllcihyZWYudW53cmFwPExheWVyQ2hyb21pdW0+KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpz
ZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRPcGFjaXR5KG9w
YWNpdHkpOwotfQotCi1mbG9hdCBXZWJMYXllcjo6b3BhY2l0eSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+b3BhY2l0eSgpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRPcGFxdWUo
Ym9vbCBvcGFxdWUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRPcGFxdWUob3BhcXVlKTsKLX0KLQot
Ym9vbCBXZWJMYXllcjo6b3BhcXVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5v
cGFxdWUoKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgV2ViRmxvYXRQ
b2ludCYgcG9zaXRpb24pCi17Ci0gICAgbV9wcml2YXRlLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7
Ci19Ci0KLVdlYkZsb2F0UG9pbnQgV2ViTGF5ZXI6OnBvc2l0aW9uKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gV2ViRmxvYXRQb2ludChtX3ByaXZhdGUtPnBvc2l0aW9uKCkpOwotfQotCi12b2lkIFdl
YkxheWVyOjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0JiBtYXRyaXgpCi17
Ci0gICAgbV9wcml2YXRlLT5zZXRTdWJsYXllclRyYW5zZm9ybSh0cmFuc2Zvcm1hdGlvbk1hdHJp
eEZyb21Ta01hdHJpeDQ0KG1hdHJpeCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRTdWJsYXll
clRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQotewotICAg
IG1fcHJpdmF0ZS0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0obWF0cml4KTsKLX0KLQotU2tNYXRyaXg0
NCBXZWJMYXllcjo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAotewotICAgIHJldHVybiBza01h
dHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9uTWF0cml4KG1fcHJpdmF0ZS0+c3VibGF5ZXJUcmFuc2Zv
cm0oKSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldFRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0
JiBtYXRyaXgpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25N
YXRyaXhGcm9tU2tNYXRyaXg0NChtYXRyaXgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0VHJh
bnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCi17Ci0gICAgbV9w
cml2YXRlLT5zZXRUcmFuc2Zvcm0obWF0cml4KTsKLX0KLQotU2tNYXRyaXg0NCBXZWJMYXllcjo6
dHJhbnNmb3JtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1h
dGlvbk1hdHJpeChtX3ByaXZhdGUtPnRyYW5zZm9ybSgpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6
c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQotewotICAgIG1fcHJpdmF0ZS0+c2V0
SXNEcmF3YWJsZShkcmF3c0NvbnRlbnQpOwotfQotCi1ib29sIFdlYkxheWVyOjpkcmF3c0NvbnRl
bnQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPmRyYXdzQ29udGVudCgpOwotfQot
Ci12b2lkIFdlYkxheWVyOjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlM0QpCi17Ci0gICAg
bV9wcml2YXRlLT5zZXRQcmVzZXJ2ZXMzRChwcmVzZXJ2ZTNEKTsKLX0KLQotdm9pZCBXZWJMYXll
cjo6c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdXNlUGFyZW50QmFja2ZhY2VW
aXNpYmlsaXR5KQotewotICAgIG1fcHJpdmF0ZS0+c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmls
aXR5KHVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNl
dEJhY2tncm91bmRDb2xvcihXZWJDb2xvciBjb2xvcikKLXsKLSAgICBtX3ByaXZhdGUtPnNldEJh
Y2tncm91bmRDb2xvcihjb2xvcik7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldEZpbHRlcnMoY29u
c3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKLXsKLSAgICBtX3ByaXZhdGUtPnNldEZp
bHRlcnMoZmlsdGVycyk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldEJhY2tncm91bmRGaWx0ZXJz
KGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5z
ZXRCYWNrZ3JvdW5kRmlsdGVycyhmaWx0ZXJzKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0RGVi
dWdCb3JkZXJDb2xvcihjb25zdCBXZWJDb2xvciYgY29sb3IpCi17Ci0gICAgbV9wcml2YXRlLT5z
ZXREZWJ1Z0JvcmRlckNvbG9yKGNvbG9yKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0RGVidWdC
b3JkZXJXaWR0aChmbG9hdCB3aWR0aCkKLXsKLSAgICBtX3ByaXZhdGUtPnNldERlYnVnQm9yZGVy
V2lkdGgod2lkdGgpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXREZWJ1Z05hbWUoV2ViU3RyaW5n
IG5hbWUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXREZWJ1Z05hbWUobmFtZSk7Ci19Ci0KLXZvaWQg
V2ViTGF5ZXI6OnNldEFuaW1hdGlvbkRlbGVnYXRlKFdlYkFuaW1hdGlvbkRlbGVnYXRlKiBkZWxl
Z2F0ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldExheWVyQW5pbWF0aW9uRGVsZWdhdGUoZGVsZWdh
dGUpOwotfQotCi1ib29sIFdlYkxheWVyOjphZGRBbmltYXRpb24oV2ViQW5pbWF0aW9uKiBhbmlt
YXRpb24pCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWRkQW5pbWF0aW9uKHN0YXRpY19jYXN0
PFdlYkFuaW1hdGlvbkltcGwqPihhbmltYXRpb24pLT5jbG9uZVRvQ0NBbmltYXRpb24oKSk7Ci19
Ci0KLXZvaWQgV2ViTGF5ZXI6OnJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQpCi17Ci0g
ICAgbV9wcml2YXRlLT5yZW1vdmVBbmltYXRpb24oYW5pbWF0aW9uSWQpOwotfQotCi12b2lkIFdl
YkxheWVyOjpyZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkLCBXZWJBbmltYXRpb246OlRh
cmdldFByb3BlcnR5IHRhcmdldFByb3BlcnR5KQotewotICAgIG1fcHJpdmF0ZS0+bGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKCktPnJlbW92ZUFuaW1hdGlvbihhbmltYXRpb25JZCwgc3RhdGljX2Nh
c3Q8Q0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5Pih0YXJnZXRQcm9wZXJ0eSkpOwot
fQotCi12b2lkIFdlYkxheWVyOjpwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJs
ZSB0aW1lT2Zmc2V0KQotewotICAgIG1fcHJpdmF0ZS0+cGF1c2VBbmltYXRpb24oYW5pbWF0aW9u
SWQsIHRpbWVPZmZzZXQpOwotfQotCi12b2lkIFdlYkxheWVyOjpzdXNwZW5kQW5pbWF0aW9ucyhk
b3VibGUgbW9ub3RvbmljVGltZSkKLXsKLSAgICBtX3ByaXZhdGUtPnN1c3BlbmRBbmltYXRpb25z
KG1vbm90b25pY1RpbWUpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZXN1bWVBbmltYXRpb25zKGRv
dWJsZSBtb25vdG9uaWNUaW1lKQotewotICAgIG1fcHJpdmF0ZS0+cmVzdW1lQW5pbWF0aW9ucyht
b25vdG9uaWNUaW1lKTsKLX0KLQotYm9vbCBXZWJMYXllcjo6aGFzQWN0aXZlQW5pbWF0aW9uKCkK
LXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5oYXNBY3RpdmVBbmltYXRpb24oKTsKLX0KLQotdm9p
ZCBXZWJMYXllcjo6dHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIqIG90aGVyKQotewotICAg
IEFTU0VSVChvdGhlcik7Ci0gICAgaWYgKG90aGVyKQotICAgICAgICBvdGhlci0+bV9wcml2YXRl
LT5zZXRMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIobV9wcml2YXRlLT5yZWxlYXNlTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRGb3JjZVJlbmRlclN1
cmZhY2UoYm9vbCBmb3JjZVJlbmRlclN1cmZhY2UpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRGb3Jj
ZVJlbmRlclN1cmZhY2UoZm9yY2VSZW5kZXJTdXJmYWNlKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6
Y2xlYXJSZW5kZXJTdXJmYWNlKCkKLXsKLSAgICBtX3ByaXZhdGUtPmNsZWFyUmVuZGVyU3VyZmFj
ZSgpOwotfQotCi1XZWJMYXllcjo6V2ViTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxMYXllckNocm9t
aXVtPiYgbm9kZSkKLSAgICA6IG1fcHJpdmF0ZShub2RlKQotewotfQotCi1XZWJMYXllciYgV2Vi
TGF5ZXI6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+JiBub2RlKQot
ewotICAgIG1fcHJpdmF0ZSA9IG5vZGU7Ci0gICAgcmV0dXJuICp0aGlzOwotfQotCi1XZWJMYXll
cjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPigpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcAppbmRleCAxNmUxMjA2Y2EzMzVj
M2U5ODE0ZGViZWNiNGVkOGJiMmIwMmViNzc3Li40MGNlZDQ4NWQ3MTg4NzMwYjg2OGRiZTg2Y2U1
N2JhNWQzNmEzMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJM
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1w
bC5jcHAKQEAgLTI2LDI1ICsyNiwzNzYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJMYXllckltcGwuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSAi
Q0NBY3RpdmVBbmltYXRpb24uaCIKKyNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCisjaW5jbHVk
ZSAiU2tNYXRyaXg0NC5oIgorI2luY2x1ZGUgIldlYkFuaW1hdGlvbkltcGwuaCIKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViRmxvYXRQb2ludC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3Qu
aD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViU2l6ZS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oPgorCit1c2luZyBXZWJDb3JlOjpDQ0FjdGl2ZUFuaW1hdGlvbjsK
K3VzaW5nIFdlYkNvcmU6OkxheWVyQ2hyb21pdW07CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1Q
YXNzUmVmUHRyPFdlYkxheWVySW1wbD4gV2ViTGF5ZXJJbXBsOjpjcmVhdGUoKQorbmFtZXNwYWNl
IHsKKworV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tN
YXRyaXg0NChjb25zdCBTa01hdHJpeDQ0JiBtYXRyaXgpCit7CisgICAgZG91YmxlIGRhdGFbMTZd
OworICAgIG1hdHJpeC5hc0NvbE1ham9yZChkYXRhKTsKKyAgICByZXR1cm4gV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgoZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVs0XSwgZGF0YVs1XSwgZGF0YVs2XSwgZGF0
YVs3XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVs4XSwgZGF0YVs5
XSwgZGF0YVsxMF0sIGRhdGFbMTFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhWzEyXSwgZGF0YVsxM10sIGRhdGFbMTRdLCBkYXRhWzE1XSk7Cit9CisKK1NrTWF0cml4
NDQgc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4KQoreworICAgIFNrTWF0cml4NDQgc2tNYXRyaXg7CisgICAgc2tN
YXRyaXguc2V0KDAsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTEoKSkpOworICAgIHNr
TWF0cml4LnNldCgxLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTEyKCkpKTsKKyAgICBz
a01hdHJpeC5zZXQoMiwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMygpKSk7CisgICAg
c2tNYXRyaXguc2V0KDMsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTQoKSkpOworICAg
IHNrTWF0cml4LnNldCgwLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIxKCkpKTsKKyAg
ICBza01hdHJpeC5zZXQoMSwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMigpKSk7Cisg
ICAgc2tNYXRyaXguc2V0KDIsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjMoKSkpOwor
ICAgIHNrTWF0cml4LnNldCgzLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTI0KCkpKTsK
KyAgICBza01hdHJpeC5zZXQoMCwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMSgpKSk7
CisgICAgc2tNYXRyaXguc2V0KDEsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzIoKSkp
OworICAgIHNrTWF0cml4LnNldCgyLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMzKCkp
KTsKKyAgICBza01hdHJpeC5zZXQoMywgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zNCgp
KSk7CisgICAgc2tNYXRyaXguc2V0KDAsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDEo
KSkpOworICAgIHNrTWF0cml4LnNldCgxLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQy
KCkpKTsKKyAgICBza01hdHJpeC5zZXQoMiwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00
MygpKSk7CisgICAgc2tNYXRyaXguc2V0KDMsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5t
NDQoKSkpOworICAgIHJldHVybiBza01hdHJpeDsKK30KKworfSAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisKKworV2ViTGF5ZXIqIFdlYkxheWVyOjpjcmVhdGUoKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViTGF5ZXJJbXBsKCkpOworICAgIHJldHVybiBuZXcgV2ViTGF5ZXJJbXBsKExh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKIH0KIAotV2ViTGF5ZXJJbXBsOjpXZWJMYXllckltcGwo
KQotICAgIDogTGF5ZXJDaHJvbWl1bSgpCitXZWJMYXllckltcGw6OldlYkxheWVySW1wbChQYXNz
UmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9sYXllcihsYXllcikKIHsKLSAg
ICAvLyBNYWtlIHN1cmUgdGhhdCB0aGlzIGxheWVyIGRvZXMgbm90IGRyYXcgY29udGVudC4gVGhp
cyB3YXkgd2UgZG9uJ3QgaGF2ZSB0byBvdmVycmlkZQotICAgIC8vIHRoZSBiYXNlIGNsYXNzIGlt
cGxlbWVudGF0aW9uIG9mIGRyYXdzQ29udGVudCgpLgotICAgIEFTU0VSVCghZHJhd3NDb250ZW50
KCkpOwogfQogCiBXZWJMYXllckltcGw6On5XZWJMYXllckltcGwoKQogeworICAgIG1fbGF5ZXIt
PmNsZWFyUmVuZGVyU3VyZmFjZSgpOworICAgIG1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uRGVs
ZWdhdGUoMCk7Cit9CisKK2ludCBXZWJMYXllckltcGw6OmlkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9sYXllci0+aWQoKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OmludmFsaWRhdGVSZWN0
KGNvbnN0IFdlYkZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICBtX2xheWVyLT5zZXROZWVkc0Rpc3Bs
YXlSZWN0KHJlY3QpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6aW52YWxpZGF0ZSgpCit7Cisg
ICAgbV9sYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjph
ZGRDaGlsZChXZWJMYXllciogY2hpbGQpCit7CisgICAgbV9sYXllci0+YWRkQ2hpbGQoc3RhdGlj
X2Nhc3Q8V2ViTGF5ZXJJbXBsKj4oY2hpbGQpLT5sYXllcigpKTsKK30KKwordm9pZCBXZWJMYXll
ckltcGw6Omluc2VydENoaWxkKFdlYkxheWVyKiBjaGlsZCwgc2l6ZV90IGluZGV4KQoreworICAg
IG1fbGF5ZXItPmluc2VydENoaWxkKHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KGNoaWxkKS0+
bGF5ZXIoKSwgaW5kZXgpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cmVwbGFjZUNoaWxkKFdl
YkxheWVyKiByZWZlcmVuY2UsIFdlYkxheWVyKiBuZXdMYXllcikKK3sKKyAgICBtX2xheWVyLT5y
ZXBsYWNlQ2hpbGQoc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4ocmVmZXJlbmNlKS0+bGF5ZXIo
KSwgc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJbXBsKj4obmV3TGF5ZXIpLT5sYXllcigpKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldENoaWxkcmVuKGNvbnN0IFdlYlZlY3RvcjxXZWJMYXllcio+
JiB3ZWJDaGlsZHJlbikKK3sKKyAgICBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4gY2hp
bGRyZW4od2ViQ2hpbGRyZW4uc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdl
YkNoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICBjaGlsZHJlbltpXSA9IHN0YXRpY19jYXN0
PFdlYkxheWVySW1wbCo+KHdlYkNoaWxkcmVuW2ldKS0+bGF5ZXIoKTsKKyAgICBtX2xheWVyLT5z
ZXRDaGlsZHJlbihjaGlsZHJlbik7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpyZW1vdmVGcm9t
UGFyZW50KCkKK3sKKyAgICBtX2xheWVyLT5yZW1vdmVGcm9tUGFyZW50KCk7Cit9CisKK3ZvaWQg
V2ViTGF5ZXJJbXBsOjpyZW1vdmVBbGxDaGlsZHJlbigpCit7CisgICAgbV9sYXllci0+cmVtb3Zl
QWxsQ2hpbGRyZW4oKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEFuY2hvclBvaW50KGNv
bnN0IFdlYkZsb2F0UG9pbnQmIGFuY2hvclBvaW50KQoreworICAgIG1fbGF5ZXItPnNldEFuY2hv
clBvaW50KGFuY2hvclBvaW50KTsKK30KKworV2ViRmxvYXRQb2ludCBXZWJMYXllckltcGw6OmFu
Y2hvclBvaW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX2xheWVyLT5h
bmNob3JQb2ludCgpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEFuY2hvclBvaW50Wihm
bG9hdCBhbmNob3JQb2ludFopCit7CisgICAgbV9sYXllci0+c2V0QW5jaG9yUG9pbnRaKGFuY2hv
clBvaW50Wik7Cit9CisKK2Zsb2F0IFdlYkxheWVySW1wbDo6YW5jaG9yUG9pbnRaKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9sYXllci0+YW5jaG9yUG9pbnRaKCk7Cit9CisKK3ZvaWQgV2ViTGF5
ZXJJbXBsOjpzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYgc2l6ZSkKK3sKKyAgICBtX2xheWVyLT5z
ZXRCb3VuZHMoc2l6ZSk7Cit9CisKK1dlYlNpemUgV2ViTGF5ZXJJbXBsOjpib3VuZHMoKSBjb25z
dAoreworICAgIHJldHVybiBXZWJTaXplKG1fbGF5ZXItPmJvdW5kcygpKTsKK30KKwordm9pZCBX
ZWJMYXllckltcGw6OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCBtYXNrc1RvQm91bmRzKQoreworICAg
IG1fbGF5ZXItPnNldE1hc2tzVG9Cb3VuZHMobWFza3NUb0JvdW5kcyk7Cit9CisKK2Jvb2wgV2Vi
TGF5ZXJJbXBsOjptYXNrc1RvQm91bmRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci0+
bWFza3NUb0JvdW5kcygpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0TWFza0xheWVyKFdl
YkxheWVyKiBtYXNrTGF5ZXIpCit7CisgICAgbV9sYXllci0+c2V0TWFza0xheWVyKG1hc2tMYXll
ciA/IHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KG1hc2tMYXllciktPmxheWVyKCkgOiAwKTsK
K30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFJlcGxpY2FMYXllcihXZWJMYXllciogcmVwbGlj
YUxheWVyKQoreworICAgIG1fbGF5ZXItPnNldFJlcGxpY2FMYXllcihyZXBsaWNhTGF5ZXIgPyBz
dGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihyZXBsaWNhTGF5ZXIpLT5sYXllcigpIDogMCk7Cit9
CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRPcGFjaXR5KGZsb2F0IG9wYWNpdHkpCit7CisgICAg
bV9sYXllci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKK30KKworZmxvYXQgV2ViTGF5ZXJJbXBsOjpv
cGFjaXR5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9sYXllci0+b3BhY2l0eSgpOworfQorCit2
b2lkIFdlYkxheWVySW1wbDo6c2V0T3BhcXVlKGJvb2wgb3BhcXVlKQoreworICAgIG1fbGF5ZXIt
PnNldE9wYXF1ZShvcGFxdWUpOworfQorCitib29sIFdlYkxheWVySW1wbDo6b3BhcXVlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9sYXllci0+b3BhcXVlKCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJ
bXBsOjpzZXRQb3NpdGlvbihjb25zdCBXZWJGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBt
X2xheWVyLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7Cit9CisKK1dlYkZsb2F0UG9pbnQgV2ViTGF5
ZXJJbXBsOjpwb3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYkZsb2F0UG9pbnQobV9s
YXllci0+cG9zaXRpb24oKSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRTdWJsYXllclRy
YW5zZm9ybShjb25zdCBTa01hdHJpeDQ0JiBtYXRyaXgpCit7CisgICAgbV9sYXllci0+c2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0odHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChtYXRyaXgp
KTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgbV9sYXllci0+c2V0U3VibGF5
ZXJUcmFuc2Zvcm0obWF0cml4KTsKK30KKworU2tNYXRyaXg0NCBXZWJMYXllckltcGw6OnN1Ymxh
eWVyVHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2tNYXRyaXg0NEZyb21UcmFuc2Zv
cm1hdGlvbk1hdHJpeChtX2xheWVyLT5zdWJsYXllclRyYW5zZm9ybSgpKTsKK30KKwordm9pZCBX
ZWJMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0JiBtYXRyaXgpCit7Cisg
ICAgbV9sYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4
NDQobWF0cml4KSk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRUcmFuc2Zvcm0oY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK3sKKyAgICBtX2xheWVyLT5zZXRUcmFu
c2Zvcm0obWF0cml4KTsKK30KKworU2tNYXRyaXg0NCBXZWJMYXllckltcGw6OnRyYW5zZm9ybSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgo
bV9sYXllci0+dHJhbnNmb3JtKCkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0RHJhd3ND
b250ZW50KGJvb2wgZHJhd3NDb250ZW50KQoreworICAgIG1fbGF5ZXItPnNldElzRHJhd2FibGUo
ZHJhd3NDb250ZW50KTsKK30KKworYm9vbCBXZWJMYXllckltcGw6OmRyYXdzQ29udGVudCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmRyYXdzQ29udGVudCgpOworfQorCit2b2lkIFdl
YkxheWVySW1wbDo6c2V0UHJlc2VydmVzM0QoYm9vbCBwcmVzZXJ2ZTNEKQoreworICAgIG1fbGF5
ZXItPnNldFByZXNlcnZlczNEKHByZXNlcnZlM0QpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6
c2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wgdXNlUGFyZW50QmFja2ZhY2VWaXNp
YmlsaXR5KQoreworICAgIG1fbGF5ZXItPnNldFVzZVBhcmVudEJhY2tmYWNlVmlzaWJpbGl0eSh1
c2VQYXJlbnRCYWNrZmFjZVZpc2liaWxpdHkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0
QmFja2dyb3VuZENvbG9yKFdlYkNvbG9yIGNvbG9yKQoreworICAgIG1fbGF5ZXItPnNldEJhY2tn
cm91bmRDb2xvcihjb2xvcik7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXRGaWx0ZXJzKGNv
bnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgbV9sYXllci0+c2V0Rmls
dGVycyhmaWx0ZXJzKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldEJhY2tncm91bmRGaWx0
ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgbV9sYXllci0+
c2V0QmFja2dyb3VuZEZpbHRlcnMoZmlsdGVycyk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpz
ZXREZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJiBjb2xvcikKK3sKKyAgICBtX2xheWVy
LT5zZXREZWJ1Z0JvcmRlckNvbG9yKGNvbG9yKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNl
dERlYnVnQm9yZGVyV2lkdGgoZmxvYXQgd2lkdGgpCit7CisgICAgbV9sYXllci0+c2V0RGVidWdC
b3JkZXJXaWR0aCh3aWR0aCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBsOjpzZXREZWJ1Z05hbWUo
V2ViU3RyaW5nIG5hbWUpCit7CisgICAgbV9sYXllci0+c2V0RGVidWdOYW1lKG5hbWUpOworfQor
Cit2b2lkIFdlYkxheWVySW1wbDo6c2V0QW5pbWF0aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVs
ZWdhdGUqIGRlbGVnYXRlKQoreworICAgIG1fbGF5ZXItPnNldExheWVyQW5pbWF0aW9uRGVsZWdh
dGUoZGVsZWdhdGUpOworfQorCitib29sIFdlYkxheWVySW1wbDo6YWRkQW5pbWF0aW9uKFdlYkFu
aW1hdGlvbiogYW5pbWF0aW9uKQoreworICAgIHJldHVybiBtX2xheWVyLT5hZGRBbmltYXRpb24o
c3RhdGljX2Nhc3Q8V2ViQW5pbWF0aW9uSW1wbCo+KGFuaW1hdGlvbiktPmNsb25lVG9DQ0FuaW1h
dGlvbigpKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFuaW1hdGlvbihpbnQgYW5p
bWF0aW9uSWQpCit7CisgICAgbV9sYXllci0+cmVtb3ZlQW5pbWF0aW9uKGFuaW1hdGlvbklkKTsK
K30KKwordm9pZCBXZWJMYXllckltcGw6OnJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQs
IFdlYkFuaW1hdGlvbjo6VGFyZ2V0UHJvcGVydHkgdGFyZ2V0UHJvcGVydHkpCit7CisgICAgbV9s
YXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPnJlbW92ZUFuaW1hdGlvbihhbmltYXRp
b25JZCwgc3RhdGljX2Nhc3Q8Q0NBY3RpdmVBbmltYXRpb246OlRhcmdldFByb3BlcnR5Pih0YXJn
ZXRQcm9wZXJ0eSkpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6cGF1c2VBbmltYXRpb24oaW50
IGFuaW1hdGlvbklkLCBkb3VibGUgdGltZU9mZnNldCkKK3sKKyAgICBtX2xheWVyLT5wYXVzZUFu
aW1hdGlvbihhbmltYXRpb25JZCwgdGltZU9mZnNldCk7Cit9CisKK3ZvaWQgV2ViTGF5ZXJJbXBs
OjpzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKK3sKKyAgICBtX2xheWVy
LT5zdXNwZW5kQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKK30KKwordm9pZCBXZWJMYXllcklt
cGw6OnJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUpCit7CisgICAgbV9sYXll
ci0+cmVzdW1lQW5pbWF0aW9ucyhtb25vdG9uaWNUaW1lKTsKK30KKworYm9vbCBXZWJMYXllcklt
cGw6Omhhc0FjdGl2ZUFuaW1hdGlvbigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXItPmhhc0FjdGl2
ZUFuaW1hdGlvbigpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6dHJhbnNmZXJBbmltYXRpb25z
VG8oV2ViTGF5ZXIqIG90aGVyKQoreworICAgIEFTU0VSVChvdGhlcik7CisgICAgc3RhdGljX2Nh
c3Q8V2ViTGF5ZXJJbXBsKj4ob3RoZXIpLT5tX2xheWVyLT5zZXRMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIobV9sYXllci0+cmVsZWFzZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpKTsKK30KKwor
dm9pZCBXZWJMYXllckltcGw6OnNldEZvcmNlUmVuZGVyU3VyZmFjZShib29sIGZvcmNlUmVuZGVy
U3VyZmFjZSkKK3sKKyAgICBtX2xheWVyLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UoZm9yY2VSZW5k
ZXJTdXJmYWNlKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFNjcm9sbFBvc2l0aW9uKFdl
YlBvaW50IHBvc2l0aW9uKQoreworICAgIG1fbGF5ZXItPnNldFNjcm9sbFBvc2l0aW9uKHBvc2l0
aW9uKTsKK30KKwordm9pZCBXZWJMYXllckltcGw6OnNldFNjcm9sbGFibGUoYm9vbCBzY3JvbGxh
YmxlKQoreworICAgIG1fbGF5ZXItPnNldFNjcm9sbGFibGUoc2Nyb2xsYWJsZSk7Cit9CisKK3Zv
aWQgV2ViTGF5ZXJJbXBsOjpzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJvb2wgaGF2ZVdoZWVs
RXZlbnRIYW5kbGVycykKK3sKKyAgICBtX2xheWVyLT5zZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJz
KGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0U2hv
dWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKQorewor
ICAgIG1fbGF5ZXItPnNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChzaG91bGRTY3JvbGxPbk1h
aW5UaHJlYWQpOworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0Tm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24oY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JiByZWN0cykKK3sKKyAgICBXZWJDb3JlOjpS
ZWdpb24gcmVnaW9uOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVjdHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgV2ViQ29yZTo6SW50UmVjdCByZWN0ID0gcmVjdHNbaV07CisgICAgICAg
IHJlZ2lvbi51bml0ZShyZWN0KTsKKyAgICB9CisgICAgbV9sYXllci0+c2V0Tm9uRmFzdFNjcm9s
bGFibGVSZWdpb24ocmVnaW9uKTsKKworfQorCit2b2lkIFdlYkxheWVySW1wbDo6c2V0SXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wgZW5hYmxlKQoreworICAgIG1fbGF5ZXIt
PnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOworfQorCit2b2lk
IFdlYkxheWVySW1wbDo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wgZW5hYmxlKQorewor
ICAgIG1fbGF5ZXItPnNldEZpeGVkVG9Db250YWluZXJMYXllcihlbmFibGUpOworfQorCitMYXll
ckNocm9taXVtKiBXZWJMYXllckltcGw6OmxheWVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9s
YXllci5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkxheWVySW1wbC5oCmluZGV4IDdlNGU3NTA2MjQ4ZjRjYTVlZTY3ZTc1MWMz
OGU4ZWJmNGMxOWMxOWIuLjdlM2I1MzNiY2ZmMWExZmVkOWQ3N2ExNjc3MWU1ZWFkZjRlYmUyNmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVySW1wbC5oCkBAIC0yNiwxOCAr
MjYsODQgQEAKICNpZm5kZWYgV2ViTGF5ZXJJbXBsX2gKICNkZWZpbmUgV2ViTGF5ZXJJbXBsX2gK
IAotI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTGF5ZXJDaHJvbWl1bTsKK30KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKLWNsYXNzIFdlYkxheWVySW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpMYXll
ckNocm9taXVtIHsKK2NsYXNzIFdlYkxheWVySW1wbCA6IHB1YmxpYyBXZWJMYXllciB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViTGF5ZXJJbXBsPiBjcmVhdGUoKTsKKyAgICBl
eHBsaWNpdCBXZWJMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPik7
CisgICAgdmlydHVhbCB+V2ViTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBXZWJMYXllciBpbXBsZW1l
bnRhdGlvbi4KKyAgICB2aXJ0dWFsIGludCBpZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBh
ZGRDaGlsZChXZWJMYXllciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRDaGls
ZChXZWJMYXllciosIHNpemVfdCBpbmRleCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
cGxhY2VDaGlsZChXZWJMYXllciogcmVmZXJlbmNlLCBXZWJMYXllciogbmV3TGF5ZXIpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDaGlsZHJlbihjb25zdCBXZWJWZWN0b3I8V2ViTGF5
ZXIqPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVGcm9tUGFyZW50KCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENoaWxkcmVuKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEFuY2hvclBvaW50KGNvbnN0IFdlYkZsb2F0UG9pbnQmKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYkZsb2F0UG9pbnQgYW5jaG9yUG9pbnQoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5jaG9yUG9pbnRaKGZsb2F0KSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGZsb2F0IGFuY2hvclBvaW50WigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgV2ViU2l6ZSBib3VuZHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
TWFza3NUb0JvdW5kcyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgbWFza3NUb0Jv
dW5kcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRNYXNrTGF5ZXIoV2Vi
TGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UmVwbGljYUxheWVyKFdlYkxh
eWVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRPcGFxdWUoYm9vbCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIG9w
YXF1ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQb3NpdGlvbihjb25z
dCBXZWJGbG9hdFBvaW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJGbG9hdFBvaW50IHBv
c2l0aW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFN1YmxheWVyVHJh
bnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFNrTWF0cml4NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTa01hdHJpeDQ0IHRyYW5zZm9y
bSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmF3c0NvbnRlbnQoYm9v
bCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzZXJ2ZXMzRChib29sKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VXNlUGFyZW50QmFja2ZhY2VWaXNpYmlsaXR5KGJvb2wpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJzKGNvbnN0IFdlYkZpbHRlck9wZXJhdGlv
bnMmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmFja2dyb3VuZEZpbHRlcnMoY29u
c3QgV2ViRmlsdGVyT3BlcmF0aW9ucyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRE
ZWJ1Z0JvcmRlckNvbG9yKGNvbnN0IFdlYkNvbG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldERlYnVnQm9yZGVyV2lkdGgoZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXREZWJ1Z05hbWUoV2ViU3RyaW5nKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QW5pbWF0aW9uRGVsZWdhdGUoV2ViQW5pbWF0aW9uRGVsZWdhdGUqKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgYWRkQW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb24oaW50IGFuaW1hdGlvbklkKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgV2ViQW5pbWF0
aW9uOjpUYXJnZXRQcm9wZXJ0eSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBhdXNlQW5p
bWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBzdXNwZW5kQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlc3VtZUFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25p
Y1RpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNBY3RpdmVBbmltYXRpb24oKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhbnNmZXJBbmltYXRpb25zVG8oV2ViTGF5ZXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Rm9yY2VSZW5kZXJTdXJmYWNlKGJvb2wp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihXZWJQb2ludCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29u
c3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldElz
Q29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wpIE9WRVJSSURFOworCisgICAg
V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bSogbGF5ZXIoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAg
IFdlYkxheWVySW1wbCgpOwotICAgIHZpcnR1YWwgfldlYkxheWVySW1wbCgpOworICAgIFJlZlB0
cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiBtX2xheWVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRy
ZWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcu
Y3BwCmluZGV4IGYzOTdlNTM0YTg0MWQ0NTZiYTIzNzNkYjM1MTllYzVhZjRhZDZkNWIuLjdkZmJj
ZDEyOWVlMTE3NWMyYWMwNTk2ODU4MjdkYzA1YzRkMWZhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiQ0NSZW5kZXJpbmdTdGF0cy5o
IgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIK
ICNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJM
YXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJQb2ludC5oPgpAQCAtODMsNyArODQsNyBAQCB2
b2lkIFdlYkxheWVyVHJlZVZpZXc6OnNldFN1cmZhY2VSZWFkeSgpCiB2b2lkIFdlYkxheWVyVHJl
ZVZpZXc6OnNldFJvb3RMYXllcihXZWJMYXllciAqcm9vdCkKIHsKICAgICBpZiAocm9vdCkKLSAg
ICAgICAgbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcigqcm9vdCk7Cisg
ICAgICAgIG1fcHJpdmF0ZS0+bGF5ZXJUcmVlSG9zdCgpLT5zZXRSb290TGF5ZXIoc3RhdGljX2Nh
c3Q8V2ViTGF5ZXJJbXBsKj4ocm9vdCktPmxheWVyKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9w
cml2YXRlLT5sYXllclRyZWVIb3N0KCktPnNldFJvb3RMYXllcihQYXNzUmVmUHRyPExheWVyQ2hy
b21pdW0+KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
TGF5ZXJUcmVlVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5
ZXJUcmVlVmlld0ltcGwuY3BwCmluZGV4IDFmMTkzM2ZjOTY2ZGEwYTkzNTA4NGUzMzJmMzRkYmY0
Y2JlMWMxNjAuLjFmZDgyMzk3NjhjMDliNjY5NTRkYzAyNTBlMjhiNmY5NWY2ZjA5NTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5j
cHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDQ0xheWVyVHJlZUhvc3QuaCIKICNpbmNs
dWRlICJDQ1RocmVhZFByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1
ZGUgIldlYkxheWVySW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQz
RC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJMYXllci5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJM
YXllclRyZWVWaWV3Lmg+CkBAIC0xNDIsNyArMTQzLDcgQEAgUGFzc093blB0cjxXZWJMYXllclRy
ZWVWaWV3SW1wbD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3
Q2wKICAgICBPd25QdHI8V2ViTGF5ZXJUcmVlVmlld0ltcGw+IGltcGwgPSBhZG9wdFB0cihuZXcg
V2ViTGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50LCBzZXR0aW5ncykpOwogICAgIGlmICghaW1wbC0+
bGF5ZXJUcmVlSG9zdCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBpbXBsLT5sYXll
clRyZWVIb3N0KCktPnNldFJvb3RMYXllcihyb290KTsKKyAgICBpbXBsLT5sYXllclRyZWVIb3N0
KCktPnNldFJvb3RMYXllcihzdGF0aWNfY2FzdDxjb25zdCBXZWJMYXllckltcGwqPigmcm9vdCkt
PmxheWVyKCkpOwogICAgIHJldHVybiBpbXBsLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1wbC5jcHAK
aW5kZXggNGE5MGE5ODhkNDFjNmNlNGU1NmJhNTlhNGQ3NmJkNjVhZmE5MTNkZC4uY2I3NTYyMzNl
MWE3ZTQ4OGIxNzE1M2YzMmEyM2YwNzlkZDcwYWVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuY3BwCkBAIC0xMDks
OSArMTA5LDkgQEAgdm9pZCBXZWJNZWRpYVBsYXllckNsaWVudEltcGw6OnJlYWR5U3RhdGVDaGFu
Z2VkKCkKICAgICBBU1NFUlQobV9tZWRpYVBsYXllcik7CiAgICAgbV9tZWRpYVBsYXllci0+cmVh
ZHlTdGF0ZUNoYW5nZWQoKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAg
aWYgKGhhc1ZpZGVvKCkgJiYgc3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpICYmIG1fdmlk
ZW9MYXllci5pc051bGwoKSkgewotICAgICAgICBtX3ZpZGVvTGF5ZXIgPSBXZWJWaWRlb0xheWVy
OjpjcmVhdGUodGhpcyk7Ci0gICAgICAgIG1fdmlkZW9MYXllci5zZXRPcGFxdWUobV9vcGFxdWUp
OworICAgIGlmIChoYXNWaWRlbygpICYmIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSAm
JiAhbV92aWRlb0xheWVyKSB7CisgICAgICAgIG1fdmlkZW9MYXllciA9IGFkb3B0UHRyKFdlYlZp
ZGVvTGF5ZXI6OmNyZWF0ZSh0aGlzKSk7CisgICAgICAgIG1fdmlkZW9MYXllci0+bGF5ZXIoKS0+
c2V0T3BhcXVlKG1fb3BhcXVlKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTEzOCw4ICsxMzgsOCBA
QCB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6cmVwYWludCgpCiB7CiAgICAgQVNTRVJU
KG1fbWVkaWFQbGF5ZXIpOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBp
ZiAoIW1fdmlkZW9MYXllci5pc051bGwoKSAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
KCkpCi0gICAgICAgIG1fdmlkZW9MYXllci5pbnZhbGlkYXRlKCk7CisgICAgaWYgKG1fdmlkZW9M
YXllciAmJiBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkpCisgICAgICAgIG1fdmlkZW9M
YXllci0+bGF5ZXIoKS0+aW52YWxpZGF0ZSgpOwogI2VuZGlmCiAgICAgbV9tZWRpYVBsYXllci0+
cmVwYWludCgpOwogfQpAQCAtMTY2LDggKzE2Niw4IEBAIHZvaWQgV2ViTWVkaWFQbGF5ZXJDbGll
bnRJbXBsOjpzZXRPcGFxdWUoYm9vbCBvcGFxdWUpCiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQogICAgIG1fb3BhcXVlID0gb3BhcXVlOwotICAgIGlmICghbV92aWRlb0xheWVy
LmlzTnVsbCgpKQotICAgICAgICBtX3ZpZGVvTGF5ZXIuc2V0T3BhcXVlKG1fb3BhcXVlKTsKKyAg
ICBpZiAobV92aWRlb0xheWVyKQorICAgICAgICBtX3ZpZGVvTGF5ZXItPmxheWVyKCktPnNldE9w
YXF1ZShtX29wYXF1ZSk7CiAjZW5kaWYKIH0KIApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgV2Vi
TWVkaWFQbGF5ZXJDbGllbnRJbXBsOjpjYW5jZWxMb2FkKCkKIFdlYkxheWVyKiBXZWJNZWRpYVBs
YXllckNsaWVudEltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIEFTU0VSVChtX3N1
cHBvcnRzQWNjZWxlcmF0ZWRDb21wb3NpdGluZyk7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2Vi
VmlkZW9MYXllcio+KCZtX3ZpZGVvTGF5ZXIpOworICAgIHJldHVybiBtX3ZpZGVvTGF5ZXIgPyBt
X3ZpZGVvTGF5ZXItPmxheWVyKCkgOiAwOwogfQogI2VuZGlmCiAKQEAgLTc0NSw3ICs3NDUsNyBA
QCBib29sIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRl
cmluZygpIGNvbnN0CiAKIGJvb2wgV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsOjphY2NlbGVyYXRl
ZFJlbmRlcmluZ0luVXNlKCkKIHsKLSAgICByZXR1cm4gIW1fdmlkZW9MYXllci5pc051bGwoKSAm
JiBtX3ZpZGVvTGF5ZXIuYWN0aXZlKCk7CisgICAgcmV0dXJuIG1fdmlkZW9MYXllciAmJiBtX3Zp
ZGVvTGF5ZXItPmFjdGl2ZSgpOwogfQogCiB2b2lkIFdlYk1lZGlhUGxheWVyQ2xpZW50SW1wbDo6
c2V0VmlkZW9GcmFtZVByb3ZpZGVyQ2xpZW50KFdlYlZpZGVvRnJhbWVQcm92aWRlcjo6Q2xpZW50
KiBjbGllbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJNZWRp
YVBsYXllckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlh
UGxheWVyQ2xpZW50SW1wbC5oCmluZGV4IDM3MzAxNWViNzU2YWYwZjQ1MTFkYWU5ODFlNmJmMmUx
YjU0ZGQ0ODguLjMyOWZkOWVjMGY0ODhhOWVhYWZlYTZlOTVjOGZiYjI0OTA0MTVjMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50SW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYk1lZGlhUGxheWVyQ2xpZW50
SW1wbC5oCkBAIC0yMDUsNyArMjA1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllcjo6UHJlbG9hZCBtX3ByZWxvYWQ7CiAgICAgUmVmUHRyPFdlYkhlbHBlclBsdWdpbkltcGw+
IG1faGVscGVyUGx1Z2luOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLSAgICBX
ZWJWaWRlb0xheWVyIG1fdmlkZW9MYXllcjsKKyAgICBPd25QdHI8V2ViVmlkZW9MYXllcj4gbV92
aWRlb0xheWVyOwogICAgIGJvb2wgbV9zdXBwb3J0c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmc7CiAg
ICAgYm9vbCBtX29wYXF1ZTsKICAgICBXZWJWaWRlb0ZyYW1lUHJvdmlkZXI6OkNsaWVudCogbV92
aWRlb0ZyYW1lUHJvdmlkZXJDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuY3BwCmluZGV4IGEzNWEwNDA3ZjQ5NGI2Y2Jj
MGQ5ZmRhMjJjMTk3OTFlN2FlZmIyZDcuLjc1YTk3ZTBmNmNjNWU0N2FlMjlkZGEzMDE1YzE2ZDhm
YjcxYTMxZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBsdWdp
bkNvbnRhaW5lckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBs
dWdpbkNvbnRhaW5lckltcGwuY3BwCkBAIC0zNjYsMTEgKzM2NiwxMSBAQCB2b2lkIFdlYlBsdWdp
bkNvbnRhaW5lckltcGw6OnNldEJhY2tpbmdUZXh0dXJlSWQodW5zaWduZWQgdGV4dHVyZUlkKQog
ICAgIGlmIChtX3RleHR1cmVJZCA9PSB0ZXh0dXJlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFTU0VSVChtX2lvU3VyZmFjZUxheWVyLmlzTnVsbCgpKTsKKyAgICBBU1NFUlQoIW1faW9TdXJm
YWNlTGF5ZXIpOwogCi0gICAgaWYgKG1fdGV4dHVyZUxheWVyLmlzTnVsbCgpKQotICAgICAgICBt
X3RleHR1cmVMYXllciA9IFdlYkV4dGVybmFsVGV4dHVyZUxheWVyOjpjcmVhdGUoKTsKLSAgICBt
X3RleHR1cmVMYXllci5zZXRUZXh0dXJlSWQodGV4dHVyZUlkKTsKKyAgICBpZiAoIW1fdGV4dHVy
ZUxheWVyKQorICAgICAgICBtX3RleHR1cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFsVGV4
dHVyZUxheWVyOjpjcmVhdGUoKSk7CisgICAgbV90ZXh0dXJlTGF5ZXItPnNldFRleHR1cmVJZCh0
ZXh0dXJlSWQpOwogCiAgICAgLy8gSWYgYW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVk
IHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0
aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJpZ2dlcmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtMzkwLDEx
ICszOTAsMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJm
YWNlSWQoaW50IHdpZHRoLAogICAgIGlmIChpb1N1cmZhY2VJZCA9PSBtX2lvU3VyZmFjZUlkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQobV90ZXh0dXJlTGF5ZXIuaXNOdWxsKCkpOwor
ICAgIEFTU0VSVCghbV90ZXh0dXJlTGF5ZXIpOwogCi0gICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIu
aXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBXZWJJT1N1cmZhY2VMYXllcjo6
Y3JlYXRlKCk7Ci0gICAgbV9pb1N1cmZhY2VMYXllci5zZXRJT1N1cmZhY2VQcm9wZXJ0aWVzKGlv
U3VyZmFjZUlkLCBXZWJTaXplKHdpZHRoLCBoZWlnaHQpKTsKKyAgICBpZiAoIW1faW9TdXJmYWNl
TGF5ZXIpCisgICAgICAgIG1faW9TdXJmYWNlTGF5ZXIgPSBhZG9wdFB0cihXZWJJT1N1cmZhY2VM
YXllcjo6Y3JlYXRlKCkpOworICAgIG1faW9TdXJmYWNlTGF5ZXItPnNldElPU3VyZmFjZVByb3Bl
cnRpZXMoaW9TdXJmYWNlSWQsIFdlYlNpemUod2lkdGgsIGhlaWdodCkpOwogCiAgICAgLy8gSWYg
YW55b25lIG9mIHRoZSBJRHMgaXMgemVybyB3ZSBuZWVkIHRvIHN3aXRjaCBiZXR3ZWVuIGhhcmR3
YXJlCiAgICAgLy8gYW5kIHNvZnR3YXJlIGNvbXBvc2l0aW5nLiBUaGlzIGlzIGRvbmUgYnkgdHJp
Z2dlcmluZyBhIHN0eWxlIHJlY2FsYwpAQCAtNDA5LDExICs0MDksMTEgQEAgdm9pZCBXZWJQbHVn
aW5Db250YWluZXJJbXBsOjpzZXRCYWNraW5nSU9TdXJmYWNlSWQoaW50IHdpZHRoLAogdm9pZCBX
ZWJQbHVnaW5Db250YWluZXJJbXBsOjpjb21taXRCYWNraW5nVGV4dHVyZSgpCiB7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGlmICghbV90ZXh0dXJlTGF5ZXIuaXNOdWxs
KCkpCi0gICAgICAgIG1fdGV4dHVyZUxheWVyLmludmFsaWRhdGUoKTsKKyAgICBpZiAobV90ZXh0
dXJlTGF5ZXIpCisgICAgICAgIG1fdGV4dHVyZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7
CiAKLSAgICBpZiAoIW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJm
YWNlTGF5ZXIuaW52YWxpZGF0ZSgpOworICAgIGlmIChtX2lvU3VyZmFjZUxheWVyKQorICAgICAg
ICBtX2lvU3VyZmFjZUxheWVyLT5sYXllcigpLT5pbnZhbGlkYXRlKCk7CiAjZW5kaWYKIH0KIApA
QCAtNDgwLDExICs0ODAsMTEgQEAgdm9pZCBXZWJQbHVnaW5Db250YWluZXJJbXBsOjp6b29tTGV2
ZWxDaGFuZ2VkKGRvdWJsZSB6b29tTGV2ZWwpCiB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6
OnNldE9wYXF1ZShib29sIG9wYXF1ZSkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCi0gICAgaWYgKCFtX3RleHR1cmVMYXllci5pc051bGwoKSkKLSAgICAgICAgbV90ZXh0dXJl
TGF5ZXIuc2V0T3BhcXVlKG9wYXF1ZSk7CisgICAgaWYgKG1fdGV4dHVyZUxheWVyKQorICAgICAg
ICBtX3RleHR1cmVMYXllci0+bGF5ZXIoKS0+c2V0T3BhcXVlKG9wYXF1ZSk7CiAKLSAgICBpZiAo
IW1faW9TdXJmYWNlTGF5ZXIuaXNOdWxsKCkpCi0gICAgICAgIG1faW9TdXJmYWNlTGF5ZXIuc2V0
T3BhcXVlKG9wYXF1ZSk7CisgICAgaWYgKG1faW9TdXJmYWNlTGF5ZXIpCisgICAgICAgIG1faW9T
dXJmYWNlTGF5ZXItPmxheWVyKCktPnNldE9wYXF1ZShvcGFxdWUpOwogI2VuZGlmCiB9CiAKQEAg
LTU3NSw5ICs1NzUsOSBAQCB2b2lkIFdlYlBsdWdpbkNvbnRhaW5lckltcGw6OndpbGxEZXN0cm95
UGx1Z2luTG9hZE9ic2VydmVyKFdlYlBsdWdpbkxvYWRPYnNlcnZlcgogV2ViTGF5ZXIqIFdlYlBs
dWdpbkNvbnRhaW5lckltcGw6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogICAgIGlmIChtX3Rl
eHR1cmVJZCkKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V2ViRXh0ZXJuYWxUZXh0dXJlTGF5
ZXIqPigmbV90ZXh0dXJlTGF5ZXIpOworICAgICAgICByZXR1cm4gbV90ZXh0dXJlTGF5ZXItPmxh
eWVyKCk7CiAgICAgaWYgKG1faW9TdXJmYWNlSWQpCi0gICAgICAgIHJldHVybiBjb25zdF9jYXN0
PFdlYklPU3VyZmFjZUxheWVyKj4oJm1faW9TdXJmYWNlTGF5ZXIpOworICAgICAgICByZXR1cm4g
bV9pb1N1cmZhY2VMYXllci0+bGF5ZXIoKTsKICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGx1Z2luQ29udGFpbmVySW1wbC5o
CmluZGV4IDA3NGEwY2NkY2QwM2JiNTI1NmUzNjU4MDcyYTgxZTlhNWY4M2M4ODYuLjk5OGJlNmU0
MTlmODk1ZmE4MjE3OTQwMzkzNDRiYzE2ZjMxMWY5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlBsdWdpbkNvbnRhaW5lckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJQbHVnaW5Db250YWluZXJJbXBsLmgKQEAgLTE4NiwxMCArMTg2
LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gQSBjb21wb3NpdGVkIHBsdWdpbiB3aWxsIGVpdGhlciBo
YXZlIG5vIGNvbXBvc2l0ZWQgbGF5ZXIsIGEgdGV4dHVyZSBsYXllciwgb3IgYW4gSU9TdXJmYWNl
IGxheWVyLgogICAgIC8vIEl0IHdpbGwgbmV2ZXIgaGF2ZSBib3RoIGEgdGV4dHVyZSBhbmQgSU9T
dXJmYWNlIG91dHB1dC4KICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKLSAgICBXZWJFeHRlcm5h
bFRleHR1cmVMYXllciBtX3RleHR1cmVMYXllcjsKKyAgICBPd25QdHI8V2ViRXh0ZXJuYWxUZXh0
dXJlTGF5ZXI+IG1fdGV4dHVyZUxheWVyOwogCiAgICAgdW5zaWduZWQgbV9pb1N1cmZhY2VJZDsK
LSAgICBXZWJJT1N1cmZhY2VMYXllciBtX2lvU3VyZmFjZUxheWVyOworICAgIE93blB0cjxXZWJJ
T1N1cmZhY2VMYXllcj4gbV9pb1N1cmZhY2VMYXllcjsKICNlbmRpZgogCiAgICAgLy8gVGhlIGFz
c29jaWF0ZWQgc2Nyb2xsYmFyIGdyb3VwIG9iamVjdCwgY3JlYXRlZCBsYXppbHkuIFVzZWQgZm9y
IFBlcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xs
YWJsZUxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGFibGVM
YXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGU4MWQ4MTM3NTljM2Y3
OTA5N2EyOWMxNDY5YjI1NzBmOWJhODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGFibGVMYXllci5oPgotCi0jaW5j
bHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlJlZ2lvbi5oIgotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldFNjcm9sbFBvc2l0aW9uKFdl
YlBvaW50IHBvc2l0aW9uKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2Nyb2xsUG9zaXRpb24ocG9z
aXRpb24pOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0U2Nyb2xsYWJsZShib29s
IHNjcm9sbGFibGUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRTY3JvbGxhYmxlKHNjcm9sbGFibGUp
OwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVMYXllcjo6c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVy
cyhib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRIYXZl
V2hlZWxFdmVudEhhbmRsZXJzKGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMpOwotfQotCi12b2lkIFdl
YlNjcm9sbGFibGVMYXllcjo6c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wgc2hvdWxk
U2Nyb2xsT25NYWluVGhyZWFkKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkU2Nyb2xsT25N
YWluVGhyZWFkKHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCk7Ci19Ci0KLXZvaWQgV2ViU2Nyb2xs
YWJsZUxheWVyOjpzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2Vi
UmVjdD4mIHJlY3RzKQotewotICAgIFdlYkNvcmU6OlJlZ2lvbiByZWdpb247Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCByZWN0cy5zaXplKCk7ICsraSkgewotICAgICAgICBXZWJDb3JlOjpJ
bnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKLSAgICAgICAgcmVnaW9uLnVuaXRlKHJlY3QpOwotICAg
IH0KLSAgICBtX3ByaXZhdGUtPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKHJlZ2lvbik7Ci0K
LX0KLQotdm9pZCBXZWJTY3JvbGxhYmxlTGF5ZXI6OnNldElzQ29udGFpbmVyRm9yRml4ZWRQb3Np
dGlvbkxheWVycyhib29sIGVuYWJsZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldElzQ29udGFpbmVy
Rm9yRml4ZWRQb3NpdGlvbkxheWVycyhlbmFibGUpOwotfQotCi12b2lkIFdlYlNjcm9sbGFibGVM
YXllcjo6c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGJvb2wgZW5hYmxlKQotewotICAgIG1fcHJp
dmF0ZS0+c2V0Rml4ZWRUb0NvbnRhaW5lckxheWVyKGVuYWJsZSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Ny
b2xsYmFyTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFy
TGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmQxYjIwZmI0MGY3YzY0
ZDdlMTc2M2FhNjg2NmIxNGUxNWY5YmFkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxh
eWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhckxheWVyLmg+Ci0KLSNpbmNs
dWRlICJTY3JvbGxiYXJMYXllckNocm9taXVtLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJTY3JvbGxiYXJMYXllcjo6c2V0U2Ny
b2xsTGF5ZXIoY29uc3QgV2ViTGF5ZXIgbGF5ZXIpCi17Ci0gICAgaW50IGlkID0gbGF5ZXIuaXNO
dWxsKCkgPyAwIDogbGF5ZXIuY29uc3RVbndyYXA8TGF5ZXJDaHJvbWl1bT4oKS0+aWQoKTsKLSAg
ICB1bndyYXA8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKS0+c2V0U2Nyb2xsTGF5ZXJJZChpZCk7
Ci19Ci0KLVdlYlNjcm9sbGJhckxheWVyIFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoV2ViQ29y
ZTo6U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciBwYWludGVy
LCBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+IGdlb21ldHJ5KQotewotICAg
IHJldHVybiBXZWJTY3JvbGxiYXJMYXllcihTY3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGUo
V2ViU2Nyb2xsYmFyOjpjcmVhdGUoc2Nyb2xsYmFyKSwgcGFpbnRlciwgZ2VvbWV0cnksIDApKTsK
LX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXI6OldlYlNjcm9sbGJhckxheWVyKGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtPiYgbGF5ZXIpCi0gICAgOiBX
ZWJMYXllcihsYXllcikKLXsKLX0KLQotV2ViU2Nyb2xsYmFyTGF5ZXImIFdlYlNjcm9sbGJhckxh
eWVyOjpvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxh
eWVyQ2hyb21pdW0+JiBsYXllcikKLXsKLSAgICBtX3ByaXZhdGUgPSBsYXllcjsKLSAgICByZXR1
cm4gKnRoaXM7Ci19Ci0KLVdlYlNjcm9sbGJhckxheWVyOjpvcGVyYXRvciBQYXNzUmVmUHRyPFNj
cm9sbGJhckxheWVyQ2hyb21pdW0+KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdW53cmFwPFNjcm9s
bGJhckxheWVyQ2hyb21pdW0+KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVySW1wbC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZWM2ZTk4OTVkZGJkNTkxOTU3ZTFhZDBlNDg1YzFiMDEwZmJmZjgyMgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxh
eWVySW1wbC5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJTY3JvbGxiYXJMYXllckltcGwuaCIKKworI2luY2x1ZGUgIlNjcm9sbGJh
ckxheWVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJXZWJMYXllckltcGwuaCIKKwordXNpbmcgV2Vi
Q29yZTo6U2Nyb2xsYmFyOwordXNpbmcgV2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlNjcm9sbGJhckxheWVyKiBXZWJTY3JvbGxiYXJM
YXllcjo6Y3JlYXRlKFdlYkNvcmU6OlNjcm9sbGJhciogc2Nyb2xsYmFyLCBXZWJTY3JvbGxiYXJU
aGVtZVBhaW50ZXIgcGFpbnRlciwgUGFzc093blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5
PiBnZW9tZXRyeSkKK3sKKyAgICByZXR1cm4gbmV3IFdlYlNjcm9sbGJhckxheWVySW1wbChTY3Jv
bGxiYXJMYXllckNocm9taXVtOjpjcmVhdGUoV2ViU2Nyb2xsYmFyOjpjcmVhdGUoc2Nyb2xsYmFy
KSwgcGFpbnRlciwgZ2VvbWV0cnksIDApKTsKK30KKworCitXZWJTY3JvbGxiYXJMYXllckltcGw6
OldlYlNjcm9sbGJhckxheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVy
Q2hyb21pdW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihuZXcgV2ViTGF5ZXJJbXBs
KGxheWVyKSkpCit7Cit9CisKK1dlYlNjcm9sbGJhckxheWVySW1wbDo6fldlYlNjcm9sbGJhckxh
eWVySW1wbCgpCit7Cit9CisKK1dlYkxheWVyKiBXZWJTY3JvbGxiYXJMYXllckltcGw6OmxheWVy
KCkKK3sKKyAgICByZXR1cm4gbV9sYXllci5nZXQoKTsKK30KKwordm9pZCBXZWJTY3JvbGxiYXJM
YXllckltcGw6OnNldFNjcm9sbExheWVyKFdlYkxheWVyKiBsYXllcikKK3sKKyAgICBpbnQgaWQg
PSBsYXllciA/IHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KGxheWVyKS0+bGF5ZXIoKS0+aWQo
KSA6IDA7CisgICAgc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bSo+KG1fbGF5ZXIt
PmxheWVyKCkpLT5zZXRTY3JvbGxMYXllcklkKGlkKTsKK30KKworCisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xs
YmFyTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJM
YXllckltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MjBmNzljNTU4ZTQxMDIyYWVjZDYyOTllYzZmZDQxODNm
MTIyOWMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2Nyb2xsYmFyTGF5ZXJJbXBsLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
U2Nyb2xsYmFyTGF5ZXJJbXBsX2gKKyNkZWZpbmUgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsX2gKKwor
I2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxiYXJMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBTY3JvbGxiYXJMYXllckNocm9taXVtOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYkxheWVySW1wbDsKKworY2xhc3MgV2ViU2Nyb2xsYmFyTGF5ZXJJbXBsIDogcHVi
bGljIFdlYlNjcm9sbGJhckxheWVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJTY3JvbGxi
YXJMYXllckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtPik7
CisgICAgdmlydHVhbCB+V2ViU2Nyb2xsYmFyTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBXZWJTY3Jv
bGxiYXJMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRTY3JvbGxMYXllcihXZWJMYXllciopIE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7Cit9
OworCit9CisKKyNlbmRpZiAvLyBXZWJTY3JvbGxiYXJMYXllckltcGxfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNvbGlkQ29sb3JMYXllci5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgzOTE0YjI2MzI5NGI1M2Y1NDY2MTFhZGNhODk4Mzg0NjE2NzBh
ZWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVyLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSA8
cHVibGljL1dlYlNvbGlkQ29sb3JMYXllci5oPgotCi0jaW5jbHVkZSAiV2ViU29saWRDb2xvckxh
eWVySW1wbC5oIgotI2luY2x1ZGUgPHB1YmxpYy9XZWJGbG9hdFJlY3QuaD4KLQotbmFtZXNwYWNl
IFdlYktpdCB7Ci0KLVdlYlNvbGlkQ29sb3JMYXllciBXZWJTb2xpZENvbG9yTGF5ZXI6OmNyZWF0
ZSgpCi17Ci0gICAgcmV0dXJuIFdlYlNvbGlkQ29sb3JMYXllcihXZWJTb2xpZENvbG9yTGF5ZXJJ
bXBsOjpjcmVhdGUoKSk7Ci19Ci0KLVdlYlNvbGlkQ29sb3JMYXllcjo6V2ViU29saWRDb2xvckxh
eWVyKGNvbnN0IFBhc3NSZWZQdHI8V2ViU29saWRDb2xvckxheWVySW1wbD4mIG5vZGUpCi0gICAg
OiBXZWJMYXllcihub2RlKQotewotfQotCi12b2lkIFdlYlNvbGlkQ29sb3JMYXllcjo6c2V0QmFj
a2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvbG9yJiBjb2xvcikKLXsKLSAgICBtX3ByaXZhdGUtPnNl
dEJhY2tncm91bmRDb2xvcihjb2xvcik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU29saWRDb2xvckxheWVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBs
LmNwcAppbmRleCAzM2IxYTMwZTM4YzMwYTk1N2RkZTNhODYxYTQ4N2RhMTdjODFkMjk5Li45NDQw
NDI2MmNhODFjM2E2N2ZiNGUyMTJmM2JmZWQ4NjE5OTYwZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcApAQCAtMjYs
MjQgKzI2LDM3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViU29saWRDb2xv
ckxheWVySW1wbC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpbmNsdWRlICJTb2xp
ZENvbG9yTGF5ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIldlYkxheWVySW1wbC5oIgorCit1c2lu
ZyBXZWJDb3JlOjpTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bTsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLVBhc3NSZWZQdHI8V2ViU29saWRDb2xvckxheWVySW1wbD4gV2ViU29saWRDb2xvckxheWVy
SW1wbDo6Y3JlYXRlKCkKK1dlYlNvbGlkQ29sb3JMYXllciogV2ViU29saWRDb2xvckxheWVyOjpj
cmVhdGUoKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViU29saWRDb2xvckxheWVySW1w
bCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYlNvbGlkQ29sb3JMYXllckltcGwoU29saWRDb2xvckxh
eWVyQ2hyb21pdW06OmNyZWF0ZSgpKTsKIH0KIAotV2ViU29saWRDb2xvckxheWVySW1wbDo6V2Vi
U29saWRDb2xvckxheWVySW1wbCgpCi0gICAgOiBTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bSgpCitX
ZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpXZWJTb2xpZENvbG9yTGF5ZXJJbXBsKFBhc3NSZWZQdHI8
U29saWRDb2xvckxheWVyQ2hyb21pdW0+IGxheWVyKQorICAgIDogbV9sYXllcihhZG9wdFB0cihu
ZXcgV2ViTGF5ZXJJbXBsKGxheWVyKSkpCiB7Ci0gICAgc2V0SXNEcmF3YWJsZSh0cnVlKTsKKyAg
ICBtX2xheWVyLT5sYXllcigpLT5zZXRJc0RyYXdhYmxlKHRydWUpOwogfQogCiBXZWJTb2xpZENv
bG9yTGF5ZXJJbXBsOjp+V2ViU29saWRDb2xvckxheWVySW1wbCgpCiB7CiB9CiAKK1dlYkxheWVy
KiBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsOjpsYXllcigpCit7CisgICAgcmV0dXJuIG1fbGF5ZXIu
Z2V0KCk7Cit9CisKK3ZvaWQgV2ViU29saWRDb2xvckxheWVySW1wbDo6c2V0QmFja2dyb3VuZENv
bG9yKFdlYkNvbG9yIGNvbG9yKQoreworICAgIG1fbGF5ZXItPnNldEJhY2tncm91bmRDb2xvcihj
b2xvcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5kZXggZDI2NzNiNDJi
NjhmOGNkMWU3MTFiOTFlMTI3MGQ2NzZkNWQ3NjllYS4uNzc0MmJhNDkyZDRjNTE0ZGMzNzgyN2Mw
YmQ2ZTA1MzBkZGQ0MDEwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU29saWRDb2xvckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNvbGlkQ29sb3JMYXllckltcGwuaApAQCAtMjYsMTggKzI2LDI4IEBACiAjaWZuZGVmIFdl
YlNvbGlkQ29sb3JMYXllckltcGxfaAogI2RlZmluZSBXZWJTb2xpZENvbG9yTGF5ZXJJbXBsX2gK
IAotI2luY2x1ZGUgIlNvbGlkQ29sb3JMYXllckNocm9taXVtLmgiCisjaW5jbHVkZSA8cHVibGlj
L1dlYlNvbGlkQ29sb3JMYXllci5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTb2xpZENv
bG9yTGF5ZXJDaHJvbWl1bTsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJMYXll
ckltcGw7CiAKLWNsYXNzIFdlYlNvbGlkQ29sb3JMYXllckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6
U29saWRDb2xvckxheWVyQ2hyb21pdW0geworY2xhc3MgV2ViU29saWRDb2xvckxheWVySW1wbCA6
IHB1YmxpYyBXZWJTb2xpZENvbG9yTGF5ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYlNvbGlkQ29sb3JMYXllckltcGw+IGNyZWF0ZSgpOwotCi1wcm90ZWN0ZWQ6Ci0gICAg
V2ViU29saWRDb2xvckxheWVySW1wbCgpOworICAgIGV4cGxpY2l0IFdlYlNvbGlkQ29sb3JMYXll
ckltcGwoUGFzc1JlZlB0cjxXZWJDb3JlOjpTb2xpZENvbG9yTGF5ZXJDaHJvbWl1bT4pOwogICAg
IHZpcnR1YWwgfldlYlNvbGlkQ29sb3JMYXllckltcGwoKTsKKworICAgIC8vIFdlYlNvbGlkQ29s
b3JMYXllciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkxheWVyKiBsYXllcigpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoV2ViQ29sb3IpIE9W
RVJSSURFOworCitwcml2YXRlOgorICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZGVvTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlkZW9MYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMzQyMTU1
ZGFjZWVhYWE3ZDg2NjY1MzdmNzAwM2FhMTkzMzA0MmQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlk
ZW9MYXllci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0g
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlZpZGVvTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUg
PHB1YmxpYy9XZWJWaWRlb0xheWVyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJWaWRl
b0xheWVyIFdlYlZpZGVvTGF5ZXI6OmNyZWF0ZShXZWJWaWRlb0ZyYW1lUHJvdmlkZXIqIHByb3Zp
ZGVyKQotewotICAgIHJldHVybiBXZWJWaWRlb0xheWVyKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKHByb3ZpZGVyKSk7Ci19Ci0KLVdlYlZpZGVvTGF5ZXI6OldlYlZpZGVvTGF5
ZXIoUGFzc1JlZlB0cjxXZWJDb3JlOjpWaWRlb0xheWVyQ2hyb21pdW0+IGxheWVyKQotICAgIDog
V2ViTGF5ZXIobGF5ZXIpCi17Ci19Ci0KLWJvb2wgV2ViVmlkZW9MYXllcjo6YWN0aXZlKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5sYXllclRyZWVIb3N0KCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlkZW9MYXllckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlk
ZW9MYXllckltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjViZmVkNjc0MmYyZGM3ZjkwOWZhZTI1NTM3MjI2
ZTFhZDBlMDliZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWRlb0xheWVySW1wbC5jcHAKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWRlb0xheWVySW1wbC5oIgorCisjaW5jbHVkZSAi
VmlkZW9MYXllckNocm9taXVtLmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJbXBsLmgiCisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitXZWJWaWRlb0xheWVyKiBXZWJWaWRlb0xheWVyOjpjcmVhdGUoV2Vi
VmlkZW9GcmFtZVByb3ZpZGVyKiBwcm92aWRlcikKK3sKKyAgICByZXR1cm4gbmV3IFdlYlZpZGVv
TGF5ZXJJbXBsKFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHByb3ZpZGVyKSk7
Cit9CisKK1dlYlZpZGVvTGF5ZXJJbXBsOjpXZWJWaWRlb0xheWVySW1wbChQYXNzUmVmUHRyPFdl
YkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4gbGF5ZXIpCisgICAgOiBtX2xheWVyKGFkb3B0UHRy
KG5ldyBXZWJMYXllckltcGwobGF5ZXIpKSkKK3sKK30KKworV2ViVmlkZW9MYXllckltcGw6On5X
ZWJWaWRlb0xheWVySW1wbCgpCit7Cit9CisKK1dlYkxheWVyKiBXZWJWaWRlb0xheWVySW1wbDo6
bGF5ZXIoKQoreworICAgIHJldHVybiBtX2xheWVyLmdldCgpOworfQorCitib29sIFdlYlZpZGVv
TGF5ZXJJbXBsOjphY3RpdmUoKSBjb25zdAoreworICAgIHJldHVybiBtX2xheWVyLT5sYXllcigp
LT5sYXllclRyZWVIb3N0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlkZW9MYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg3
ZTRiNWUyMGRjOTZhYjcyYjY0MGIxMWEyOWI2OTg3ZmZjZmZhZAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZGVvTGF5ZXJJbXBsLmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmlkZW9MYXllckltcGxfaAorI2RlZmluZSBXZWJW
aWRlb0xheWVySW1wbF9oCisKKyNpbmNsdWRlIDxwdWJsaWMvV2ViVmlkZW9MYXllci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBWaWRlb0xheWVyQ2hyb21pdW07Cit9CisKK25hbWVz
cGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTGF5ZXJJbXBsOworCitjbGFzcyBXZWJWaWRlb0xheWVy
SW1wbCA6IHB1YmxpYyBXZWJWaWRlb0xheWVyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJW
aWRlb0xheWVySW1wbChQYXNzUmVmUHRyPFdlYkNvcmU6OlZpZGVvTGF5ZXJDaHJvbWl1bT4pOwor
ICAgIHZpcnR1YWwgfldlYlZpZGVvTGF5ZXJJbXBsKCk7CisKKyAgICAvLyBXZWJWaWRlb0xheWVy
IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgV2ViTGF5ZXIqIGxheWVyKCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGFjdGl2ZSgpIGNvbnN0IE9WRVJSSURFOworCitwcml2YXRlOgor
ICAgIE93blB0cjxXZWJMYXllckltcGw+IG1fbGF5ZXI7Cit9OworCit9CisKKyNlbmRpZiAvLyBX
ZWJWaWRlb0xheWVySW1wbF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcAppbmRleCBlMjhhZjQwZGM2ZjAxMTg0YzQ0N2IxYzEyOTVjMjI0ZWQxMTA2ZWNmLi5j
NmY5ZjdlMDk2MTY1MDlhYzM1NzBlNzE4YWUxN2E2MTBiMGZhZTUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC00MDksNiArNDA5LDcgQEAgV2ViVmll
d0ltcGw6OldlYlZpZXdJbXBsKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKICAgICAsIG1faXNDYW5j
ZWxpbmdGdWxsU2NyZWVuKGZhbHNlKQogICAgICwgbV9iZW5jaG1hcmtTdXBwb3J0KHRoaXMpCiAj
aWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgICwgbV9yb290TGF5ZXIoMCkKICAg
ICAsIG1fcm9vdEdyYXBoaWNzTGF5ZXIoMCkKICAgICAsIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQWN0aXZlKGZhbHNlKQogICAgICwgbV9jb21wb3NpdG9yQ3JlYXRpb25GYWlsZWQoZmFsc2Up
CkBAIC0zNjQwLDYgKzM2NDEsNyBAQCBib29sIFdlYlZpZXdJbXBsOjphbGxvd3NBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nKCkKIHZvaWQgV2ViVmlld0ltcGw6OnNldFJvb3RHcmFwaGljc0xheWVyKEdy
YXBoaWNzTGF5ZXIqIGxheWVyKQogewogICAgIG1fcm9vdEdyYXBoaWNzTGF5ZXIgPSBsYXllcjsK
KyAgICBtX3Jvb3RMYXllciA9IGxheWVyID8gbGF5ZXItPnBsYXRmb3JtTGF5ZXIoKSA6IDA7CiAK
ICAgICBzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUobGF5ZXIpOwogICAgIGlmICht
X25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdCkgewpAQCAtMzY1MywxMSArMzY1NSw4IEBAIHZvaWQg
V2ViVmlld0ltcGw6OnNldFJvb3RHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQog
ICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0U2Nyb2xsTGF5ZXIoc2Nyb2xs
TGF5ZXIpOwogICAgIH0KIAotICAgIGlmIChsYXllcikKLSAgICAgICAgbV9yb290TGF5ZXIgPSAq
bGF5ZXItPnBsYXRmb3JtTGF5ZXIoKTsKLQogICAgIGlmICghbV9sYXllclRyZWVWaWV3LmlzTnVs
bCgpKQotICAgICAgICBtX2xheWVyVHJlZVZpZXcuc2V0Um9vdExheWVyKGxheWVyID8gJm1fcm9v
dExheWVyIDogMCk7CisgICAgICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRSb290TGF5ZXIobV9yb290
TGF5ZXIpOwogCiAgICAgSW50UmVjdCBkYW1hZ2VkUmVjdCgwLCAwLCBtX3NpemUud2lkdGgsIG1f
c2l6ZS5oZWlnaHQpOwogICAgIGlmICghbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUp
CkBAIC0zNzcwLDcgKzM3NjksNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVk
Q29tcG9zaXRpbmdBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRIb3N0LT5zZXRTaG93RGVidWdCb3JkZXJzKHBhZ2UoKS0+c2V0dGluZ3MoKS0+c2hvd0Rl
YnVnQm9yZGVycygpKTsKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QtPnNldE9w
YXF1ZSghaXNUcmFuc3BhcmVudCgpKTsKIAotICAgICAgICBtX2xheWVyVHJlZVZpZXcuaW5pdGlh
bGl6ZSh0aGlzLCBtX3Jvb3RMYXllciwgbGF5ZXJUcmVlVmlld1NldHRpbmdzKTsKKyAgICAgICAg
bV9sYXllclRyZWVWaWV3LmluaXRpYWxpemUodGhpcywgKm1fcm9vdExheWVyLCBsYXllclRyZWVW
aWV3U2V0dGluZ3MpOwogICAgICAgICBpZiAoIW1fbGF5ZXJUcmVlVmlldy5pc051bGwoKSkgewog
ICAgICAgICAgICAgaWYgKG1fd2ViU2V0dGluZ3MtPmFwcGx5RGVmYXVsdERldmljZVNjYWxlRmFj
dG9ySW5Db21wb3NpdG9yKCkgJiYgcGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpICE9IDEpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQocGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDUxMjRlOTQzY2M4ZGU4
OGNhMjc0ZTA2NWE2ODUwNGNkNzRkOWJmZTEuLjIwNmNmNDU3MjhhZWE5YmNmYTBhMjhjNGMzNWY3
MTFhM2M2MjBkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApA
QCAtODI1LDcgKzgyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6SW50UmVjdCBtX3Jvb3RM
YXllclNjcm9sbERhbWFnZTsKICAgICBPd25QdHI8Tm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0PiBt
X25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdDsKICAgICBXZWJMYXllclRyZWVWaWV3IG1fbGF5ZXJU
cmVlVmlldzsKLSAgICBXZWJMYXllciBtX3Jvb3RMYXllcjsKKyAgICBXZWJMYXllciogbV9yb290
TGF5ZXI7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllciogbV9yb290R3JhcGhpY3NMYXllcjsK
ICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlOwogICAgIGJvb2wgbV9j
b21wb3NpdG9yQ3JlYXRpb25GYWlsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0ltYWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9JbWFnZUxheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBhNWNhNTUxMjRjMjkw
NDcyYzI3NDdkMDkzOWZiMDBkYTIwNTlmNzdkLi40OTQ4Zjk3Y2M1ODhhMGI1YmIyMDBkMTQzOWJj
NGY5MTc5YjQ5ZmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lt
YWdlTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvSW1hZ2VMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTEyMiwxMyArMTIyLDEzIEBAIFRFU1Qo
SW1hZ2VMYXllckNocm9taXVtVGVzdCwgb3BhcXVlSW1hZ2VzKQogICAgIFJlZlB0cjxJbWFnZT4g
bm9uT3BhcXVlSW1hZ2UgPSBUZXN0SW1hZ2U6OmNyZWF0ZShJbnRTaXplKDEwMCwgMTAwKSwgZmFs
c2UpOwogICAgIEFTU0VSVF9UUlVFKG5vbk9wYXF1ZUltYWdlLmdldCgpKTsKIAotICAgIEFTU0VS
VF9UUlVFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKS5pc051bGwoKSk7CisgICAgQVNT
RVJUX0ZBTFNFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKSk7CiAKICAgICBncmFwaGlj
c0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2Uob3BhcXVlSW1hZ2UuZ2V0KCkpOwotICAgIEFTU0VS
VF9UUlVFKGdyYXBoaWNzTGF5ZXItPmNvbnRlbnRzTGF5ZXIoKS5vcGFxdWUoKSk7CisgICAgQVNT
RVJUX1RSVUUoZ3JhcGhpY3NMYXllci0+Y29udGVudHNMYXllcigpLT5vcGFxdWUoKSk7CiAKICAg
ICBncmFwaGljc0xheWVyLT5zZXRDb250ZW50c1RvSW1hZ2Uobm9uT3BhcXVlSW1hZ2UuZ2V0KCkp
OwotICAgIEFTU0VSVF9GQUxTRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCkub3BhcXVl
KCkpOworICAgIEFTU0VSVF9GQUxTRShncmFwaGljc0xheWVyLT5jb250ZW50c0xheWVyKCktPm9w
YXF1ZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvV2ViTGF5ZXJUZXN0LmNwcAppbmRleCA2NjcyMDA0MTAzODU5NjM5YmVhNjIzY2NkZWY1
MWI5MjMyMzBiNmQwLi45YjhlNThjYTEwMGU3N2Q5MDM2NWJkNDYyOGIxZGUzODEwOTM3NDMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYkxheWVyVGVzdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRlc3QuY3BwCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CiAKICNpbmNsdWRlICJD
b21wb3NpdG9yRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiV2ViTGF5ZXJJ
bXBsLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxwdWJs
aWMvV2ViQ29udGVudExheWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvbnRlbnRMYXllckNs
aWVudC5oPgpAQCAtNzYsOSArNzcsOSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBJbml0
aWFsaXplIHdpdGhvdXQgdGhyZWFkaW5nIHN1cHBvcnQuCiAgICAgICAgIFdlYktpdDo6V2ViQ29t
cG9zaXRvcjo6aW5pdGlhbGl6ZSgwKTsKLSAgICAgICAgbV9yb290TGF5ZXIgPSBXZWJMYXllcjo6
Y3JlYXRlKCk7CisgICAgICAgIG1fcm9vdExheWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0
ZSgpKTsKICAgICAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkp
LlRpbWVzKEFueU51bWJlcigpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUobV92aWV3LmluaXRpYWxp
emUoJm1fY2xpZW50LCBtX3Jvb3RMYXllciwgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MoKSkp
OworICAgICAgICBFWFBFQ1RfVFJVRShtX3ZpZXcuaW5pdGlhbGl6ZSgmbV9jbGllbnQsICptX3Jv
b3RMYXllciwgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MoKSkpOwogICAgICAgICBNb2NrOjpW
ZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwogICAgIH0KIApAQCAtODcsMTQg
Kzg4LDE0IEBAIHB1YmxpYzoKICAgICAgICAgLy8gV2UgbWF5IGdldCBhbnkgbnVtYmVyIG9mIHNj
aGVkdWxlQ29tcG9zaXRlIGNhbGxzIGR1cmluZyBzaHV0ZG93bi4KICAgICAgICAgRVhQRUNUX0NB
TEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKICAg
ICAgICAgbV92aWV3LnNldFJvb3RMYXllcigwKTsKLSAgICAgICAgbV9yb290TGF5ZXIucmVzZXQo
KTsKKyAgICAgICAgbV9yb290TGF5ZXIuY2xlYXIoKTsKICAgICAgICAgbV92aWV3LnJlc2V0KCk7
CiAgICAgICAgIFdlYktpdDo6V2ViQ29tcG9zaXRvcjo6c2h1dGRvd24oKTsKICAgICB9CiAKIHBy
b3RlY3RlZDoKICAgICBNb2NrV2ViTGF5ZXJUcmVlVmlld0NsaWVudCBtX2NsaWVudDsKLSAgICBX
ZWJMYXllciBtX3Jvb3RMYXllcjsKKyAgICBPd25QdHI8V2ViTGF5ZXI+IG1fcm9vdExheWVyOwog
ICAgIFdlYkxheWVyVHJlZVZpZXcgbV92aWV3OwogfTsKIApAQCAtMTA0LDczICsxMDUsNzMgQEAg
VEVTVF9GKFdlYkxheWVyVGVzdCwgQ2xpZW50KQogewogICAgIC8vIEJhc2UgbGF5ZXIuCiAgICAg
RVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJl
cigpKTsKLSAgICBXZWJMYXllciBsYXllciA9IFdlYkxheWVyOjpjcmVhdGUoKTsKLSAgICBtX3Jv
b3RMYXllci5hZGRDaGlsZChsYXllcik7CisgICAgT3duUHRyPFdlYkxheWVyPiBsYXllciA9IGFk
b3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7CisgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKGxh
eWVyLmdldCgpKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGll
bnQpOwogCiAgICAgV2ViRmxvYXRQb2ludCBwb2ludCgzLCA0KTsKICAgICBFWFBFQ1RfQ0FMTCht
X2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5
ZXIuc2V0QW5jaG9yUG9pbnQocG9pbnQpOworICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChwb2lu
dCk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAg
ICBFWFBFQ1RfRVEocG9pbnQsIGxheWVyLmFuY2hvclBvaW50KCkpOworICAgIEVYUEVDVF9FUShw
b2ludCwgbGF5ZXItPmFuY2hvclBvaW50KCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQs
IHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwogICAgIGZsb2F0IGFuY2hv
clogPSA1OwotICAgIGxheWVyLnNldEFuY2hvclBvaW50WihhbmNob3JaKTsKKyAgICBsYXllci0+
c2V0QW5jaG9yUG9pbnRaKGFuY2hvclopOwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0
YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VRKGFuY2hvclosIGxheWVyLmFuY2hvclBv
aW50WigpKTsKKyAgICBFWFBFQ1RfRVEoYW5jaG9yWiwgbGF5ZXItPmFuY2hvclBvaW50WigpKTsK
IAogICAgIFdlYlNpemUgc2l6ZSg3LCA4KTsKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2No
ZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgbGF5ZXIuc2V0Qm91bmRz
KHNpemUpOworICAgIGxheWVyLT5zZXRCb3VuZHMoc2l6ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5k
Q2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRVEoc2l6ZSwgbGF5ZXIu
Ym91bmRzKCkpOworICAgIEVYUEVDVF9FUShzaXplLCBsYXllci0+Ym91bmRzKCkpOwogCiAgICAg
RVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3Qo
MSkpOwotICAgIGxheWVyLnNldE1hc2tzVG9Cb3VuZHModHJ1ZSk7CisgICAgbGF5ZXItPnNldE1h
c2tzVG9Cb3VuZHModHJ1ZSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfVFJVRShsYXllci5tYXNrc1RvQm91bmRzKCkpOworICAg
IEVYUEVDVF9UUlVFKGxheWVyLT5tYXNrc1RvQm91bmRzKCkpOwogCiAgICAgRVhQRUNUX0NBTEwo
bV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBX
ZWJMYXllciBvdGhlckxheWVyID0gV2ViTGF5ZXI6OmNyZWF0ZSgpOwotICAgIG1fcm9vdExheWVy
LmFkZENoaWxkKG90aGVyTGF5ZXIpOworICAgIE93blB0cjxXZWJMYXllcj4gb3RoZXJMYXllciA9
IGFkb3B0UHRyKFdlYkxheWVyOjpjcmVhdGUoKSk7CisgICAgbV9yb290TGF5ZXItPmFkZENoaWxk
KG90aGVyTGF5ZXIuZ2V0KCkpOwogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNv
bXBvc2l0ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICBsYXllci5zZXRNYXNrTGF5ZXIob3Ro
ZXJMYXllcik7CisgICAgbGF5ZXItPnNldE1hc2tMYXllcihvdGhlckxheWVyLmdldCgpKTsKICAg
ICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwogCiAgICAgRVhQ
RUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxlQ29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkp
OwogICAgIGZsb2F0IG9wYWNpdHkgPSAwLjEyM2Y7Ci0gICAgbGF5ZXIuc2V0T3BhY2l0eShvcGFj
aXR5KTsKKyAgICBsYXllci0+c2V0T3BhY2l0eShvcGFjaXR5KTsKICAgICBNb2NrOjpWZXJpZnlB
bmRDbGVhckV4cGVjdGF0aW9ucygmbV9jbGllbnQpOwotICAgIEVYUEVDVF9FUShvcGFjaXR5LCBs
YXllci5vcGFjaXR5KCkpOworICAgIEVYUEVDVF9FUShvcGFjaXR5LCBsYXllci0+b3BhY2l0eSgp
KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1l
cyhBdExlYXN0KDEpKTsKLSAgICBsYXllci5zZXRPcGFxdWUodHJ1ZSk7CisgICAgbGF5ZXItPnNl
dE9wYXF1ZSh0cnVlKTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygmbV9j
bGllbnQpOwotICAgIEVYUEVDVF9UUlVFKGxheWVyLm9wYXF1ZSgpKTsKKyAgICBFWFBFQ1RfVFJV
RShsYXllci0+b3BhcXVlKCkpOwogCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVkdWxl
Q29tcG9zaXRlKCkpLlRpbWVzKEF0TGVhc3QoMSkpOwotICAgIGxheWVyLnNldFBvc2l0aW9uKHBv
aW50KTsKKyAgICBsYXllci0+c2V0UG9zaXRpb24ocG9pbnQpOwogICAgIE1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7Ci0gICAgRVhQRUNUX0VRKHBvaW50LCBsYXll
ci5wb3NpdGlvbigpKTsKKyAgICBFWFBFQ1RfRVEocG9pbnQsIGxheWVyLT5wb3NpdGlvbigpKTsK
IAogICAgIC8vIFRleHR1cmUgbGF5ZXIuCiAgICAgRVhQRUNUX0NBTEwobV9jbGllbnQsIHNjaGVk
dWxlQ29tcG9zaXRlKCkpLlRpbWVzKEFueU51bWJlcigpKTsKLSAgICBXZWJFeHRlcm5hbFRleHR1
cmVMYXllciB0ZXh0dXJlTGF5ZXIgPSBXZWJFeHRlcm5hbFRleHR1cmVMYXllcjo6Y3JlYXRlKCk7
Ci0gICAgbV9yb290TGF5ZXIuYWRkQ2hpbGQodGV4dHVyZUxheWVyKTsKKyAgICBPd25QdHI8V2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXI+IHRleHR1cmVMYXllciA9IGFkb3B0UHRyKFdlYkV4dGVybmFs
VGV4dHVyZUxheWVyOjpjcmVhdGUoKSk7CisgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKHRleHR1
cmVMYXllci0+bGF5ZXIoKSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMo
Jm1fY2xpZW50KTsKIAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0
ZSgpKS5UaW1lcyhBdExlYXN0KDEpKTsKLSAgICB0ZXh0dXJlTGF5ZXIuc2V0VGV4dHVyZUlkKDMp
OworICAgIHRleHR1cmVMYXllci0+c2V0VGV4dHVyZUlkKDMpOwogICAgIE1vY2s6OlZlcmlmeUFu
ZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKICAgICBFWFBFQ1RfQ0FMTChtX2NsaWVu
dCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFzdCgxKSk7Ci0gICAgdGV4dHVyZUxh
eWVyLnNldEZsaXBwZWQodHJ1ZSk7CisgICAgdGV4dHVyZUxheWVyLT5zZXRGbGlwcGVkKHRydWUp
OwogICAgIE1vY2s6OlZlcmlmeUFuZENsZWFyRXhwZWN0YXRpb25zKCZtX2NsaWVudCk7CiAKICAg
ICBFWFBFQ1RfQ0FMTChtX2NsaWVudCwgc2NoZWR1bGVDb21wb3NpdGUoKSkuVGltZXMoQXRMZWFz
dCgxKSk7CiAgICAgV2ViRmxvYXRSZWN0IHV2UmVjdCgwLjFmLCAwLjFmLCAwLjlmLCAwLjlmKTsK
LSAgICB0ZXh0dXJlTGF5ZXIuc2V0VVZSZWN0KHV2UmVjdCk7CisgICAgdGV4dHVyZUxheWVyLT5z
ZXRVVlJlY3QodXZSZWN0KTsKICAgICBNb2NrOjpWZXJpZnlBbmRDbGVhckV4cGVjdGF0aW9ucygm
bV9jbGllbnQpOwogCiAKQEAgLTE3OCwxNCArMTc5LDE0IEBAIFRFU1RfRihXZWJMYXllclRlc3Qs
IENsaWVudCkKICAgICBNb2NrV2ViQ29udGVudExheWVyQ2xpZW50IGNvbnRlbnRDbGllbnQ7CiAg
ICAgRVhQRUNUX0NBTEwoY29udGVudENsaWVudCwgcGFpbnRDb250ZW50cyhfLCBfLCBfKSkuVGlt
ZXMoQW55TnVtYmVyKCkpOwogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBv
c2l0ZSgpKS5UaW1lcyhBbnlOdW1iZXIoKSk7Ci0gICAgV2ViQ29udGVudExheWVyIGNvbnRlbnRM
YXllciA9IFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKCZjb250ZW50Q2xpZW50KTsKLSAgICBtX3Jv
b3RMYXllci5hZGRDaGlsZChjb250ZW50TGF5ZXIpOworICAgIE93blB0cjxXZWJDb250ZW50TGF5
ZXI+IGNvbnRlbnRMYXllciA9IGFkb3B0UHRyKFdlYkNvbnRlbnRMYXllcjo6Y3JlYXRlKCZjb250
ZW50Q2xpZW50KSk7CisgICAgbV9yb290TGF5ZXItPmFkZENoaWxkKGNvbnRlbnRMYXllci0+bGF5
ZXIoKSk7CiAgICAgTW9jazo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsK
IAogICAgIEVYUEVDVF9DQUxMKG1fY2xpZW50LCBzY2hlZHVsZUNvbXBvc2l0ZSgpKS5UaW1lcyhB
dExlYXN0KDEpKTsKLSAgICBjb250ZW50TGF5ZXIuc2V0RHJhd3NDb250ZW50KGZhbHNlKTsKKyAg
ICBjb250ZW50TGF5ZXItPmxheWVyKCktPnNldERyYXdzQ29udGVudChmYWxzZSk7CiAgICAgTW9j
azo6VmVyaWZ5QW5kQ2xlYXJFeHBlY3RhdGlvbnMoJm1fY2xpZW50KTsKLSAgICBFWFBFQ1RfRkFM
U0UoY29udGVudExheWVyLmRyYXdzQ29udGVudCgpKTsKKyAgICBFWFBFQ1RfRkFMU0UoY29udGVu
dExheWVyLT5sYXllcigpLT5kcmF3c0NvbnRlbnQoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViTGF5ZXJUcmVlVmlld1Rlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAKaW5kZXgg
YmVjMmM2MDM1YWNhZWYwNzM0MGExYjhjMzY0ZTFhOTkwODJmM2NkNS4uMWMxNjAyYzIzNDE2OTlk
OTg2NWU4MzkzOWFkMTA0ZDBiM2IxMDlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9XZWJMYXllclRyZWVWaWV3VGVzdC5jcHAKQEAgLTYwLDggKzYwLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCiAgICAgewogICAgICAgICBpbml0aWFs
aXplQ29tcG9zaXRvcigpOwotICAgICAgICBtX3Jvb3RMYXllciA9IFdlYkxheWVyOjpjcmVhdGUo
KTsKLSAgICAgICAgRVhQRUNUX1RSVUUobV92aWV3LmluaXRpYWxpemUoY2xpZW50KCksIG1fcm9v
dExheWVyLCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncygpKSk7CisgICAgICAgIG1fcm9vdExh
eWVyID0gYWRvcHRQdHIoV2ViTGF5ZXI6OmNyZWF0ZSgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
bV92aWV3LmluaXRpYWxpemUoY2xpZW50KCksICptX3Jvb3RMYXllciwgV2ViTGF5ZXJUcmVlVmll
dzo6U2V0dGluZ3MoKSkpOwogICAgICAgICBtX3ZpZXcuc2V0U3VyZmFjZVJlYWR5KCk7CiAgICAg
fQogCkBAIC03MCwxMyArNzAsMTMgQEAgcHVibGljOgogICAgICAgICBNb2NrOjpWZXJpZnlBbmRD
bGVhckV4cGVjdGF0aW9ucyhjbGllbnQoKSk7CiAKICAgICAgICAgbV92aWV3LnNldFJvb3RMYXll
cigwKTsKLSAgICAgICAgbV9yb290TGF5ZXIucmVzZXQoKTsKKyAgICAgICAgbV9yb290TGF5ZXIu
Y2xlYXIoKTsKICAgICAgICAgbV92aWV3LnJlc2V0KCk7CiAgICAgICAgIFdlYktpdDo6V2ViQ29t
cG9zaXRvcjo6c2h1dGRvd24oKTsKICAgICB9CiAKIHByb3RlY3RlZDoKLSAgICBXZWJMYXllciBt
X3Jvb3RMYXllcjsKKyAgICBPd25QdHI8V2ViTGF5ZXI+IG1fcm9vdExheWVyOwogICAgIFdlYkxh
eWVyVHJlZVZpZXcgbV92aWV3OwogfTsKIAo=
</data>
<flag name="review"
          id="170517"
          type_id="1"
          status="+"
          setter="enne"
    />
          </attachment>
      

    </bug>

</bugzilla>